Linux基本指令

注意:下面提到的目录就是我们Windows下常说的文件夹,

ls 命令

语法:ls [选项] [目录或文件]

功能:显示目录内容或文件信息。当指定目录时,列出该目录下的所有子目录和文件;当指定文件时,显示该文件的详细信息。

常用选项详解

1. -a:显示所有文件(包括隐藏文件)

  • 作用 :显示目录中的所有条目,包括以 . 开头的隐藏文件。例如:
bash 复制代码
root@hcss-ecs-d90d:~# ls -a
.  ..  .bash_history  .bashrc  .cache  .history  .lesshst  mydir  .profile  snap  .ssh  .Xauthority

显示当前目录所有内容(. 表示当前目录,.. 表示上级目录)。

2. -d:将目录作为文件显示(不展开内容)

  • 作用 :仅显示目录本身,而不是其内容。常与 -l 结合使用查看目录属性。

  • 示例 :ls ‒d 指定目录,例如:

bash 复制代码
root@hcss-ecs-d90d:~# ls -d \mydir
mydir

这里目录前加不加\,在功能上没啥区别,看个人习惯,但是加上可以让人更清晰的知道这是目录

3. -i:显示文件索引节点(inode)

  • 作用:显示文件的 inode 号(文件在磁盘上的唯一标识)。

  • 示例

bash 复制代码
root@hcss-ecs-d90d:~# ls -i test.txt
133530 test.txt  #开头的数字即 inode

4. -k:以 KB 为单位显示文件大小

  • 作用 :文件大小以 KB(1024 字节)为单位显示,通常与 -l-s 结合使用。

  • 示例

bash 复制代码
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 别名)

  • 示例
