Shell命令详解

一、什么是Shell?

Shell 是Linux/Unix系统中的命令行解释器,它是用户与操作系统内核之间的桥梁。

功能

  • 接收用户输入的命令

  • 解释并执行命令

  • 管理进程和文件

  • 提供编程环境(脚本编程)

形象理解

用户 → Shell(翻译官) → 内核(操作系统核心) → 硬件

Shell命令的类型

3.1 内部命令(内置命令)

定义:Shell自带的命令,不需要外部程序。

特点

  • 执行速度快

  • 随Shell启动而加载

  • 使用 type 命令可以查看

# 常见的内部命令
cd          # 切换目录
echo        # 输出内容
pwd         # 显示当前路径
exit        # 退出Shell
alias       # 创建别名
type        # 查看命令类型

# 查看命令类型
type cd
# 输出:cd is a shell builtin

type echo
# 输出:echo is a shell builtin
外部命令

定义:存储在文件系统中的独立程序。

特点

  • 执行时需要创建新进程

  • 存储在 /bin/usr/bin 等目录

  • 可以通过 which 查找位置

# 常见的外部命令
ls          # /bin/ls
grep        # /bin/grep
find        # /bin/find
tar         # /bin/tar
cat         # /bin/cat

# 查看命令位置
which ls
# 输出:/bin/ls

type ls
# 输出:ls is /bin/ls
两者的区别
对比项内部命令外部命令
存储位置Shell内部文件系统
执行速度相对慢
启动方式随Shell启动使用时加载
查看方式type 命令which 命令

Linux权限

一、权限的基本概念

1.1 权限的三类对象
对象符号说明
所有者u (user)文件或目录的拥有者
所属组g (group)文件或目录所属的用户组
其他人o (others)既不是所有者也不是组成员
1.2 权限的三种类型
权限符号数字对文件的作用对目录的作用
r4查看文件内容列出目录内容
w2修改文件内容创建/删除文件
执行x1执行程序/脚本进入目录

二、查看权限

# 1. 使用 ls -l 查看权限
ls -l file.txt
# 输出:-rw-r--r-- 1 user group 1024 Aug 10 10:00 file.txt

# 2. 权限位详解
# -rw-r--r--
# │││││││││
# ││││││││└─ 其他人的权限 (r--)
# │││││││└─ 组的权限 (r--)
# ││││││└─ 所有者的权限 (rw-)
# │││││└─ 文件类型 (-)
# ││││└─ 特殊权限
# 
# 文件类型:
# - 普通文件
# d 目录
# l 符号链接
# b 块设备
# c 字符设备
# s 套接字
# p 管道

# 3. 查看目录权限
ls -ld /home
# 输出:drwxr-xr-x 5 root root 4096 Aug 10 15:03 /home

目录操作指令

1. pwd - 显示当前目录路径

功能:Print Working Directory,显示当前所在位置的绝对路径

语法

pwd [选项]

2. cd - 切换目录

功能:Change Directory,切换到指定目录

语法

cd [目录路径]

特殊用法

命令说明
cd 或 cd ~切换到用户主目录
cd /切换到根目录
cd ..切换到上级目录
cd -切换到上一个目录
cd .保持在当前目录
# 示例1
cd /etc/nginx   # 绝对路径
cd ../var       # 相对路径(从当前向上再进入var)
cd ~/Documents  # 从主目录进入Documents

# 示例2
cd /root/linux_practice
cd -            # 回到上一次的目录

# 示例3
cd              # 直接回家,等同于 cd ~

3. ls - 列出目录内容

功能:List directory contents,显示文件和目录列表

语法

ls [选项] [文件或目录]

常用选项详解

选项说明示例
-l长格式显示(权限、大小、时间)ls -l
-a显示所有文件(包括.开头的隐藏文件)ls -a
-h人类可读的大小(KB/MB/GB)ls -lh
-R递归列出子目录内容ls -R
-t按修改时间排序(最新的在前)ls -lt
-r反向排序ls -lr
-S按文件大小排序ls -lS
-d只显示目录本身,不显示内容ls -ld /etc

