基本命令

Linux命令行是系统管理的核心工具。掌握基本命令是学习Linux的第一步,也是最重要的一步。本章将系统讲解Linux中最常用的文件管理、查看、查找和压缩命令。


一、文件与目录管理

1.1 ls命令 - 列出目录内容

1.1.1 基本用法

ls命令用于列出目录内容

# 列出当前目录内容
ls

# 列出指定目录内容
ls /home

# 列出多个目录
ls /home /var /tmp

1.1.2 常用选项

长格式显示

ls -l

# 输出示例:
# drwxr-xr-x  2 dbw dbw 4096 Jan 1 10:00 Desktop
# -rw-r--r--  1 dbw dbw  123 Jan 1 10:00 file.txt

# 格式说明:
# drwxr-xr-x  文件类型和权限
# 2           硬链接数
# dbw         所有者
# dbw         所属组
# 4096        文件大小(字节)
# Jan 1 10:00 修改时间
# Desktop     文件名

显示隐藏文件

ls -a

# 输出示例:
# .              ..             .bashrc
# .profile       Desktop        Documents

人类可读格式

ls -lh

# 输出示例:
# -rw-r--r-- 1 dbw dbw 1.2K Jan 1 10:00 file.txt
# -rw-r--r-- 1 dbw dbw  15M Jan 1 10:00 video.mp4

其他常用选项

# 按时间排序(最新在前)
ls -lt

# 按大小排序(最大在前)
ls -lS

# 反向排序
ls -lr

# 递归列出子目录
ls -R

# 显示inode号
ls -i

# 组合使用
ls -lah

东巴文提示ls -lh是最常用的组合,显示详细信息且文件大小易读。

1.2 cd命令 - 切换目录

1.2.1 基本用法

cd命令用于切换工作目录

# 切换到指定目录
cd /home/dbw

# 切换到用户主目录
cd
cd ~

# 切换到上一级目录
cd ..

# 切换到上两级目录
cd ../..

# 切换到上一次所在目录
cd -

1.2.2 路径使用

绝对路径

cd /var/log
cd /usr/local/bin

相对路径

cd Documents
cd ../Downloads
cd ./Desktop

东巴文最佳实践:使用Tab键自动补全目录名,提高效率。

1.3 pwd命令 - 显示当前目录

pwd命令显示当前工作目录的绝对路径

pwd

# 输出示例:
# /home/dbw/Documents

# 显示物理路径(解析符号链接)
pwd -P

# 显示逻辑路径(保留符号链接)
pwd -L

1.4 mkdir命令 - 创建目录

1.4.1 基本用法

# 创建单个目录
mkdir dir1

# 创建多个目录
mkdir dir1 dir2 dir3

# 创建嵌套目录
mkdir -p dir1/dir2/dir3

# 创建目录并设置权限
mkdir -m 755 dir1

# 显示创建过程
mkdir -v dir1

1.4.2 实用示例

# 创建项目目录结构
mkdir -p project/{src,bin,docs,tests}

# 创建带日期的目录
mkdir backup_$(date +%Y%m%d)

# 创建多级目录
mkdir -p /tmp/test/sub1/sub2

东巴文技巧:使用{}可以快速创建多个相关目录。

1.5 rmdir命令 - 删除空目录

rmdir命令只能删除空目录

# 删除空目录
rmdir dir1

# 删除多级空目录
rmdir -p dir1/dir2/dir3

# 显示删除过程
rmdir -v dir1

东巴文提示:如果目录非空,需要使用rm -r命令。

1.6 cp命令 - 复制文件和目录

1.6.1 复制文件

# 复制文件
cp file1.txt file2.txt

# 复制文件到目录
cp file.txt /home/dbw/

# 复制多个文件到目录
cp file1.txt file2.txt /home/dbw/

# 交互式复制(覆盖前提示)
cp -i file1.txt file2.txt

# 强制覆盖
cp -f file1.txt file2.txt

# 显示复制过程
cp -v file1.txt file2.txt

1.6.2 复制目录

# 复制目录(递归)
cp -r dir1 dir2

# 复制目录并显示过程
cp -rv dir1 dir2

# 保持文件属性
cp -a dir1 dir2

