Linux命令大全(文件管理)
一、cat 命令
命令用于连接文件并打印到标准输出设备上,它的主要作用是用于查看和连接文件。
使用权限
所有使用者
语法
cat [选项] [文件]
参数说明:
选项 | 功能描述 |
---|---|
-n | 显示所有行的行号(包括空行) |
-b | 仅对非空行显示行号(空行不编号) |
-s | 压缩连续空行为单行显示 |
-E | 在每行结尾显示 $ 符号 |
-T | 将制表符(Tab)显示为 ^I |
-v | 显示非打印字符(如换行符、制表符等控制字符) |
使用说明:
-
显示文件内容:
cat filename
会将指定文件的内容输出到终端上。 -
连接文件:
cat file1 file2 > combined_file
可以将 file1 和 file2 的内容连接起来,并将结果输出到 combined_file 中。 -
创建文件:可以使用
cat
命令来创建文件,例如cat > filename
,然后你可以输入文本,按Ctrl+D
来保存并退出。 -
在终端显示文件:可以将
cat
与管道(|
)结合使用,用来显示其他命令的输出,例如ls -l | cat
会将ls -l
的输出通过cat
打印到终端上。
实例
查看文件内容:显示文件 filename 的内容。
cat filename
创建文件:将标准输入重定向到文件 filename,覆盖该文件的内容。
cat > filename
追加内容到文件:将标准输入追加到文件 filename 的末尾。
cat >> filename
连接文件:将 file1 和 file2 的内容合并到 file3 中。
cat file1 file2 > file3
显示多个文件的内容:同时显示 file1 和 file2 的内容。
cat file1 file2
使用管道:将 cat 命令的输出作为另一个命令的输入。
cat filename | command
查看文件的最后几行:显示文件 filename 的最后 10 行。
cat filename | tail -n 10
使用 -n 选项显示行号:显示文件 filename 的内容,并在每行的前面加上行号。
cat -n filename
使用 -b 选项仅显示非空行的行号:
cat -b filename
使用 -s 选项合并空行:显示文件 filename 的内容,并合并连续的空行。
cat -s filename
使用 -t 选项显示制表符:显示文件 filename 的内容,并用 ^I 表示制表符。
cat -t filename
使用 -e 选项显示行结束符:显示文件 filename 的内容,并用 $ 表示行结束。
cat -e filename
把 textfile1 的文档内容加上行号后输入 textfile2 这个文档里:
cat -n textfile1 > textfile2
把 textfile1 和 textfile2 的文档内容加上行号(空白行不加)之后将内容附加到 textfile3 文档里:
cat -b textfile1 textfile2 >> textfile3
清空 /etc/test.txt 文档内容:
cat /dev/null > /etc/test.txt
cat 也可以用来制作镜像文件。例如要制作软盘的镜像文件,将软盘放好后输入:
cat /dev/fd0 > OUTFILE
相反的,如果想把 image file 写到软盘,输入:
cat IMG_FILE > /dev/fd0
二、chattr 命令
命令用于改变文件或目录的属性,这些属性可以控制文件系统的行为,提供更高级的文件管理功能。
语法
chattr [选项] [+/-/=属性] 文件或目录
常用选项
参数 | 功能描述 |
---|---|
-R | 递归处理目录及其子目录 |
-V | 显示详细信息 |
-v | 显示版本信息 |
属性模式
操作符 | 功能描述 | 示例 |
---|---|---|
+: | 添加新属性到对象 | obj +: {key: value} |
-: | 从对象中移除指定属性 | obj -: "key" |
=: | 设置或覆盖对象的属性 | obj =: {key: value} |
常用属性
属性 | 说明 |
---|---|
a | 仅追加:文件只能追加内容,不能删除或修改已有内容(需 root 权限)。 |
i | 不可变:文件不能被删除、修改、重命名或创建硬链接(需 root 权限)。 |
A | 不更新文件的最后访问时间(atime )。 |
c | 文件在磁盘上自动压缩(部分文件系统支持)。 |
s | 安全删除:文件被删除时,其数据会被清零(不可恢复)。 |
u | 文件被删除后,其内容仍可恢复(与 s 相反)。 |
d | 文件在 dump 备份时会被跳过。 |
实例
添加属性(+):
sudo chattr +i file.txt # 设置文件为不可变(防删除/修改)
sudo chattr +a /var/log/syslog # 日志文件只能追加
移除属性(-):
sudo chattr -i file.txt # 取消不可变属性
重置属性(=):
sudo chattr =a file.txt # 移除所有属性,仅保留 `a`
保护重要配置文件:
chattr +i /etc/passwd
chattr +i /etc/shadow
设置日志文件只能追加:
chattr +a /var/log/messages
递归设置目录属性:
chattr -R +i /etc/important/
查看文件属性(使用 lsattr 命令):
lsattr filename
三、chgrp 命令
命令用于变更文件或目录的所属群组。
语法
chgrp [-cfhRv][--help][--version][所属群组][文件或目录...]
或
chgrp [-cfhRv][--help][--reference=<参考文件或目录>][--version][文件或目录...]
参数说明
参数选项 | 说明 |
---|---|
-c 或 --changes | 类似 -v 参数,但仅显示被更改的部分 |
-f 或 --quiet 或 --silent | 不显示错误信息 |
-h 或 --no-dereference | 仅修改符号链接文件本身,不修改其指向的目标文件 |
-R 或 --recursive | 递归处理目录下的所有文件及子目录 |
-v 或 --verbose | 显示指令执行过程的详细信息 |
--help | 显示在线帮助信息 |
--reference=<参考文件或目录> | 将目标文件/目录的所属群组设置为与参考文件/目录的群组相同 |
--version | 显示版本信息 |
实例
1. 更改单个文件的所属组
chgrp developers file.txt
2. 更改多个文件的所属组
chgrp users file1.txt file2.txt file3.txt
3. 递归更改目录及其内容的所属组
chgrp -R www-data /var/www/html
4. 使用参考文件的组
chgrp --reference=source_file.txt target_fi