文件和目录操作
cd /home
:进入/home
目录。cd ..
:返回上级目录。cd ../..
:返回上两级目录。cd
:返回个人主目录。cd ~tony
:进入指定用户(如 tony)的主目录/home/tony
。cd -
:返回上一次所在目录。pwd
:显示当前工作目录。ls -l
:以详细形式查看文件和目录信息(使用长列表格式输出)。ls -lt
:使用长列表格式输出,按时间排序,最先输出最新的。ls -lhS
:使用长列表格式输出,以 (1K, 234M, 2G) 的形式输出文件大小,按大小排序,最先输出最大的。ls - la
:显示包括隐藏文件在内的所有文件。tree
:以树状格式列出目录的内容。tree -d .
:只显示当前目录的目录结构,不显示目录下的文件。mkdir dir1
:创建名为dir1
的目录。mkdir dir1 dir2 dir3
:同时创建多个目录。mkdir -p /tmp/dir1/dir2
:创建多级目录树。rm -f file1
:删除名为file1
的文件。rm -rf dir1
:递归删除名为dir1
的目录及其内容。rmdir dir1
:删除名为dir1
的空目录。mv old_dir new_dir
:重命名或移动目录(也可操作文件)。cp file1 file2
:复制文件。cp dir/* .
:复制指定目录下的所有文件到当前目录。cp -a /tmp/dir1 .
:复制整个目录到当前目录。cp -a src_dir new_dir
:复制整个目录。ln -s /path/to/file1 lnk1
:创建指向file1
的软链接(符号链接)。ln /path/to/file1 lnk2
:创建指向file1
的硬链接。touch existing_file.txt
将(已存在的)文件的访问时间和修改时间更新为当前系统时间。touch file.txt
:创建一个名为file.txt
的新文件,如果文件已经存在,则不会有任何内容变化,只会更新文件的时间戳。file file1 file2 file3
:识别和报告文件类型,通过检查文件的二进制内容来推测文件的格式或内容类型,而不是依赖于文件名或扩展名。
查看文件内容
cat file1
:正向查看文件内容。tac file1
:反向查看文件内容。more file1
:查看长文件内容,支持翻页,但不能逐行向上浏览。less file1
:类似more
命令,支持前后翻页查看,提供了更多的交互性,例如可以搜索文本、跳转到文件的任意位置,甚至支持高亮显示搜索结果。head -5 file1
:查看文件前 5 行。tail -5 file1
:查看文件最后 5 行。tail -f /var/log/messages
:动态追踪文件尾部新增内容。wc example.txt
:显示文件example.txt
的行数、单词数和字节数。wc -l log.txt
:只显示文件log.txt
的行数。wc -l file1.txt file2.txt file3.txt
:计算多个文件的总行数。
搜索文件
find / -name file1
:从根目录开始查找名为 file1 的文件或目录。find / -user tony
:查找属于用户 tony 的文件和目录。find /home/tony -name "*.bin"
:在/home/tony
目录中查找扩展名为bin
的文件。find /usr/bin -type f -atime +100
:查找过去 100 天内未被访问过的可执行文件。find /home/tony -type f -mtime -10
:查找 10 天内被创建或修改过的文件。find / -xdev -name "*.cpp"
:仅在当前文件系统中查找.cpp
文件。locate "*.sh"
:查找扩展名为.sh
的文件(需先运行 updatedb 命令)。whereis zsh
:显示zsh
命令的二进制文件、源代码和手册页位置。which zsh
:显示zsh
命令的完整路径。
文本处理
cat file* | command > result.txt
:合并多个文件并通过命令(如sed
,grep
,awk
等)处理再将结果写入新文件。
grep 命令示例
grep Aug /var/log/messages
:在指定文件中查找包含关键词Aug
的行。grep ^Aug /var/log/messages
:查找以Aug
开头的行。grep [0-9] /var/log/messages
:查找包含数字的行。grep Aug -R /var/log/*
:在指定目录及其子目录中递归查找包含关键词Aug
的行。
sed 命令示例
sed 's/string1/string2/g' example.txt
:替换 example.txt 中string1
为string2
。sed '/^$/d' example.txt
:删除example.txt
中的空白行。sed -n '1d' result.txt
:从result.txt
中删除第一行。sed -n '/string1/p' example.txt
:打印输出包含string1
的行。sed -i.bak 's/[ \t]*$//' example.txt
:删除行尾空白字符。sed -i.bak 's/string1//g' example.txt
:从文档中删除所有string1
。sed -i.bak 's/00*/0/g' example.txt
:用单个零替换连续多个零。sed -n '1,5p;5q' example.txt
:打印输出文件的前五行。sed -n '5p;5q' example.txt
:打印输出文件的第五行。
awk 命令示例
cat -n example.txt
:输出文件内容时显示行号。cat example.txt | awk 'NR%2==1'
:删除example.txt
中的所有偶数行。echo a b c | awk '{print $1}'
:打印输出一行的第一个字段。echo a b c | awk '{print $NF}'
:打印输出一行的最后一个字段。- echo a b c d | awk '{print 1,3}':打印输出一行的第一和第三个字段。
其他命令
paste file1 file2
:逐行合并两个文件或两栏的内容。paste -d '+' file1 file2
:逐行合并两个文件或两栏的内容,中间用+
分隔。sort data.txt
:对文件 data.txt 的内容按默认方式进行排序,并将结果打印输出。sort -n numbers.txt
:按照数值大小对含有数字的文件进行排序。sort -t ',' -k 2 data.csv
:按照逗号分隔的第二列内容进行排序。uniq input.txt
:删除文件input.txt
中相邻的重复行,并将结果打印输出。uniq -c input.txt
:输出文件中重复行及其出现次数。uniq -d input.txt
:只输出文件中连续重复出现的行内容。sort input.txt | uniq -u
:输出文件中只出现一次的行内容。
字符设置和文件格式转换
iconv -l
:列出所有已知的字符集编码。iconv -f UTF-8 -t GBK -o output_file.gbk input_file.utf8
:转换文件编码。dos2unix filedos.txt fileunix.txt
:将 MS-DOS 格式文本文件转换为 UNIX 格式。unix2dos fileunix.txt filedos.txt
:将 UNIX 格式文本文件转换为 MS-DOS 格式。recode ..HTML < page.txt > page.html
:将文本文件转换为 HTML 格式文件。recode -l | more
:显示所有支持转换的格式。
管理文件/目录的权限
chmod - 改变文件或目录的权限:
chmod ugo+rwx directory1
:为目录directory1
的所有者(u)、群组(g)和其它用户(o)赋予读(r)、写(w)和执行(x)权限。chmod go-rwx directory1
:撤销群组和其它用户对目录directory1
的读、写、执行权限。
chown - 改变文件或目录的所有权:
chown user1 file1
:将文件file1
的所有权改为用户user1
。chown -R user1 directory1
:递归地将目录directory1
及其下所有文件和子目录的所有权改为用户user1
。
chgrp - 改变文件或目录所属的群组:
chgrp group1 file1
:将文件file1
所属的群组改为group1
。chown user1:group1 file1
:同时更改文件file1
的所有人和群组属性,将所有人改为user1
,群组改为group1
。
执行权限的增删
chmod +x /path/to/file
:为所有者、群组和其他用户增加执行权限。chmod -x /path/to/file
:为所有者、群组和其他用户移除执行权限。chmod u+x /path/to/file
:只为所有者增加执行权限。chmod g+x /path/to/file
:只为所属群组增加执行权限。chmod o+x /path/to/file
:只为其他用户增加执行权限。chmod ug+x /path/to/file
:同时为所有者和所属群组增加执行权限。chmod =r /path/to/file
:将文件设为只读文件。chmod ug=wx /path/to/file
:为所有者和所属群组赋予写和执行权限,同时取消读权限。
文件特殊属性设置与查看
chattr +a file1
:设置file1
文件为追加模式(append-only),只允许以追加方式写入,不允许修改或删除原有内容。chattr +c file1
:允许内核自动对file1
文件进行透明压缩和解压(仅适用于支持这种特性的文件系统)。chattr +d file1
:标记file1
文件在进行文件系统备份(如使用 dump 工具)时被忽略。chattr +i file1
:将file1
文件设置为不可变(immutable),禁止任何对该文件的修改、删除、重命名或链接操作。chattr +s file1
:将file1
文件设置为安全删除(secure deletion),删除该文件时实际上会重命名并在回收站中保留一段时期,便于后续可能的恢复。chattr +S file1
:设置file1
文件为同步模式,当应用程序对文件执行写操作时,系统会立刻将改动同步到磁盘上。chattr +u file1
:允许将来恢复已被删除的file1
文件(undelete attribute)。lsattr file1
:显示file1
文件的所有特殊属性。这些特殊属性有助于提高文件系统的安全性,并在特定场景下优化文件的存储和处理方式。
打包与压缩/解压缩
Bzip2 压缩与解压:
- 解压 bz2 格式文件:
bunzip2 file1.bz2
- 压缩文件至 bz2 格式:
bzip2 file1
Gzip 压缩与解压:
- 解压 gz 格式文件:
gunzip file1.gz
- 压缩文件至 gz 格式:
gzip file1
- 最大压缩率压缩文件至 gz 格式:
gzip -9 file1
RAR 压缩与解压:
- 创建 RAR 压缩包:
rar a file1.rar test_file rar a file1.rar file1 file2 dir1
- 解压 RAR 压缩包:
rar x file1.rar unrar x file1.rar
Tar 打包与解包(不压缩):
- 创建非压缩 tar 包:
tar -cvf archive.tar file1 tar -cvf archive.tar file1 file2 dir1
- 查看 tar 包内容:
tar -tf archive.tar
- 解压 tar 包:
tar -xvf archive.tar tar -xvf archive.tar -C /tmp
Tar 与压缩工具结合压缩与解压:
- 创建并压缩至 bzip2 格式:
tar -cvfj archive.tar.bz2 dir1
- 解压 bzip2 格式的 tar 包:
tar -xvfj archive.tar.bz2
- 创建并压缩至 gzip 格式:
tar -cvfz archive.tar.gz dir1
- 解压 gzip 格式的 tar 包:
tar -xvfz archive.tar.gz
Zip 压缩与解压:
- 创建 zip 格式压缩包:
zip file1.zip file1
zip -r file1.zip file1 file2 dir1
- 解压 zip 格式压缩包:
unzip file1.zip
参考文档:
- man pages