二.Linux基础指令
Linux基础指令
- 1. Vi 与 Vim编辑器
- 2.关机、重启和用户登录注销
- 3.用户管理
- 4.实用指令
- 4.1 指定运行级别
- 4.2 帮助指令
- 4.3 文件目录类指令
- 4.3.1 pwd 指令
- 4.3.2 ls 指令
- 4.3.3 cd 指令
- 4.3.4 mkdir 指令
- 4.3.5 rmdir 指令
- 4.3.6 touch 指令
- 4.3.7 cp 指令[重要]
- 4.3.8 rm 指令
- 4.3.9 mv 指令
- 4.3.10 cat 指令
- 4.3.11 more 指令
- 4.3.12 less 指令
- 4.3.13 > 指令 和 >> 指令
- 4.3.14 echo 指令
- 4.3.15 head 指令
- 4.3.16 tail 指令
- 4.3.17 ln 指令
- 4.3.18 history 指令
- 4.4 时间日期类
- 4.5 搜索查找类
- 4.6 压缩和解压类
1. Vi 与 Vim编辑器
学习Vi的目的:
- 在工作中,要对服务器上文件进行简单修改,可以使用SSH远程登录到服务器上,并使用vi进行快速编辑;
- 常见需要修改的文件包括:
- 源程序
- 配置文件,例如SSH 的配置文件:~/.ssh/config
1.1 vi 和 vim 的基本介绍
1)vi:所有的 Linux 系统都会内建 vi 文本编辑器。
2)Vim:具有程序编辑的能力, 可以看做是 Vi 的增强版本, 可以主动的以字体颜色辨别语法的正确性, 方便程序设计。 代码补完、 编译及错误跳转等方便编程的功能特别丰富, 在程序员中被广泛使用。
1.2 vi 和 vim 的三种常见模式
1.2.1 正常模式
在正常模式下, 我们可以使用快捷键。
以 vim 打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中, 你可以使用『上下左右』 按键来移动光标, 你可以使用『删除字符』 或『删除整行』 来处理档案内容, 也可以使用『复制、 贴上』 来处理你的文件数据。
1.2.2 插入模式/编辑模式
在模式下, 程序员可以输入内容。
按下 i, I, o, O, a, A, r, R 等任何一个字母之后才会进入编辑模式, 一般来说按 i 即可。
1.2.3 命令行模式
在这个模式当中, 可以提供你相关指令, 完成读取、 存盘、 替换、 离开 vim 、 显示行号等的动作则是在此模式中达成的!
按Esc键,然后输入命令行(如“:wq”)
1.3 vi 和 vim 三种模式的相互转化图
1.4 快捷键
再插入模式下无法使用快捷键,需要退出到正常模式。
1)拷贝当前行 yy , 拷贝当前行向下的 5 行 5yy, 并粘贴:再输入p。
2)删除当前行 dd , 删除当前行向下的 5 行 5dd
3)在文件中查找某个单词 [命令行下 /关键字 , 回车 查找 , 输入 n 就是查找下一个 ],查询hello.
4)设置文件的行号, 取消文件的行号.[命令行下 : set nu 和 :set nonu]
5)编辑 /etc/profile 文件, 使用快捷键到底文档的最末行[G]和最首行[gg],注意这些都是在正常模式下执行的。
6)在一个文件中输入 “hello” ,然后又撤销这个动作, 再正常模式下输入 u
7)编辑 /etc/profile 文件, 并将光标移动到 第 20 行 shift+g
- 第一步: 显示行号 :set nu
- 第二步: 输入 20 这个数
- 第三步: 输入 shift+g
VIM键盘图:
https://blog.****.net/sinat_36101354/article/details/65937513
vim多行注释与取消
https://blog.****.net/summy_J/article/details/75104748
2.关机、重启和用户登录注销
2.1 关机&重启
2.1.1 基本介绍
1.shutdown:
- shutdown -h now : 表示立即关机
- shutdown -h 1 : 表示 1 分钟后关机
- shutdown -r now: 立即重启
2.halt:就是直接使用, 效果等价于关机
3.reboot:就是重启系统
4.sync : 把内存的数据同步到磁盘
2.1.2 注意细节
当我们关机或者重启时, 都应该先执行一下 sync 指令, 把内存的数据写入磁盘, 防止数据丢失。
2.2 用户登录和注销
1) 登录时:尽量少用 root 帐号登录
- 因为它是系统管理员, 最大的权限, 避免操作失误。
- 可以利用普通用户登录, 登录后再用” su - 用户名’ 命令来切换成系统管理员身份.
2)注销: 在提示符下输入 logout ,即可注销用户
3)使用细节
- logout 注销指令在图形运行级别无效, 在 运行级别 3 下有效.
- 运行级别这个概念, 后面给大家介绍
3.用户管理
3.1 基本介绍
用户管理的规则:
- 1)用户与用户组的概念
- 2)用户家目录的概念
- 创建用户时,/home/目录小有各个创建用户对应的家目录;
- 当用户登录时,会自动进入到自己的家目录。
为何会这么设置:
说明:
- 1)Linux 系统是一个多用户多任务的操作系统, 任何一个要使用系统资源的用户, 都必须首先向系统管理员申请一个账号, 然后以这个账号的身份进入系统。
- 2)Linux 的用户需要至少要属于一个组。
3.2 添加用户
1.创建用户的两种方法:
useradd [选项] 用户名 ->自动的创建和用户同名的家目录
useradd -d 指定目录 用户名 ->给创建的用户指定家目录
2.细节说明:
- 1)当创建用户成功后, 会自动的创建和用户同名的家目录
- 2)也可以通过 useradd -d 指定目录 新的用户名, 给新创建的用户指定家目录(可以不同名)
3.指定/修改密码
passwd 用户名
root用户才能设置密码
4.案例:
useradd xiaoming
cd /home
ls ->目录小会自动创建名为xiaoming的家目录
passwd xiaoming ->为xiaoming用户设置密码
3.3 删除用户
1.基本语法:
userdel 用户名
2.实际案例
- 1)删除用户,但保留家目录;
userdel 用户名
- 2)删除用户,以及用户主目录
userdel -r 用户名
3.是否保留家目录:
在删除用户时, 我们一般不会将主目录删除。
因为,用户家目录下可能会有有用文件存在。
3.4 查询用户信息
1.基本语法
id 用户名
2.细节说明
- 当用户不存在时, 返回"无此用户"
3.5 切换用户
1.介绍
在操作 Linux 中, 如果当前用户的权限不够, 可以通过 su - 指令, 切换到高权限用户, 比如 root。
2.基本语法
su – 切换的用户名
3.应用实例
在root下创建一个用户 xf; 指定密码; 然后切换到 xf
4.细节说明
- 1)从权限高的用户切换到权限低的用户, 不需要输入密码, 反之需要;
- 2)当用户权限不足时,会给提示;
- 3)当需要返回到原来用户时, 使用 exit 指令。
3.6 查看当前用户/登录用户
基本语法
whoami / who am I
3.7 用户组操作
1.介绍
用户组类似于角色, 系统可以对有共性的多个用户进行统一的管理。
2.增加组
groupadd 组名
3.删除组
groupdel 组名
4.增加用户时,直接加上组
useradd -g 用户组 用户名
增加一个用户 zwj, 直接将他指定到 wudang
5.修改用户的组
usermod -g 新的用户组 用户名
创建一个 shaolin 组, 让将 zwj 用户修改到 shaolin
3.8 用户和组的相关文件
增加完用户和组之后,这些组和用户的信息在什么地方呢?
3.8.1 /etc/passwd 文件
文件内容:用户(user) 的配置文件
- 1)记录用户的各种信息;
- 2)使用 vi 查看该文件内容,每行的含义:
- 用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录 Shell
3.8.2 /etc/shadow 文件
文件内容:口令的配置文件
- 记录密码和登录的相关信息(加密)。
每行的含义:
- 登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
3.8.3 /etc/group 文件
文件内容:组(group)的配置文件
- 记录 Linux 包含的组的信息
每行含义:
- 组名:口令:组标识号:组内用户列表
4.实用指令
4.1 指定运行级别
4.1.1 运行级别说明
1.为什么要设置运行级别,什么是运行级别,作用是什么?
2.各运行级别:
Linux 系统有 7 种运行级别(runlevel): 常用的是级别 3 和 5
- 运行级别 0: 系统停机状态[关机], 系统默认运行级别不能设为 0, 否则不能正常启动
- 运行级别 1: 单用户工作状态, root 权限, 用于系统维护, 禁止远程登陆【找回丢失密码】
- 运行级别 2: 多用户状态(没有 NFS), 不支持网络
- 运行级别 3: 完全的多用户状态(有 NFS), 登陆后进入控制台命令行模式
- 运行级别 4: 系统未使用, 保留
- 运行级别 5: X11 控制台, 登陆后进入图形 GUI 模式
- 运行级别 6: 系统正常关闭并重启, 默认运行级别不能设为 6, 否则不能正常启动
3.开机流程
1)BIOS:“Basic Input Output System”——“基本输入输出系统”。其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。
ROM是只读存储器(Read-Only Memory)的简称,是一种只能读出事先所存数据的固态半导体存储器。其特性是一旦储存资料就无法再将之改变或删除。通常用在不需经常变更资料的电子或电脑系统中,并且资料不会因为电源关闭而消失。
2)/boot:系统引导文件
4.运行级别的修改:
常用运行级别是 3 和 5 , 要修改默认的运行级别可改文件:
- /etc/inittab 的 id:5:initdefault:这一行中的数字
5…运行级别的示意图:
4.1.2 切换到指定运行级别的指令
1.基本语法
init [012356]
1)init 方法:
- 运行后,系统直接重启,运行级别直接切换;
- 但并不会修改配置文件,下一次系统启动还是原先的运行级别。
1)vi /etc/inittab
2)修改id:5:initdefault:中的数字(切忌不要改为0,否则一开机就关机,解决方案见7.1.3)
3)保存修改退出
4)reboot 重启
2)vi /etc/inittab 方法:
- 直接修改配置文件,不会直接切换运行级别(不会重启);
- 手动重启,或是下一次系统启动时,自动切换到指定的运行级别。
案例 1: 通过 init 来切换不同的运行级别, 比如动 5->3 , 然后关机
- init 3
- init 5
- init 0
4.1.3 面试题
如何找回 root 密码, 如果我们不小心, 忘记 root 密码, 怎么找回。
1.思路: 进入到 单用户模式-1, 然后修改 root 密码。
- 因为进入单用户模式, root 不需要密码就可以登录。
2.总结
开机->在引导时输入 回车键-> 看到一个界面输入 e -> 看到一个新的界面, 选中第二行(编辑内核) 在输入 e-> 在这行最后输入 1 ,再输入 回车键->再次输入 b ,这时就会进入到单用户模式。
这时, 我们就进入到单用户模式, 使用 passwd 指令来修改 root 密码,然后正常重启。
3.关于这种操作的解释:
- 因为启用单用户模式后,只能在服务器端OS上才能进行操作,SSH不能使用;
- 你已经在服务器端,而不是远程登录,此时默认你已经有root权限了
4.2 帮助指令
介绍:
当我们对某个指令不熟悉时, 我们可以使用 Linux 提供的帮助指令来了解这个指令的使用方法。
4.2.1 man 获得帮助信息
功能描述: 获得帮助信息
1.基本语法
man [命令或配置文件]
2.应用实例
案例: 查看 ls 命令的帮助信息
man ls
4.2.2 help 指令
功能描述: 获得 shell 内置命令的帮助信息
1.基本语法
help 命令
4.3 文件目录类指令
4.3.1 pwd 指令
1.功能描述:
- present work directory
- 显示当前工作目录的绝对路径
2.基本语法
pwd
4.3.2 ls 指令
1.基本语法
ls [选项] [目录或是文件]
不仅仅可以显示目录,还可以显示文件的详细信息。
2.常用选项
- -a : 显示当前目录所有的文件和目录, 包括隐藏的。
- -l : 以列表的方式显示信息
- -al:可以联合使用
3.帮助文档:
- man ls
4.3.3 cd 指令
1.功能描述: 切换到指定目录
2.基本语法
cd [参数]
3.常用参数
- 绝对路径
- 相对路径
1)回到家目录:cd ~ 或 cd
2)回到父目录:cd ..
4.如何理解绝对路径和相对路径
4.3.4 mkdir 指令
1.功能介绍:
- mkdir 指令用于创建目录
- make directory
2.基本语法
mkdir [选项] 要创建的目录
3.常用选项
- -p : 用于创建多级目录
4.应用实例
案例 :创建多级目录 /home/animal/tiger(现在没有animal文件夹)
4.3.5 rmdir 指令
1.rmdir 指令:
- remove directory
- 删除空目录
2.基本语法
rmdir [选项] 要删除的空目录
3.应用实例
案例 1:删除一个目录 /home/dog
4.注意细节
- rmdir 删除的是空目录, 如果目录下有内容时无法删除的。
-
参数:-p, --parents
- remove DIRECTORY and its ancestors;
- e.g., ‘rmdir -p a/b/c’ is similar to ‘rmdir a/b/c a/b a’
5.提示:
- 如果需要删除非空目录, 需要使用 rm -rf 要删除的目录
rm -rf 非空目录名
4.3.6 touch 指令
1.touch 指令:创建空文件
2.基本语法
touch 文件名称 [文件2名称]
可以一次性创建多个空文件
4.3.7 cp 指令[重要]
1.cp 指令:
- copy
- 拷贝文件到指定目录
2.基本语法
cp [选项] source dest
3.常用选项
- -r : 递归复制整个文件夹
拷贝单个文件也可以,拷贝整个文件夹也可以。
4.使用细节
- 如果再次进行复制,则会提示具体的文件是否要覆盖;缺点就是如果文件夹中有100个文件,会问100次。
- 强制覆盖不提示的方法: \cp
4.3.8 rm 指令
1.rm 指令:
- remove 移除
- 移除【删除】 文件或目录
2.基本语法
rm [选项] 要删除的文件或目录
3.常用选项
- -r : 递归删除整个文件夹,删除的提示信息也会是递归显示(见下图);
- -f : 强制删除不提示;
4.使用细节
- 单独的 rm 命令,不能删除目录,需要加上参数 -r;
- 强制删除不提示的方法: 带上 -f 参数即可;
4.3.9 mv 指令
1.mv指令:
- move
- 移动或者重命名文件与目录
2.基本语法
mv oldNameFile newNameFile (功能描述: 重命名)
mv /temp/movefile /targetFolder (功能描述: 移动文件)
4.3.10 cat 指令
1.cat 查看文件内容, 是以只读的方式打开。
2.基本语法
cat [选项] 要查看的文件
3.常用选项
- -n : 显示行号
4.使用细节
- cat 只能浏览文件, 而不能修改文件, 为了浏览方便, 一般会带上 管道命令 | more
cat 文件名 | more [分页浏览]
4.3.11 more 指令
1.more 指令:
- 是一个基于 VI 编辑器的文本过滤器;
- 它以全屏幕的方式按页显示文本文件的内容。
2.基本语法
more 要查看的文件
3.more指令中内置了若干快捷键, 详见操作说明
4.3.12 less 指令
1.less 指令:
- 用来分屏查看文件内容
- 它的功能与 more 指令类似, 但是比 more 指令更加强大, 支持各种显示终端;
- less 指令在显示文件内容时, 并不是一次将整个文件加载之后才显示, 而是根据显示需要加载内容, 对于显示大型文件具有较高的效率。
2.基本语法
less 要查看的文件
3.快捷键
4.3.13 > 指令 和 >> 指令
1.> 指令 和 >> 指令
- > 输出重定向 : 会将原来的文件的内容覆盖
- >> 追加: 不会覆盖原来文件的内容, 而是追加到文件的尾部。
2.基本语法
ls -l >文件 (功能描述: 列表的内容写入文件 a.txt 中(覆盖写) )
说明: ls -l > a.txt , 将 ls -l 的显示的内容覆盖写入到 a.txt 文件, 如果该文件不存在, 就创建该文件。
ls -al >>文件 (功能描述: 列表的内容追加到文件 aa.txt 的末尾)
cat 文件 1 > 文件 2 (功能描述: 将文件 1 的内容覆盖到文件 2)
echo “内容” >> 文件
4.3.14 echo 指令
1.echo :输出内容到控制台。
2.基本语法
echo [选项] [输出内容]
3.使用 echo 指令:输出环境变量,输出当前的环境路径:
echo $PATH
输出 hello world
echo “hello world”
4.3.15 head 指令
1.head 指令:
- 用于显示文件的开头部分内容
- 默认情况下 head 指令显示文件的前 10 行内容
2.基本语法
head 文件 (功能描述: 查看文件头 10 行内容)
head -n 5 文件 (功能描述: 查看文件头 5 行内容, 5 可以是任意行数)
4.3.16 tail 指令
1.tail指令:
- 用于输出文件中尾部的内容,
- 默认情况下 tail 指令显示文件的后 10 行内容。
2.基本语法
tail 文件 (功能描述: 查看文件后 10 行内容)
tail -n 5 文件 (功能描述: 查看文件后 5 行内容, 5 可以是任意行数)
tail -f 文件 (功能描述: 实时追踪该文档的所有更新, 工作经常使用)
4.3.17 ln 指令
软链接:也叫符号链接, 类似于 windows 里的快捷方式, 主要存放了链接其他文件的路径
2.基本语法
ln -s [原文件或目录] [软链接名] (功能描述: 给原文件创建一个软链接)
3.可以使用 ls -l 命令查看软链接及其指向文件
4.使用pwd指令,位置显示的是软链接的位置;而使用cd命令转到软链接,实际上转到的是指向文件
5.删除软链接:
rm -rf 软链接 (不能带/)
4.3.18 history 指令
1.查看已经执行过历史命令,也可以执行历史指令
2.基本语法
history (功能描述: 查看已经执行过历史命令)
3.参数使用
history 5(功能描述:查看最近执行的5个命令)
!88 (功能描述:执行历史命令的第88号命令)
4.4 时间日期类
4.4.1 date 指令-显示当前日期
基本语法
- date (功能描述: 显示当前时间)
- date +%Y (功能描述: 显示当前年份)
- date +%m (功能描述: 显示当前月份)
- date +%d (功能描述: 显示当前是哪一天)
- date “+%Y-%m-%d %H:%M:%S”(功能描述: 显示年月日时分秒,减号连接符可以换)
4.4.2 date 指令-设置日期
1.基本语法
date -s “字符串时间”
2.应用实例
设置系统当前时间 , 比如设置成 2018-10-10 11:22:22
date -s “2018-10-10 11:22:22”
4.4.3 cal 指令
1.cal 指令:查看日历指令
2.基本语法
cal [选项] (功能描述: 不加选项, 显示本月日历)
显示2020年日历:
cal 2020
4.5 搜索查找类
4.5.1 find 指令
1.find 指令:
- 将从指定目录向下递归地遍历其各个子目录,
- 将满足条件的文件或者目录显示在终端。
2.基本语法
find [搜索范围] [选项] 目标
3.选项说明(常用)
选项参数 | 作用 |
---|---|
-name | 按文件名,查找:支持通配符 |
-user | 按文件所属用户,查找 |
-size | 按文件大小,查找:+N表示大于,-N表示小于,N等于 |
find / -size -20M(功能描述:查找根目录下小于20M的文件)
ctrl + c 结束执行
4.5.2 locate 指令
1.locate 指令:
- 可以快速定位文件路径。
locate 指令利用事先建立的系统中所有文件名称及路径的 locate 数据库实现快速定位给定的文件。 Locate 指令无需遍历整个文件系统, 查询速度较快。
为了保证查询结果的准确度, 管理员必须定期更新 locate 时刻。
2.基本语法
locate 搜索文件
3.特别说明
- 由于 locate 指令基于数据库进行查询, 所以第一次运行前, 必须使用 updatedb 指令创建 locate 数据库
updatedb (功能描述:创建 locate 数据库)
4.linux的locate命令不能使用
执行一下命令安装以后,就可以locate XXX了:
- yum install mlocate
- sudo updatedb
- locate *.doc
4.5.3 grep 指令和 管道符号 |
1.grep 指令:过滤查找 ;
管道符-“|”:表示将前一个命令的处理结果,输出传递给后面的命令处理。
2.基本语法
grep [选项] 查找内容 源文件
3.常用选项
选项参数 | 作用 |
---|---|
-n | 显示匹配行及行号 |
-i | 忽略字母大小写 |
4.6 压缩和解压类
4.6.1 gzip/gunzip 指令
1.gzip 用于压缩文件—*.gz 文件, gunzip 用于解压
2.基本语法
gzip 文件 (功能描述: 压缩文件, 只能将文件压缩为*.gz 文件)
gunzip 文件.gz (功能描述: 解压缩文件命令)
3.细节说明
- 当我们使用 gzip 对文件进行压缩后, 不会保留原来的文件;
- 可一次压缩、解压多个文件;
4.6.2 zip/unzip 指令
1.zip 用于压缩文件—*.zip;unzip 用于解压的:
- 这个在项目打包发布中很有用
2.基本语法
zip [选项] XXX.zip 将要压缩的内容(功能描述: 压缩文件和目录的命令)
unzip [选项] XXX.zip (功能描述: 解压缩文件)
3.zip 常用选项
- -r: 递归压缩, 即压缩目录
4.unzip 的常用选项
- -d <目录> : 指定解压后文件的存放目录
5.如法使用unzip命令解压.zip文件,可能是你没有安装unzip软件,安装方法:
- 获取安装列表命令: yum list | grep zip/unzip
- 安装命令: yum install zip #提示输入时,请输入y;
- 安装命令: yum install unzip #提示输入时,请输入y;
4.6.3 tar 指令
1.tar 指令 是打包指令, 最后打包后的文件是 .tar.gz 的文件。
2.基本语法
tar [选项] XXX.tar.gz 打包的内容 (功能描述: 打包目录, 压缩后的文件格式.tar.gz)
选项说明
压缩:参数 -zcvf
解压:
- 参数 -zxvf;
- 解压到指定文件目录时,还需指定参数-C;且目录得事先存在。