Linux 常用命令(待补充)
文件和目录相关命令(⭐)
安装
1 | yum install vim -y |
快捷键
命令行环境下快捷键
按键 | 作用 |
---|---|
Ctrl + l | 清屏 |
Ctrl + c | 强制终止程序 |
Ctrl + Insert | 复制 |
Shift + Insert | 粘贴 |
Ctrl + s | 锁屏 |
Ctrl + q | 解除锁屏 |
tab | 自动补全 |
mkdir
命令:
1 | mkdir [-pv] 新目录的路径 |
参数 -pv
表示创建多层目录。
作用:创建目录。
cd
命令:
1 | cd 目标目录路径 |
作用:切换目录。
ls
命令:
1 | ls [-l][-A][-R] 文件或目录的路径 |
参数 -l
以详细信息形式显示资源。
参数 -A
显示目录内容时把隐藏资源也显示出来。
参数 -R
递归查看目录内容。
命令的参数既可以单独使用也可以组合使用。同时 ls -l
可以简写为 ll
。
作用:列出目录中的内容,这里所说的目录可以是当前目录也可以是其他目录(需要指定路径)。
pwd
命令:
1 | pwd |
作用:打印当前所在的目录。
touch
命令:
1 | touch 新建文件的路径 |
作用:创建空文件。
cp
复制文件命令:
1 | cp 被复制的文件的路径 目标目录的路径 |
复制目录命令:
1 | cp -r 被复制的目录的路径 目标目录的路径 |
参数 -r
等同于 -R
。
mv
命令:
1 | mv 被移动的文件或目录的路径 目标目录 |
将目录或文件在当前位置移动可以起到重命名的作用。
rm
删除文件命令:
1 | rm 被删除文件的路径 |
强制删除文件命令:
1 | rm -f 被删除文件的路径 |
递归删除目录:
1 | rm -r 被删除的目录的路径 |
强制删除目录:
1 | rm -rf 被删除的目录的路径 |
cat
命令:
1 | cat 文件的路径 |
作用:显示文件全部内容。
适用场景:较短小的文件。
less
命令:
1 | less 文件路径 |
作用:分屏查看文件内容。
按键 | 效果 |
---|---|
空格 | 向下滚动一屏 |
b | 向上滚动一屏 |
回车 | 向下滚动一行 |
q | 退出 |
/关键词 | 搜索 n 向下找 ,N 向上找 |
= | 显示详细的文件信息 |
tail
1 | tail -n 5 文件的路径 |
作用:显示文件末尾的5行。
1 | tail -F 文件的路径 |
作用:实时查看文件末尾新增的内容。
1 | tailf -10 文件的路径 |
作用:显示文件末尾的10行。
find
命令:
1 | find 查找范围 参数 表达式 |
示例:
1 | find /root -name "*.txt" |
locate
1 | 安装 |
locate(中文翻译为:定位) 命令同样用来查询文件或目录,但是它是基于索引查询,速度快很多。
建立索引可以极大的提高查询的速度,为什么会有这么显著的效果呢?
字典举例:
-
没有索引:从正文第一页开始翻,在每一页中检查有没有自己想要找的字。在最差的情况下需要逐页翻到字典的最后一页,这样做速度非常慢。
-
基于索引:字典正文前的检字表就是正文内容的索引。先从检字表里快速的找到那个字,虽然没有这个字的详细信息,但是有这个字所在的页码,我们可以根据这个页码就可以直接到正文中直接翻到那一页,这样速度就非常快。
-
去一幢大楼找房间举例:肯定是先在一楼看看楼层介绍信息,找到房间号直接去,而不是一个房间一个房间的去找。
locate 命令的原理
-
系统启动的时候会将每一个目录、每一个文件的完整路径保存到索引库中,使用 locate 命令搜索关键词时,就使用关键词查询索引库,将匹配的路径字符串返回。
-
但是,新建的文件或目录不会被系统将路径存入索引库中,那么使用 locate 命令就搜索不到,此时使用
updatedb
命令更新一下索引库即可。
操作演示
使用 locate 命令搜索文件
1 | [root@centos7 shell-scripts]# locate install.sh |
grep
命令:
1 | grep 参数 查找内容 文件路径 |
参数 -v
表示返回不匹配的行。
参数 -n
表示显示行号。
查找内容可以是正则表达式。
作用:将文件内容中匹配的行返回。
示例:
1 | grep hello content.txt |
grep 命令的关键词匹配和 vim 中的关键词搜索的区别:
① vim 需要打开文件进入到 vim 自己的界面中,而 grep 不需要。
② grep 命令显示搜索结果时可以将匹配行抽取出来显示,而 vim 是在全部文件中将关键词高亮显示。
③ grep 命令可以同时搜索多个文件。
④ grep 命令还有其它更加丰富的用法。
返回匹配的行并显示行号。
1 | grep -n hello content.txt |
显示不匹配的行并显示行号
1 | grep -nv hello content.txt |
pipe(管道,不是命令)
简介
管道不是命令,而是一个符号 |
。
用法:
1 | 命令 A | 命令 B |
作用:将命令 A 的输出作为命令 B 的输入。
操作演示
① 需求:列出当前目录下的所有文件。
② 如果使用 ll
命令,会将文件和目录都显示出来
③ 文件的目录的特征是,文件以 -
开头,目录以 d
开头,那么可以安装特征编写正则表达式
1 | 匹配以 - 开头的行 |
④ 使用管道列出当前目录下的所有文件
1 | ll | grep ^- |
⑤ 统计当前目录下的文件的数量(wc -l
命令可以统计文本数据的行数)
1 | ll | grep ^- | wc -l |
tar
在 Linux 系统中,很多程序的安装包都是以 tar 包的形式提供下载的
tar 解压命令
1 | tar -zxvf tar包的路径 -C 需要解压的目录路径 |
参数作用说明:
参数名称 | 作用 |
---|---|
-z | 用 gzip 对存档压缩或解压 |
-x | 解压 |
-v | 详细显示处理的文件 |
-f | 指定存档或设备 (缺省为 /dev/rmt0) |
注意:默认解压到当前目录下,如果当前目录中有同名目录或文件会直接覆盖,没有任何提示。
进程相关命令(⭐)
ps
简介
命令:
1 | ps [-ef] |
参数 -e
(entire,表示全部)指显示系统中全部的进程信息。
参数 -f (full-formate)表示完整格式。
作用:查看系统中运行的进程。
进程信息中各列数据说明
列名 | 含义 |
---|---|
UID | 进程的用户信息 |
PID |
进程id。由系统分配,不会重复。 |
PPID |
父进程的id。父进程和子进程的关系是:父进程启动了子进程。 |
CMD |
当前进程所对应的程序。 |
C | 用整数表示的CPU使用率 |
STIME | 进程启动时间 |
TTY | 进程所在终端。所谓终端就是用户输入命令的操作界面。 |
TIME | 进程所占用的CPU时间 |
父进程和子进程之间的关系
1 | yum -y install psmisc |
简单来说,父进程和子进程的关系是:父进程启动了子进程,可以使用 pstree
命令查看整个进程数。
和其它命令配合使用
① 分屏查看进程信息:全部进程的信息太多了,一屏无法全部显示,所以我们希望可以分屏显示并由我们来控制翻页。为了达到这个目标,我们可以使用管道符号将 ps -ef
命令的输出数据传送给 less
命令。
1 | ps -ef | less |
② 精确查询一个具体进程信息:我们通过 Xshell 远程连接 Linux 系统,靠的是 sshd 这个服务。
这个服务如果正在运行中,那么一定会有这个服务对应的进程。
所以下面我们来查询一下 sshd 这个命令的进程。
1 | ps -ef | grep -i sshd | grep -v grep |
kill
1 | kill -9 进程id |
作用:杀死进程。
说明:kill 命令本质上是给进程发送信号。
top
1 | top |
作用:实时查看系统运行情况和健康状态。
命令与参数:
命令名 | 更新时间间隔(秒) | 不显示任何闲置或者僵死进程 | 通过进程id监控单一进程 |
---|---|---|---|
top | -d 间隔秒数 | -i | -p 进程id |
操作控制:
按键 | 功能 |
---|---|
P | 默认值,根据CPU使用率排序 |
M | 以内存的使用率排序 |
N | 以PID排序 |
d | 设置数据刷新的时间间隔,单位是秒 |
q | 退出 |
示例:指定间隔秒数,默认为 3 秒
1 | top -d 2 |
示例:不显示僵尸进程
1 | top -i |
示例:监控单一线程
1 | ps -ef | grep -i sshd | grep -v grep |
netstat
简介
1 | netstat -anp |
作用:查看网络状态。
参数名 | 作用 |
---|---|
-a | 显示所有正在或不在侦听的套接字。 |
-n | 显示数字形式地址而不是去解析主机、端口或用户名。 |
-p | 显示套接字所属进程的 PID 和名称。 |
vim
简介
命令:
1 | vim |
作用:在命令行环境下编辑文本文件。
注意:在命令行模式下没有鼠标,所以刚开始会觉得非常不习惯,但是慢慢熟练之后会发现,不用鼠标全部用键盘的操作效率也很高。
三种模式
-
一般模式:通过按键控制 vim 工作。
-
编辑模式:可以自由输入。
-
指令模式:通过执行指令完成一些特殊的操作。
基本操作
① 打开一个文件(即使文本不存在,也没关系,vim知道我们打算新建一个文件):
1 | vim content.txt |
② 进入编辑模式(方式很多种,现在先使用一种方法,按一下 i 键):
1 | i |
注意:按键的时候,屏幕上是不显示 i 的,但是左下角会显示插入(中文环境)或 Insert(英文环境)。
随意输入一些内容。
按 Esc 键回到一般模式。
③ 显示行号:在一般模式,输入英文冒号(:),然后输入 set nu 就可以显示行号了:
1 | :set nu |
④ 保存已修改的内容(执行完 Esc 指令后,vim 又回到一般模式,使用 :w 指令可以保存文件):
1 | :w |
⑤ 退出(使用 :q 指令就可以退出 vim 了):
1 | :q |
⑥ 保存退出:
1 | :wq |
⑦ 不保存退出:
1 | :q! |
看
上下左右移动光标
方法一:使用键盘↑↓←→
键,但是距离基准键位较远。
方法二:就在基准键上,hjkl
分别对应 ←↓↑→
前往指定行
第一行:
1 | gg |
最后一行:
1 | shift + g |
指定行号(n 表示行号)
1 | n + shift + g |
改
这里我们说的是在一般模式
下通过按键来编辑文件,并不是进入编辑模式。
按键 | 效果 |
---|---|
dd | 删除光标所在的行 |
5dd | 从光标所在行开始,向下连续删除5行(包括光标所在行) |
u | 撤销刚才的操作 |
Ctrl + r | 重做刚才撤销的操作 |
yy | 复制光标所在的行 |
p | 将当前复制的行粘贴到光标所在位置的下一行 |
5yy | 从光标所在行开始,向下连续复制5行(包括光标所在行) |
r | 替换光标所在位置的一个字符。 第一步:按一下 r 键;第二步:输入新的字符 |
编
这里我们要看看有哪些方法可以进入编辑模式。
按键 | 大小写说明 | 光标动作 |
---|---|---|
i | 小写 | 不动,就在 当前位置 ,开始输入 |
I | 大写 | 移动到 行的开头 ,开始输入 |
a | 小写 | 光标 向后移动一格 ,然后开始输入 |
A | 大写 | 光标移动到 行的末尾 ,然后开始输入 |
o | 小写 | 先在光标所在行的 下面插入空行 ,然后把光标移动到空行的开头,再开始输入 |
搜
① 在一般模式
下,进入指令模式(专门用于搜索关键词的指令模式)
1 | / |
② 输入关键词:
1 | jdk |
③ 回车执行搜索(关键词匹配到的内容会高亮显示)
④ 遍历匹配内容(在匹配到搜索结果后,可以逐个遍历各个匹配内容)
1 | 向下找 |
⑤ 取消高亮显示
1 | :noh |
替
① 准备文件内容:
1 | hello, Lijing, do you think java is the best language in the world? hello, of course. |
② 执行替换:
1 | :%s/hello/hi |
命令解释:
注意:这时我们看到每一行只有第一个匹配的内容被替换了,后面的没有被替换。
这是因为对正则表达式来说,它是以行为单位查找匹配的内容。
每一行只要找到第一个匹配那么就可以判断这一行就是匹配的,没有必要继续向后查找了。
如果我们需要将一行中的每一个匹配都替换,可以在指令后加
/g
。
1 :%s/hello/hi/g