注意:下面提到的目录就是我们Windows下常说的文件夹,
ls 命令
语法:ls [选项] [目录或文件]
功能:显示目录内容或文件信息。当指定目录时,列出该目录下的所有子目录和文件;当指定文件时,显示该文件的详细信息。
常用选项详解
1. -a
:显示所有文件(包括隐藏文件)
作用:显示目录中的所有条目,包括以
.
开头的隐藏文件。例如:
root@hcss-ecs-d90d:~# ls -a
. .. .bash_history .bashrc .cache .history .lesshst mydir .profile snap .ssh .Xauthority
显示当前目录所有内容(.
表示当前目录,..
表示上级目录)。
2. -d
:将目录作为文件显示(不展开内容)
作用:仅显示目录本身,而不是其内容。常与
-l
结合使用查看目录属性。示例:ls ‒d 指定目录,例如:
root@hcss-ecs-d90d:~# ls -d \mydir
mydir
这里目录前加不加\,在功能上没啥区别,看个人习惯,但是加上可以让人更清晰的知道这是目录
3. -i
:显示文件索引节点(inode)
作用:显示文件的 inode 号(文件在磁盘上的唯一标识)。
示例:
root@hcss-ecs-d90d:~# ls -i test.txt
133530 test.txt #开头的数字即 inode
4. -k
:以 KB 为单位显示文件大小
作用:文件大小以 KB(1024 字节)为单位显示,通常与
-l
或-s
结合使用。示例:
root@hcss-ecs-d90d:~# ls -lk test.txt
-rw-r--r-- 1 root root 0 Jul 5 15:49 test.txt
5. -l
:显示详细文件信息
作用:长格式输出
包括:
- 文件类型和权限
- 硬链接数
- 所有者
- 所属组
- 文件大小
- 最后修改时间
- 文件名
注意:ls -l 也可以简写成 ll
📌 简单说:
ls -l
是标准基础命令ll
是用户体验增强版(本质是带增强选项的ls
别名)
- 示例:
root@hcss-ecs-d90d:~# ls -l
total 8
drwxr-xr-x 2 root root 4096 Jul 5 15:07 mydir
drwx------ 3 root root 4096 Aug 6 2024 snap
-rw-r--r-- 1 root root 0 Jul 5 15:49 test.txt
字段分解说明:
文件类型和权限 (
drwxr-xr-x
)第一个字符表示文件类型:
d
:目录(directory)-
:普通文件(如test.txt
)l
:符号链接其他如
c
(字符设备)、b
(块设备)等
后续9个字符是权限位(每3个一组):
rwx r-x r-x │││ │││ │││ │││ │││ └── 其他用户权限(r-x:可读可执行,不可写) │││ └─── 所属组权限(r-x:可读可执行,不可写) └─── 所有者权限(rwx:可读可写可执行)
权限字母含义:
r
= 读(read)w
= 写(write)x
= 执行(execute)-
= 无权限
硬链接计数 (
2
)对于目录,这个数字表示:
至少包含 2 个硬链接:
.
(当前目录自身)和..
(上级目录)每增加一个子目录,计数+1(因为子目录的
..
指向它)
对于文件(如
test.txt
显示1
),表示只有一个文件名指向该 inode
所有者 (
root
)文件/目录的拥有者账户(这里是
root
用户)决定谁可以行使"所有者权限"(前3位权限)
所属组 (
root
)文件/目录所属的用户组(这里是
root
组)组内成员可行使"所属组权限"(中间3位权限)
大小 (
4096
)目录大小 ≠ 内容总大小,而是目录元数据占用的磁盘空间
目录本质是"文件名→inode"的映射表,默认分配 4096 字节(1个磁盘块)
即使空目录也显示 4096(如刚创建的
mydir
)对于文件(如
test.txt
显示0
),表示实际内容大小
最后修改时间 (
Jul 5 15:07
)最后一次内容修改的时间戳
对于目录:添加/删除文件、重命名等操作会更新
格式:
月 日 时间
(6个月内的文件显示时间,否则显示年份)
名称 (
mydir
)文件/目录的名称
如果是符号链接,会显示
linkname -> target
与其他条目的对比:
drwxr-xr-x 2 root root 4096 Jul 5 15:07 mydir # 目录
drwx------ 3 root root 4096 Aug 6 2024 snap # 目录(权限不同)
-rw-r--r-- 1 root root 0 Jul 5 15:49 test.txt # 普通文件
关键区别:
目录以
d
开头,大小固定 4096,链接数 ≥2文件以
-
开头,大小是实际内容大小,链接数通常是 1snap
目录权限drwx------
表示:仅所有者可读写执行(组和其他用户无权限)
6. -n
:用数字 ID 代替用户/组名称
作用:显示 UID(用户 ID)和 GID(组 ID)而非名称。
示例:
root@hcss-ecs-d90d:~# ls -l
total 8
drwxr-xr-x 2 root root 4096 Jul 5 15:07 mydir
drwx------ 3 root root 4096 Aug 6 2024 snap
-rw-r--r-- 1 root root 0 Jul 5 15:49 test.txt
root@hcss-ecs-d90d:~# ls -ln
total 8
drwxr-xr-x 2 0 0 4096 Jul 5 15:07 mydir
drwx------ 3 0 0 4096 Aug 6 2024 snap
-rw-r--r-- 1 0 0 0 Jul 5 15:49 test.txt
一对比可以看出数字ID替换了用户名称
7. -F
:显示文件类型标识符
作用:在文件名后追加类型标识符:
*
: 可执行文件/
: 目录@
: 符号链接|
: FIFO(命名管道)=
: 套接字文件
示例:
root@hcss-ecs-d90d:~# ls -F
mydir/ snap/ test.txt
8. -r
:反向排序
作用:反转排序结果(默认按字母升序,
-r
改为降序)。示例:
ls -r # 文件按 z→a 显示
ls -lt # 按时间从新到旧
ls -ltr # 按时间从旧到新(-t 按时间排序,-r 反转)
9. -t
:按修改时间排序
作用:按最后修改时间排序(最新文件在前)。
示例:
ls -lt # 最新修改的文件排在最前
10. -s
:显示文件大小(磁盘占用块数)
作用:显示文件占用的磁盘块数(默认块大小=1024字节)。用于快速定位大文件。
示例:
root@hcss-ecs-d90d:~# ls -s
total 8
4 mydir 4 snap 0 test.txt
11. -R
:递归显示子目录内容
作用:递归列出所有子目录中的文件。
示例:
root@hcss-ecs-d90d:~# ls -R
.: #当前目录中的文件
mydir snap test.txt
./mydir: #子目录mydir中的文件
./snap: #子目录snap中的文件
lxd
./snap/lxd: # 以此类推......
29351 31333 common current
./snap/lxd/29351:
./snap/lxd/31333:
./snap/lxd/common:
12. -1
:每行显示一个文件
作用:强制每行输出一个文件(单列显示),适合脚本处理。
示例:
root@hcss-ecs-d90d:~# ls -1
mydir
snap
test.txt
组合选项示例
查看当前目录所有文件的详细属性(含隐藏文件):
root@hcss-ecs-d90d:~# ls -la
total 44
drwx------ 6 root root 4096 Jul 5 15:49 .
drwxr-xr-x 20 root root 4096 Jul 4 19:23 ..
-rw-r--r-- 1 root root 248 Jul 4 22:58 .bash_history
-rw-r--r-- 1 root root 3106 Oct 15 2021 .bashrc
drwx------ 2 root root 4096 Jul 7 2024 .cache
-rw------- 1 root root 0 Jul 7 2024 .history
-rw------- 1 root root 20 Aug 10 2024 .lesshst
drwxr-xr-x 2 root root 4096 Jul 5 15:07 mydir
-rw-r--r-- 1 root root 161 Jul 9 2019 .profile
drwx------ 3 root root 4096 Aug 6 2024 snap
drwx------ 2 root root 4096 Aug 6 2024 .ssh
-rw-r--r-- 1 root root 0 Jul 5 15:49 test.txt
-rw------- 1 root root 59 Jul 5 15:00 .Xauthority
提示:
使用
--color=auto
可启用颜色区分文件类型(默认已启用)。选项可组合使用(如
ls -lhtr
按时间倒序+易读大小)。更多选项查看手册:
man ls
。
pwd命令
功能
显示当前工作目录的绝对路径,即用户在文件系统中的当前位置。
基本用法
pwd [选项]
选项详解
选项 | 作用 | |
---|---|---|
无选项 | 显示当前目录的逻辑路径(含符号链接) | |
-P |
显示物理路径(解析所有符号链接) | |
-L |
显示逻辑路径(默认行为,可省略) |
示例:
root@hcss-ecs-d90d:~# pwd
/root
root@hcss-ecs-d90d:~# pwd -P
/root
root@hcss-ecs-d90d:~# pwd -L
/root
cd 指令
Linux理论知识:路径的深入认识
Linux文件系统结构
Linux系统中采用树状目录结构来组织磁盘上的文件和目录。这种结构就像一棵倒置的树:
- 根节点(/): 位于最顶层的目录,是整个文件系统的起点
- 分支节点: 通常是目录,可以包含其他子目录或文件
- 叶子节点:
- 普通文件一定是目录树的叶子节点(如:
/home/user/file.txt
) - 目录可能是叶子节点(空目录),也可能是中间节点(包含其他内容的目录)
- 普通文件一定是目录树的叶子节点(如:
路径的基本概念
路径存在的核心意义是为文件系统中的每个资源提供唯一标识。由于树状结构中:
- 每个节点(除根节点外)都有且只有一个父节点
- 从根目录到任何节点的路径都是唯一的
示例目录结构
/
├── bin
├── etc
│ ├── passwd
│ └── network
├── home
│ ├── user1
│ │ └── documents
│ └── user2
└── var
└── log
绝对路径 vs 相对路径
绝对路径
- 定义: 从根目录(/)开始的完整路径
- 特点:
- 不以当前工作目录为参考
- 具有唯一性,不会随用户位置变化而改变
- 格式示例:
/home/user/documents/report.txt
- 应用场景:
- 系统配置文件(如
/etc/ssh/sshd_config
) - 服务启动脚本
- 需要精确定位的场合
- 系统配置文件(如
相对路径
- 定义: 以当前工作目录为参考的路径
- 特点:
- 更加简洁方便
- 会随用户位置变化而改变指向
- 特殊符号:
.
表示当前目录..
表示父目录
- 格式示例:
../images/logo.png
(从当前目录的父目录开始查找)./script.sh
(当前目录下)
- 应用场景:
- 命令行操作
- 脚本编写
- 日常文件操作
基本语法
cd [选项] [目录路径]
核心选项:
选项 | 作用 | 示例 |
---|---|---|
-P |
解析符号链接到物理路径 | cd -P linked_dir |
-L |
跟随符号链接(默认行为) | cd -L linked_dir |
- |
返回上一个工作目录(特殊) | cd - |
路径导航详解
1. 绝对路径导航(从根目录 /
开始)
cd /usr/local/bin # 跳转到系统二进制目录
cd ~ # 跳转当前用户家目录(/home/用户名)
cd ~mysql # 跳转到mysql用户的家目录
示例:
root@hcss-ecs-d90d:~# cd /usr/local/bin
root@hcss-ecs-d90d:/usr/local/bin# pwd
/usr/local/bin
root@hcss-ecs-d90d:/usr/local/bin# cd ~
root@hcss-ecs-d90d:~# pwd
/root
2. 相对路径导航(基于当前目录)
cd Documents # 进入当前目录的子目录
cd .. # 返回上级目录
cd ../.. # 返回上两级目录
cd ../../var/log # 相对路径跨级跳转
3. 特殊符号导航
cd # 无参数:返回家目录
cd - # 返回上一次所在的工作目录(在两个目录间切换)
cd . # 停留在当前目录(极少使用)
touch 指令
touch
是 Linux 中用于创建空文件和修改文件时间戳的基础命令。它的核心功能基于两个场景:
当文件不存在时:创建新的空文件
当文件已存在时:更新文件的时间戳
基本语法
touch [选项]... 文件名...
核心功能详解
1. 创建文件
# 创建单个文件
touch file.txt
# 批量创建文件
touch file1.log file2.log config.yml
示例:
root@hcss-ecs-d90d:~# touch file.txt
root@hcss-ecs-d90d:~# ls
file.txt mydir snap test.txt
root@hcss-ecs-d90d:~# touch file1.log file2.log config.yml
root@hcss-ecs-d90d:~# ls
config.yml file1.log file2.log file.txt mydir snap test.txt
2. 更新时间戳
Linux 文件有三种时间戳:
访问时间 (atime):文件最后被读取的时间
修改时间 (mtime):文件内容最后被修改的时间
变更时间 (ctime):文件元数据(权限/所有者等)变更时间(不可手动修改)
默认情况下 touch
更新 atime 和 mtime
关键选项与示例
选项 | 作用 | 示例 |
---|---|---|
-a |
仅更新访问时间 (atime) | touch -a file |
-m |
仅更新修改时间 (mtime) | touch -m file |
-c |
不创建新文件 | touch -c non_existent |
-d |
指定时间字符串 | touch -d "2024-01-01" file |
-t |
使用时间戳格式 | touch -t 202401011200 file |
-r |
复制其他文件时间 | touch -r source.txt target.txt |
mkdir 指令
mkdir
(Make Directory) 是 Linux 中用于创建新目录的核心命令,通过系统调用 mkdir()
实现。它不仅创建目录,还自动生成两个特殊条目:
.
(指向自身)..
(指向父目录)
基本语法
mkdir [选项] 目录名...
核心选项详解
选项 | 作用 | 示例 |
---|---|---|
-p |
递归创建父目录 | mkdir -p a/b/c |
-m |
设置目录权限 | mkdir -m 750 secure_dir |
-v |
显示创建过程 | mkdir -v newdir |
--parents |
同 -p |
mkdir --parents project/docs |
关键功能与示例
1. 基础目录创建
mkdir mydir # 创建单目录
mkdir mydir1 mydir2 # 批量创建多个目录
示例:
root@hcss-ecs-d90d:~# mkdir mydir1 mydir2
root@hcss-ecs-d90d:~# ls
config.yml file1.log file2.log file.txt mydir mydir1 mydir2 snap test.txt
2. 递归创建目录树(最常用)
# 创建嵌套目录结构
mkdir -p a/b/c
示例:
root@hcss-ecs-d90d:~# mkdir -p a/b/c
root@hcss-ecs-d90d:~# tree a
a
└── b
└── c
2 directories, 0 files
3. 设置目录权限(覆盖默认 umask)
# 创建仅用户可读写执行的目录
mkdir -m 700 private
# 创建组共享目录
mkdir -m 775 team_shared
示例:
root@hcss-ecs-d90d:~# mkdir -m 700 private
root@hcss-ecs-d90d:~# ls -l
total 24
drwxr-xr-x 3 root root 4096 Jul 5 18:30 a
-rw-r--r-- 1 root root 0 Jul 5 18:07 config.yml
-rw-r--r-- 1 root root 0 Jul 5 18:07 file1.log
-rw-r--r-- 1 root root 0 Jul 5 18:07 file2.log
-rw-r--r-- 1 root root 0 Jul 5 18:06 file.txt
drwxr-xr-x 2 root root 4096 Jul 5 15:07 mydir
drwxr-xr-x 2 root root 4096 Jul 5 18:27 mydir1
drwxr-xr-x 2 root root 4096 Jul 5 18:27 mydir2
drwx------ 2 root root 4096 Jul 5 18:34 private #仅用户可读写执行
drwx------ 3 root root 4096 Aug 6 2024 snap
-rw-r--r-- 1 root root 0 Jul 5 15:49 test.txt
root@hcss-ecs-d90d:~# mkdir -m 775 team_shared
root@hcss-ecs-d90d:~# ls -l
total 28
drwxr-xr-x 3 root root 4096 Jul 5 18:30 a
-rw-r--r-- 1 root root 0 Jul 5 18:07 config.yml
-rw-r--r-- 1 root root 0 Jul 5 18:07 file1.log
-rw-r--r-- 1 root root 0 Jul 5 18:07 file2.log
-rw-r--r-- 1 root root 0 Jul 5 18:06 file.txt
drwxr-xr-x 2 root root 4096 Jul 5 15:07 mydir
drwxr-xr-x 2 root root 4096 Jul 5 18:27 mydir1
drwxr-xr-x 2 root root 4096 Jul 5 18:27 mydir2
drwx------ 2 root root 4096 Jul 5 18:34 private
drwx------ 3 root root 4096 Aug 6 2024 snap
drwxrwxr-x 2 root root 4096 Jul 5 18:36 team_shared #组共享
-rw-r--r-- 1 root root 0 Jul 5 15:49 test.txt
rmdir 指令 && rm 指令
rmdir
命令详解
功能:删除空目录
适用对象:具有当前目录操作权限的所有使用者
rmdir [选项] 目录名...
核心选项:
选项 | 作用 | 示例 |
---|---|---|
-p |
递归删除空父目录 | rmdir -p a/b/c |
-v |
显示删除过程 | rmdir -v emptydir |
--ignore-fail-on-non-empty |
忽略非空目录错误 | 脚本中容错使用 |
示例:
root@hcss-ecs-d90d:~# rmdir -p a/b/c
root@hcss-ecs-d90d:~# ls
config.yml file1.log file2.log file.txt mydir mydir1 mydir2 private snap team_shared test.txt
rm
命令详解
功能:删除文件和目录
适用对象:所有使用者
rm [选项] 文件或目录...
核心选项:
选项 | 作用 | 示例 |
---|---|---|
-r / -R |
递归删除目录及内容 | rm -r mydir |
-f |
强制删除(无确认) | rm -f log.txt |
-i |
交互式确认 | rm -i *.tmp |
-v |
显示删除过程 | rm -v oldfile |
-d |
删除空目录(同 rmdir) | rm -d emptydir |
--preserve-root |
防止误删根目录(默认开启) | 系统保护机制 |
rm
关键场景与示例
1. 基础文件删除
rm file.txt # 删除文件
rm *.log # 通配符删除所有日志
rm -f lockfile # 强制删除(忽略不存在错误)
当你要删除当前目录下的所有目录时,可以使用通配符 *,不过建议在通配符前加上 ./,这样用意更明显
2. 递归删除目录
rm -r node_modules # 删除整个依赖目录
rm -rf build/ # 强制递归删除(无确认)
3. 安全删除模式
# 交互式确认每个文件
rm -i *.jpg
# 安全递归删除(超过3个文件需确认)
rm -I -r project_backup
⚠️ 毁灭性命令(永远避免!)
rm -rf / # 删除根目录(系统毁灭)
rm -rf ~ # 删除家目录所有文件
rm -rf ./* # 当前目录清空(需确认位置)
这些命令在使用时千万千万要注意!!!
man 指令
man
(manual) 是 Linux 系统的内置帮助系统,提供超过 10,000 页的官方文档,涵盖:
所有命令的使用方法
系统调用的技术细节
配置文件格式说明
编程接口文档
特殊设备文件信息
基本语法
man [选项] [章节] 查询目标
手册章节详解(核心知识)
Linux man 手册分为 9 个标准章节:
章节 | 内容类型 | 示例 |
---|---|---|
1 | 用户命令 | man ls |
2 | 系统调用 | man open |
3 | 库函数 | man printf |
4 | 特殊文件 | man null |
5 | 文件格式 | man passwd |
6 | 游戏 | man fortune |
7 | 杂项 | man ascii |
8 | 系统管理 | man ifconfig |
9 | 内核例程 | man bootparam |
📌 关键规则:
同一名称可能出现在多个章节(如
passwd
既是命令又是文件)需指定章节号查看特定内容:
man 5 passwd
核心选项与功能
1. 基础查询
man ls # 查看 ls 命令手册
man 2 open # 查看 open 系统调用
man -k printf # 搜索所有包含 printf 的手册
2. 高级选项
选项 | 作用 | 示例 |
---|---|---|
-f |
显示简短描述 | man -f passwd |
-a |
显示所有匹配手册 | man -a printf |
-w |
显示手册路径 | man -w bash |
-K |
全文本搜索 | man -K "socket" |
man 页面导航技巧
进入手册页后使用快捷键:
快捷键 | 功能 |
---|---|
空格 |
向下翻页 |
b |
向上翻页 |
/ 关键词 |
向前搜索 |
? 关键词 |
向后搜索 |
n |
跳至下一个匹配项 |
q |
退出手册 |
h |
查看帮助(导航指南) |
cp 指令
cp
(copy) 是 Linux 中用于复制文件和目录的核心命令,其核心功能包括:
文件到文件的复制
文件到目录的复制
目录到目录的递归复制
特殊文件(链接/设备)的复制控制
基本语法
cp [选项]... 源文件... 目标路径
-f
或 --force
:强制复制
作用:无条件覆盖目标文件/目录,不提示任何警告
特点:
忽略目标是否已存在
不提示覆盖确认
静默执行操作
可能覆盖重要文件而不自知
示例:
强制覆盖文件,不在就是拷贝,在就直接覆盖
root@hcss-ecs-d90d:~/mydir# echo "你好世界" > test.txt
root@hcss-ecs-d90d:~/mydir# cat test.txt
你好世界
root@hcss-ecs-d90d:~/mydir# cat file.txt
cat: file.txt: No such file or directory
root@hcss-ecs-d90d:~/mydir# cp -f test.txt file.txt
root@hcss-ecs-d90d:~/mydir# cat file.txt
你好世界
强制将指定文件拷贝到目标目录下(已存在就覆盖)
root@hcss-ecs-d90d:~# tree mydir1
mydir1
0 directories, 0 files
root@hcss-ecs-d90d:~# tree mydir
mydir
├── a
│ └── b
│ └── c
├── file.txt
└── test.txt
3 directories, 2 files
root@hcss-ecs-d90d:~# cp -f mydir/test.txt mydir1
root@hcss-ecs-d90d:~# tree mydir1
mydir1
└── test.txt
0 directories, 1 file
-i
或 --interactive
:交互确认
作用:覆盖目标文件前要求用户确认
特点:
对每个可能覆盖的文件提示
需用户输入
y
确认防止意外覆盖
适合人工操作场景
示例:
覆盖前询问
root@hcss-ecs-d90d:~# tree mydir1
mydir1
└── test.txt
0 directories, 1 file
root@hcss-ecs-d90d:~# tree mydir2
mydir2
└── test.txt
0 directories, 1 file
root@hcss-ecs-d90d:~# cp -i mydir1/test.txt mydir2
cp: overwrite 'mydir2/test.txt'? y
-r
或 -R
:递归复制
作用:复制目录及其所有子内容(文件/子目录)
特点:
必须用于复制目录
复制目录完整结构
默认不保留符号链接(复制链接目标)
可能意外复制隐藏文件(如.git目录)
示例:
将mydir下的所有目录和文件递归复制到mydir1目录下
root@hcss-ecs-d90d:~# tree mydir
mydir
├── a
│ └── b
│ └── c
├── file.txt
└── test.txt
3 directories, 2 files
root@hcss-ecs-d90d:~# tree mydir1
mydir1
└── test.txt
0 directories, 1 file
root@hcss-ecs-d90d:~# cp -rf mydir/* mydir1
root@hcss-ecs-d90d:~# tree mydir1
mydir1
├── a
│ └── b
│ └── c
├── file.txt
└── test.txt
3 directories, 2 files
mv 指令
mv
(move) 是 Linux 中用于移动或重命名文件和目录的核心命令,其核心功能包括:
重命名文件/目录(源和目标在同一目录)
移动文件/目录(源和目标在不同目录)
批量移动操作(多个源到目标目录)
文件覆盖控制(通过选项管理)
基础语法与参数解析
mv [选项] 源文件或目录 目标文件或目录
参数行为差异:
源类型 | 目标类型 | 行为 | 示例 |
---|---|---|---|
单个文件 | 文件名 | 重命名文件 | mv a.txt b.txt |
单个文件 | 目录 | 移动到目录 | mv file docs/ |
多个文件 | 目录 | 批量移动 | mv *.jpg images/ |
目录 | 文件名 | ❌ 错误 | mv dir newname |
目录 | 目录 | 移动目录 | mv old_dir/ new_dir/ |
root@hcss-ecs-d90d:~/mydir# ls
a file.txt test.txt
root@hcss-ecs-d90d:~/mydir# mv test.txt hello.txt #文件重命名
root@hcss-ecs-d90d:~/mydir# ls
a file.txt hello.txt
root@hcss-ecs-d90d:~/mydir# cd ..
root@hcss-ecs-d90d:~# ls mydir1
a file.txt test.txt
root@hcss-ecs-d90d:~# mv mydir/hello.txt mydir1 #文件移动到目录
root@hcss-ecs-d90d:~# ls mydir1
a file.txt hello.txt test.txt
核心选项详解
1. -f
(force):强制覆盖
作用:无提示覆盖目标文件
场景:脚本自动化、确定需要覆盖时
危险:可能意外覆盖重要文件
示例:
强制将当前mydir目录下的test,txt文件覆盖上级目录下的test.txt文件
root@hcss-ecs-d90d:~# cd mydir
root@hcss-ecs-d90d:~/mydir# echo "你好世界" > test.txt
root@hcss-ecs-d90d:~/mydir# cat test.txt
你好世界
root@hcss-ecs-d90d:~/mydir# ls ..
config.yml file1.log file2.log file.txt mydir mydir1 mydir2 private snap team_shared test.txt
root@hcss-ecs-d90d:~/mydir# cat ../test.txt
root@hcss-ecs-d90d:~/mydir# mv -f test.txt ..
root@hcss-ecs-d90d:~/mydir# cat ../test.txt
你好世界
root@hcss-ecs-d90d:~/mydir# ls
a file.txt
2. -i
(interactive):交互确认
作用:覆盖前要求用户确认
场景:人工操作、防止误覆盖
安全:防止数据意外丢失
示例:
覆盖前询问
root@hcss-ecs-d90d:~/mydir# touch test.txt
root@hcss-ecs-d90d:~/mydir# ls
a file.txt test.txt
root@hcss-ecs-d90d:~/mydir# mv -i test.txt ..
mv: overwrite '../test.txt'? y
root@hcss-ecs-d90d:~/mydir# ls
a file.txt
cat 指令
cat
(concatenate) 是 Linux 中最核心的文件内容操作命令,主要功能包括:
查看文件内容
创建新文件
合并多个文件
文件内容重定向
特殊设备操作
基本语法
cat [选项] [文件]...
核心选项详解
选项 | 作用 | 示例 |
---|---|---|
-n |
显示行号(包括空行) | cat -n log.txt |
-b |
显示行号(忽略空行) | cat -b script.sh |
-s |
压缩连续空行为一行 | cat -s config.cfg |
-A |
显示所有控制字符 | cat -A binary.data |
-T |
显示 TAB 为 ^I | cat -T data.csv |
-E |
行尾显示 $ 符号 | cat -E script.py |
-v |
显示非打印字符 | cat -v encrypted.txt |
示例:
root@hcss-ecs-d90d:~/mydir# vim test.txt #使用vim编辑test.txt文件
root@hcss-ecs-d90d:~/mydir# cat test.txt #查看文件内容
hello world
hello world
hello world
hello world
hello world
hello world
hello world
root@hcss-ecs-d90d:~/mydir# cat -n test.txt #显示行号,包括空行
1 hello world
2 hello world
3 hello world
4 hello world
5
6
7
8 hello world
9 hello world
10
11
12 hello world
13
root@hcss-ecs-d90d:~/mydir# cat -b test.txt #显示行号,不包括空行
1 hello world
2 hello world
3 hello world
4 hello world
5 hello world
6 hello world
7 hello world
root@hcss-ecs-d90d:~/mydir# cat -s test.txt #压缩连续空行为一行
hello world
hello world
hello world
hello world
hello world
hello world
hello world
more 指令
more
是 Linux 中最基础的文件分页查看工具,主要功能包括:
分页显示文件内容
支持文本搜索
基本导航功能
大文件高效查看
基本语法
more [选项] 文件名
核心选项详解
选项 | 作用 | 示例 |
---|---|---|
-d |
显示提示信息 | more -d longfile.txt |
-f |
强制显示特殊字符 | more -f binary.data |
-p |
清屏再显示 | more -p config.cfg |
-c |
不滚屏,整页刷新 | more -c logfile.log |
-s |
压缩连续空行 | more -s output.txt |
+行号 |
从指定行开始 | more +100 access.log |
+/模式 |
从匹配模式开始 | more +/ERROR debug.log |
关键功能与操作指令
1. 基础导航
按键 | 功能 |
---|---|
空格 | 向下翻一页 |
回车 | 向下翻一行 |
b | 向上翻一页 |
Ctrl+B | 同上(向上翻页) |
q | 退出 |
2. 搜索功能
按键 | 功能 |
---|---|
/模式 | 向前搜索文本 |
n | 查找下一个匹配项 |
?模式 | 向后搜索文本(部分实现) |
3. 位置跳转
按键 | 功能 |
---|---|
= | 显示当前行号 |
:f | 显示文件名和行号 |
10 后按 % | 跳到文件 10% 位置 |
示例:
指定输出3行,目前处于文件40%位置
root@hcss-ecs-d90d:~/mydir# more -3 test.txt
hello world
hello world
hello world
--More--(40%)
less 指令
less
是 Linux 中最强大的文件查看工具,相比 more
具有革命性的改进,主要功能包括:
双向导航(支持前后翻页)
高级文本搜索
实时文件监控
大文件高效处理
多种显示模式
相较于 more 命令,less 提供了更灵活的浏览方式:
- more 只能单向向后浏览文件
- less 支持使用 [pageup]/[pagedown] 按键前后翻页
- 提供更完善的搜索功能,支持双向搜索(向上/向下)
基本语法
less [选项] 文件名
功能说明: less 与 more 类似,但具有更强的交互性:
- 支持前后自由浏览
- 不会预加载整个文件
核心选项详解
选项 | 作用 | 示例 |
---|---|---|
-N |
显示行号 | less -N server.log |
-i |
忽略大小写搜索 | less -i config.cfg |
-S |
截断长行(不换行) | less -S data.csv |
-F |
文件不足一屏时自动退出 | less -F short.txt |
-R |
保留 ANSI 颜色代码 | less -R colored.log |
-M |
显示详细状态栏 | less -M access.log |
-X |
退出时不清理屏幕 | less -X output.txt |
+命令 |
初始执行命令 | less +G error.log |
关键功能与操作指令
1. 导航控制(核心优势)
按键 | 功能 |
---|---|
空格 / f | 向下翻一页 |
b | 向上翻一页 |
回车 / e | 向下翻一行 |
y | 向上翻一行 |
g | 跳到文件开头 |
G | 跳到文件末尾 |
50% | 跳到文件 50% 位置 |
10g | 跳到第 10 行 |
2. 搜索功能(支持正则)
按键 | 功能 |
---|---|
/pattern | 向前搜索 |
?pattern | 向后搜索 |
n | 跳至下一个匹配 |
N | 跳至上一个匹配 |
&pattern | 仅显示匹配行 |
3. 文件操作
按键 | 功能 |
---|---|
F | 实时追踪文件(类似 tail -f ) |
v | 用编辑器打开文件 |
:n | 查看下一个文件 |
:p | 查看上一个文件 |
s | 保存内容到文件 |
4. 显示控制
按键 | 功能 |
---|---|
-S | 切换长行截断模式 |
-N | 切换行号显示 |
-i | 切换大小写敏感 |
-u | 下划线特殊字符 |
示例:
输入:
root@hcss-ecs-d90d:~/mydir# less -N test.txt
#输出结果
1 hello world
2 hello world
3 hello world
4 hello world
5
6
7
8 hello world
9 hello world
10
11
12 hello world
13
test.txt (END)
与 more
命令对比
特性 | more |
less |
---|---|---|
回看功能 | ❌ 有限 | ✅ 完整 |
搜索方向 | 仅向前 | 双向 |
文件跳转 | ❌ 不支持 | ✅ 行号/百分比 |
实时追踪 | ❌ 不支持 | ✅ 支持 |
正则搜索 | ❌ 不支持 | ✅ 完整支持 |
内存占用 | 低 | 优化后极低 |
使用频率 | 低 | 高(现代默认) |
💡 名字趣闻:
less
= "less is more"(功能比 more 更多)
head 指令
head
是 Linux 中用于查看文件开头部分的核心命令,主要功能包括:
快速预览文件头部内容
查看文件前 N 行
检查文件前 N 字节
处理大文件的起始部分
基本语法
head [选项] [文件]...
核心选项详解
选项 | 作用 | 示例 |
---|---|---|
-n <数字> |
显示前 N 行 | head -n 20 file.log |
-<数字> |
简写显示前 N 行 | head -20 file.log |
-c <大小> |
显示前 N 字节 | head -c 1K image.jpg |
-q |
不显示文件名标题 | head -q file1 file2 |
-v |
总是显示文件名标题 | head -v config.cfg |
示例:
root@hcss-ecs-d90d:~/mydir# head test.txt #默认打印文件开头前10行至标准输出
hello world
hello world
hello world
hello world
hello world
hello world
root@hcss-ecs-d90d:~/mydir# head -5 test.txt #指定打印文件前5行至标准输出
hello world
hello world
hello world
hello world
tail 指令
tail
是 Linux 中用于查看文件尾部内容的核心命令,主要功能包括:
显示文件末尾内容
实时监控文件变化
处理日志轮转
大文件尾部高效查看
基本语法
tail [选项] [文件]...
核心选项详解
选项 | 作用 | 示例 |
---|---|---|
-n <数字> |
显示后 N 行 | tail -n 20 server.log |
-<数字> |
简写显示后 N 行 | tail -20 debug.log |
-c <大小> |
显示后 N 字节 | tail -c 1K database.bin |
-f |
实时追踪文件更新 | tail -f access.log |
-F |
实时追踪(支持重打开) | tail -F app.log |
-q |
不显示文件名标题 | tail -q *.txt |
-v |
总是显示文件名标题 | tail -v *.conf |
--pid |
监控指定进程结束 | tail -f --pid=1234 log |
示例:
基本功能演示
root@hcss-ecs-d90d:~/mydir# tail test.txt
hello world
hello world
hello world
hello world
root@hcss-ecs-d90d:~/mydir# tail -5 test.txt
hello world
hello world
如何显示文件[8,10]行的内容
root@hcss-ecs-d90d:~/mydir# head -10 test.txt | tail -2
hello world
管道(|) 是 Linux/Unix 系统中最强大的数据处理机制,它允许将一个命令的输出直接作为另一个命令的输入。管道符号 |
是命令行高效操作的核心,实现了"组合小工具完成复杂任务"的 Unix 哲学。
核心特性:
单向数据流:数据从左向右流动
实时处理:无需中间文件,内存中直接传递
命令链式组合:支持无限级联(
cmd1 | cmd2 | cmd3...
)错误流分离:标准错误(stderr)不进入管道
date 指令
date
是 Linux 中最核心的时间管理工具,主要功能包括:
显示系统时间
设置系统时间
时间格式转换
时间计算
日志时间戳生成
基本语法
date [选项]... [+格式] # 显示时间
date [选项] [MMDDhhmm[[CC]YY][.ss]] # 设置时间
核心选项详解
选项 | 作用 | 示例 |
---|---|---|
-d, --date=STRING |
解析时间字符串 | date -d "tomorrow" |
-s, --set=STRING |
设置系统时间 | sudo date -s "2025-07-05 15:30" |
-r, --reference=FILE |
显示文件时间 | date -r /etc/passwd |
-u, --utc |
显示UTC时间 | date -u |
-I[TIMESPEC] |
ISO 8601格式 | date -Iseconds |
--rfc-3339=FMT |
RFC 3339格式 | date --rfc-3339=ns |
格式化输出(核心功能)
常用格式符号:
符号 | 含义 | 示例输出 |
---|---|---|
%Y |
四位年份 | 2025 |
%y |
两位年份 | 25 |
%m |
月份(01-12) | 07 |
%d |
日(01-31) | 05 |
%H |
小时(00-23) | 15 |
%M |
分钟(00-59) | 30 |
%S |
秒(00-60) | 45 |
%s |
Unix时间戳 | 1750000000 |
%A |
完整星期 | Saturday |
%a |
缩写星期 | Sat |
%B |
完整月份 | July |
%b |
缩写月份 | Jul |
%F |
完整日期(%Y-%m-%d) | 2025-07-05 |
%T |
时间(%H:%M:%S) | 15:30:45 |
%z |
时区 | +0800 |
%Z |
时区名 | CST |
关键场景与示例
1. 基本时间显示
# 默认格式
date # 输出:Sat Jul 5 15:30:45 CST 2025
# 自定义格式
date "+%Y-%m-%d %H:%M:%S" # 输出:2025-07-05 15:30:45
2. 时间计算(强大功能)
# 显示明天此时
date -d "tomorrow"
# 显示下周
date -d "next week"
# 显示10天后
date -d "10 days"
# 显示2小时前
date -d "2 hours ago"
# 复杂计算
date -d "2024-01-01 + 100 days" # 2024-04-10
3. 时间戳转换
# 时间戳转日期
date -d @1750000000 # 输出:Sat Jul 5 15:26:40 CST 2025
# 日期转时间戳
date +%s -d "2025-07-05 15:30:00" # 输出:1750001400
4. 文件时间操作
# 显示文件修改时间
date -r /etc/passwd
# 设置文件时间戳(需 touch 配合)
touch -d "$(date -d 'yesterday')" oldfile.txt
5. 设置系统时间(需 root)
# 设置日期和时间
sudo date -s "2025-07-05 15:30:00"
# 只设置时间
sudo date -s "15:30:00"
cal 指令
cal
(calendar) 是 Linux 中用于显示日历的实用工具,主要功能包括:
显示当月日历
查看特定月份/年份
显示全年日历
支持儒略历显示
快速日期定位
基本语法
cal [选项] [[月份] 年份]
核心选项详解
选项 | 作用 | 示例 |
---|---|---|
-1 |
只显示当月(默认) | cal -1 |
-3 |
显示上/当/下三月 | cal -3 |
-s |
周日作为每周第一天 | cal -s |
-m |
周一作为每周第一天 | cal -m |
-j |
显示儒略历(年天数) | cal -j |
-y |
显示整年日历 | cal -y |
-Y |
显示去年/今年/明年 | cal -Y |
-A <月数> |
显示后 N 个月 | cal -A 2 |
-B <月数> |
显示前 N 个月 | cal -B 1 |
示例:
root@hcss-ecs-d90d:~# cal # 显示当月日历(默认)
July 2025
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
root@hcss-ecs-d90d:~# cal -3 # 显示上/当/下三月(常用)
June 2025 July 2025 August 2025
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7 1 2 3 4 5 1 2
8 9 10 11 12 13 14 6 7 8 9 10 11 12 3 4 5 6 7 8 9
15 16 17 18 19 20 21 13 14 15 16 17 18 19 10 11 12 13 14 15 16
22 23 24 25 26 27 28 20 21 22 23 24 25 26 17 18 19 20 21 22 23
29 30 27 28 29 30 31 24 25 26 27 28 29 30
31
find 指令
find
是 Linux 最强大的文件搜索工具,支持 50+ 搜索条件,能对搜索结果执行操作。掌握 find
是 Linux 系统管理的核心技能。
基本语法
find [搜索路径] [表达式] [操作]
核心搜索条件
1. 按名称搜索(最常用)
# 基本名称匹配(支持通配符)
find /var/log -name "*.log"
# 忽略大小写
find . -iname "README*"
# 正则表达式匹配
find /etc -regex ".*/network/.*"
2. 按类型搜索
find ~ -type f # 文件
find /tmp -type d # 目录
find /dev -type l # 符号链接
find / -type s # 套接字
find /run -type p # 命名管道
3. 按大小搜索
find / -size +1G # 大于1GB
find . -size -10M # 小于10MB
find ~ -size 1024c # 精确1024字节
4. 按时间搜索(强大功能)
# 按修改时间(mtime)
find /var/log -mtime -7 # 7天内修改过
# 按访问时间(atime)
find /home -atime +30 # 30天前访问过
# 按状态变更时间(ctime)
find /etc -ctime 0 # 24小时内权限变更
# 分钟级精度
find /tmp -mmin -10 # 10分钟内修改过
5. 按权限/用户搜索
find / -perm 644 # 精确权限匹配
find . -perm -u=x # 用户有执行权限
find /home -user alice # 属于alice的文件
find / -group www-data # 属于www-data组的文件
which 指令
which
命令是 Linux 中用于定位可执行文件路径的核心工具,通过搜索 PATH
环境变量指定的目录列表,返回命令的第一个匹配结果。
语法与选项
which [选项] 命令名
常用选项:
选项 | 作用 | 示例 |
---|---|---|
-a |
显示所有匹配路径(而非仅第一个) | which -a java |
--skip-alias |
忽略命令别名(仅显示真实路径) | which --skip-alias ls |
-V |
显示版本信息 | which -V |
退出状态码:
代码 | 含义 |
---|---|
0 |
成功找到所有命令且可执行 |
1 |
未找到命令或命令不可执行 |
2 |
参数错误 |
示例:
root@hcss-ecs-d90d:~# which ls
/usr/bin/ls
root@hcss-ecs-d90d:~# which pwd
/usr/bin/pwd
whereis 指令
whereis
命令用于查找程序的可执行文件、源代码文件和帮助文档。它主要在系统的标准路径中搜索这些文件。
语法
whereis [选项] 文件名
常用选项
-b
:仅查找可执行文件(binary)。-m
:仅查找帮助文档(manual)。-s
:仅查找源代码文件(source)。-u
:查找未记录的文件(即不在标准路径中的文件)。-B
:指定搜索可执行文件的目录。-M
:指定搜索帮助文档的目录。-S
:指定搜索源代码文件的目录。
示例:
root@hcss-ecs-d90d:~# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
alias 指令
alias
是 Linux/Unix 系统中用于创建命令快捷方式的核心工具,它通过自定义缩写替代复杂命令,极大提升命令行效率。别名存储在 Shell 环境中,是系统管理员和开发者的必备技能。
基本语法
# 创建别名
alias 别名='原始命令'
# 查看别名
alias
# 删除别名
unalias 别名
示例:
查看已有别名
root@hcss-ecs-d90d:~# alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
注意事项
别名是 Shell 的功能,而不是系统命令。因此,别名只在当前 Shell 环境中有效。
如果别名与系统命令冲突,别名会优先执行。例如,如果你为
ls
创建了别名,那么运行ls
时会执行别名定义的命令。别名可以嵌套,但要注意避免循环引用。
grep 指令
grep
用于在文件或文本流中搜索匹配特定模式(通常是正则表达式)的行,并将这些行输出到标准输出。
基本语法
grep [选项] 模式 [文件]
模式
:要搜索的字符串或正则表达式。文件
:要搜索的文件名。如果省略文件名,grep
会从标准输入读取内容。
常用选项
-i
:忽略大小写,进行大小写不敏感的搜索。-v
:反转匹配,输出不匹配模式的行。-w
:仅匹配整个单词。-r
或-R
:递归搜索目录中的所有文件。-n
:在输出中显示匹配行的行号。-c
:统计匹配的行数,而不是输出匹配的行。-l
:仅列出包含匹配行的文件名。-e
:指定多个模式,用逗号分隔。-o
:仅输出匹配的部分,而不是整行。--color
:高亮显示匹配的部分(默认为auto
)。
示例
基本搜索
在文件 example.txt
中搜索包含字符串 "hello" 的行:
grep "hello" example.txt
忽略大小写
搜索时不区分大小写:
grep -i "hello" example.txt
仅匹配整个单词
仅匹配单词 "hello",而不是 "hello123" 或 "ohello":
grep -w "hello" example.txt
递归搜索目录
在当前目录及其子目录中递归搜索包含 "hello" 的文件:
grep -r "hello" .
显示行号
在输出中显示匹配行的行号:
grep -n "hello" example.txt
统计匹配行数
统计文件中包含 "hello" 的行数:
grep -c "hello" example.txt
反转匹配
输出不包含 "hello" 的行:
grep -v "hello" example.txt
高亮显示匹配内容
高亮显示匹配的部分:
grep --color "hello" example.txt
搜索多个模式
同时搜索包含 "hello" 或 "world" 的行:
grep -e "hello" -e "world" example.txt
仅输出匹配的部分
仅输出匹配的部分,而不是整行:
grep -o "hello" example.txt
top 指令
top
命令用于实时显示系统中资源占用最多的进程,并按照一定的排序规则动态更新显示内容。它可以帮助用户:
监控系统整体性能。
查找占用 CPU 或内存过多的进程。
管理和优化系统资源。
基本语法
top [选项]
常用选项
-d
:指定更新间隔时间(秒)。例如,top -d 2
表示每 2 秒刷新一次。-n
:指定刷新次数。例如,top -n 5
表示刷新 5 次后退出。-u
:仅显示指定用户的进程。例如,top -u username
。-p
:仅显示指定进程的详细信息。例如,top -p 1234
。-b
:以批处理模式运行,适合用于脚本或输出到文件。-i
:忽略空闲和僵尸进程。
示例
启动 top
并实时监控
top
每 5 秒刷新一次
top -d 5
显示指定用户的进程
top -u username
显示指定进程的详细信息
top -p 1234
将输出保存到文件
top -b -n 1 > top_output.txt
zip/unzip 指令
zip
命令
zip
用于创建和更新 ZIP 格式的压缩文件。
基本语法
zip [选项] 压缩文件名 待压缩文件或目录
常用选项
-r
:递归压缩目录,包括子目录中的所有文件。-q
:静默模式,不显示压缩过程。-d
:从压缩文件中删除指定文件。-u
:更新压缩文件中的文件,如果文件已存在则替换。-x
:排除指定的文件或目录。-m
:在压缩后删除原始文件。-9
:使用最高压缩级别。-1
:使用最低压缩级别。
示例
压缩单个文件
zip example.zip example.txt
将
example.txt
压缩为example.zip
。压缩整个目录
zip -r example.zip example_dir/
将
example_dir
目录及其所有子目录和文件递归压缩为example.zip
。静默模式压缩
zip -q example.zip example.txt
压缩时不显示任何输出。
排除特定文件或目录
zip -r example.zip example_dir/ -x example_dir/exclude.txt
压缩
example_dir
,但排除example_dir/exclude.txt
文件。更新压缩文件中的内容:
zip -u example.zip example.txt
如果
example.txt
在压缩文件中已存在,则更新它。最高压缩级别
zip -9 example.zip example.txt
使用最高压缩级别压缩文件。
2. unzip
命令
unzip
用于解压 ZIP 格式的压缩文件。
基本语法
unzip [选项] 压缩文件名 [目标目录]
常用选项
-d
:指定解压后的目标目录。-o
:覆盖已存在的文件,不提示。-n
:不覆盖已存在的文件。-q
:静默模式,不显示解压过程。-l
:列出压缩文件中的内容,但不解压。-x
:排除指定的文件或目录。-j
:不保留目录结构,将所有文件解压到目标目录。
示例
解压到当前目录
unzip example.zip
将
example.zip
中的内容解压到当前目录。解压到指定目录
unzip example.zip -d /path/to/destination
将
example.zip
中的内容解压到/path/to/destination
目录。覆盖已存在的文件
unzip -o example.zip
解压时覆盖已存在的文件。
不覆盖已存在的文件
unzip -n example.zip
解压时不覆盖已存在的文件。
静默模式解压
unzip -q example.zip
解压时不显示任何输出。
列出压缩文件内容
unzip -l example.zip
列出
example.zip
中的文件和目录,但不解压。排除特定文件或目录
unzip example.zip -x exclude.txt
解压时排除
exclude.txt
文件。不保留目录结构
unzip -j example.zip -d /path/to/destination
将所有文件解压到目标目录,不保留目录结构。
3. 注意事项
文件名中的空格:如果文件名或目录名包含空格,需要用引号括起来。例如
zip "example.zip" "file with spaces.txt"
权限问题:解压时可能会遇到权限问题,尤其是当目标目录没有写权限时。可以使用
sudo
提升权限sudo unzip example.zip -d /path/to/destination
压缩文件损坏:如果压缩文件损坏,
unzip
可能无法正常解压。可以尝试使用-t
选项测试压缩文件的完整性unzip -t example.zip
tar 指令
1. 基本语法
tar [选项] [归档文件名] [文件或目录]
2. 常用选项
创建归档文件
-c
:创建一个新的归档文件。-f
:指定归档文件的名称。-z
:使用 gzip 压缩归档文件(生成.tar.gz
或.tgz
文件)。-j
:使用 bzip2 压缩归档文件(生成.tar.bz2
文件)。-J
:使用 xz 压缩归档文件(生成.tar.xz
文件)。-v
:显示详细信息(verbose 模式)。
提取归档文件
-x
:提取归档文件。-f
:指定归档文件的名称。-z
:解压 gzip 压缩的归档文件。-j
:解压 bzip2 压缩的归档文件。-J
:解压 xz 压缩的归档文件。-C
:指定解压的目标目录。-v
:显示详细信息。
查看归档文件内容
-t
:列出归档文件中的内容。-f
:指定归档文件的名称。-z
:查看 gzip 压缩的归档文件内容。-j
:查看 bzip2 压缩的归档文件内容。-J
:查看 xz 压缩的归档文件内容。-v
:显示详细信息。
3. 示例
创建归档文件
创建未压缩的归档文件
tar -cvf archive.tar file1 file2 directory/
将
file1
、file2
和directory/
打包到archive.tar
中。创建 gzip 压缩的归档文件
tar -czvf archive.tar.gz file1 file2 directory/
将文件和目录打包并使用 gzip 压缩,生成
archive.tar.gz
。创建 bzip2 压缩的归档文件
tar -cjvf archive.tar.bz2 file1 file2 directory/
将文件和目录打包并使用 bzip2 压缩,生成
archive.tar.bz2
。创建 xz 压缩的归档文件
tar -cJvf archive.tar.xz file1 file2 directory/
将文件和目录打包并使用 xz 压缩,生成
archive.tar.xz
。
提取归档文件
提取未压缩的归档文件
tar -xvf archive.tar -C /path/to/destination
将
archive.tar
中的内容提取到/path/to/destination
。提取 gzip 压缩的归档文件
tar -xzvf archive.tar.gz -C /path/to/destination
将
archive.tar.gz
中的内容解压到指定目录。提取 bzip2 压缩的归档文件
tar -xjvf archive.tar.bz2 -C /path/to/destination
将
archive.tar.bz2
中的内容解压到指定目录。提取 xz 压缩的归档文件
tar -xJvf archive.tar.xz -C /path/to/destination
将
archive.tar.xz
中的内容解压到指定目录。
查看归档文件内容
查看未压缩的归档文件内容
tar -tvf archive.tar
列出
archive.tar
中的文件和目录。查看 gzip 压缩的归档文件内容:
tar -tzvf archive.tar.gz
列出
archive.tar.gz
中的文件和目录。查看 bzip2 压缩的归档文件内容:
tar -tjvf archive.tar.bz2
列出
archive.tar.bz2
中的文件和目录。查看 xz 压缩的归档文件内容:
tar -tJvf archive.tar.xz
列出
archive.tar.xz
中的文件和目录。
bc 指令
bc
(Bash Calculator)是一个功能强大的任意精度数学计算工具,常用于在 Unix 和 Linux 系统中进行复杂的数学运算。它支持基本的算术运算、浮点运算、逻辑运算,甚至可以定义函数和执行脚本。bc
的语法类似于 C 语言,因此对于熟悉 C 的用户来说,使用起来会非常方便。
1. 基本语法
bc [选项] [文件]
2. 常用选项
-l
:加载数学库,支持更复杂的数学函数(如三角函数、对数等)。-q
:安静模式,不显示欢迎信息。-i
:交互模式,允许用户输入表达式并立即得到结果。-w
:警告模式,显示语法警告。
3. 基本用法
简单计算
可以直接在命令行中使用 bc
进行简单的数学运算:
echo "2 + 3" | bc
输出:
5
浮点运算
默认情况下,bc
的计算结果是整数。如果需要进行浮点运算,需要设置 scale
(小数精度):
echo "scale=2; 10 / 3" | bc
输出:
3.33
使用数学库
加载数学库后,可以使用更复杂的数学函数,如三角函数、对数等:
echo "l(10)" | bc -l
输出:
2.30258509299404568401
这里 l(x)
是自然对数函数。
交互模式
可以通过交互模式直接在终端中输入表达式:
bc -l
然后输入表达式:
3 * 4
输出:
12
4. 高级用法
定义变量和函数
可以在 bc
中定义变量和函数。例如,定义一个函数计算平方:
bc -l
define sq(x) {
return x * x;
}
sq(5)
输出:
25
执行脚本文件
可以将 bc
表达式写入脚本文件,然后通过 bc
执行。例如,创建一个文件 script.bc
:
# script.bc
define sq(x) {
return x * x;
}
sq(5)
然后运行:
bc -l script.bc
输出:
25
条件语句和循环
bc
支持基本的条件语句和循环。例如,打印 1 到 10 的平方:
bc -l
for (i = 1; i <= 10; i++) {
print i, " ", sq(i), "\n";
}
输出:
1 1
2 4
3 9
4 16
5 25
6 36
7 49
8 64
9 81
10 100
5. 常见数学函数(需要 -l
选项)
s(x)
:正弦函数(输入为弧度)。c(x)
:余弦函数(输入为弧度)。a(x)
:反正切函数。l(x)
:自然对数函数。e(x)
:指数函数 ex。j(n, x)
:第一类贝塞尔函数。
6. 注意事项
精度问题:浮点运算的精度由
scale
控制,默认值为 0(即整数运算)。如果需要浮点运算,需要显式设置scale
。输入格式:
bc
对输入格式要求严格,表达式必须正确书写,否则会报错。性能问题:虽然
bc
支持任意精度计算,但计算大数或高精度浮点数时可能会比较慢
uname 指令
uname
是一个在 Unix 和 Linux 系统中常用的命令行工具,用于显示系统信息,包括操作系统名称、内核版本、主机名、硬件架构等。它是一个非常实用的工具,可以帮助用户快速了解系统的运行环境。
1. 基本语法
uname [选项]
2. 常用选项
-a
:显示所有系统信息(默认选项)。-s
:显示操作系统名称(通常是Linux
)。-n
:显示主机名。-r
:显示内核版本。-v
:显示内核版本的详细信息。-m
:显示机器硬件架构(如x86_64
或arm64
)。-p
:显示处理器类型(在某些系统中可能无效)。-i
:显示硬件平台(在某些系统中可能无效)。-o
:显示操作系统的类型(如GNU/Linux
)。
3. 示例
显示所有系统信息
uname -a
输出示例:
Linux hostname 5.10.0-14-amd64 #1 SMP Debian 5.10.113-1 (2022-04-08) x86_64 GNU/Linux
解释:
Linux:操作系统名称。
hostname:主机名。
5.10.0-14-amd64:内核版本。
#1 SMP Debian 5.10.113-1 (2022-04-08):内核版本的详细信息。
x86_64:硬件架构。
GNU/Linux:操作系统类型。
仅显示操作系统名称
uname -s
输出示例:
Linux
仅显示主机名
uname -n
输出示例:
hostname
仅显示内核版本
uname -r
输出示例:
5.10.0-14-amd64
仅显示硬件架构
uname -m
输出示例:
x86_64
仅显示操作系统的类型
uname -o
输出示例:
GNU/Linux
重要的几个热键
Linux系统中掌握一些常用的热键可以大大提高工作效率,以下是几个最重要的热键及其详细用法:
• [Tab]按键
- 命令补全功能:在输入命令时按Tab会自动补全命令名称。例如输入"ls /et"后按Tab会自动补全为"ls /etc/"
- 档案补齐功能:在输入文件路径时按Tab会显示匹配的文件列表。如果只有一个匹配项会自动补全
- 连续按两次Tab会显示所有可能的补全选项
• [Ctrl]-c按键
- 强制中断当前正在运行的程序或命令
- 适用于终止卡死的进程或取消当前输入的命令
- 在终端输入长命令时突然想取消,可以按Ctrl-c重新开始
- 示例:在运行ping命令时按Ctrl-c会立即停止ping操作
• [Ctrl]-d按键
- 主要用途:
- 表示输入结束(EOF),常用于结束标准输入。比如在cat命令后按Ctrl-d表示输入完成
- 可以替代exit命令,直接退出当前shell终端
- 在Python等交互式环境中表示退出交互模式
- 与Ctrl-c的区别:Ctrl-d是正常结束,而Ctrl-c是强制中断
- 特殊场景:在空命令行按Ctrl-d会直接退出终端
这些热键在终端操作、脚本编写和程序调试中都非常实用,熟练使用可以显著提升工作效率。特别是在处理长时间运行的任务或调试程序时,掌握这些热键操作尤为重要。
关机
语法:
shutdown [选项]
常用选项:
• -h
:停止系统服务后立即关机
• -r
:停止系统服务后重新启动
• -t sec
:指定延迟关机时间(秒)
作为系统扩展命令列表:
以下是对Linux系统常用命令的分类详解,包含具体功能说明和使用场景:
安装和登录命令
- login - 用户登录系统
- shutdown - 安全关闭系统(可加参数:-h关机,-r重启)
- halt - 直接关闭系统(紧急情况使用)
- reboot - 重启计算机
- install - 安装软件包(如:
install package.rpm
) - mount - 挂载文件系统(如:
mount /dev/sdb1 /mnt
) - umount - 卸载文件系统
- chsh - 更改登录shell(如:
chsh -s /bin/bash
) - exit - 退出当前shell会话
- last - 显示用户登录历史
文件处理命令
- file - 检测文件类型(如:
file document.pdf
) - mkdir - 创建目录(可加参数:-p递归创建)
- grep - 文本搜索工具(如:
grep "error" logfile
) - dd - 磁盘拷贝(如:
dd if=/dev/sda of=backup.img
) - find - 文件查找(如:
find /home -name "*.txt"
) - mv - 移动/重命名文件
- ls - 列出目录内容(常用参数:-l详细列表,-a显示隐藏文件)
- diff - 比较文件差异
- cat - 查看/合并文件内容
- ln - 创建链接(软链接:
ln -s source link
)
系统管理命令
- df - 显示磁盘空间(加-h参数显示易读格式)
- top - 动态显示进程信息
- free - 查看内存使用情况
- quota - 显示磁盘配额
- at - 定时执行任务
- lp - 打印文件
- adduser - 添加用户账户
- groupadd - 创建用户组
- kill - 终止进程(常用信号:9强制终止)
- crontab - 定时任务管理(
crontab -e
编辑任务)
网络操作命令
- ifconfig - 配置网络接口(显示IP地址等)
- ip - 更强大的网络配置工具
- ping - 测试网络连通性
- netstat - 显示网络状态(如:
netstat -tuln
) - telnet - 远程登录工具
- ftp - 文件传输协议
- route - 显示/设置路由表
- rlogin - 远程登录
- rcp - 远程文件复制
- finger - 用户信息查询
- mail - 发送/接收邮件
- nslookup - 域名查询工具
系统安全命令
- passwd - 修改用户密码
- su - 切换用户身份
- umask - 设置默认文件权限
- chgrp - 更改文件所属组
- chmod - 修改文件权限(如:
chmod 755 file
) - chown - 更改文件所有者
- chattr - 修改文件属性
- sudo - 以管理员权限执行命令
- ps - 查看进程状态(常用:
ps aux
) - who - 显示当前登录用户
其他实用命令
- tar - 打包/解压文件(如:
tar -czvf archive.tar.gz dir/
) - unzip - 解压zip文件
- gunzip - 解压gzip文件
- unarj - 解压arj文件
- mtools - MS-DOS文件系统工具
- man - 查看命令手册(如:
man ls
) - unencode - 编码二进制文件
- uudecode - 解码uudecode