Linux 常用命令笔记

原文链接:
https://wangchujiang.com/linux-command/
https://blog.csdn.net/Suet_Nay/article/details/119965421

1. 目录与文件操作命令

1.1. 显示目录内容列表 ls

https://wangchujiang.com/linux-command/c/ls.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 仅列出当前目录可见文件
$ ls

# 显示所有文件或目录(包含隐藏)
$ ls -a # 以文件名的形式
$ ls -al # 以列表的形式

# 显示详细信息
$ ls -l
$ ll

# 递归显示当前目录下所有目录文件
$ ls -R

# 按修改时间排序(降序),最好搭配-l使用
$ ll -t
# 列出详细信息并以可读大小显示文件大小

1.2. 切换目录 cd

https://wangchujiang.com/linux-command/c/cd.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 切换到用户主目录
$ cd
$ cd ~

# 切换到根目录
$ cd /

# 回到上一级目录
$ cd ..
$ cd ../

# 进入当前目录
$ cd ./

# 显示并回到上一次操作的目录
$ cd -

# 进入到 zenkin 这个用户的宿主(家)目录,即/home/zenkin
$ cd ~zenkin

1.3. 显示当前所在的目录 pwd

https://wangchujiang.com/linux-command/c/pwd.html

1
2
3
4
5
# 显示当前工作目录,即/root
$ pwd

# 显示实际的目录路径,而非连接文件本身的路径
$ pwd -P

1.4. 创建新目录 mkdir

https://wangchujiang.com/linux-command/c/mkdir.html

1
2
3
4
5
6
7
8
9
10
11
# 创建新目录
$ mkdir test

# 创建多级目录
$ mkdir -p test1/test2/test3/test4

# 同时创建多个目录
$ mkdir test2 test3 test4

# 创建权限为rwx--x--x的目录
$ mkdir -m 711 test5

1.5. 复制目录与文件 cp

https://wangchujiang.com/linux-command/c/cp.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 复制目录下的所有内容到另一个目录下
# -r 是“递归”, -u 是“更新”,-v 是“详细”
$ cp -r ./a ./test

# 复制目录下的所有内容到另一个目录下,并保留文件属性
$ cp -a ./a ./test

# 复制文件
$ cp a.txt ./test

# 保留文件属性(包括源文件时间等)
$ cp -p a.txt ./test

# 复制目录下的所有内容到另一个目录下,并保留文件属性
$ cp -a ./a ./test

1.6. 移动目录与文件、或更名 mv

https://wangchujiang.com/linux-command/c/mv.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 移动目录
$ mv test3 test

# 同时移动多个目录(移动test1和test2到test下)
$ mv test1 test2 test

# 重命名
$ mv test1 test3

# 移动文件
$ mv a.txt test

# 同时移动多个文件(移动a.txt和b.txt到test下)
$ mv a.txt b.txt test

# 重命名
$ mv a.txt b.txt

1.7. 删除空目录 rmdir

https://wangchujiang.com/linux-command/c/rmdir.html

1
2
3
4
5
# 删除空目录
$ rmdir test5

# 连同上层空目录也一起删除
$ rmdir -p test1/test2/test3/test4

1.8. 删除目录 rm

https://wangchujiang.com/linux-command/c/rm.html

1
2
3
4
5
6
7
8
9
10
11
# 删除目录(询问)
$ rm -r test1

# 强制删除目录
$ rm -rf test1

# 删除文件(询问)
$ rm a.txt

# 强制删除文件
$ rm -f a.txt

1.9. 创建文件 touch

https://wangchujiang.com/linux-command/c/touch.html

1
2
3
4
5
# 创建空文件或更新已存在文件的时间(不会覆盖原文件)
$ touch a.txt

# 同时创建多个文件
$ touch b.txt c.txt d.txt

1.10. 查看文件内容

1.10.1. 连接多个文件并打印到标准输出 cat

https://wangchujiang.com/linux-command/c/cat.html

1
2
3
4
5
6
7
8
# 显示文件内容
$ cat a.txt

# 显示行号
$ cat -n a.txt

# 显示所有内容,包括隐藏的字符
$ cat -A /etc/resolv.conf

