Linux常见指令
01. ls 指令
语法格式: ls [参数] [文件或目录…]
功能: 在Linux中列出目录内容,以下列出高频指令
常见选项:
选项 | 作用 |
---|---|
-l | 一行只列出一个文件并长格式显示(权限、所有者、大小、修改时间等) |
-a | 显示所有文件(包括隐藏文件,如 .bashrc ) |
-h | 配合 -l 使用,人性化显示文件大小(如 KB/MB/GB) |
-t | 按修改时间排序(最新优先) |
-r | 对目录反向排序 |
-R | 列出所有子目录下的文件(递归) |
-S | 按文件大小排序 |
--color | 彩色输出(通常默认启用) |
参考示例:
#列出当前目录内容的命令组合(详细视图):
ls -al
02. cd 指令
语法格式: cd 目录名
功能: cd是Change Directory的缩写,用来对工作目录进行切换。
参考示例:
选项 | 作用 |
---|---|
`cd /xx/ | 绝对路径 |
cd ../xx/ | 显示所有文件(包括隐藏文件,如 .bashrc ) |
cd .. | 返回上级目录 |
cd ~ | 返回用户家目录 |
cd - | 在最近两个目录间快速切换 |
03. touch 指令
语法格式: touch [选项] 文件名…
功能:若文件不存在时创建一个空文件,文件已存在时,默认更新其访问与修改时间戳为当前时间。
常见选项:
选项 | 作用 |
---|---|
-a | 仅更新访问时间 |
-m | 仅更新修改时间 |
-c | 不创建新文件(仅更新时间戳,文件不存在时不报错) |
-t | 使用指定的日期时间,非现在的时间 |
-r | 参照其他文件的时间戳(同步两个文件的时间) |
参考示例:
touch f1.txt # 创建单个文件
touch log_{1..10}.txt # 创建 log_1.txt 到 log_10.txt
touch existing_file # 文件存在时将文件的访问和修改时间更新为当前时间
touch -a old_file # 仅更新访问时间
touch -m old_file # 仅更新修改时间
touch -t 202505031200.00 file.txt # 将时间设为 2025年5月3日12:00:00
touch -r source.txt target.txt # 将 target.txt 的时间设为与 source.txt 相同
touch -c non_existent_file # 文件不存在时,不创建也不报错
touch file && > file # 先更新时间戳,再清空内容,替代echo > file(创建文件并写入内容)
find . -name "*.bak" -exec touch {} \; # 更新所有 .bak 文件的时间戳
04. mkdir 指令
语法格式: mkdir [选项] 目录名…
功能:用于创建目录的基础指令并支持批量创建和设置权限,mkdir不会覆盖已存在的目录(与touch不同),mkdir 只创建空目录。
常见选项:
选项 | 作用 |
---|---|
-p | –parents,递归创建多级目录(路径中不存在的目录自动创建) |
-m | 创建并设置目录权限,后跟xxx权限码,权限码指的是三个文件所有者的8进制形式权限 |
-v | 显示执行过程的详细信息 |
参考示例:
mkdir mydir # 在当前目录创建 `mydir`
mkdir /tmp/data # 在指定路径创建目录(需父目录存在)
mkdir -m 750 private_dir # 权限可以以8进制形式识别,创建权限为 `rwxr-x---` 的目录
mkdir dir_{1..5} # 创建 dir_1, dir_2, ..., dir_5
创建复制目录:
mkdir -p test/{src,logs,backup} # 一次性创建多级目录结构
mkdir -pv a/b/c # 输出:mkdir: created directory 'a/b/c',递归创建a/b/c目录结构
#在/home/目录下或者使用sudo提权+绝对路径在当前目录下创建复制目录结构
mkdir -p ~/project/{assets/{images,fonts},docs,output}#家目录下创建
[use_zhang@VM-8-16-centos lesson3]$ sudo mkdir -p /home/use_zhang/lesson3/test_01/{assets/{images,fonts},docs,output}#使用绝对路径,避免使用相对路径的时候创建不成功
mkdir -p existing_dir # 即使目录存在也不会报错
05. rmdir && rm 指令
语法格式: rmdir [选项] 目录名…
功能: 用于删除指定的空目录,当目录不为空的时候删除会拒绝并且报错。
常见选项:
选项 | 作用 |
---|---|
-p | 递归删除所有子文件,若子目录删除后父目录为空,则连同父目录一起删除 |
-v | 显示操作过程详情信息 |
参考示例:
rmdir empty_folder # 删除空目录 empty_folder
rmdir -p a/b/c # 递归删除目录 a/b/c,若删除后 a/b 和 a 也为空则一起删除
与 rm -r
的区别
rmdir
只能删除空目录,更安全。rm -r 目录名
会递归删除目录及其全部内容(包括文件和子目录),谨慎使用。
语法格式: rm [选项] 文件/目录名
功能: 用于删除指定的空目录,当目录不为空的时候删除会拒绝并且报错。
常见选项:
选项 | 作用 |
---|---|
-f | 强制删除文件而不询问 |
-d | 仅删除无子文件的空目录 |
-i | 删除文件前询问用户是否确认 |
-r | 递归删除目录及其内全部子文件 |
-v | 显示操作过程详情信息 |
参考示例:
#权限不足时使用sudo提权删除
sudo rm -rf test_01 #强制递归删除该目录及其子目录
06. man 指令
语法格式: man 参数(章节) 对象
功能: man是manual的缩写,有很多参数,不可能都记住,所以我们需要查看手册获取帮助。
常见选项:
选项 | 作用 |
---|---|
-f | 显示指定关键字的简短描述信息 |
-k | 在所有手册页中搜索字符串 |
-a | 在所有手册页中搜索关键词 |
-w | 显示文件所在位置 |
参考示例:
man ls #查看命令帮助
man 2 open # 查看系统调用 open 的文档
man 5 passwd # 查看配置文件 /etc/passwd 的格式说明
手册章节:
章节 | 内容类型 |
---|---|
1 | 普通用户命令(如 ls , rm ) |
2 | 系统调用(如 open , read )通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件 |
3 | 库函数(如 printf , fopen ) |
4 | 特殊文件,也就是/dev下的各个设备文件 |
5 | 配置文件格式(如 /etc/passwd ) |
6 | 给文件预留,由各个游戏自己定义 |
7 | 是附件还有一些变量,(如向environ这种全局变量在这里就有说明) |
8 | 管理员命令,但是只能由root使用(如 mount , ifconfig ) |
快捷键:
操作 | 快捷键 |
---|---|
向下翻页 | b |
按行下翻 | Enter |
按页下翻 | space |
在手册中查找字符串 | /关键词 (按 n 下一个,N 上一个) |
退出 | q |
07. cp 指令
语法格式: cp 参数 源文件名 目标文件名
功能:能够将一个或多个文件或目录复制到指定位置,能高效完成文件管理任务,尤其是备份和归档场景。
注意:该操作默认覆盖文件,建议重要操作添加 -i
选项。若目标目录无写入权限,会报错 Permission denied
。与mv相比,cp创建新文件副本占用双倍空间,而mv移动/重命名文件不额外占用空间
常见选项:
选项 | 作用 |
---|---|
-r / -R | 递归复制所以子文件 |
-i | 若目标文件已存在,则会询问是否覆盖 |
-f | 若目标文件已存在,则会询问是否覆盖 |
-v | 显示复制执行过程详细信息 |
-p | 保留原文件或目录的所有属性 |
-a | 归档模式(相当于 -rp ,保留所有属性) |
-u | 仅复制源中比目标更新的文件(增量备份) |
-l | 创建硬链接而非复制,节省空间 |
-s | 创建符号链接软链接而非复制 |
参考示例:
#复制单个文件
cp src.txt des.txt # 复制 src.txt 到 des.txt
cp -i notes.txt ~/Documents/ # 复制到目录,覆盖前确认
#递归复制目录到目标目录
cp -r dir1/ dir2/ # 递归复制 dir1 到 dir2
cp -a project/ des/ # 保留属性复制(适合备份)
#复制多个文件到指定目录中
cp *.jpg /photos/ # 复制所有 .jpg 文件到 /photos
cp f1.txt f2.txt ~/docs/ # 复制多个文件到目录
#cp操作后保留原有文件的属性
cp -p src.txt des/ # 保留原文件属性
#创建硬/软连接,非复制操作
cp -l f3.txt des/ # 创建硬链接(节省空间)
cp -s /bin/ls ~/ls_link # 创建软链接(快捷方式)
08. mv 指令
语法格式: mv [选项] 源文件/目录 目标文件/目录(第二个参数)
功能:
- 根据mv命令中是目标文件还是目标目录,对文件来说mv命令是对文件重命名,对目录来说mv命令是将其移
至一个新的目录中。 mv移动/重命名文件不额外占用空间
-
当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它
将所给的源文件或目录重命名为给定的目标文件名。 -
当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至
目标目录中。
常见选项:
选项 | 作用 |
---|---|
-i | 覆盖目标文件前询问用户是否确认 |
-f | 强制操作,不询问 |
-v | 显示执行过程详细信息 |
-n | 不允许覆盖已有文件 |
-u | 当源文件比目标文件更新时,才执行覆盖操作 |
-b | 覆盖前为目标文件创建备份 |
参考示例:
#第二个参数为文件时重命名
mv old.txt new.txt # 文件重命名
#第一个参数是文件,二个参数为目录时,移动文件到指定目录中
mv src.txt ~/Documents/ # 移动单个文件
mv *.jpg /photos/ # 移动所有 .jpg 文件
#第一个,二个参数为目录时,移动原目录到指定目录中
mv dir1/ dir2/ # 若 dir2 存在,将 dir1 移到 dir2 内,若 dir2 不存在, dir1 重命名为 dir2
mv -i src.c des/ # 覆盖前询问
mv -u src.c des/ # 仅当源文件比目标文件新时移动
mv -f src.c des/ # 强制覆盖覆盖
09. cat/tac 指令
语法格式: cat [选项] [文件…] — tac [选项] [文件…]
功能:tac
和 cat
常用于查看或组合文件的命令,前者默认连接文件并从上到下打印内容,后者与之相反。tac能够连接多个文件并且从上至下打印内容。tac
会加载整个文件到内存,处理大文件时可能消耗较多资源。两者均不适用于二进制文件。查看文件末尾的数据,建议使用tail+grep管道方式减少资源的消耗。
常见选项:
选项 | 作用 |
---|---|
-n | 显示行号(包括空行) |
-b | 显示行号(忽略空行) |
-s | 压缩连续空行为一行 |
-A | 显示所有控制字符(如换行符$ 、制表符^I ) |
参考示例:
#正向连接文件并从上至下打印内容,并且显示行号
cat -n demo01.c demo02.c
#合并多个文件到一个新文件中
cat demo01.c demo02.c >merge.c
#创建新文件,输入内容后通过Ctrl+D`保存
cat >new_f1.c
常见选项:
选项 | 作用 |
---|---|
-s | 使用字符串作为分隔标志 |
-b | 在行前添加分隔标志 |
-r | 将分隔标志视作正则表达式来解析 |
参考示例:
#快速查看日志
tac error.log | head -n 10 # 查看最后10条错误日志(最新在最前)
#合并后反转到一个新文件中
tac file1.txt file2.txt > reversed_merge.txt
#检查配置文件的结构
cat -n /xxx/yyy/zzz.conf
#反向搜索关键词
tac demo.txt | grep -m 5 "keyword" # 从文件末尾向上搜索5个keyword
10. more 指令
语法格式: more [选项] 文件名
功能: more命令,功能与cat类似,分页查看工具,用于逐页显示文件内容(适合查看大文件),兼容性强,比less简单。支持向前翻页,支持文本搜索。一旦跳过某页,无法回看,同时 查看当前行号需手动按 =
。
常见选项:
选项 | 作用 |
---|---|
-d | 显示提示信息 |
-f | 统计实际的行数,而非自动换行的行数 |
-p | 直接清屏显示下一页 |
-s | 将多行压缩成一行显示 |
+数字 | 从第 n 行开始显示(如 more +10 file.txt ) |
+/关键词 | 从指定关键词开始显示文件内容 |
快捷键
快捷键 | 功能 |
---|---|
空格 | 向下翻一页 |
Enter | 向下翻一行 |
= | 显示当前行号 |
q | 退出 |
h | 帮助菜单 |
参考示例:
#从第x行开始显示
more +10 file.txt # 从第10行开始显示
#搜索关键词并分页
more +/keyword app.log # 从第一个 "keyword" 开始显示
#结合管道分页显示
cat large_file.txt | more # 将长输出分页显示
#先进行清屏操作,随后以每次10行内容的格式显示指定的文本文件内容
more -c -10 f1.txt
11. less 指令
语法格式: less [选项] [文件]
功能:less
是 一个强大的分页查看工具,用于高效浏览大文件或命令输出,less 的用法比起 more 更加的有弹性。在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜等高级功能。
常见选项:
选项 | 作用 |
---|---|
-N | 显示行号 |
-i | 忽略搜索时的大小写 |
/字符串 | 向下搜索“字符串”的功能 |
?字符串 | 向上搜索“字符串”的功能 |
q | quit |
参考示例:
#查看文件并显示行号
less -N /etc/nginx/nginx.conf
#从匹配行开始查看
less +/keyword /var/log/syslog # 打开后直接跳转到第一个 "keyword"
#多文件操作
less file1.txt file2.txt # 打开多个文件
12. head 指令
语法格式: head [选项] [文件]
功能: head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。
常见选项: -n <行数> 显示的行数
13. tail 指令
语法格式: tail [必要参数] [选择参数] [文件]
功能: 用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
常见选项:
-f 循环读取
-n<行数> 显示行数
14. Cal 指令
语法格式: cal [参数] [月份] [年份]
功能: 用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份
常见选项:
-3 显示系统前一个月,当前月,下一个月的月历
-j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
-y 显示当前年份的日历
15. find 指令
语法格式: find pathname -options
功能:
1.Linux下find命令在目录结构中搜索文件,并执行指定的操作。
2.Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。
3.即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。
4.在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系
统可能会花费很长的时间(这里是指30G字节以上的文件系统)。。
常见选项: -name 按照文件名查找文件。
16. grep 指令
语法格式: grep [选项] 搜寻字符串 文件
功能: 在文件中搜索字符串,将找到的行打印出来
常见选项:
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行
17. zip/uzip 指令
语法格式: zip 压缩文件.zip 目录或文件
功能: 将目录或文件压缩成zip格式
举例: 将test2目录压缩:zip test2.zip test2/*
解压到tmp目录:unzip test2.zip -d /tmp
18. tar 指令
功能: 打包/解包,不打开它,直接看内容
常见选项:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
-C : 解压到指定目录
举例:
将 /etc/ 打包后直接解开在 /tmp 底下,而不产生文件!
[root@linux ~]# cd /tmp
[root@linux tmp]# tar -cvf - /etc | tar -xvf
这个动作有点像是 cp -r /etc /tmp 啦~依旧是有其有用途的!
要注意的地方在於输出档变成 - 而输入档也变成 - ,又有一个 | 存在~
这分别代表 standard output, standard input 与管线命令啦!