文件和目录相关命令(⭐)

安装

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
2
3
4
5
# 安装
yum -y install mlocate

# 更新索引
updatedb

locate(中文翻译为:定位) 命令同样用来查询文件或目录,但是它是基于索引查询,速度快很多。

建立索引可以极大的提高查询的速度,为什么会有这么显著的效果呢?

字典举例:

  • 没有索引:从正文第一页开始翻,在每一页中检查有没有自己想要找的字。在最差的情况下需要逐页翻到字典的最后一页,这样做速度非常慢。

  • 基于索引:字典正文前的检字表就是正文内容的索引。先从检字表里快速的找到那个字,虽然没有这个字的详细信息,但是有这个字所在的页码,我们可以根据这个页码就可以直接到正文中直接翻到那一页,这样速度就非常快。

  • 去一幢大楼找房间举例:肯定是先在一楼看看楼层介绍信息,找到房间号直接去,而不是一个房间一个房间的去找。

locate 命令的原理

  • 系统启动的时候会将每一个目录、每一个文件的完整路径保存到索引库中,使用 locate 命令搜索关键词时,就使用关键词查询索引库,将匹配的路径字符串返回。

  • 但是,新建的文件或目录不会被系统将路径存入索引库中,那么使用 locate 命令就搜索不到,此时使用 updatedb 命令更新一下索引库即可。

操作演示

使用 locate 命令搜索文件

1
2
[root@centos7 shell-scripts]# locate install.sh
/mydata/shell-scripts/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
2
# 匹配以 - 开头的行
^-

④ 使用管道列出当前目录下的所有文件

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
2
3
ps -ef | grep -i sshd | grep -v grep

top -p 1233

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
2
3
gg
# 或者
1 + shift + g

最后一行:

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
2
3
4
5
# 向下找
n

# 向上找
shift + n

⑤ 取消高亮显示

1
:noh

① 准备文件内容:

1
2
3
4
5
6
hello, Lijing, do you think java is the best language in the world? hello, of course.
hello, Lijing, do you think java is the best language in the world? hello, of course.
hello, Lijing, do you think java is the best language in the world? hello, of course.
hello, Lijing, do you think java is the best language in the world? hello, of course.
hello, Lijing, do you think java is the best language in the world? hello, of course.
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