1.10.2. 显示文件内容,每次显示一屏 more

https://wangchujiang.com/linux-command/c/more.html

more命令 是一个基于vi编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持vi中的关键字定位操作。more名单中内置了若干快捷键,常用的有H(获得帮助信息),Enter(向下翻滚一行),空格(向下滚动一屏),Q(退出命令)。

该命令一次显示一屏文本,满屏后停下来,并且在屏幕的底部出现一个提示信息,给出至今己显示的该文件的百分比:–More–(XX%)可以用下列不同的方法对提示做出回答:

  • Space 键:显示文本的下一屏内容。
  • Enter 键:只显示文本的下一行内容。
  • 按斜线符|:接着输入一个模式,可以在文本中寻找下一个相匹配的模式。
  • 按H键:显示帮助屏,该屏上有相关的帮助信息。
  • 按B键:显示上一屏内容。
  • 按Q键:退出more命令。
1
2
# 分页显示内容
$ more /etc/wgetrc

1.10.3. 分屏上下翻页浏览文件内容 less

https://wangchujiang.com/linux-command/c/less.html

1
2
# 分页显示内容
$ less /etc/wgetrc

1.10.4. 查看文件前几行 head

https://wangchujiang.com/linux-command/c/head.html

1
2
3
4
5
6
7
8
9
# 查看文件前几行,默认显示 10 行
$ head /etc/wgetrc

# 查看文件前 20 行
$ head -20 /etc/wgetrc
$ head -n 20 /etc/wgetrc

# 不显示文件后面的 100 行
$ head -n-100 /etc/wgetrc

1.11. 查看文件后几行 tail

https://wangchujiang.com/linux-command/c/tail.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 查看文件后几行,默认显示 10 行
$ tail /etc/wgetrc

# 查看文件前 20 行
$ tail -20 /etc/wgetrc
$ tail -n 20 /etc/wgetrc

# 只显示文件 100 行以后的内容
$ tail -n+100 /etc/wgetrc

# 只显示第 11 到第 20 行
$ head -n 20 /etc/wgetrc | tail -n 10

# 持续检测文件内容(按 [ctril]-c 离开tail)
$ tail -f /etc/wgetrc

1.12. 查找命令

1.12.1. 查找并显示给定命令的绝对路径 which

https://wangchujiang.com/linux-command/c/which.html

1
2
3
4
5
# 查找 cd 命令所在路径
$ which cd

# 查找 nginx 所在路径
$ which nginx

1.12.2. 查找二进制程序、代码等相关文件路径 whereis

https://wangchujiang.com/linux-command/c/whereis.html

1
2
# 把和 ls 文件相关的文件都查找出来
$ whereis ls

1.12.3. 查找文件或目录 find

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 按名称查找,精确查找
$ find /etc -name sudo

# 按名称查找,模糊查找
# *:匹配所有
# ?:匹配单个字符
$ find /etc -name "sudo???"

# -ls 以详细信息展示
$ find /etc -name "*.conf" -ls

# 按文件大小查找(找出大于 200MB 的文件)
# +:大于
# -:小于
# 不写:等于
$ find /etc -size -204800

# 按文件类型查找
# f:二进制文件
# l:软链接文件
# d:目录
# c:字符文件
$ find . -type d

# 查找 /root/ 目录下权限为600的文件
find /root/ -perm 600

# 查找并删除当前目录下 .DS_Store
find . -name ".DS_Store" -delete

1.12.4. 查找文件内容 grep

https://wangchujiang.com/linux-command/c/grep.html

grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。用于过滤/搜索的特定字符。可使用正则表达式能配合多种命令使用,使用上十分灵活。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 查找文件内容并显示包含关键字的所在行
$ grep "love" a.txt

# 显示匹配行的次数(以行为单位,而不是出现的次数)
$ grep -c "love" a.txt

# 忽略大小写
$ grep -i "Love" a.txt

# 显示匹配行及行号
$ grep -n "love" a.txt

# 反向选择,显示不包含匹配文本的所有行
$ grep -v "love" a.txt

# 搜索命令行历史记录中 输入过 git 命令的记录:
history | grep git

