Linux --基础指令,Shell命令及Linux权限
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 权限的三种类型
| 权限 | 符号 | 数字 | 对文件的作用 | 对目录的作用 |
|---|---|---|---|---|
| 读 | r | 4 | 查看文件内容 | 列出目录内容 |
| 写 | w | 2 | 修改文件内容 | 创建/删除文件 |
| 执行 | x | 1 | 执行程序/脚本 | 进入目录 |
二、查看权限
# 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 -7 | 7天内修改的文件 |
-mtime +30 | 30天前修改的文件 |
-amin -60 | 60分钟内访问的文件 |
动作:
| 动作 | 说明 |
|---|---|
-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--
常用权限:
| 数字 | 符号 | 说明 |
|---|---|---|
| 755 | rwxr-xr-x | 目录/可执行文件 |
| 644 | rw-r--r-- | 普通文件 |
| 700 | rwx------ | 私有目录 |
| 600 | rw------- | 私有文件 |
| 777 | rwxrwxrwx | 完全开放 |
# 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 对比
| 对比项 | su | sudo |
|---|---|---|
| 需要密码 | 目标用户的密码 | 用户自己的密码 |
| 权限级别 | 完全切换到目标用户 | 临时提升权限 |
| 日志记录 | 少 | 详细日志 |
| 适用场景 | 需要完全切换身份 | 临时执行特权命令 |
| 风险 | 高(完全切换) | 低(仅提升部分权限) |
六、文件压缩与归档指令
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 | 系统调用 |
| 3 | C库函数 |
| 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
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)