引言
Linux 命令行是系统管理员和开发者的核心工具。掌握常用命令及其选项,能够极大提升工作效率。本文将对文件操作、查找统计、简单文本处理等高频命令进行系统梳理和详解,并附上实用示例,助你快速上手。
一、命令结构基础
一个完整的 Linux 命令通常由以下部分构成:
命令 [选项] [参数/对象]
- 命令:要执行的操作,如
ls,cp。 - 选项:用于修改命令行为的标志。
- 长选项:以
--开头,如--all。 - 短选项:以
-开头,如-a。 - 多个短选项可以组合使用且顺序不分先后,例如
-r和-f可以组合为-rf。
- 长选项:以
- 参数/对象:命令操作的目标,如文件名、目录路径。
二、管道符号 |
命令1 | 命令2
把前一条命令的标准输出作为后一条命令的标准输入,只传文本不传参数
命令1 | xargs 命令2
把前一条命令的标准输出作为后一条命令的参数
扩展: cat file | xargs : 将多行文本以一行输出,分隔符为空格。
三、文件与目录操作
ls - 列出目录内容
ls:列出当前目录下的文件和子目录。ls -a:显示所有文件,包括隐藏文件。ls -l:以长格式列出详细信息,包括文件类型、权限、所有者、大小、修改时间等。其缩写为ll。ll -d:显示目录本身的详细信息。ll -h:以人性化格式(K, M, G)显示文件大小,需与-l结合使用(ls -lh)。
cd - 切换目录
cd /home:切换到绝对路径/home。cd ~:切换到当前用户的家目录。cd ..:切换到上一级目录。cd -:切换到上一次所在的目录。
pwd - 打印当前工作目录
显示当前所在目录的绝对路径。
mkdir - 创建目录
mkdir /test:创建名为test的目录。mkdir -p /var/log/nginx.log:递归创建多级目录a/b/c。mkdir dir1 dir2 dir3:在当前目录下创建多个目录。mkdir /var/log/{dir1,dir2}.log:在指定路径下创建多个目录。
rm - 删除文件或目录
rm file:删除文件file。rm -r dir:递归删除目录file及其所有内容。rm -f file:强制删除,忽略不存在的文件和不提示确认。rm -rf dir:(谨慎使用) 强制递归删除目录,不可恢复。
cp - 复制
cp a.txt /bin:将文件a.txt复制到/bin目录。cp a.txt .:将文件a.txt复制到当前目录。cp a.txt b.txt:复制a.txt到当前目录并重命名为b.txt。cp -r dir1 dir2:递归复制目录dir1到dir2。cp -r dir1 dir2 dir3:将目录dir1和dir2复制到dir3中。
mv - 移动或重命名
mv a.txt b.txt:将文件a.txt重命名为b.txt。mv a.txt /dir:将文件a.txt移动到/dir目录。mv a.txt /dir/b.txt:移动文件并重命名。mv /tmp /dir:文件夹移动,移动关键是存在dir目录mv /tmp /tmp2:文件夹重命名,重命名的关键是不存在tmp2目录
touch - 创建空文件或更新时间戳
touch log.txt:如果log.txt不存在则创建空文件;如果存在,则更新其访问和修改时间戳。
cat - 连接并显示文件
cat info.txt:显示info.txt的全部内容。cat -n info.txt:显示内容并显示行号(包括空行)。cat split_* > merge.txt:将所有以split_开头的文件内容合并到merge.txt。 符号>是输出重定向,后续会讲解。
more / less文件内容查看(推荐,适合中大型文件)
more file:分页查看文件,按空格翻页,按q退出。less file:更强大的分页查看器,支持上下滚动、搜索等。
head / tail - 查看文件首尾
head -n 10 file:查看文件前10行,-n 10可简写为-10。tail -n 20 file:查看文件最后20行。tail -f log:实时监控日志文件新增内容(常用于跟踪应用日志)。head -8 file.txt | tail -1利用管道符号取第8行
diff - 比较文件差异
diff file1 file2:展示两个文件的差异之处。- 应用场景:可用于最新文件与备份文件比较,查看有无修改之处,比如/etc/passwd的用户信息。
du - 查看文件占用的磁盘空间大小
du /usr:显示/usr目录下每个子目录的大小。du -sh /usr:-s总结/usr目录的总大小,-h以人性化单位(K, M, G)显示。
find - 查找文件
基本语法:find [路径] [匹配选项] [动作]
常用匹配选项:
-name pattern:按文件名查找,支持通配符,比如*和?。-iname pattern:不区分大小写的文件名查找。-type type:按类型查找,f(文件)、d(目录)、l(符号链接)。-size [+-]size[cwbkMG]:按大小查找,+表示大于,-表示小于。-user username:按文件所有者查找。-perm mode:按文件权限查找。-maxdepth n:查找的最大深度。- 支持逻辑操作:
!非
-a与(系统默认可不加)
-o或
\( \)分组
时间参数:
-amin n:查找在n分钟内被访问过的文件。-atime n:查找在n*24小时内被访问过的文件。-mmin n:查找在n分钟内被修改过的文件。-mtime n:查找在n*24小时内被修改过的文件。
在这些参数中,n 可以是一个正数、负数或零。正数表示在指定的时间之前修改或访问过的文件,负数表示在指定的时间内修改或访问过的文件,零表示在当前时间点上修改或访问过的文件。
动作:
-exec command {} \;:对每个匹配到的文件执行命令,{}代表文件集合,\;是命令结束符- 示例:
find /path -name "*.log" -exec rm -f {} \; - 替代方案:
find ./ -name "*.log" | xargs rm -f
wc - 统计文本
wc -l file.txt:统计行数。wc -w file.txt:统计单词数。wc -c file.txt:统计字节数。wc file.txt:同时统计行数、单词数、字节数。
> - 清空文件
> file.txt:快速清空文件内容。
sort - 排序
sort file:默认按每行首个字符的字典序排序。sort -n file:按数字值排序。sort -r file:逆序(从上往下递减)排序。sort -k 2 file:指定第二列为排序键。sort -t “:” -k 2 file:指定:为列分隔符,按第二列排序。- 组合示例:
cat file | sort -k 5 -t “:” -nr | head -5
uniq - 报告或忽略重复行
uniq file:压缩相邻的重复行。uniq -c file:在行首显示该行重复出现的次数。- 注意:
uniq通常需要先与sort结合使用,因为它只处理相邻的重复行。sort file | uniq -c
tee - 分流输出
tee -a file:将输入的内容同时输出到屏幕和追加到文件。- 示例:
df -h | tee -a disk.log
split - 分割文件
split -l 5 file.txt -d -a 3 prefix_:按每5行分割(-l 5),并且生成文件名称使用数字后缀(-d),后缀长度为3位(-a 3),生成文件如prefix_000。split -C 10 file.txt:按每块最多10个字符分割,尽量保持一行内的切割。split -b 10M file.txt:按每块10MB字节分割,无视行的束缚。- 应用场景:处理超大文件时,提取中间部分(如100万行文件的40-50万行),
head和tail会效率低下,可先分割再处理。 - 合并:参考cat
join - 关联合并文件
join -1 2 -2 1 file1 file2:用文件1的第2列和文件2的第1列作为关联键进行合并。
paste - 横向合并文件
paste file1 file2:将两个文件按行横向拼接(默认制表符分隔)。paste -d “,” file1 file2:使用逗号,作为自定义分隔符。
总结
本文涵盖了 Linux 命令行中最核心和实用的文件、目录操作和简单文本处理命令。理解命令的“选项+参数”结构是灵活运用的关键。建议在日常工作中多练习组合使用这些命令(如 管道符号|可以连接多个命令,find 与 xargs,sort 与 uniq),以构建高效的工作流。
206

被折叠的 条评论
为什么被折叠?