2. 压缩和解压文件、打(解)包目录和文件

2.1. 压缩文件 gzip

https://wangchujiang.com/linux-command/c/gzip.html

1
2
3
4
# 压缩单个文件
$ gzip a.txt
# 同时压缩多个文件
$ gzip b.txt c.txt

2.2. 用于解压缩由zip命令压缩的压缩包 unzip

https://wangchujiang.com/linux-command/c/unzip.html

1
2
3
4
5
# 将压缩文件 text.zip 在当前目录下解压缩
$ ungzip test.zip

# 将压缩文件 text.zip 在指定目录 /tmp 下解压缩,如果已有相同的文件存在,要求 unzip 命令不覆盖原先的文件。
$ unzip -n test.zip -d /tmp

2.3. 打(解)包目录和文件 tar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 单独打包文件或目录
$ tar -cvf a.tar a.txt
$ tar -cvf test.tar test

# 同时打包多个文件
$ tar -cvf abc.tar a.txt b.txt c.txt

# 追加文件到打包文件中
$ tar -rvf a.tar d.txt

# 以 gzip 压缩打包文件
$ gzip a.tar

# 一步到位,打包文件并以 gzip 进行压缩
$ tar -zcvf abc.tar.gz a.txt b.txt c.txt

# 解压打包文件
$ tar -xvf a.tar

# 一步到位,解压 .tar.gz 文件
$ tar -zxvf abc.tar.gz

# 解压到指定目录下
$ tar -zxvf abc.tar.gz -C test

3. VI编辑器(VIM)

3.1. 插入命令

命令作用
a在光标后附加文本
A(shift + a)在本行行末附加文本 行尾
i在光标前插入文本
I(shift+i)在本行开始插入文本 行首
o在光标下插入新行
O(shift+o)在光标上插入新行

3.2. 定位命令

命令作用
:set nu设置行号
:set nonu取消行号
gg到第一行
G(shift+g)到最后一行
nG到第n行
:n到第n行

3.3. 保存和退出命令

命令作用
:w保存修改
:w new_filename另存为指定文件
:w >> a.txt内容追加到a.txt文件中 文件需存在
:wq保存修改并退出
:wq!保存修改并强制退出(文件所有者可忽略文件的只读属性)
shift+zz(ZZ)快捷键,保存修改并退出
:q!不保存修改退出
ctrl+z快捷键,将命令挂起在后台

注意:将 vi 命令挂起至后台后,在列表里会出现一个隐藏文件 .swp。输入 fg 进入 vi 编辑器重新修改,修改完成,.swp 文件会自动被删除。

3.4. 删除命令

命令作用
x删除光标所在处字符 nx 删除光标所在处后n个字符
dd删除光标所在行,ndd删除n行
:n1,n2d删除指定范围的行(eg :1,3d 删除了123这三行)
dG删除光标所在行到末尾的内容
D删除从光标所在处到行尾

3.5. 复制和剪切命令

命令作用
r取代光标所在处字符
R(shift + r)从光标所在处开始替换字符,按Esc结束
uundo,取消上一步操作
ctrl+rredo,返回到undo之前

3.6. 替换和取消命令

命令作用
r取代光标所在处字符
R(shift + r)从光标所在处开始替换字符,按Esc结束
uundo,取消上一步操作
ctrl+rredo,返回到undo之前

3.7. 搜索和替换命令

命令作用
/string向后搜索指定字符串 搜索时忽略大小写 :set ic
?string向前搜索指定字符串
n搜索字符串的下一个出现位置,与搜索顺序相同
N(Shift + n)搜索字符串的上一个出现位置,与搜索顺序相反
:%s/old/new/g全文替换指定字符串
:n1,n2s/old/new/g在一定范围内替换指定字符串

4. 权限管理

4.1. 用户管理

4.1.1. 添加用户 useradd

https://wangchujiang.com/linux-command/c/useradd.html

1
2
# 添加用户
$ useradd zhangsan

4.1.2. 用于修改用户的基本信息 usermod

https://wangchujiang.com/linux-command/c/usermod.html

4.1.3. 修改密码 passwd

1
2
# 修改密码
$ passwd zhangsan