# 保持时间戳
cp -p file1.txt file2.txt

1.6.3 实用示例

# 备份文件
cp file.txt file.txt.bak

# 备份目录
cp -r project project_backup

# 复制所有.txt文件
cp *.txt /backup/

# 复制并重命名
cp file.txt /backup/newfile.txt

东巴文最佳实践:重要文件复制时使用-i选项,避免误覆盖。

1.7 mv命令 - 移动或重命名文件

1.7.1 重命名文件

# 重命名文件
mv oldname.txt newname.txt

# 重命名目录
mv olddir newdir

1.7.2 移动文件

# 移动文件到目录
mv file.txt /home/dbw/

# 移动多个文件到目录
mv file1.txt file2.txt /home/dbw/

# 移动目录
mv dir1 /home/dbw/

# 交互式移动
mv -i file.txt /home/dbw/

# 强制覆盖
mv -f file.txt /home/dbw/

# 显示移动过程
mv -v file.txt /home/dbw/

1.7.3 实用示例

# 移动所有.txt文件
mv *.txt /backup/

# 移动并重命名
mv file.txt /backup/newfile.txt

# 批量重命名(使用rename命令)
rename 's/\.txt$/\.bak/' *.txt

东巴文提示mv命令在同一个文件系统内移动文件很快,因为只修改文件路径,不复制数据。

1.8 rm命令 - 删除文件和目录

1.8.1 删除文件

# 删除文件
rm file.txt

# 删除多个文件
rm file1.txt file2.txt

# 交互式删除
rm -i file.txt

# 强制删除
rm -f file.txt

# 显示删除过程
rm -v file.txt

1.8.2 删除目录

# 删除空目录
rm -d dir1

# 删除目录及其内容(递归)
rm -r dir1

# 强制递归删除
rm -rf dir1

# 交互式递归删除
rm -ri dir1

东巴文警告rm -rf命令非常危险,删除后无法恢复!

1.8.3 安全删除

# 使用通配符前先确认
ls file*

# 使用交互模式
rm -i *.txt