bash 复制代码
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
字段分解说明:
  1. 文件类型和权限 (drwxr-xr-x)

    • 第一个字符表示文件类型

      • d:目录(directory)

      • -:普通文件(如 test.txt

      • l:符号链接

      • 其他如 c(字符设备)、b(块设备)等

    • 后续9个字符是权限位(每3个一组):

      bash 复制代码
      rwx r-x r-x
      │││ │││ │││
      │││ │││ └── 其他用户权限(r-x:可读可执行,不可写)
      │││ └─── 所属组权限(r-x:可读可执行,不可写)
      └─── 所有者权限(rwx:可读可写可执行)
    • 权限字母含义:

      • r = 读(read)

      • w = 写(write)

      • x = 执行(execute)

      • - = 无权限

  2. 硬链接计数 (2)

    • 对于目录,这个数字表示:

      • 至少包含 2 个硬链接:.(当前目录自身)和 ..(上级目录)

      • 每增加一个子目录 ,计数+1(因为子目录的 .. 指向它)

    • 对于文件 (如 test.txt 显示 1),表示只有一个文件名指向该 inode

  3. 所有者 (root)

    • 文件/目录的拥有者账户(这里是 root 用户)

    • 决定谁可以行使"所有者权限"(前3位权限)

  4. 所属组 (root)

    • 文件/目录所属的用户组(这里是 root 组)

    • 组内成员可行使"所属组权限"(中间3位权限)

  5. 大小 (4096)

    • 目录大小 ≠ 内容总大小,而是目录元数据占用的磁盘空间

    • 目录本质是"文件名→inode"的映射表,默认分配 4096 字节(1个磁盘块)

    • 即使空目录也显示 4096(如刚创建的 mydir

    • 对于文件 (如 test.txt 显示 0),表示实际内容大小

  6. 最后修改时间 (Jul 5 15:07)

    • 最后一次内容修改的时间戳

    • 对于目录:添加/删除文件、重命名等操作会更新

    • 格式:月 日 时间(6个月内的文件显示时间,否则显示年份)

  7. 名称 (mydir)

    • 文件/目录的名称

    • 如果是符号链接,会显示 linkname -> target


与其他条目的对比:
bash 复制代码
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

  • 文件- 开头,大小是实际内容大小,链接数通常是 1

  • snap 目录权限 drwx------ 表示:仅所有者可读写执行(组和其他用户无权限)

6. -n:用数字 ID 代替用户/组名称

  • 作用:显示 UID(用户 ID)和 GID(组 ID)而非名称。

  • 示例

bash 复制代码
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(命名管道)

    • = : 套接字文件

示例:

bash 复制代码
root@hcss-ecs-d90d:~# ls -F
mydir/  snap/  test.txt

8. -r:反向排序

  • 作用 :反转排序结果(默认按字母升序,-r 改为降序)。

  • 示例

bash 复制代码
ls -r   # 文件按 z→a 显示
ls -lt  # 按时间从新到旧
ls -ltr # 按时间从旧到新(-t 按时间排序,-r 反转)

9. -t:按修改时间排序

  • 作用:按最后修改时间排序(最新文件在前)。

  • 示例

bash 复制代码
ls -lt  # 最新修改的文件排在最前

10. -s:显示文件大小(磁盘占用块数)

  • 作用:显示文件占用的磁盘块数(默认块大小=1024字节)。用于快速定位大文件。

  • 示例

bash 复制代码
root@hcss-ecs-d90d:~# ls -s
total 8
4 mydir  4 snap  0 test.txt

11. -R:递归显示子目录内容

  • 作用:递归列出所有子目录中的文件。

  • 示例

bash 复制代码
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:每行显示一个文件

  • 作用:强制每行输出一个文件(单列显示),适合脚本处理。

  • 示例

bash 复制代码
root@hcss-ecs-d90d:~# ls -1
mydir
snap
test.txt

组合选项示例

查看当前目录所有文件的详细属性(含隐藏文件):

bash 复制代码
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命令

功能

显示当前工作目录的绝对路径,即用户在文件系统中的当前位置。


基本用法

bash 复制代码
pwd [选项]

选项详解

选项 作用
无选项 显示当前目录的逻辑路径(含符号链接)
-P 显示物理路径(解析所有符号链接)
-L 显示逻辑路径(默认行为,可省略)

示例:

bash 复制代码
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(当前目录下)
  • 应用场景 :
    • 命令行操作
    • 脚本编写
    • 日常文件操作

基本语法

bash 复制代码
cd [选项] [目录路径]
核心选项:
选项 作用 示例
-P 解析符号链接到物理路径 cd -P linked_dir
-L 跟随符号链接(默认行为) cd -L linked_dir
- 返回上一个工作目录(特殊) cd -

路径导航详解

1. 绝对路径导航(从根目录 / 开始)
bash 复制代码
cd /usr/local/bin     # 跳转到系统二进制目录
cd ~                  # 跳转当前用户家目录(/home/用户名)
cd ~mysql             # 跳转到mysql用户的家目录

示例:

bash 复制代码
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. 相对路径导航(基于当前目录)
bash 复制代码
cd Documents          # 进入当前目录的子目录
cd ..                 # 返回上级目录
cd ../..              # 返回上两级目录
cd ../../var/log      # 相对路径跨级跳转
3. 特殊符号导航
bash 复制代码
cd         # 无参数:返回家目录
cd -       # 返回上一次所在的工作目录(在两个目录间切换)
cd .       # 停留在当前目录(极少使用)

touch 指令

touch 是 Linux 中用于创建空文件修改文件时间戳的基础命令。它的核心功能基于两个场景:

  1. 当文件不存在时:创建新的空文件

  2. 当文件已存在时:更新文件的时间戳

基本语法

bash 复制代码
touch [选项]... 文件名...

核心功能详解

1. 创建文件

bash 复制代码
# 创建单个文件
touch file.txt

# 批量创建文件
touch file1.log file2.log config.yml

示例

bash 复制代码
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 更新 atimemtime

关键选项与示例

选项 作用 示例
-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() 实现。它不仅创建目录,还自动生成两个特殊条目:

  1. .(指向自身)

  2. ..(指向父目录)

基本语法

bash 复制代码
mkdir [选项] 目录名...

核心选项详解

选项 作用 示例
-p 递归创建父目录 mkdir -p a/b/c
-m 设置目录权限 mkdir -m 750 secure_dir
-v 显示创建过程 mkdir -v newdir
--parents -p mkdir --parents project/docs

关键功能与示例

1. 基础目录创建

bash 复制代码
mkdir mydir      # 创建单目录
mkdir mydir1 mydir2  # 批量创建多个目录

示例:

bash 复制代码
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. 递归创建目录树(最常用)

bash 复制代码
# 创建嵌套目录结构
mkdir -p a/b/c

示例:

bash 复制代码
root@hcss-ecs-d90d:~# mkdir -p a/b/c
root@hcss-ecs-d90d:~# tree a
a
└── b
    └── c

2 directories, 0 files

3. 设置目录权限(覆盖默认 umask)

bash 复制代码
# 创建仅用户可读写执行的目录
mkdir -m 700 private

# 创建组共享目录
mkdir -m 775 team_shared

示例:

bash 复制代码
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 命令详解

功能:删除空目录

适用对象:具有当前目录操作权限的所有使用者

bash 复制代码
rmdir [选项] 目录名...
核心选项:
选项 作用 示例
-p 递归删除空父目录 rmdir -p a/b/c
-v 显示删除过程 rmdir -v emptydir
--ignore-fail-on-non-empty 忽略非空目录错误 脚本中容错使用

示例:

bash 复制代码
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 命令详解

功能:删除文件和目录

适用对象:所有使用者

bash 复制代码
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. 基础文件删除
bash 复制代码
rm file.txt          # 删除文件
rm *.log             # 通配符删除所有日志
rm -f lockfile       # 强制删除(忽略不存在错误)

当你要删除当前目录下的所有目录时,可以使用通配符 *,不过建议在通配符前加上 ./,这样用意更明显

2. 递归删除目录
bash 复制代码
rm -r node_modules   # 删除整个依赖目录
rm -rf build/        # 强制递归删除(无确认)
3. 安全删除模式
bash 复制代码
# 交互式确认每个文件
rm -i *.jpg

# 安全递归删除(超过3个文件需确认)
rm -I -r project_backup
⚠️ 毁灭性命令(永远避免!)
bash 复制代码
rm -rf /              # 删除根目录(系统毁灭)
rm -rf ~              # 删除家目录所有文件
rm -rf ./*            # 当前目录清空(需确认位置)

这些命令在使用时千万千万要注意!!!


man 指令

man (manual) 是 Linux 系统的内置帮助系统,提供超过 10,000 页的官方文档,涵盖:

  • 所有命令的使用方法

  • 系统调用的技术细节

  • 配置文件格式说明

  • 编程接口文档

  • 特殊设备文件信息

基本语法

bash 复制代码
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. 基础查询

bash 复制代码
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 中用于复制文件和目录的核心命令,其核心功能包括:

  1. 文件到文件的复制

  2. 文件到目录的复制

  3. 目录到目录的递归复制

  4. 特殊文件(链接/设备)的复制控制

基本语法

bash 复制代码
cp [选项]... 源文件... 目标路径

-f--force:强制复制

作用:无条件覆盖目标文件/目录,不提示任何警告

特点:

  1. 忽略目标是否已存在

  2. 不提示覆盖确认

  3. 静默执行操作

  4. 可能覆盖重要文件而不自知

示例:

强制覆盖文件,不在就是拷贝,在就直接覆盖

bash 复制代码
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
你好世界

强制将指定文件拷贝到目标目录下(已存在就覆盖)

bash 复制代码
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:交互确认

作用:覆盖目标文件前要求用户确认

特点:

  1. 对每个可能覆盖的文件提示

  2. 需用户输入 y 确认

  3. 防止意外覆盖

  4. 适合人工操作场景

示例:

覆盖前询问

bash 复制代码
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:递归复制

作用:复制目录及其所有子内容(文件/子目录)

特点:

  1. 必须用于复制目录

  2. 复制目录完整结构

  3. 默认不保留符号链接(复制链接目标)

  4. 可能意外复制隐藏文件(如.git目录)

示例:

将mydir下的所有目录和文件递归复制到mydir1目录下

bash 复制代码
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 中用于移动或重命名文件和目录的核心命令,其核心功能包括:

  1. 重命名文件/目录(源和目标在同一目录)

  2. 移动文件/目录(源和目标在不同目录)

  3. 批量移动操作(多个源到目标目录)

  4. 文件覆盖控制(通过选项管理)

基础语法与参数解析

bash 复制代码
mv [选项] 源文件或目录 目标文件或目录

参数行为差异:

源类型 目标类型 行为 示例
单个文件 文件名 重命名文件 mv a.txt b.txt
单个文件 目录 移动到目录 mv file docs/
多个文件 目录 批量移动 mv *.jpg images/
目录 文件名 ❌ 错误 mv dir newname
目录 目录 移动目录 mv old_dir/ new_dir/
bash 复制代码
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文件

bash 复制代码
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):交互确认

  • 作用:覆盖前要求用户确认

  • 场景:人工操作、防止误覆盖

  • 安全:防止数据意外丢失

  • 示例

覆盖前询问

bash 复制代码
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 中最核心的文件内容操作命令,主要功能包括:

  1. 查看文件内容

  2. 创建新文件

  3. 合并多个文件

  4. 文件内容重定向

  5. 特殊设备操作

基本语法

bash 复制代码
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

示例:

bash 复制代码
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 中最基础的文件分页查看工具,主要功能包括:

  1. 分页显示文件内容

  2. 支持文本搜索

  3. 基本导航功能

  4. 大文件高效查看

基本语法

bash 复制代码
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%位置

bash 复制代码
root@hcss-ecs-d90d:~/mydir# more -3 test.txt
hello world
hello world
hello world
--More--(40%)

less 指令

less 是 Linux 中最强大的文件查看工具,相比 more 具有革命性的改进,主要功能包括:

  1. 双向导航(支持前后翻页)

  2. 高级文本搜索

  3. 实时文件监控

  4. 大文件高效处理

  5. 多种显示模式

相较于 more 命令,less 提供了更灵活的浏览方式:

  • more 只能单向向后浏览文件
  • less 支持使用 [pageup]/[pagedown] 按键前后翻页
  • 提供更完善的搜索功能,支持双向搜索(向上/向下)

基本语法

bash 复制代码
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 下划线特殊字符

示例:

输入:

bash 复制代码
root@hcss-ecs-d90d:~/mydir# less -N test.txt
bash 复制代码
#输出结果


      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 中用于查看文件开头部分的核心命令,主要功能包括:

  1. 快速预览文件头部内容

  2. 查看文件前 N 行

  3. 检查文件前 N 字节

  4. 处理大文件的起始部分

基本语法

bash 复制代码
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

示例:

bash 复制代码
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 中用于查看文件尾部内容的核心命令,主要功能包括:

  1. 显示文件末尾内容

  2. 实时监控文件变化

  3. 处理日志轮转

  4. 大文件尾部高效查看

基本语法

bash 复制代码
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

示例:

基本功能演示

bash 复制代码
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]行的内容

bash 复制代码
root@hcss-ecs-d90d:~/mydir# head -10 test.txt | tail -2
hello world

管道(|) 是 Linux/Unix 系统中最强大的数据处理机制,它允许将一个命令的输出 直接作为另一个命令的输入 。管道符号 | 是命令行高效操作的核心,实现了"组合小工具完成复杂任务"的 Unix 哲学。

核心特性:
  1. 单向数据流:数据从左向右流动

  2. 实时处理:无需中间文件,内存中直接传递

  3. 命令链式组合 :支持无限级联(cmd1 | cmd2 | cmd3...

  4. 错误流分离:标准错误(stderr)不进入管道


date 指令

date 是 Linux 中最核心的时间管理工具,主要功能包括:

  1. 显示系统时间

  2. 设置系统时间

  3. 时间格式转换

  4. 时间计算

  5. 日志时间戳生成

基本语法

bash 复制代码
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. 基本时间显示

bash 复制代码
# 默认格式
date  # 输出:Sat Jul  5 15:30:45 CST 2025

# 自定义格式
date "+%Y-%m-%d %H:%M:%S"  # 输出:2025-07-05 15:30:45

2. 时间计算(强大功能)

bash 复制代码
# 显示明天此时
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. 时间戳转换

bash 复制代码
# 时间戳转日期
date -d @1750000000  # 输出:Sat Jul  5 15:26:40 CST 2025

# 日期转时间戳
date +%s -d "2025-07-05 15:30:00"  # 输出:1750001400

4. 文件时间操作

bash 复制代码
# 显示文件修改时间
date -r /etc/passwd

# 设置文件时间戳(需 touch 配合)
touch -d "$(date -d 'yesterday')" oldfile.txt

5. 设置系统时间(需 root)

bash 复制代码
# 设置日期和时间
sudo date -s "2025-07-05 15:30:00"

# 只设置时间
sudo date -s "15:30:00"

cal 指令

cal (calendar) 是 Linux 中用于显示日历的实用工具,主要功能包括:

  1. 显示当月日历

  2. 查看特定月份/年份

  3. 显示全年日历

  4. 支持儒略历显示

  5. 快速日期定位

基本语法

bash 复制代码
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

示例:

bash 复制代码
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 系统管理的核心技能。

基本语法

bash 复制代码
find [搜索路径] [表达式] [操作]

核心搜索条件

1. 按名称搜索(最常用)

bash 复制代码
# 基本名称匹配(支持通配符)
find /var/log -name "*.log"

# 忽略大小写
find . -iname "README*"

# 正则表达式匹配
find /etc -regex ".*/network/.*"

2. 按类型搜索

bash 复制代码
find ~ -type f           # 文件
find /tmp -type d        # 目录
find /dev -type l        # 符号链接
find / -type s           # 套接字
find /run -type p        # 命名管道

3. 按大小搜索

bash 复制代码
find / -size +1G         # 大于1GB
find . -size -10M        # 小于10MB
find ~ -size 1024c       # 精确1024字节

4. 按时间搜索(强大功能)

bash 复制代码
# 按修改时间(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. 按权限/用户搜索

bash 复制代码
find / -perm 644         # 精确权限匹配
find . -perm -u=x        # 用户有执行权限
find /home -user alice   # 属于alice的文件
find / -group www-data   # 属于www-data组的文件

which 指令

which 命令是 Linux 中用于定位可执行文件路径 的核心工具,通过搜索 PATH 环境变量指定的目录列表,返回命令的第一个匹配结果。

语法与选项

bash 复制代码
which [选项] 命令名

常用选项

选项 作用 示例
-a 显示所有匹配路径(而非仅第一个) which -a java
--skip-alias 忽略命令别名(仅显示真实路径) which --skip-alias ls
-V 显示版本信息 which -V

退出状态码

代码 含义
0 成功找到所有命令且可执行
1 未找到命令或命令不可执行
2 参数错误

示例:

bash 复制代码
root@hcss-ecs-d90d:~# which ls
/usr/bin/ls
root@hcss-ecs-d90d:~# which pwd
/usr/bin/pwd

whereis 指令

whereis 命令用于查找程序的可执行文件、源代码文件和帮助文档。它主要在系统的标准路径中搜索这些文件。

语法

bash 复制代码
whereis [选项] 文件名

常用选项

  • -b:仅查找可执行文件(binary)。

  • -m:仅查找帮助文档(manual)。

  • -s:仅查找源代码文件(source)。

  • -u:查找未记录的文件(即不在标准路径中的文件)。

  • -B:指定搜索可执行文件的目录。

  • -M:指定搜索帮助文档的目录。

  • -S:指定搜索源代码文件的目录。

示例:

bash 复制代码
root@hcss-ecs-d90d:~# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz

alias 指令

alias 是 Linux/Unix 系统中用于创建命令快捷方式的核心工具,它通过自定义缩写替代复杂命令,极大提升命令行效率。别名存储在 Shell 环境中,是系统管理员和开发者的必备技能。

基本语法

bash 复制代码
# 创建别名
alias 别名='原始命令'

# 查看别名
alias

# 删除别名
unalias 别名

示例:

查看已有别名

bash 复制代码
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 用于在文件或文本流中搜索匹配特定模式(通常是正则表达式)的行,并将这些行输出到标准输出。

基本语法

bash 复制代码
grep [选项] 模式 [文件]
  • 模式:要搜索的字符串或正则表达式。

  • 文件 :要搜索的文件名。如果省略文件名,grep 会从标准输入读取内容。

常用选项

  • -i:忽略大小写,进行大小写不敏感的搜索。

  • -v:反转匹配,输出不匹配模式的行。

  • -w:仅匹配整个单词。

  • -r-R:递归搜索目录中的所有文件。

  • -n:在输出中显示匹配行的行号。

  • -c:统计匹配的行数,而不是输出匹配的行。

  • -l:仅列出包含匹配行的文件名。

  • -e:指定多个模式,用逗号分隔。

  • -o:仅输出匹配的部分,而不是整行。

  • --color :高亮显示匹配的部分(默认为 auto)。

示例

基本搜索

在文件 example.txt 中搜索包含字符串 "hello" 的行:

bash 复制代码
grep "hello" example.txt

忽略大小写

搜索时不区分大小写:

bash 复制代码
grep -i "hello" example.txt

仅匹配整个单词

仅匹配单词 "hello",而不是 "hello123" 或 "ohello":

bash 复制代码
grep -w "hello" example.txt

递归搜索目录

在当前目录及其子目录中递归搜索包含 "hello" 的文件:

bash 复制代码
grep -r "hello" .

显示行号

在输出中显示匹配行的行号:

bash 复制代码
grep -n "hello" example.txt

统计匹配行数

统计文件中包含 "hello" 的行数:

bash 复制代码
grep -c "hello" example.txt

反转匹配

输出不包含 "hello" 的行:

bash 复制代码
grep -v "hello" example.txt

高亮显示匹配内容

高亮显示匹配的部分:

bash 复制代码
grep --color "hello" example.txt

搜索多个模式

同时搜索包含 "hello" 或 "world" 的行:

bash 复制代码
grep -e "hello" -e "world" example.txt

仅输出匹配的部分

仅输出匹配的部分,而不是整行:

bash 复制代码
grep -o "hello" example.txt

top 指令

top 命令用于实时显示系统中资源占用最多的进程,并按照一定的排序规则动态更新显示内容。它可以帮助用户:

  • 监控系统整体性能。

  • 查找占用 CPU 或内存过多的进程。

  • 管理和优化系统资源。

基本语法

bash 复制代码
top [选项]

常用选项

  • -d :指定更新间隔时间(秒)。例如,top -d 2 表示每 2 秒刷新一次。

  • -n :指定刷新次数。例如,top -n 5 表示刷新 5 次后退出。

  • -u :仅显示指定用户的进程。例如,top -u username

  • -p :仅显示指定进程的详细信息。例如,top -p 1234

  • -b:以批处理模式运行,适合用于脚本或输出到文件。

  • -i:忽略空闲和僵尸进程。

示例

启动 top 并实时监控

bash 复制代码
top

每 5 秒刷新一次

bash 复制代码
top -d 5

显示指定用户的进程

bash 复制代码
top -u username

显示指定进程的详细信息

bash 复制代码
top -p 1234

将输出保存到文件

bash 复制代码
top -b -n 1 > top_output.txt

zip/unzip 指令

zip 命令

zip 用于创建和更新 ZIP 格式的压缩文件。

基本语法

bash 复制代码
zip [选项] 压缩文件名 待压缩文件或目录

常用选项

  • -r:递归压缩目录,包括子目录中的所有文件。

  • -q:静默模式,不显示压缩过程。

  • -d:从压缩文件中删除指定文件。

  • -u:更新压缩文件中的文件,如果文件已存在则替换。

  • -x:排除指定的文件或目录。

  • -m:在压缩后删除原始文件。

  • -9:使用最高压缩级别。

  • -1:使用最低压缩级别。

示例

  • 压缩单个文件

    bash 复制代码
    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. 基本语法

bash 复制代码
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/

    file1file2directory/ 打包到 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. 基本语法

bash 复制代码
bc [选项] [文件]

2. 常用选项

  • -l:加载数学库,支持更复杂的数学函数(如三角函数、对数等)。

  • -q:安静模式,不显示欢迎信息。

  • -i:交互模式,允许用户输入表达式并立即得到结果。

  • -w:警告模式,显示语法警告。

3. 基本用法

简单计算

可以直接在命令行中使用 bc 进行简单的数学运算:

bash 复制代码
echo "2 + 3" | bc

输出:

5

浮点运算

默认情况下,bc 的计算结果是整数。如果需要进行浮点运算,需要设置 scale(小数精度):

bash 复制代码
echo "scale=2; 10 / 3" | bc

输出:

3.33

使用数学库

加载数学库后,可以使用更复杂的数学函数,如三角函数、对数等:

bash 复制代码
echo "l(10)" | bc -l

输出:

2.30258509299404568401

这里 l(x) 是自然对数函数。

交互模式

可以通过交互模式直接在终端中输入表达式:

bash 复制代码
bc -l

然后输入表达式:

3 * 4

输出:

12

4. 高级用法

定义变量和函数

可以在 bc 中定义变量和函数。例如,定义一个函数计算平方:

bash 复制代码
bc -l
define sq(x) {
    return x * x;
}
sq(5)

输出:

25

执行脚本文件

可以将 bc 表达式写入脚本文件,然后通过 bc 执行。例如,创建一个文件 script.bc

bash 复制代码
# script.bc
define sq(x) {
    return x * x;
}
sq(5)

然后运行:

bash 复制代码
bc -l script.bc

输出:

25

条件语句和循环

bc 支持基本的条件语句和循环。例如,打印 1 到 10 的平方:

bash 复制代码
bc -l
for (i = 1; i <= 10; i++) {
    print i, " ", sq(i), "\n";
}

输出:

bash 复制代码
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. 基本语法

bash 复制代码
uname [选项]

2. 常用选项

  • -a:显示所有系统信息(默认选项)。

  • -s :显示操作系统名称(通常是 Linux)。

  • -n:显示主机名。

  • -r:显示内核版本。

  • -v:显示内核版本的详细信息。

  • -m :显示机器硬件架构(如 x86_64arm64)。

  • -p:显示处理器类型(在某些系统中可能无效)。

  • -i:显示硬件平台(在某些系统中可能无效)。

  • -o :显示操作系统的类型(如 GNU/Linux)。

3. 示例

显示所有系统信息

bash 复制代码
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:操作系统类型。

仅显示操作系统名称

bash 复制代码
uname -s

输出示例:

Linux

仅显示主机名

bash 复制代码
uname -n

输出示例:

hostname

仅显示内核版本

bash 复制代码
uname -r

输出示例:

5.10.0-14-amd64

仅显示硬件架构

bash 复制代码
uname -m

输出示例:

x86_64

仅显示操作系统的类型

bash 复制代码
uname -o

输出示例:

GNU/Linux


重要的几个热键

Linux系统中掌握一些常用的热键可以大大提高工作效率,以下是几个最重要的热键及其详细用法:

• [Tab]按键

  • 命令补全功能:在输入命令时按Tab会自动补全命令名称。例如输入"ls /et"后按Tab会自动补全为"ls /etc/"
  • 档案补齐功能:在输入文件路径时按Tab会显示匹配的文件列表。如果只有一个匹配项会自动补全
  • 连续按两次Tab会显示所有可能的补全选项

• [Ctrl]-c按键

  • 强制中断当前正在运行的程序或命令
  • 适用于终止卡死的进程或取消当前输入的命令
  • 在终端输入长命令时突然想取消,可以按Ctrl-c重新开始
  • 示例:在运行ping命令时按Ctrl-c会立即停止ping操作

• [Ctrl]-d按键

  • 主要用途:
    1. 表示输入结束(EOF),常用于结束标准输入。比如在cat命令后按Ctrl-d表示输入完成
    2. 可以替代exit命令,直接退出当前shell终端
    3. 在Python等交互式环境中表示退出交互模式
  • 与Ctrl-c的区别:Ctrl-d是正常结束,而Ctrl-c是强制中断
  • 特殊场景:在空命令行按Ctrl-d会直接退出终端

这些热键在终端操作、脚本编写和程序调试中都非常实用,熟练使用可以显著提升工作效率。特别是在处理长时间运行的任务或调试程序时,掌握这些热键操作尤为重要。


关机

语法:

bash 复制代码
shutdown [选项]

常用选项:

-h:停止系统服务后立即关机

-r:停止系统服务后重新启动

-t sec:指定延迟关机时间(秒)


作为系统扩展命令列表:

以下是对Linux系统常用命令的分类详解,包含具体功能说明和使用场景:

安装和登录命令

  1. login - 用户登录系统
  2. shutdown - 安全关闭系统(可加参数:-h关机,-r重启)
  3. halt - 直接关闭系统(紧急情况使用)
  4. reboot - 重启计算机
  5. install - 安装软件包(如:install package.rpm
  6. mount - 挂载文件系统(如:mount /dev/sdb1 /mnt
  7. umount - 卸载文件系统
  8. chsh - 更改登录shell(如:chsh -s /bin/bash
  9. exit - 退出当前shell会话
  10. last - 显示用户登录历史

文件处理命令

  1. file - 检测文件类型(如:file document.pdf
  2. mkdir - 创建目录(可加参数:-p递归创建)
  3. grep - 文本搜索工具(如:grep "error" logfile
  4. dd - 磁盘拷贝(如:dd if=/dev/sda of=backup.img
  5. find - 文件查找(如:find /home -name "*.txt"
  6. mv - 移动/重命名文件
  7. ls - 列出目录内容(常用参数:-l详细列表,-a显示隐藏文件)
  8. diff - 比较文件差异
  9. cat - 查看/合并文件内容
  10. ln - 创建链接(软链接:ln -s source link

系统管理命令

  1. df - 显示磁盘空间(加-h参数显示易读格式)
  2. top - 动态显示进程信息
  3. free - 查看内存使用情况
  4. quota - 显示磁盘配额
  5. at - 定时执行任务
  6. lp - 打印文件
  7. adduser - 添加用户账户
  8. groupadd - 创建用户组
  9. kill - 终止进程(常用信号:9强制终止)
  10. crontab - 定时任务管理(crontab -e编辑任务)

网络操作命令

  1. ifconfig - 配置网络接口(显示IP地址等)
  2. ip - 更强大的网络配置工具
  3. ping - 测试网络连通性
  4. netstat - 显示网络状态(如:netstat -tuln
  5. telnet - 远程登录工具
  6. ftp - 文件传输协议
  7. route - 显示/设置路由表
  8. rlogin - 远程登录
  9. rcp - 远程文件复制
  10. finger - 用户信息查询
  11. mail - 发送/接收邮件
  12. nslookup - 域名查询工具

系统安全命令

  1. passwd - 修改用户密码
  2. su - 切换用户身份
  3. umask - 设置默认文件权限
  4. chgrp - 更改文件所属组
  5. chmod - 修改文件权限(如:chmod 755 file
  6. chown - 更改文件所有者
  7. chattr - 修改文件属性
  8. sudo - 以管理员权限执行命令
  9. ps - 查看进程状态(常用:ps aux
  10. who - 显示当前登录用户

其他实用命令

  1. tar - 打包/解压文件(如:tar -czvf archive.tar.gz dir/
  2. unzip - 解压zip文件
  3. gunzip - 解压gzip文件
  4. unarj - 解压arj文件
  5. mtools - MS-DOS文件系统工具
  6. man - 查看命令手册(如:man ls
  7. unencode - 编码二进制文件
  8. uudecode - 解码uudecode