Linux常用命令

shell语言

名称 描述 示例
解释器 常见shell命令解释器:
sh,大多数Unix的默认Shell
bash,大多数Linux的默认Shell
zshMac OS从2019年起将默认Shell从bash改为zsh。

脚本在首行可以指定解释器,如#!/bin/bash。也可以在运行时指定使用的解释器如:bash /path/to/script.sh

在命令行输入echo $SHELL,可以查看当前使用的Shell解析器
注释 单行注释:以#开头。
管道 管道中每个命令的输出通过管道连接到下一个命令的输入。用|或者|&表示。其中|& 输出除了包含正常信息,还包含错误时信息,是简写2>&1 |的简写。

格式:[time [-p]] [!] command1 [ | or |& command2 ] …
参数展开 格式:
${参数} ,参数的值
${参数#文本}${参数##文本},从开头删除匹配的内容,#表示小匹配内容,##最多匹配内容。
${参数%文本}${参数%%文本},从结尾删除匹配的内容,%表示小匹配内容,%%最多匹配内容。
${参数@操作} 根据操作字符值进行转换,常用操作可取值:U,参数的值,都转大写。L,参数的值,都转小写。
$ str=123abc
$ echo ${str}  #参数值,相当于$str
$ echo ${str:2}  #从第3位开始到最后
$ echo ${str:2:1}
for name in `ls`; do mv $name ${name#2021-} ; done; 批量重命名,删除前缀2021-
模式匹配
参数类型 3种类型命令行参数:
1.Unix类型参数,前面加-
2.BSD类型参数,前面加不加
3.GNU类型参数,前面加--

使用man打开帮助文档,可以查看支持的参数,如man ps

文件管理

命令 描述 语法格式 常用参数 示例
ls 显示目录的内容和属性 ls [参数][目录] -a 显示所有文件和目录,包括隐藏内容(以.开头文件)
-l 显示属性权限等信息
-h 文件大小以KB、MB、GB等显示,与-l参数搭配
-R 显示包括子孙目录的所有文件和目录
ls -l 显示当前目录的内容和信息
ls -al /home 显示/home目录的包括隐藏文件在内的所有内容和信息
cd 切换当前目录,目录可以使用相对路径或绝对路径 cd [目录] cd /home 进入/home目录
cd ../dirName 进入上级目录中的dirName目录
pwd 查看当前目录的完整路径 pwd [参数] pwd 查看当前目录的完整路径
mkdir 创建目录,可一次创建多个 mkdir [参数] 目录 -p 创建多级目录
-m 权限值 设置目录权限
-v 显示创建过程的信息
mkdir test 在当前目录下创建一个目录test
mkdir -p test1/test2 递归创建多级目录
mkdir -m 700 test3 创建权限为700的test3目录
cp 复制文件或目录 cp [参数] [-T] 源文件或目录 目标文件或目录
cp [参数] 源文件或目录 目标目录
cp [参数] [-t] 目标目录 源文件或目录
-i 若目标文件已存在,会询问是否覆盖
-f 若目标文件已存在,直接覆盖
-n 若目标文件已存在,不要覆盖
-r 递归复制目录和文件
cp test1 test2 复制test1到test2(假设当前不存在test2文件夹)
cp t1 t2 dirA 复制t1、t2到dirA文件夹
cp -t dirA t1 t2 复制t1、t2到dirA文件夹
mv 文件移动或文件重命名 mv [参数][-T] 源文件 目标文件
mv [参数] 源文件 目标目录
mv [参数] -t 目标目录 源文件
mv test1 test2 文件test1重命名为test2
mv test1 test3 移动test1文件到test3目录(假设当前存在test3目录)
rm 删除文件或目录 rm [参数] [文件或目录] -i 删除文件时,先询问是否删除
-f 直接强制删除
-r 删除目录及其所有文件。
rm test 删除test文件
rm -r testDir 删除testDir目录
find ./ -type d -name "__pycache__" -exec rm -rf {} \; 递归删除当前目录下所有的"__pycache__"目录。
find ./ -type d -name "__pycache__" | xargs rm -rf递归删除当前目录下所有的"__pycache__"目录。
rmdir 删除空目录 rmdir [参数] [目录] -p rmdir testDir 删除空目录testDir
touch 修改文件或目录的日期时间,创建空文件 touch [参数] [文件] -a 修改访问时间(access time)
touch test3创建空文件test3
ln 创建文件或目录的软链接和硬链接 ln [参数] [源文件或目录] [目标文件或目录] -s 软链接,相当于快捷方式。不加为默认的硬链接 ln test t1 创建test的硬链接t1
ln -s test t2 创建test的软链接t2

文本工具

命令 描述 语法格式 常用参数 示例
cat 显示文件内容 cat [参数] [文件] -n 输出内容每行前添加行号 cat test 显示test文件内容
cat -n test1 test2 显示test1和test2文件内容,并且显示行号。
tail 显示文件末尾内容,默认10行 tail [参数] [文件] -n 行数 显示的行数
-c 字节数 显示的字节数
-f 循环显示,文件末尾有更新会刷新
tail test 显示test文件末尾10行内容
tail -n 3 test 显示test文件末尾3行内容
head 显示文件开头内容,默认10行 head [参数] [文件] -n 行数 显示的行数
-c 字节数 显示的字节数
-v 显示文件名
head test 显示test文件开头10行内容
head -n 3 test 显示test文件开头3行内容
more 文件内容分页查看,搜索过滤 more [参数] 文件 +行数 从第几行开始显示
-行数 每次显示的行数
+/字符串 从搜索到字符串位置的前面2行开始显示
-c 清屏
-p 清屏
-s 连续多个空行显示为一行
more +5 test 从第5行显示test文件内容
more -12 test 每次显示12行test文件内容
more +/晴天 test 从test文件搜索到“晴天”的位置向前2行开始显示
sort 排序 sort [参数] [文件] -r反向排序
-n 按数值排序
-h 按易读数值(如2G、1K)排序
-M 按月份排序
sort test.txt按字符大小排序test.txt每行
sort -n test.txt按数字大小排序test.txt每行
grep 文本搜索,使用正则表达式进行搜索 grep [参数] 匹配模式 [文件] -c 统计搜索到的次数
-i 忽略大小写差别
-r 递归方式查找,目录的所有文件包括子孙目录
grep test *.log --color=auto 查找.log结尾文件包含test的行,并且test用颜色标记
grep -r passwd /etc/查找/etc目录下所有文件中包含passwd的行
awk 文本处理、分析和格式化工具。持正则表达式
sed 命令行文本处理,支持正则表达式。常用于替换。
vi/vim 文本编辑器 vim [参数] [文件]
vim [参数] -
vim [参数] -t tag
vim test用vim编辑test
+行数 跳到指定行数
+ 跳到最后一行
-R 只读模式打开文件
vim +10 test 打开test文件,跳到10行位置
vim -R test 只读模式打开test文件
wc 统计文件行数、单词数、字节数信息。
word count
wc [参数] [文件] -l 行数
-m 字数
-c 字节数
-L 最长行的字数
-m 最长行的字数
wc test 显示test文件行数、字数、字节数信息
wc -l test 显示test文件行数
diff 文件比对 -r 对比目录及子孙目录所有文件
-x 排除文件或目录,不进行对比。
-C 行数-c行数 显示不同处的上下文
diff a.txt a2.txt 显示a.txt和a2.txt文本差异
diff dir1 dir2显示目录dir1和dir1文件差异。
diff -r -x '*.log' dir1 dir2显示目录dir1和dir1及子孙目录所有文件差异,除了.log结尾的文件。

查找

命令 描述 语法格式 常用参数 示例
find 文件搜索,默认当前目录 find [参数] [搜索目录] [表达式] -name 按文件名查找目录下所有文件包括子孙目录
-iname 文件名忽略大小写
-type 类型 指定查找类型bcdpflsD(d:目录,f:一般文件)
-ctime 天数 过去几天修改过的文件
-cmin 分钟数 过去几分钟修改过的文件
find test当前目录查找test文件
find -name *.log当前目录及子孙目录查找以.log结尾的文件
find . -type d -name '.c'递归查找当前目录所有名称为'.c'的目录
find -ctime 3 当前目录过去3天修改过的文件
find testDir | xargs grep -rl 'Python' 查找testDir目录及子孙目录中文件内容包含'Python'的文件。
whereis 查找程序、源代码及帮助文件位置 whereis [参数] 文件 -b 查找可执行文件
-m 查找帮助文件
-s 查找源代码文件
-u 查找其他文件
-B 目录指定查找可执行文件的目录
-M 目录指定查找帮助文件的目录
-S 目录指定查找源代码文件的目录
which python3 查找python3位置
which 查找程序位置,在当前PATH变量中查询,且只返回第一个结果。 which python3 查找python3位置

备份压缩

命令 描述 语法格式 常用参数 示例
tar 打包,多个文件或目录打包成一个存档文件。解包,从存档文件提取所有文件。
使用gzip、bz2压缩解压
tar [参数] [文件]
(主参数有且只能一个)
主参数:
-c 打包,创建一个新存档文件
-x 解包,提取所有存档文件
-t 查看,显示所有存档文件
-r 追加,向存档文件追加文件
-u 更新,只更新比存档文件的文件新的文件
-d 差异,

副参数:
-v 显示操作过程
-f 存档文件 指定存档文件
-C 目录 指定目录
-z 通过gzip压缩解压,现在解压不需要指定,tar会自动选择
tar -cvf test.tar testDir test2 打包当前目录下testDir目录和test2,生成test.tar文件
tar -xvf test.tar 解包test.tar到当前目录

tar -xvf test.tar -C ../foo 在当前目录的上级目录的foo目录里解包test.tar
gzip 压缩文件,解压gzip文件,不能压缩目录,需配合tar使用。默认压缩文件,并删除原文件 gzip [参数] [文件] -d 解压
-c 输出压缩文件到标准输出设备,而不更改原文件
-f 强制压缩覆盖
-l 显示压缩信息
-k 不删除原文件
-r 在目录上递归操作,压缩或解压单个文件
gzip * 把当前目录所有文件转化为压缩文件
gzip -d *把当前目录所有压缩文件转化为文件
unzip 解压zip文件 unzip [参数] [文件] -d 目录 指定解压缩目录
-l 列出压缩包所包含的文件
-v 显示执行过程
-n 不覆盖原文件
-j 不创建压缩文件里的目录
-k 不删除原文件
-r 在目录上递归操作,压缩或解压单个文件
unzip test.zip 解压缩test.zip到当前目录
unzip test.zip -d foo解压缩test.zip到当前目录的foo目录中

用户和组

命令 描述 语法格式 常用参数 示例
id 显示用户的用户名和组名及数字ID id显示当前用户
id yourname显示用户名为yourname的
useradd 添加新用户
adduser yourname
usermod -aG sudo yourname
usermod 修改用户账号
userdel 删除用户账户 userdel [参数] 用户名 -r同时删除其主目录
sudo userdel -r username
passwd 修改用户密码
groupdel 删除用户组

权限管理

命令 描述 语法格式 常用参数 示例
chmod 修改文件或目录权限。

查看权限可使用ls -l命令
chmod [参数] 模式 [文件]

chmod [参数] --reference=参照文件 [文件]

模式格式:
[ugoa]*([-+=]([rwxXst]*|[ugo]))+|[-+=][0-7]+
-R 递归的方式为目录所有文件权限
-v 显示所有操作过程
-c 只显示被改变权限的文件操作过程
-f 安静模式,不输出错误信息

模式:
u 属主,文件属于的用户
g 属组,文件属于的用户组
o 其他用户
a 所有用户(默认)
+ 增加权限
- 取消权限
= 重新设定权限
r 读权限,用数字4表示
w 写权限,用数字2表示
x 执行权限,用数字1表示
0 无权限,用数字0表示
chmod 751 test设置test文件权限,属主读、写和执行的权限(7),属组读和执行的权限(5),其他用户执行的权限(1)。
chmod a+r test 设置test文件权限,为所有用户增加读取权限
chmod a=r,u+w test 设置test文件为所有用户只读,属主可写权限。
chown 修改文件或目录的属主和属组。
(属主:文件属于的用户, 属组:文件属于的用户组。)
chown [参数] [属主][:[属组]] 文件

chown [参数] --reference=参照文件 文件
-R 递归的方式更改目录所有文件的属主和属组
-v 显示所有操作过程
-c 只显示被改变的文件操作过程
-f 安静模式,不输出错误信息
chown foo:root test修改test用户属主为foo用户,属组为root用户组
chgrp 修改文件或目录的属组。
(属组:文件属于的用户组。)
chown [参数] 属组 文件

chown [参数] --reference=参照文件 文件
-R 递归的方式更改目录所有文件的属组
-v 显示所有操作过程
-c 只显示被改变的文件操作过程
-f 安静模式,不输出错误信息
chgrp root test修改test文件属组为root用户组

远程

命令 描述 语法格式 常用参数 示例
ssh 远程登录工具 ssh root@46.100.125.122 使用root用户登录46.100.125.122
scp 加密远程传输文件,基于ssh。 -r 传输目录 scp C:\Users\username\a.txt root@46.100.125.122:/home/root/b.txt 将本地a.txt复制到远程主机的/home/root/b.txt
scp -r root@46.100.125.122:/data/tes1/ /data/test1 将服务器目录/data/tes1/下载到本地/data/tes1/

网络命令

命令 描述 语法格式 常用参数 示例
ping 网络诊断工具,检测连通性 ping baidu.com
ping 1.1.1.1
ip 显示和配置网络 ip addr
ip route
nslookup DNS查询命令 nslookup baidu.com
dig DNS查询命令 dig baidu.com
ss socket统计信息。已经取代netstat。
tcpdump 数据包分析工具。
ifconfig 查看和配置网络设备。已经被ip addr, ip link, ip -s命令取代。
route 显示和修改路由表。已经被ip route命令取代。
netstat 显示网络状态。已经被ip -s, ss, ip route命令取代。

磁盘管理

命令 描述 语法格式 常用参数 示例
lsblk 列出块设备信息 lsblk [参数] [设备] -a 显示所有设备
-b以bytes方式显示设备大小
-d 不显示分区
-m 显示权限信息
lsblk显示块设备信息
lsblk -d 显示块设备信息,但不显示其节点信息
df 显示磁盘使用情况 df [参数] [文件] -a 所有文件系统
-h 以K、M、G、T、P等方式显示大小(除数为1024)
-H 与-h相同,但除数为1000
-i 显示inode信息
-l 只显示本地文件系统
-T 显示文件系统类型
t 文件系统类型 指定文件系统类型
df -h 以易读方式显示磁盘使用情况
df -t ext4 显示ext4类型文件系统的磁盘使用情况
du 文件或目录的磁盘使用情况 df [参数] [文件] -a 显示所有文件情况,而不仅是默认情况的目录
-h 以K、M、G、T、P等方式显示大小(除数为1024)
-H 与-h相同,但除数为1000
-s 只显示总计
-S 仅统计目录不包含子目录的大小
-d N, --max-depth=N 目录深度
--exclude=PATTERN 排除匹配的文件
du -h test 易读方式显示test目录所占空间
du -sh . 显示当前目录大小
du -sh * 显示当前目录下各个文件或目录的大小
du -d 2 -h testdu --max-depth=2 -h test 显示test目录下及其子目录的各个文件或目录的大小
du -sh --exclude='[HN]*' * 显示当前目录下各个文件或目录的大小,但不显示H或N开头的文件或目录
du -sh * | sort -hr 显示当前目录下各个文件或目录的大小,并降序显示
du -ah | sort -hr | head -n 10 当前目录及子孙目录所有文件大小,按大小降序,并显示前10条
fdisk 磁盘分区工具 fdisk -l 列出所有磁盘分区类型
mount 挂载工具 mount /dev/sdc2 test 挂载sdc2(第三个硬盘第二个分区)到当前目录的test目录
hdparm 查看硬盘参数和性能测试 sudo hdparm -I /dev/sda 显示sda硬盘信息
sudo hdparm -t /dev/sda 测试sda硬盘的读取速度

系统管理

命令 描述 语法格式 常用参数 示例
ps 进程(Process)状态信息
process status
ps [参数] -A-e 所有进程
-f全格式输出
-l 长格式输出
ps 当前终端当前用户的进程
ps -ef显示所有进程,输出详细信息
ps -el 显示所有进程,长格式输出
ps -aux 显示所有进程,输出详细信息
pidof 查找指定程序进程ID pidof nginx查找nginx进程id
top 实时显示进程状态信息
vmstat 虚拟内存统计,可以显示虚拟内存、进程、CPU等的整体情况
systemctl systemd的一个主要工具,可用于系统管理和服务管理。 systemctl --version 查看版本
systemctl start nginx.service启动nginx服务
kill 终止进程。
crontab 是一个定时的任务管理命令,是cron软件用于维护用户crontab文件。

crontab文件每行是一条定时任务,格式如下:
分钟 小时 日 月 星期 被执行的命令
如:30 0 * * * echo "hello" >> /tmp/test 每天0点30打印hello到/tmp/test文件中。定时中可使用的值:
1.某个数值,如分钟位置上的30表示第30分钟,星期上的6表示星期六。
2.星号*,表示任何值,如日位置上的*号表示每天。
3.连词符-,表示范围。
4.逗号,,表示多个值,如分钟位置的1,6,9表示第1,6,9分钟。
5.百分号%,表示每,如分钟位置上*%5表示每5分钟。
6.斜线/,表示间隔,如分钟位置上*/5表示
crontab [参数] [文件] -u user 指定编辑某用户的crontab文件,不设定,默认当前用户。
-l 显示用户crontab文件内容,默认当前用户
-e 编辑用户crontab文件,默认当前用户
-r 删除用户crontab文件,默认当前用户。
crontab -l 显示当前用户crontab文件内容
crontab -e 编辑当前用户的crontab文件
crontab -u test -l 查看test用户crontab文件内容,需要有权限。