4.1.4. 删除用户 userdel

https://wangchujiang.com/linux-command/c/userdel.html

1
2
3
4
# -f:强制删除用户,即使用户当前已登录
# -r:删除用户的同时,删除与用户相关的所有文件
# 删除用户
$ userdel -r zhangsan

4.1.5. 4.1.5 查询用户所属组 groups

https://wangchujiang.com/linux-command/c/groups.html

1
2
# 查询 zhangsan 所属用户组(用户组默认与用户名一样)
$ groups zhangsan

4.2. 用户组管理

4.2.1. 管理用户主要组的成员 groupmems

https://wangchujiang.com/linux-command/c/groupmems.html

1
2
3
# 要列出组的成员
groupmems -l -g SUPPORT
groupmems --list -g SUPPORT

4.2.2. 新增用户组 groupadd

https://wangchujiang.com/linux-command/c/groupadd.html

1
2
# 新增用户组
$ groupadd developer

4.3. 修改用户组 groupmod

https://wangchujiang.com/linux-command/c/groupmod.html

1
2
3
# -n:修改用户组的名字
# 将组 developer 修改为 it-group
$ groupmod -n it-group developer

4.4. 删除用户组 groupdel

https://wangchujiang.com/linux-command/c/groupdel.html

1
2
# 删除用户组 it-group
$ groupdel it-group

4.5. 管理用户组中的用户 gpasswd

https://wangchujiang.com/linux-command/c/gpasswd.html

1
2
3
4
5
6
7
8
# 查看用户组 it-group 中的所有用户
$ grep "it-group" /etc/group

# 将用户 developer1 添加到组 it-group
$ gpasswd -a developer1 it-group

# 从 it-group 组中删除用户 developer3
$ gpasswd -d developer3 it-group

5. 文件或目录属性与权限管理

5.1. 更改文件或目录所属用户组 chgrp

https://wangchujiang.com/linux-command/c/chgrp.html

1
2
3
4
5
# 将 a.txt 的所属组修改为 it-group
$ chgrp it-group a.txt

# 递归修改目录下所有目录文件的所属组
$ chgrp -R it-group a

5.2. 更改文件或目录所有者 chown

https://wangchujiang.com/linux-command/c/chown.html

1
2
3
4
5
6
7
8
9
10
11
# 将 a.txt 的所属用户修改为 developer1
$ chown developer1 a.txt

# 递归修改目录下所有目录文件的所属用户
$ chown -R developer2 a

# 将 a.txt 的所属用户和所属组修改为 root
$ chown root:root a.txt

# 递归修改目录下所有目录文件的所属用户和所属组
$ chown -R developer2 a

5.3. 更改文件或目录权限 chmod

https://wangchujiang.com/linux-command/c/chmod.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 修改 a.txt 的权限为 [-rwxr-xr--]
# 数字权限
$ chmod 754 a.txt

# 符号权限
$ chmod u=rwx,g=rx,o=r a.txt

# 去掉 a.txt 文件所有人的可读权限
$ chmod a-r a.txt

# 修改目录权限
$ chmod 711 a

# 递归修改目录下所有目录文件的权限为 777
$ chmod -R 777 a

6. 系统管理

6.1. 切换用户 su

https://wangchujiang.com/linux-command/c/su.html

1
2
3
4
5
# 切换用户
$ su zhangsan

# 退出返回原使用者
[zhangsan@localhost root]$ exit

6.2. 关机与重启命令 shutdown

https://wangchujiang.com/linux-command/c/shutdown.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 立即关机
$ shutdown -h now

# 1分钟后关机
$ shutdown

# 指定1分钟后关机,1分钟关机并显示警告信息
$ shutdown -h 1 "1分钟后关机"

# 立即重启
$ reboot

# 指定1分钟后重启,并显示警告信息
$ shutdown -r 1 "1分钟后关机重启"

# 取消正在进行的关机或重启动作
$ shutdown -c

6.3. 查看内存及交换空间使用状态 free

1
2
# 清除缓存命令
$ echo 1 > /proc/sys/vm/drop_caches
--------------本文结束 感谢您的阅读--------------