# 避免使用通配符
rm -rf /home/dbw/dir1/*  # 危险!
rm -rf /home/dbw/dir1/   # 更安全

# 使用trash-cli工具(可恢复)
sudo apt install trash-cli
trash file.txt

东巴文最佳实践

  • 重要操作前先备份
  • 使用-i选项确认
  • 避免在脚本中使用rm -rf /*

1.9 touch命令 - 创建空文件或更新时间戳

# 创建空文件
touch file.txt

# 创建多个文件
touch file1.txt file2.txt

# 更新文件时间戳
touch file.txt

# 只更新访问时间
touch -a file.txt

# 只更新修改时间
touch -m file.txt

# 设置特定时间
touch -t 202401011200 file.txt

二、文件内容查看

2.1 cat命令 - 查看文件内容

2.1.1 基本用法

# 查看文件内容
cat file.txt

# 查看多个文件
cat file1.txt file2.txt

# 连接文件
cat file1.txt file2.txt > merged.txt

2.1.2 常用选项

# 显示行号
cat -n file.txt

# 显示行号(非空行)
cat -b file.txt

# 显示特殊字符
cat -A file.txt

# 显示制表符
cat -T file.txt

# 显示行结束符
cat -E file.txt

# 合并空行
cat -s file.txt

东巴文提示cat适合查看小文件,大文件建议使用less

2.2 less命令 - 分页查看文件

2.2.1 基本用法

# 分页查看文件
less file.txt

# 查看多个文件
less file1.txt file2.txt

2.2.2 操作快捷键

导航操作

快捷键 功能
空格 向下翻页
b 向上翻页
回车 向下一行
j 向下一行
k 向上一行
g 跳到文件开头
G 跳到文件末尾
10g 跳到第10行

搜索操作

快捷键 功能
/pattern 向下搜索
?pattern 向上搜索
n 下一个匹配
N 上一个匹配

其他操作

快捷键 功能
q 退出
h 帮助
F 跟踪模式(类似tail -f)
v 使用编辑器编辑

东巴文技巧less是查看大文件的最佳工具,支持前后翻页和搜索。

2.3 head命令 - 查看文件开头

# 查看文件前10行
head file.txt

# 查看文件前N行
head -n 20 file.txt
head -20 file.txt

# 查看文件前N个字节
head -c 100 file.txt

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

实用示例

# 查看日志文件开头
head -n 20 /var/log/syslog

# 查看配置文件开头
head -n 10 /etc/passwd

2.4 tail命令 - 查看文件末尾

2.4.1 基本用法

# 查看文件最后10行
tail file.txt

# 查看文件最后N行
tail -n 20 file.txt
tail -20 file.txt

# 查看文件最后N个字节
tail -c 100 file.txt

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

2.4.2 实时监控

# 实时监控文件(最常用)
tail -f /var/log/syslog

# 实时监控并显示前N行
tail -n 20 -f /var/log/syslog

# 跟踪文件名(文件被删除或重命名后继续跟踪)
tail -F /var/log/syslog

东巴文提示tail -f是监控日志文件的必备命令。

2.5 wc命令 - 统计文件信息

# 统计行数、字数、字节数
wc file.txt

# 输出示例:
#  10  20 150 file.txt
#  行数 字数 字节数

# 只统计行数
wc -l file.txt

# 只统计字数
wc -w file.txt

# 只统计字节数
wc -c file.txt

# 只统计字符数
wc -m file.txt

# 统计多个文件
wc -l *.txt

# 配合管道使用
ls -l | wc -l
cat file.txt | wc -w

2.6 stat命令 - 查看文件详细信息

# 查看文件详细信息
stat file.txt

# 输出示例:
#   File: file.txt
#   Size: 1234            Blocks: 8          IO Block: 4096   regular file
# Device: 801h/2049d      Inode: 123456      Links: 1
# Access: (0644/-rw-r--r--)  Uid: ( 1000/   dbw)   Gid: ( 1000/   dbw)
# Access: 2024-01-01 10:00:00.000000000 +0800
# Modify: 2024-01-01 10:00:00.000000000 +0800
# Change: 2024-01-01 10:00:00.000000000 +0800
#  Birth: -

# 只显示文件大小
stat -c %s file.txt

# 只显示权限
stat -c %a file.txt

# 只显示inode号
stat -c %i file.txt

三、文件查找与过滤

3.1 find命令 - 查找文件

3.1.1 基本用法

# 在当前目录查找文件
find . -name "file.txt"

# 在指定目录查找
find /home -name "file.txt"

# 查找所有.txt文件
find . -name "*.txt"

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

3.1.2 按类型查找

# 查找文件
find . -type f -name "*.txt"

# 查找目录
find . -type d -name "dir*"

# 查找符号链接
find . -type l

# 查找块设备
find /dev -type b

# 查找字符设备
find /dev -type c

3.1.3 按大小查找

# 查找空文件
find . -empty

# 查找大于100MB的文件
find . -size +100M

# 查找小于1KB的文件
find . -size -1k

# 查找大小在10MB到100MB之间的文件
find . -size +10M -size -100M

# 查找文件大小为0的文件
find . -size 0

3.1.4 按时间查找

# 查找最近7天修改的文件
find . -mtime -7

# 查找7天前修改的文件
find . -mtime +7

# 查找最近1小时内修改的文件
find . -mmin -60

# 查找最近1天内访问的文件
find . -atime -1

# 查找最近1天内状态改变的文件
find . -ctime -1

3.1.5 按权限查找

# 查找权限为755的文件
find . -perm 755

# 查找权限至少为755的文件
find . -perm -755

# 查找权限包含执行权限的文件
find . -perm -111

# 查找SUID文件
find / -perm -4000

3.1.6 按用户查找

# 查找属于dbw用户的文件
find . -user dbw

# 查找属于dbw组的文件
find . -group dbw

# 查找没有有效用户的文件
find . -nouser

# 查找没有有效组的文件
find . -nogroup

3.1.7 组合条件

# 与(AND)
find . -name "*.txt" -size +1M

# 或(OR)
find . -name "*.txt" -o -name "*.md"

# 非(NOT)
find . -not -name "*.txt"
find . ! -name "*.txt"

# 复杂组合
find . \( -name "*.txt" -o -name "*.md" \) -size +1M

3.1.8 执行操作

# 查找并删除
find . -name "*.tmp" -delete

# 查找并执行命令
find . -name "*.txt" -exec cat {} \;

# 查找并执行命令(批量)
find . -name "*.txt" -exec cat {} +

# 查找并询问
find . -name "*.tmp" -ok rm {} \;

# 查找并移动
find . -name "*.txt" -exec mv {} /backup/ \;

# 查找并修改权限
find . -type f -exec chmod 644 {} \;

东巴文最佳实践find命令功能强大,是文件查找的首选工具。

3.2 locate命令 - 快速查找文件

3.2.1 基本用法

# 查找文件
locate file.txt

# 查找所有.txt文件
locate "*.txt"

# 忽略大小写
locate -i FILE.txt

# 限制结果数量
locate -n 10 "*.txt"

# 统计匹配数量
locate -c "*.txt"

3.2.2 更新数据库

# 更新数据库
sudo updatedb

# 查看数据库信息
locate -S

东巴文对比

特性 find locate
查找速度
实时性 实时 依赖数据库
功能 强大 简单
适用场景 复杂查找 快速查找

3.3 grep命令 - 文本搜索

3.3.1 基本用法

# 在文件中搜索
grep "pattern" file.txt

# 在多个文件中搜索
grep "pattern" *.txt

# 在目录中递归搜索
grep -r "pattern" /var/log/

# 忽略大小写
grep -i "pattern" file.txt

# 显示行号
grep -n "pattern" file.txt

# 显示不匹配的行
grep -v "pattern" file.txt

3.3.2 显示选项

# 只显示匹配的部分
grep -o "pattern" file.txt

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

# 显示不匹配的文件名
grep -L "pattern" *.txt

# 显示匹配次数
grep -c "pattern" file.txt

# 显示匹配行及前后N行
grep -C 3 "pattern" file.txt

# 显示匹配行及前N行
grep -B 3 "pattern" file.txt

# 显示匹配行及后N行
grep -A 3 "pattern" file.txt

3.3.3 正则表达式

# 使用正则表达式
grep "^root" /etc/passwd          # 以root开头
grep "bash$" /etc/passwd          # 以bash结尾
grep "[0-9]\{3\}" file.txt        # 3个数字
grep "a\{2,\}" file.txt           # 至少2个a
grep "a\{2,4\}" file.txt          # 2到4个a

# 使用扩展正则表达式
grep -E "pattern1|pattern2" file.txt   # 或
grep -E "[0-9]+" file.txt              # 一个或多个数字
grep -E "a?" file.txt                  # 0个或1个a

3.3.4 实用示例

# 查找进程
ps aux | grep nginx

# 查找端口
netstat -tuln | grep 80

# 查找日志中的错误
grep -i "error" /var/log/syslog

# 查找配置文件中的非注释行
grep -v "^#" /etc/ssh/sshd_config | grep -v "^$"

# 查找IP地址
grep -E "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" file.txt

# 查找邮箱地址
grep -E "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}" file.txt

东巴文技巧grep是文本搜索的利器,配合管道可以实现强大的过滤功能。

3.4 which命令 - 查找命令位置

# 查找命令位置
which ls

# 输出示例:
# /bin/ls

# 查找多个命令
which ls cd pwd

# 显示所有匹配
which -a python

3.5 whereis命令 - 查找程序文件

# 查找程序文件
whereis ls

# 输出示例:
# ls: /bin/ls /usr/share/man/man1/ls.1.gz

# 只查找二进制文件
whereis -b ls

# 只查找手册页
whereis -m ls

# 只查找源代码
whereis -s ls

四、文件压缩与解压

4.1 tar命令 - 打包与解包

4.1.1 创建归档

# 创建归档文件
tar -cvf archive.tar dir1/

# 创建gzip压缩归档
tar -czvf archive.tar.gz dir1/

# 创建bzip2压缩归档
tar -cjvf archive.tar.bz2 dir1/

# 创建xz压缩归档
tar -cJvf archive.tar.xz dir1/

# 参数说明
# c  创建归档
# v  显示过程
# f  指定文件名
# z  gzip压缩
# j  bzip2压缩
# J  xz压缩

4.1.2 解压归档

# 解压归档文件
tar -xvf archive.tar

# 解压gzip归档
tar -xzvf archive.tar.gz

# 解压bzip2归档
tar -xjvf archive.tar.bz2

# 解压xz归档
tar -xJvf archive.tar.xz

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

# 参数说明
# x  解压归档
# C  指定解压目录

4.1.3 查看归档

# 查看归档内容
tar -tvf archive.tar

# 查看gzip归档内容
tar -tzvf archive.tar.gz

# 参数说明
# t  列出内容

4.1.4 实用示例

# 备份目录
tar -czvf backup_$(date +%Y%m%d).tar.gz /home/dbw/

# 备份多个目录
tar -czvf backup.tar.gz dir1/ dir2/ dir3/

# 排除某些文件
tar -czvf backup.tar.gz --exclude="*.log" dir1/

# 增量备份
tar -czvf backup.tar.gz -g snapshot.file dir1/

# 只打包比某个日期新的文件
tar -czvf backup.tar.gz -N "2024-01-01" dir1/

东巴文最佳实践tar -czvf是最常用的压缩命令,压缩比和速度都很好。

4.2 gzip命令 - gzip压缩

# 压缩文件
gzip file.txt

# 压缩文件并保留原文件
gzip -k file.txt

# 解压文件
gzip -d file.txt.gz

# 查看压缩文件内容
zcat file.txt.gz

# 显示压缩信息
gzip -l file.txt.gz

# 指定压缩级别(1-9,默认6)
gzip -9 file.txt    # 最大压缩
gzip -1 file.txt    # 最快压缩

4.3 bzip2命令 - bzip2压缩

# 压缩文件
bzip2 file.txt

# 压缩文件并保留原文件
bzip2 -k file.txt

# 解压文件
bzip2 -d file.txt.bz2

# 查看压缩文件内容
bzcat file.txt.bz2

# 指定压缩级别(1-9,默认9)
bzip2 -9 file.txt

东巴文对比

压缩工具 压缩比 速度 扩展名
gzip .gz
bzip2 .bz2
xz 最高 最慢 .xz

4.4 zip/unzip命令 - zip压缩

4.4.1 创建zip文件

# 压缩文件
zip archive.zip file1.txt file2.txt

# 压缩目录
zip -r archive.zip dir1/

# 压缩多个目录
zip -r archive.zip dir1/ dir2/

# 排除某些文件
zip -r archive.zip dir1/ -x "*.log"

# 设置压缩级别(0-9)
zip -9 archive.zip file.txt    # 最大压缩
zip -1 archive.zip file.txt    # 最快压缩

# 添加密码
zip -P password archive.zip file.txt

4.4.2 解压zip文件

# 解压文件
unzip archive.zip

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

# 查看压缩文件内容
unzip -l archive.zip

# 测试压缩文件完整性
unzip -t archive.zip

# 覆盖已存在的文件
unzip -o archive.zip

# 不覆盖已存在的文件
unzip -n archive.zip

东巴文提示zip格式在Windows和Linux之间交换文件时很方便。

4.5 xz命令 - xz压缩

# 压缩文件
xz file.txt

# 压缩文件并保留原文件
xz -k file.txt

# 解压文件
xz -d file.txt.xz

# 查看压缩文件内容
xzcat file.txt.xz

# 指定压缩级别(0-9,默认6)
xz -9 file.txt    # 最大压缩

# 使用多线程
xz -T 4 file.txt  # 使用4个线程

五、本章小结

5.1 核心要点

✅ 掌握文件管理基本命令:ls、cd、cp、mv、rm ✅ 学会查看文件内容:cat、less、head、tail ✅ 熟练使用find和grep查找文件和内容 ✅ 掌握文件压缩与解压:tar、gzip、zip

5.2 验证清单

完成本章学习后,请确认您能够:

  • 使用ls命令列出目录内容
  • 使用cd命令切换目录
  • 使用cp、mv、rm管理文件
  • 使用cat、less查看文件内容
  • 使用find查找文件
  • 使用grep搜索文本
  • 使用tar压缩和解压文件

东巴文(db-w.cn) - 让Linux学习更简单