长格式输出详解

ls -l
# -rw-r--r-- 1 root root 1024 Aug 10 22:38 file.txt
# │││││││││ │  │    │    │    │         │
# │││││││││ │  │    │    │    │         └─ 文件名
# │││││││││ │  │    │    │    └─────────── 修改时间
# │││││││││ │  │    │    └──────────────── 文件大小(字节)
# │││││││││ │  │    └───────────────────── 所属组
# │││││││││ │  └────────────────────────── 所属用户
# │││││││││ └───────────────────────────── 硬链接数
# ││││││││└─────────────────────────────── 权限
# 1. 显示详细信息(最常用)
ls -lh

# 2. 显示隐藏文件
ls -la

# 3. 只显示目录
ls -d */

# 4. 显示文件类型
ls -F
# 输出:dir/  file.txt  script*  link@

# 5. 查看特定类型
ls *.txt      # 所有txt文件
ls /etc/*.conf  # 所有conf文件

二、文件操作指令

4. touch - 创建空文件或更新时间戳

功能

  • 创建新的空文件

  • 更新已有文件的访问和修改时间

语法

touch [选项] 文件名

常用选项

选项说明
-c不创建文件,仅更新时间
-a仅更改访问时间
-m仅更改修改时间
# 1. 创建多个空文件
touch file1.txt file2.log file3.conf

# 2. 批量创建(配合大括号)
touch test_{1..10}.txt  # 创建 test_1.txt 到 test_10.txt

# 3. 只更新时间,不创建
touch -c existing_file.txt

# 4. 查看文件时间
stat file1.txt          # 显示详细时间信息

# 5. 设置特定时间
touch -t 202408101230.00 file1.txt  # 设置时间为 2024-08-10 12:30:00

5. mkdir - 创建目录

功能:Make Directory,创建新目录

语法

mkdir [选项] 目录名

常用选项

选项说明
-p递归创建父目录
-v显示创建过程
# 1. 创建单个目录
mkdir dir1

# 2. 创建多个目录
mkdir dir1 dir2 dir3

# 3. 创建多级目录
mkdir -p project/{src,bin,doc}  # 创建 project/src, project/bin, project/doc

# 4. 更复杂的嵌套
mkdir -p a/b/c/d/e

# 5. 创建并查看过程
mkdir -pv test/{sub1,sub2}/{data,logs}

6. cp - 复制文件或目录

功能:Copy,复制文件或目录

语法

cp [选项] 源文件 目标文件
cp [选项] 源文件... 目标目录

常用选项

选项说明
-r 或 -R递归复制目录(必须)
-i交互式,覆盖前询问
-n不覆盖已存在的文件
# 1. 复制文件到目录
cp file1.txt dir1/

# 2. 复制文件并重命名
cp file1.txt file_backup.txt

# 3. 复制目录(必须用 -r)
cp -r dir1 dir1_backup

# 4. 复制多个文件到目录
cp file1.txt file2.log file3.conf /target_dir/

# 5. 交互式复制(安全)
cp -i file1.txt dir1/   # 如果存在会询问

# 6. 复制时重命名
cp -r dir1 dir2_new

重要细节

# 复制目录时,末尾的斜杠有区别
cp -r source/ target/   # 复制source目录下的内容到target
cp -r source target/    # 复制source目录本身到target

# 示例
mkdir test
mkdir dest
cp -r test/ dest/   # 将test内容复制到dest
cp -r test dest/    # 在dest下创建test目录

7. mv - 移动或重命名

功能:Move,移动文件/目录或重命名

语法:

mv [选项] 源 目标
mv [选项] 源... 目标目录

常用选项

选项说明
-i覆盖前询问
-f强制覆盖,不询问
# 1. 重命名文件(最常用)
mv old_name.txt new_name.txt

# 2. 移动文件到目录
mv file.txt /target_dir/

# 3. 移动多个文件到目录
mv file1 file2 file3 /target_dir/

# 4. 重命名目录
mv project project_2024

# 5. 移动目录
mv project_2024 /backup/

# 6. 交互式移动(安全)
mv -i important.txt /backup/   # 如果目标存在会询问

mv vs cp 的重要区别

# mv 是移动(剪切),源文件会消失
mv file1.txt /tmp/   # file1.txt 不在当前目录了

# cp 是复制,源文件保留
cp file1.txt /tmp/   # file1.txt 还在当前目录

8. rm - 删除文件或目录

功能:Remove,删除文件或目录

语法

rm [选项] 文件/目录

常用选项

选项说明
-i删除前逐一询问确认
-f强制删除,不询问(force)
-r 或 -R递归删除目录及其内容
-d删除空目录
# 1. 删除文件(基础)
rm file.txt

# 2. 删除多个文件
rm file1.txt file2.log file3.conf

# 3. 删除目录(必须用 -r)
rm -r dir1

# 4. 强制删除目录(危险!)
rm -rf dir1   # 删除整个目录,不询问

# 5. 交互式删除(安全)
rm -ri dir1   # 每个文件都询问

# 6. 删除空目录
rm -d empty_dir
# 或
rmdir empty_dir

# 7. 删除所有文件(小心!)
rm -f *       # 删除当前目录所有文件
rm -rf *      # 删除当前目录所有文件和目录

危险命令警示

# 绝对不要执行以下命令(会导致系统崩溃!)
rm -rf /      # 删除根目录下所有文件
rm -rf /*     # 同上

三、文件内容查看指令

9. cat - 查看/连接文件内容

功能:Concatenate,显示文件内容或合并文件

语法

cat [选项] 文件...

常用选项

选项说明
-n显示行号
# 1. 查看文件内容
cat file.txt

# 2. 显示行号
cat -n file.txt

# 3. 合并多个文件
cat file1.txt file2.txt > merged.txt

# 4. 追加合并
cat file3.txt >> merged.txt

# 5. 从键盘输入创建文件(Ctrl+D结束)
cat > newfile.txt
输入内容...
Ctrl+D

注意事项

  • 适合查看短文件(几KB到几MB)

  • 大文件(>100MB)会用 less 或 tail

  • 二进制文件用 cat 会输出乱码

10. more - 分页查看文件

功能:分页显示文件内容,适合查看大文件

语法

more [选项] 文件名

常用选项

选项说明
-数字指定每页显示的行数
+行号从指定行开始显示
+/模式从匹配的字符串开始显示
-c清屏后显示

交互式操作

按键功能
空格向下翻一页
b向上翻一页
Enter向下翻一行
d向下翻半页
q退出
# 1. 基本查看
more long_file.txt

# 2. 指定每页行数
more -20 long_file.txt

# 3. 从第50行开始
more +50 long_file.txt

# 4. 从匹配字符串开始
more +/ERROR log.txt

# 5. 查看多个文件
more file1.txt file2.txt
# 翻页时显示:--More--(next file: file2.txt)
# 按:n 跳转到下一个文件
# 按:p 跳转到上一个文件

11. less - 更强大的分页查看器

功能:比 more 功能更丰富的分页查看器,支持上下翻页和搜索

语法

less [选项] 文件名

常用选项

选项说明
-N显示行号
-g高亮搜索匹配
-i搜索时忽略大小写

交互式操作(比more更丰富):

按键功能
j 或 向下滚动一行
k 或 向上滚动一行
空格 或 f向下翻一页
b向上翻一页
g跳到文件开头
G跳到文件末尾
/字符串向下搜索
?字符串向上搜索
n查找下一个匹配
N查找上一个匹配
q退出
# 1. 基本查看
less long_file.txt

# 2. 带行号查看
less -N long_file.txt

# 3. 查看多个文件
less file1.txt file2.txt
# 交互::n 下一个,:p 上一个

12. head - 查看文件开头

功能:显示文件开头部分,默认10行

语法

head [选项] 文件名

常用选项

选项说明
-n 数字显示指定行数
-c 字节数显示指定字节数
-q不显示文件名(多个文件时)
-v总是显示文件名
# 1. 查看前10行(默认)
head file.txt

# 2. 查看前20行
head -n 20 file.txt

# 3. 查看前50个字节
head -c 50 file.txt

# 4. 查看多个文件
head file1.txt file2.txt
# 输出会显示文件名头

# 5. 查看所有log文件开头
head -n 5 *.log

3. tail - 查看文件末尾

功能:显示文件末尾部分,默认10行,常用于查看日志

语法

tail [选项] 文件名

常用选项

选项说明
-n 数字显示指定行数
-c 字节数显示指定字节数
-f实时跟踪文件新增内容(最常用!)
-q不显示文件名
-v显示文件名
# 1. 查看最后10行(默认)
tail log.txt

# 2. 查看最后50行
tail -n 50 log.txt

# 3. 查看最后200个字节
tail -c 200 log.txt

# 4. 实时跟踪日志(最常用!)
tail -f /var/log/syslog

# 5. 跟踪并显示行号
tail -f -n 20 log.txt

# 6. 查看多个文件
tail -n 5 file1.txt file2.txt

# 7. 查看除文件头外的内容(跳过前几行)
tail -n +5 file.txt   # 从第5行开始显示

四、文件查找与搜索指令

14. find - 强大的文件查找

功能:在目录树中查找符合条件的文件

语法

find [路径] [条件] [动作]

常用选项

按名称查找

选项说明示例
-name "模式"文件名匹配(区分大小写)find . -name "*.txt"
-iname "模式"文件名匹配(忽略大小写)find . -iname "*.TXT"

按类型查找

选项说明
-type f普通文件
-type d目录
-type b块设备文件
-type c字符设备文件

按大小查找

选项说明
-size +100M大于100MB的文件
-size -1k小于1KB的文件
-size 10M正好10MB的文件

按时间查找

选项说明
-mtime -77天内修改的文件
-mtime +3030天前修改的文件
-amin -6060分钟内访问的文件

动作

动作说明
-print打印结果(默认)
-exec 命令 {} \;对每个结果执行命令
-delete删除找到的文件
-ls显示详细信息
# 1. 查找当前目录所有txt文件
find . -name "*.txt"

# 2. 查找所有目录
find / -type d -name "mysql"

# 3. 查找大于100MB的文件(清理大文件)
find /var/log -type f -size +100M

# 4. 查找7天前修改的文件
find /tmp -type f -mtime +7

# 5. 查找并删除(小心!)
find . -name "*.tmp" -delete

# 6. 查找并执行命令
find . -name "*.jpg" -exec mv {} /images/ \;

# 7. 组合多个条件
find . -type f -name "*.log" -size +1M -mtime -7

15. grep - 文本搜索神器

功能:Global Regular Expression Print,在文件中搜索文本模式

语法

grep [选项] 模式 [文件...]

常用选项

选项说明
-i忽略大小写
-v反向匹配(显示不包含的行)
-r 或 -R递归搜索目录
-n显示行号
-c只显示匹配行数
-l只显示匹配的文件名
-L显示不匹配的文件名
-w匹配整个单词
-o只输出匹配的部分
--color高亮匹配文本
# 1. 基本搜索
grep "error" log.txt

# 2. 忽略大小写
grep -i "error" log.txt

# 3. 递归搜索
grep -r "pattern" /var/log/

# 4. 显示行号
grep -n "error" log.txt

# 5. 只显示匹配的文件名
grep -l "pattern" *.txt

# 6. 统计匹配行数
grep -c "error" log.txt

# 7. 反向匹配(排除)
grep -v "INFO" log.txt

# 8. 匹配整个单词
grep -w "root" /etc/passwd

# 9. 只输出匹配部分
grep -o "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" file.txt
# 提取IP地址

# 10. 彩色高亮
grep --color=auto "error" log.txt

五、权限管理指令

17. chmod - 修改文件权限

功能:Change mode,修改文件或目录的权限

语法

chmod [选项] 模式 文件...

权限模式

符号模式

u  # 用户(所有者)
g  # 组
o  # 其他人
a  # 所有人(ugo)

+  # 添加权限
-  # 移除权限
=  # 设置权限

r  # 读
w  # 写
x  # 执行

数字模式(八进制)

4  # 读 (r)
2  # 写 (w)
1  # 执行 (x)

# 组合:
7 = 4+2+1  # rwx
6 = 4+2    # rw-
5 = 4+1    # r-x
4 = 4      # r--

常用权限

数字符号说明
755rwxr-xr-x目录/可执行文件
644rw-r--r--普通文件
700rwx------私有目录
600rw-------私有文件
777rwxrwxrwx完全开放
# 1. 符号模式
chmod u+x file.sh          # 给所有者添加执行权限
chmod g-w file.txt         # 移除组的写权限
chmod o=r file.txt         # 设置其他人只读
chmod a+x script.sh        # 给所有人添加执行权限

# 2. 数字模式(最常用)
chmod 755 script.sh        # rwxr-xr-x
chmod 644 file.txt         # rw-r--r--
chmod 700 .ssh/            # 私密目录

# 3. 递归更改
chmod -R 755 /var/www/html/

# 4. 快捷方式
chmod +x file.sh           # 添加执行权限(所有人)
chmod -w file.txt          # 移除写权限
chmod +w file.txt          # 添加写权限

# 5. 查看更改
chmod -v 755 script.sh     # 会显示更改信息

18. chown - 修改文件所有者

功能:Change owner,修改文件或目录的所有者和组

语法

chown [选项] 所有者[:组] 文件...

常用选项

选项说明
-R递归更改
-v显示更改过程
# 1. 只修改所有者
chown user1 file.txt

# 2. 只修改组
chown :group1 file.txt

# 3. 同时修改所有者和组
chown user1:group1 file.txt

# 4. 递归更改
chown -R user1:group1 /var/www/

# 注意:普通用户不能chown别人的文件,只有root可以

19.su - 切换用户身份

功能:Switch User,切换当前用户身份到其他用户

语法

su [选项] [用户]
su [选项] - [用户]
# 1. 切换到root用户(需要root密码)
su root
# 或直接
su
# 输入root密码后,切换到root用户

# 2. 切换到普通用户
su username
# 输入username的密码

su 与 sudo 对比

对比项susudo
需要密码目标用户的密码用户自己的密码
权限级别完全切换到目标用户临时提升权限
日志记录详细日志
适用场景需要完全切换身份临时执行特权命令
风险高(完全切换)低(仅提升部分权限)

六、文件压缩与归档指令

20.zip - 压缩文件

功能:创建和管理zip格式的压缩文件,是最常用的跨平台压缩工具。

语法:

zip [选项] 压缩包名 文件/目录...
常用选项:
选项说明
-r递归压缩目录
-v显示压缩过程
-l显示压缩包内容
-n 后缀不压缩特定后缀的文件
# 1. 压缩单个文件
zip archive.zip file1.txt

# 2. 压缩多个文件
zip archive.zip file1.txt file2.txt file3.txt

# 3. 压缩目录(必须使用 -r)
zip -r archive.zip mydir/

# 4. 压缩多个文件和目录
zip -r archive.zip file1.txt dir1/ dir2/

# 5. 压缩并显示详细信息
zip -rv archive.zip mydir/

21.unzip - 解压zip文件

功能:解压zip格式的压缩文件,查看压缩包内容。

语法:

unzip [选项] 压缩包 [文件列表] [-d 目标目录]
常用选项:
选项说明
-l列出压缩包内容(不解压)
-v详细显示压缩包信息
-d 目录解压到指定目录
# 1. 查看压缩包内容
unzip -l archive.zip

# 2. 查看详细内容
unzip -v archive.zip

# 3. 解压到指定目录
unzip archive.zip -d /tmp/extracted/

# 4. 提取特定文件
unzip archive.zip file1.txt file2.txt

# 5. 提取特定类型文件
unzip archive.zip "*.txt"
unzip archive.zip "*.jpg"

22.tar - 归档和压缩

功能:Tape Archive,创建和管理归档文件(.tar)。

语法:

tar [选项] [归档文件] [文件/目录...]
常见选项:
选项说明
-c创建归档文件(Create)
-x解压归档文件(Extract)
-t查看归档内容(List)
-r向归档中添加文件(Append)
-u更新归档中的文件
-z使用gzip压缩

创建归档

# 1. 创建tar归档(不压缩)
tar -cf archive.tar file1.txt file2.txt
tar -cvf archive.tar mydir/

# 2. 创建gzip压缩归档(最常用)
tar -czvf archive.tar.gz mydir/
# 或
tar -czvf archive.tgz mydir/

# 3. 压缩多个文件和目录
tar -czvf backup.tar.gz file1.txt dir1/ dir2/

# 4. 使用通配符
tar -czvf logs.tar.gz *.log

查看归档内容

# 1. 查看tar归档内容
tar -tf archive.tar

# 2. 查看压缩归档内容
tar -tvf archive.tar.gz
tar -tvf archive.tar.bz2
tar -tvf archive.tar.xz

# 3. 查看详细信息
tar -tvf archive.tar.gz

# 4. 查看特定内容
tar -tvf archive.tar.gz "*.txt"

解压归档

# 1. 解压到当前目录
tar -xvf archive.tar
tar -xzvf archive.tar.gz

# 2. 解压到指定目录
tar -xzvf archive.tar.gz -C /target/dir/

# 3. 解压特定文件
tar -xzvf archive.tar.gz file1.txt
tar -xzvf archive.tar.gz "*.txt"
tar -xzvf archive.tar.gz dir1/file.txt

功能区别解释

  • 归档(Archive):将多个文件/目录合并成 一个文件(不压缩),tar 默认做这个。

  • 压缩(Compress):通过算法减少文件大小,zip 自带压缩,tar 需要配合其他工具(如 gzip)实现压缩。

七、其他指令

23. wc - 统计文件信息

功能:Word Count,统计行数、单词数、字符数

语法

wc [选项] 文件...

常用选项

选项说明
-l统计行数
-w统计单词数
-c统计字节数
-m统计字符数
-L显示最长行的长度
# 1. 显示所有统计信息
wc file.txt
# 输出:100  2000  15000 file.txt
#      行数  单词数 字节数

# 2. 只统计行数(最常用)
wc -l file.txt

# 3. 统计单词数
wc -w file.txt

# 4. 统计字符数
wc -c file.txt

# 5. 统计多个文件
wc -l file1.txt file2.txt
# 会显示总和

24.cal - 显示日历

功能:Calendar,显示当前月份或指定年份的日历

语法

cal [选项] [月份] [年份]

常用选项

选项说明
-1显示当前月份(默认)
-3显示上个月、本月、下个月
-y显示全年日历
-j显示一年中的第几天
# 1. 显示当前月份
cal
# 输出:
#     August 2026
# Su Mo Tu We Th Fr Sa
#                    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
# 30 31

# 2. 显示指定月份
cal 12 2024        # 2024年12月
cal 7 2025         # 2025年7月

# 3. 显示全年
cal -y 2024
# 或
cal 2024           # 显示全年

# 4. 显示前后三个月
cal -3
# 显示:七月 八月 九月

# 5. 显示儒略日
cal -j
# 显示一年中的第几天(1-365/366)

25.date - 显示/设置系统日期时间

功能:显示或设置系统日期和时间

语法

date [选项] [+格式]
date [MMDDhhmm[[CC]YY][.ss]]  # 设置时间

常用选项

选项说明
-d 字符串显示指定时间(不改变系统时间)
-s 字符串设置系统时间

时间格式(+后跟格式)

格式说明示例
%Y年份(4位)2026
%y年份(2位)26
%m月份(01-12)08
%d日期(01-31)10
%H小时(00-23)14
%M分钟(00-59)30
%S秒(00-59)45
%A星期几(完整)Monday
%a星期几(缩写)Mon
%B月份(完整)August
%b月份(缩写)Aug
%j一年中的第几天222
%w星期几(0-6,0=周日)1
%s自1970-01-01的秒数(时间戳)1723277445
# 1. 显示当前时间
date
# 输出:Mon Aug 10 14:30:45 CST 2026

# 2. 自定义格式
date +"%Y-%m-%d %H:%M:%S"
# 输出:2026-08-10 14:30:45

date +"%A, %B %d, %Y"
# 输出:Monday, August 10, 2026

# 3. 显示时间戳
date +%s
# 输出:1723277445

# 4. 显示昨天的日期
date -d "yesterday"
date -d "1 day ago"
date -d "last week"

# 5. 显示明天的日期
date -d "tomorrow"
date -d "1 day"
date -d "next week"

# 6. 显示指定日期
date -d "2024-07-01"
date -d "July 1 2024"

# 7. 时间计算
date -d "3 days ago"
date -d "2 weeks"
date -d "1 month + 2 days"
date -d "2026-08-10 + 3 months"


# 9. 设置系统时间(需要root)
sudo date -s "2026-08-10 14:30:45"
sudo date -s "20260810 14:30:45"

26.man - 查看命令手册

功能:Manual,显示Linux命令的手册页(最全面的帮助)

语法

man [选项] 命令
man [章节] 命令

手册章节

章节内容
1用户命令(最常用)
2系统调用
3C库函数
4设备和特殊文件
5文件格式和配置文件
6游戏
7杂项
8系统管理命令

交互式操作

按键功能
空格 或 f向下翻页
b向上翻页
j 或 向下滚动一行
k 或 向上滚动一行
/关键字向下搜索
?关键字向上搜索
n查找下一个
N查找上一个
q退出
# 1. 查看命令帮助
man ls
man grep
man find

# 2. 查看所有同名手册
man -a printf    # 会显示所有章节的printf

27.which - 查找命令的位置

功能:在PATH环境变量中查找命令的绝对路径

语法

which [选项] 命令名

常用选项

选项说明
-a显示所有匹配的路径(包括别名)
--skip-alias跳过别名
# 1. 查找命令位置
which ls
# 输出:/usr/bin/ls

which python
# 输出:/usr/bin/python

# 2. 查找多个命令
which ls cp mv
# 输出:
# /usr/bin/ls
# /usr/bin/cp
# /usr/bin/mv

# 3. 显示所有匹配路径
which -a python
# 如果有多个python版本,显示所有路径
# /usr/bin/python
# /usr/local/bin/python

# 4. 跳过别名
which --skip-alias ls
# 如果ls被别名化,显示原始命令

which 与 whereis 的区别

# which:只查找PATH中的命令
which ls

# whereis:查找命令、源文件、手册页
whereis ls
# 输出:ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz

28.whereis - 查找命令的位置及相关文件

功能:查找命令的二进制文件、源代码和手册页

语法

whereis [选项] 命令名

常用选项

选项说明
-b只查找二进制文件
-m只查找手册页
-s只查找源代码
# 1. 查找命令的所有相关文件
whereis ls
# 输出:ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz

whereis python
# 输出:python: /usr/bin/python /usr/lib/python /usr/share/man/man1/python.1.gz

# 2. 只查找二进制文件
whereis -b ls
# 输出:ls: /usr/bin/ls

# 3. 只查找手册页
whereis -m ls
# 输出:ls: /usr/share/man/man1/ls.1.gz

# 4. 查找多个命令
whereis ls grep find

29.alias - 创建命令别名

功能:为命令创建简短或个性化的别名,提高效率

语法

alias [别名='命令']
alias                 # 查看所有别名
unalias 别名          # 删除别名

常用选项

选项说明
-p打印所有别名(可重定向)
# 1. 查看所有别名
alias
# 输出:
# alias ll='ls -alF'
# alias la='ls -A'
# alias l='ls -CF'

# 2. 创建临时别名(当前shell有效)
alias ll='ls -lh'
alias lla='ls -lha'
alias cls='clear'
alias ..='cd ..'
alias ...='cd ../..'
alias gs='git status'
alias gl='git log --oneline'

# 3. 创建带参数的别名
alias rm='rm -i'          # 删除前询问
alias cp='cp -i'          # 覆盖前询问
alias mv='mv -i'          # 移动前询问

# 4. 取消别名
unalias ll
unalias rm

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