Linux文件管理相关命令整理记录
命令 | 含义 | 命令 | 含义 | 命令 | 含义 |
---|---|---|---|---|---|
cat | 连接文件并打印到标准输出设备上 | chattr | 改变文件属性 | chgrp | 变更文件或目录的所属群组 |
chmod | 控制用户对文件的权限 | chown | 设置文件所有者和文件关联组 | cksum | 检查文件的CRC是否正确 |
cmp | 比较两个文件是否有差异 | diff | 比较文件的差异 | diffstat | 根据diff的比较结果,显示统计数字 |
file | 辨识文件类型 | find | 在指定目录下查找文件 | git | 文字模式下的文件管理员 |
gitview | 观看文件的内容 | indent | 调整C原始代码文件的格式 | cut | 显示每行从开头算起 num1 到 num2 的文字 |
ln | 为某一个文件在另外一个位置建立一个同步的链接 | less | 随意浏览文件 | locate | 查找符合条件的文档 |
【cat】连接文件并打印到标准输出设备上
语法:
cat [-AbeEnstTuv] [--help] [--version] fileName
参数说明:
参数 | 含义 |
---|---|
-n 或 --number | 由 1 开始对所有输出的行数编号 |
-b 或 --number-nonblank | 和 -n 相似,只不过对于空白行不编号 |
-s 或 --squeeze-blank | 当遇到有连续两行以上的空白行,就代换为一行的空白行 |
-v 或 --show-nonprinting | 使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外 |
-E 或 --show-ends | 在每行结束处显示 $ |
-T 或 --show-tabs | 将 TAB 字符显示为 ^I |
-A, --show-all | 等价于 -vET |
-e | 等价于"-vE"选项 |
-t | 等价于"-vT"选项 |
实例:
#把 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 [-RV][-v<版本编号>][+/-/=<属性>][文件或目录...]
参数说明:
参数 | 说明 |
---|---|
-R | 递归处理,将指定目录下的所有文件及子目录一并处理 |
-v | 设置文件或目录版本 |
-V | 显示指令执行过程 |
+<属性> | 开启文件或目录的该项属性 |
-<属性> | 关闭文件或目录的该项属性 |
=<属性> | 指定文件或目录的该项属性 |
文件或目录属性的8种模式:
属性 | 含义 |
---|---|
a | 让文件或目录仅供附加用途 |
b | 不更新文件或目录的最后存取时间 |
c | 将文件或目录压缩后存放 |
d | 将文件或目录排除在倾倒操作之外 |
i | 不得任意更动文件或目录 |
s | 保密性删除文件或目录 |
S | 即时更新文件或目录 |
u | 预防意外删除 |
实例:
#用chattr命令防止系统中某个关键文件被修改:
chattr +i /etc/resolv.conf
#使用lsattr来显示文件属性
lsattr /etc/resolv.conf
#结果:
----i-------- /etc/resolv.conf
#让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件
chattr +a /var/log/messages
【chgrp】变更文件或目录的所属群组
语法:
chgrp [-cfhRv][--help][--version][所属群组][文件或目录...]
chgrp [-cfhRv][--help][--reference=<参考文件或目录>][--version][文件或目录...]
参数说明:
参数 | 含义 |
---|---|
-c或–changes | 效果类似"-v"参数,但仅回报更改的部分 |
-f或–quiet或–silent | 不显示错误信息 |
-h或–no-dereference | 只对符号连接的文件作修改,而不更动其他任何相关文件 |
-R或–recursive | 递归处理,将指定目录下的所有文件及子目录一并处理 |
-v或–verbose | 显示指令执行过程 |
–reference=<参考文件或目录> | 把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同 |
实例:
#改变文件的群组属性
chgrp -v bin log.log
#输出:
[root@localhost test]# ll
---xrw-r-- 1 root root 302108 11-13 06:03 log.log
[root@localhost test]# chgrp -v bin log.log
"log.log" 的所属组已更改为 bin
[root@localhost test]# ll
---xrw-r-- 1 root bin 302108 11-13 06:03 log.log
#log.log文件由root群组改为bin群组
#根据指定文件改变文件的群组属性
chgrp --reference=log2012.log log2013.log
#输出:
[root@localhost test]# ll
---xrw-r-- 1 root bin 302108 11-13 06:03 log.log
-rw-r--r-- 1 root root 61 11-13 06:03 log11.log
[root@localhost test]# chgrp --reference=log.log log11.log
[root@localhost test]# ll
---xrw-r-- 1 root bin 302108 11-13 06:03 log.log
-rw-r--r-- 1 root bin 61 11-13 06:03 log11.log
#文件log11.log的群组属性和参考文件log.log的群组属性相同
【chmod】控制用户对文件的权限
语法:
chmod [-cfvR] [--help] [--version] mode file...
参数说明:
mode : 权限设定字串,格式如下 :
[ugoa...][[+-=][rwxX]...][,...]
其中:
- u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
- +表示增加权限、- 表示取消权限、= 表示唯一设定权限。
- r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
其他参数说明:
-c | 若该文件权限确实已经更改,才显示其更改动作 |
---|---|
-f | 若该文件权限无法被更改也不要显示错误讯息 |
-v | 显示权限变更的详细资料 |
-R | 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更) |
符号模式:
使用符号模式可以设置多个项目:who(用户类型),operator(操作符)和 permission(权限),每个项目的设置可以用逗号隔开。 命令 chmod 将修改 who 指定的用户类型对文件的访问权限,用户类型由一个或者多个字母在 who 的位置来说明,如 who 的符号模式表所示:
who | 用户类型 | 说明 |
---|---|---|
u | user | 文件所有者 |
g | group | 文件所有者所在组 |
o | others | 所有其他用户 |
a | all | 所用用户, 相当于ugo |
operator 的符号模式表:
Operator | 说明 |
---|---|
+ | 为指定的用户类型增加权限 |
- | 去除指定用户类型的权限 |
= | 去除指定用户类型的权限 |
permission 的符号模式表:
模式 | 名字 | 说明 |
---|---|---|
r | 读 | 设置为可读权限 |
w | 写 | 设置为可写权限 |
x | 执行权限 | 设置为可执行权限 |
X | 特殊执行权限 | 只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行 |
s | setuid/gid | 当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限 |
t | 粘贴位 | 设置粘贴位,只有超级用户可以设置该位,只有文件所有者u可以使用该位 |
八进制语法:
chmod命令可以使用八进制数来指定权限。文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件所有者(User)的读、写、执行,用户组(Group)的读、写、执行以及其它用户(Other)的读、写、执行。历史上,文件权限被放在一个比特掩码中,掩码中指定的比特位设为1,用来说明一个类具有相应的优先级。
# | 权限 | rwx | 二进制 |
---|---|---|---|
7 | 读 + 写 + 执行 | rwx | 111 |
6 | 读 + 写 | rw- | 110 |
5 | 读 + 执行 | r-x | 101 |
4 | 只读 | r– | 100 |
3 | 写 + 执行 | -wx | 011 |
2 | 只写 | -w- | 010 |
1 | 只执行 | –x | 001 |
0 | 无 | — | 000 |
例如, 765 将这样解释:
- 所有者的权限用数字表达:属主的那三个权限位的数字加起来的总和。如 rwx ,也就是 4+2+1 ,应该是 7。
- 用户组的权限用数字表达:属组的那个权限位数字的相加的总和。如 rw- ,也就是 4+2+0 ,应该是 6。
- 其它用户的权限数字表达:其它用户权限位的数字相加的总和。如 r-x ,也就是 4+0+1 ,应该是 5。
实例:
#将文件 file1.txt 设为所有人皆可读取 :
chmod ugo+r file1.txt
chmod a+r file1.txt
#将文件 file1.txt 与 file2.txt 设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :
chmod ug+w,o-w file1.txt file2.txt
#为 ex1.py 文件拥有者增加可执行权限:
chmod u+x ex1.py
#将目前目录下的所有文件与子目录皆设为任何人可读取 :
chmod -R a+r *
此外chmod也可以用数字来表示权限如 :
语法为:
chmod abc file
#其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
#r=4,w=2,x=1,对应上边的八进制表
chmod a=rwx file
chmod 777 file
#效果相同
chmod ug=rwx,o=x file
chmod 771 file
#效果相同
若用 chmod 4755 filename
可使此程序具有 root 的权限。
更多用法:
命令 | 说明 |
---|---|
chmod a+r file | 给file的所有用户增加读权限 |
chmod a-x file | 删除file的所有用户的执行权限 |
chmod a+rw file | 给file的所有用户增加读写权限 |
chmod +rwx file | 给file的所有用户增加读写执行权限 |
chmod u=rw,go= file | 对file的所有者设置读写权限,清空该用户组和其他用户对file的所有权限(空格代表无权限) |
chmod -R u+r,go-r docs | 对目录docs和其子目录层次结构中的所有文件给用户增加读权限,而对用户组和其他用户删除读权限 |
chmod 664 file | 对file的所有者和用户组设置读写权限, 为其其他用户设置读权限 |
chmod 0755 file | 相当于u=rwx (4+2+1),go=rx (4+1 & 4+1)。0 没有特殊模式 |
chmod 4755 file | 4设置了设置用户ID位,剩下的相当于 u=rwx (4+2+1),go=rx (4+1 & 4+1) |
find path/ -type d -exec chmod a-x {} ; | 删除可执行权限对path/以及其所有的目录(不包括文件)的所有用户,使用’-type f’匹配文件 |
find path/ -type d -exec chmod a+x {} ; | 允许所有用户浏览或通过目录path/ |
【chown】设置文件所有者和文件关联组( 需要root 权限才能执行此命令)
语法:
chown [-cfhvR] [--help] [--version] user[:group] file...
参数说明:
参数 | 说明 |
---|---|
user | 新的文件拥有者的使用者 ID |
group | 新的文件拥有者的使用者组(group) |
-c | 显示更改的部分的信息 |
-f | 忽略错误信息 |
-h | 修复符号链接 |
-v | 显示详细的处理信息 |
-R | 处理指定目录以及其子目录下的所有文件 |
实例:
#把 /var/run/httpd.pid 的所有者设置 root:
chown root /var/run/httpd.pid
#将文件 file1.txt 的拥有者设为 runoob,群体的使用者 runoobgroup :
chown runoob:runoobgroup file1.txt
#将当前前目录下的所有文件与子目录的拥有者皆设为 runoob,群体的使用者 runoobgroup:
chown -R runoob:runoobgroup *
#把 /home/runoob 的关联组设置为 512 (关联组ID),不改变所有者:
chown :512 /home/runoob
【cksum】检查文件的CRC是否正确
语法:
cksum [--help][--version][文件...]
参数说明:
参数 | 说明 |
---|---|
文件… | 需要进行检查的文件路径 |
实例:
#使用指令"cksum"计算文件"testfile1"的完整性,输入如下命令:
$ cksum testfile1
#以上命令执行后,将输出校验码等相关的信息,具体输出信息如下所示:
1263453430 78 testfile1
#上面的输出信息中,"1263453430"表示校验码,"78"表示字节数。
#如果文件中有任何字符被修改,都将改变计算后CRC校验码的值。
【cmp】比较两个文件是否有差异
语法:
cmp [-clsv][-i <字符数目>][--help][第一个文件][第二个文件]
参数说明:
参数 | 说明 |
---|---|
-c或–print-chars | 除了标明差异处的十进制字码之外,一并显示该字符所对应字符 |
-i<字符数目>或–ignore-initial=<字符数目> | 指定一个数目 |
-l或–verbose | 标示出所有不一样的地方 |
-s或–quiet或–silent | 不显示错误信息 |
-v或–version | 显示版本信息 |
实例:
#要确定两个文件是否相同,请输入:
cmp prog.o.bak prog.o
#这比较 prog.o.bak 和 prog.o。如果文件相同,则不显示消息。
#如果文件不同,则显示第一个不同的位置;例如:
prog.o.bak prog.o differ: char 4, line 1
#如果显示消息 cmp: EOF on prog.o.bak,则 prog.o 的第一部分与 prog.o.bak 相同,但在 prog.o 中还有其他数据。
【diff】比较文件的差异
语法:
diff [-abBcdefHilnNpPqrstTuvwy][-<行数>][-C <行数>][-D <巨集名称>][-I <字符或字符串>][-S <文件>][-W <宽度>][-x <文件或目录>][-X <文件>][--help][--left-column][--suppress-common-line][文件或目录1][文件或目录2]
参数说明:
参数 | 说明 |
---|---|
-<行数> | 指定要显示多少行的文本。此参数必须与-c或-u参数一并使用 |
-a或–text | diff预设只会逐行比较文本文件 |
-b或–ignore-space-change | 不检查空格字符的不同 |
-B或–ignore-blank-lines | 不检查空白行 |
-c | 显示全部内文,并标出不同之处 |
-C<行数>或–context<行数> | 与执行"-c-<行数>"指令相同 |
-d或–minimal | 使用不同的演算法,以较小的单位来做比较 |
-D<巨集名称>或ifdef<巨集名称> | 此参数的输出格式可用于前置处理器巨集 |
-e或–ed | 此参数的输出格式可用于ed的script文件 |
-f或-forward-ed | 输出的格式类似ed的script文件,但按照原来文件的顺序来显示不同处 |
-H或–speed-large-files | 比较大文件时,可加快速度 |
-l<字符或字符串>或–ignore-matching-lines<字符或字符串> | 若两个文件在某几行有所不同,而这几行同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异 |
-i或–ignore-case | 不检查大小写的不同 |
-l或–paginate | 将结果交由pr程序来分页 |
-n或–rcs | 将比较结果以RCS的格式来显示 |
-N或–new-file | 在比较目录时,若文件A仅出现在某个目录中,预设会显示 |
Only in目录 | 文件A若使用-N参数,则diff会将文件A与一个空白的文件比较 |
-p | 若比较的文件为C语言的程序码文件时,显示差异所在的函数名称 |
-P或–unidirectional-new-file | 与-N类似,但只有当第二个目录包含了一个第一个目录所没有的文件时,才会将这个文件与空白的文件做比较 |
-q或–brief | 仅显示有无差异,不显示详细的信息 |
-r或–recursive | 比较子目录中的文件 |
-s或–report-identical-files | 若没有发现任何差异,仍然显示信息 |
-S<文件>或–starting-file<文件> | 在比较目录时,从指定的文件开始比较 |
-t或–expand-tabs | 在输出时,将tab字符展开 |
-T或–initial-tab | 在每行前面加上tab字符以便对齐 |
-u,-U<列数>或–unified=<列数> | 以合并的方式来显示文件内容的不同 |
-v或–version | 显示版本信息 |
-w或–ignore-all-space | 忽略全部的空格字符 |
-W<宽度>或–width<宽度> | 在使用-y参数时,指定栏宽 |
-x<文件名或目录>或–exclude<文件名或目录> | 不比较选项中所指定的文件或目录 |
-X<文件>或–exclude-from<文件> | 您可以将文件或目录类型存成文本文件,然后在=<文件>中指定此文本文件 |
-y或–side-by-side | 以并列的方式显示文件的异同之处 |
–left-column | 在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容 |
–suppress-common-lines | 在使用-y参数时,仅显示不同之处 |
实例:比较两个文件
diff log0.log log1.log
3c3
#表示log0.log和log1.log文件在3行内容有所不同
11,12d10
#示第一个文件比第二个文件多了第11和12行
【diffstat】根据diff的比较结果,显示统计数字
diffstat读取diff的输出结果,然后统计各文件的插入,删除,修改等差异计量。
语法:
diff [-wV][-n <文件名长度>][-p <文件名长度>]
参数说明:
参数 | 说明 |
---|---|
-n<文件名长度> | 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名 |
-p<文件名长度> | 与-n参数相同,但此处的<文件名长度>包括了文件的路径 |
-w | 指定输出时栏位的宽度 |
实例:
用户也可以直接使用"|"将diff指令所输出的结果直接送给diffstat指令进行统计结果的显示。
使用该指令时,若所比较的文件或者子目录不在当前目录下,则应该使用其完整路径。
diff test1 test2 | diffstat
#进行比较结果的统计显示
【file】辨识文件类型
语法:
file [-bcLvz][-f <名称文件>][-m <魔法数字文件>...][文件或目录...]
参数说明:
参数 | 说明 |
---|---|
-b | 列出辨识结果时,不显示文件名称 |
-c | 详细显示指令执行过程,便于排错或分析程序执行的情形 |
-f<名称文件> | 指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称 |
-L | 直接显示符号连接所指向的文件的类别 |
-m<魔法数字文件> | 指定魔法数字文件 |
-z | 尝试去解读压缩文件的内容 |
[文件或目录…] | 要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件 |
-v | 显示版本信息 |
实例:
显示文件类型:
[root@localhost ~]# file install.log
install.log: UTF-8 Unicode text
[root@localhost ~]# file -b install.log <== 不显示文件名称
UTF-8 Unicode text
[root@localhost ~]# file -i install.log <== 显示MIME类别。
install.log: text/plain; charset=utf-8
[root@localhost ~]# file -b -i install.log
text/plain; charset=utf-8
显示符号链接的文件类型:
[root@localhost ~]# ls -l /var/mail
lrwxrwxrwx 1 root root 10 08-13 00:11 /var/mail -> spool/mail
[root@localhost ~]# file /var/mail
/var/mail: symbolic link to `spool/mail'
[root@localhost ~]# file -L /var/mail
/var/mail: directory
[root@localhost ~]# file /var/spool/mail
/var/spool/mail: directory
[root@localhost ~]# file -L /var/spool/mail
/var/spool/mail: directory
【find】在指定目录下查找文件
语法:
find path -option [ -print ] [ -exec -ok command ] {} \;
参数说明:
expression 中可使用的选项有二三十个之多,在此只列出最常用的部份。
参数 | 说明 |
---|---|
-mount, -xdev | 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件 |
-amin n | 在过去 n 分钟内被读取过 |
-anewer file | 比文件 file 更晚被读取过的文件 |
-atime n | 在过去n天内被读取过的文件 |
-cmin n | 在过去 n 分钟内被修改过 |
-cnewer file | 比文件 file 更新的文件 |
-ctime n | 在过去n天内被修改过的文件 |
-empty | 空的文件-gid n or -group name |
-ipath p, -path p | 路径名称符合 p 的文件,ipath 会忽略大小写 |
-name name, -iname name | 文件名称符合 name 的文件。iname 会忽略大小写 |
-size n | 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组 |
-type c | 文件类型是 c 的文件 |
-pid n | process id 是 n 的文件 |
实例:
#将当前目录及其子目录下所有文件后缀为 .c 的文件列出来:
find . -name "*.c"
#将目前目录其其下子目录中所有一般文件列出:
find . -type f
#将当前目录及其子目录下所有最近 20 天内更新过的文件列出:
find . -ctime -20
#查找 /var/log 目录中更改时间在 7 日以前的普通文件,并在删除之前询问它们:
find /var/log -type f -mtime +7 -ok rm {} \;
#查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
find . -type f -perm 644 -exec ls -l {} \;
#查找系统中所有文件长度为 0 的普通文件,并列出它们的完整路径:
find / -type f -size 0 -exec ls -l {} \;
文件类型:
- d: 目录
- c: 字型装置文件
- b: 区块装置文件
- p: 具名贮列
- p: 具名贮列
- l: 符号连结
- s: socket
【git】命令是文字模式下的文件管理员
语法:
git
操作说明:
操作 | 说明 |
---|---|
F1 | 执行info指令,查询指令相关信息,会要求您输入欲查询的名称 |
F2 | 执行cat指令,列出文件内容 |
F3 | 执行gitview指令,观看文件内容 |
F4 | 执行vi指令,编辑文件内容 |
F5 | 执行cp指令,复制文件或目录,会要求您输入目标文件或目录 |
F6 | 执行mv指令,移动文件或目录,或是更改其名称,会要求您输入目标文件或目录 |
F7 | 执行mkdir指令,建立目录 |
F8 | 执行rm指令,删除文件或目录 |
F9 | 执行make指令,批处理执行指令或编译程序时,会要求您输入相关命令 |
F10 | 离开git文件管理员 |
【gitview】命令用于观看文件的内容
它会同时显示十六进制和ASCII格式的字码
语法:
gitview [-bchilv][文件]
参数说明:
参数 | 说明 |
---|---|
-b | 单色模式,不使用ANSI控制码显示彩色 |
-c | 彩色模式,使用ANSI控制码显示色彩 |
-h | 在线帮助 |
-i | 显示存放gitview程序的所在位置 |
-l | 不使用先前的显示字符 |
-v | 显示版本信息 |
实例:
gitview -c /home/rootlocal/demo.txt
#以彩色模式观看文件"/home/ rootlocal/demo.txt"中的内容
【indent】命令用于调整C原始代码文件的格式
语法:
indent [参数][源文件]
indent [参数][源文件][-o 目标文件]
参数说明:
参数 | 说明 |
---|---|
-bad或–blank-lines-after-declarations | 在声明区段或加上空白行 |
-bap或–blank-lines-after-procedures | 在程序或加上空白行 |
-bbb或–blank-lines-after-block-comments | 在注释区段后加上空白行 |
-bc或–blank-lines-after-commas | 在声明区段中,若出现逗号即换行 |
-bl或–braces-after-if-line | if(或是else,for等等)与后面执行区段的"{“不同行,且”}"自成一行 |
-bli<缩排格数>或–brace-indent<缩排格数> | 设置{ }缩排的格数 |
-br或–braces-on-if-line | if(或是else,for等等)与后面执行跛段的"{“不同行,且”}"自成一行 |
-bs或–blank-before-sizeof | 在sizeof之后空一格 |
-c<栏数>或–comment-indentation<栏数> | 将注释置于程序码右侧指定的栏位 |
-cd<栏数>或–declaration-comment-column<栏数> | 将注释置于声明右侧指定的栏位 |
-cdb或–comment-delimiters-on-blank-lines | 注释符号自成一行 |
-ce或–cuddle-else | 将else置于"}"(if执行区段的结尾)之后 |
-ci<缩排格数>或–continuation-indentation<缩排格数> | 叙述过长而换行时,指定换行后缩排的格数 |
-cli<缩排格数>或–case-indentation-<缩排格数> | 使用case时,switch缩排的格数 |
-cp<栏数>或-else-endif-column<栏数> | 将注释置于else与elseif叙述右侧定的栏位 |
-cs或–space-after-cast | 在cast之后空一格 |
-d<缩排格数>或-line-comments-indentation<缩排格数> | 针对不是放在程序码右侧的注释,设置其缩排格数 |
-di<栏数>或–declaration-indentation<栏数> | 将声明区段的变量置于指定的栏位 |
-fc1或–format-first-column-comments | 针对放在每行最前端的注释,设置其格式 |
-fca或–format-all-comments | 设置所有注释的格式 |
-gnu或–gnu-style | 指定使用GNU的格式,此为预设值 |
-i<格数>或–indent-level<格数> | 设置缩排的格数 |
-ip<格数>或–parameter-indentation<格数> | 设置参数的缩排格数 |
-kr或–k-and-r-style | 指定使用Kernighan&Ritchie的格式 |
-lp或–continue-at-parentheses | 叙述过长而换行,且叙述中包含了括弧时,将括弧中的每行起始栏位内容垂直对其排列 |
-nbad或–no-blank-lines-after-declarations | 在声明区段后不要加上空白行 |
-nbap或–no-blank-lines-after-procedures | 在程序后不要加上空白行 |
-nbbb或–no-blank-lines-after-block-comments | 在注释区段后不要加上空白行 |
-nbc或–no-blank-lines-after-commas | 在声明区段中,即使出现逗号,仍旧不要换行 |
-ncdb或–no-comment-delimiters-on-blank-lines | 注释符号不要自成一行 |
-nce或–dont-cuddle-else | 不要将else置于"}"之后 |
-ncs或–no-space-after-casts | 不要在cast之后空一格 |
-nfc1或–dont-format-first-column-comments | 不要格式化放在每行最前端的注释 |
-nfca或–dont-format-comments | 不要格式化任何的注释 |
-nip或–no-parameter-indentation | 参数不要缩排 |
-nlp或–dont-line-up-parentheses | 叙述过长而换行,且叙述中包含了括弧时,不用将括弧中的每行起始栏位垂直对其排列 |
-npcs或–no-space-after-function-call-names | 在调用的函数名称之后,不要加上空格 |
-npro或–ignore-profile | 不要读取indent的配置文件.indent.pro |
-npsl或–dont-break-procedure-type | 程序类型与程序名称放在同一行 |
-nsc或–dont-star-comments | 注解左侧不要加上星号(*) |
-nsob或–leave-optional-semicolon | 不用处理多余的空白行 |
-nss或–dont-space-special-semicolon | 若for或while区段仅有一行时,在分号前不加上空格 |
-nv或–no-verbosity | 不显示详细的信息 |
-orig或–original | 使用Berkeley的格式 |
-pcs或–space-after-procedure-calls | 在调用的函数名称与"{"之间加上空格 |
-psl或–procnames-start-lines | 程序类型置于程序名称的前一行 |
-sc或–start-left-side-of-comments | 在每行注释左侧加上星号(*) |
-sob或–swallow-optional-blank-lines | 删除多余的空白行 |
-ss或–space-special-semicolon | 若for或swile区段今有一行时,在分号前加上空格 |
-st或–standard-output | 将结果显示在标准输出设备 |
-T | 数据类型名称缩排 |
-ts<格数>或–tab-size<格数> | 设置tab的长度 |
【cut】命令用于显示每行从开头算起 num1 到 num2 的文字
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。
语法:
cut [-bn] [file]
cut [-c] [file]
cut [-df] [file]
参数说明:
参数 | 说明 |
---|---|
-b | 以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志 |
-c | 以字符为单位进行分割 |
-d | 自定义分隔符,默认为制表符 |
-f | 与-d一起使用,指定显示哪个区域 |
-n | 取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的范围之内,该字符将被写出;否则,该字符将被排除 |
实例:
当你执行who命令时,会输出类似如下的内容:
$ who
rocrocket :0
rocrocket pts/0
rocrocket pts/1
如果我们想提取每一行的第3个字节,就这样:
$ who|cut -b 3
c
c
【ln】为某一个文件在另外一个位置建立一个同步的链接
语法:
ln [参数][源文件或目录][目标文件或目录]
#其中参数的格式为:
[-bdfinsvF] [-S backup-suffix]
[-V {numbered,existing,simple}]
[--help] [--version] [--]
命令功能 :
Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。
不论是硬链接或软链接都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。
软链接:
- 软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
- 软链接可以 跨文件系统 ,硬链接不可以
- 软链接可以对一个不存在的文件名进行链接
- 软链接可以对目录进行链接
硬链接:
- 硬链接,以文件副本的形式存在。但不占用实际空间
- 不允许给目录创建硬链接
- 硬链接只有在同一个文件系统中才能创建
参数说明:
必要参数:
参数 | 说明 |
---|---|
-b | 删除,覆盖以前建立的链接 |
-d | 允许超级用户制作目录的硬链接 |
-f | 强制执行 |
-i | 交互模式,文件存在则提示用户是否覆盖 |
-n | 把符号链接视为一般目录 |
-s | 软链接(符号链接) |
-v | 显示详细的处理过程 |
选择参数:
参数 | 说明 |
---|---|
-S | "-S<字尾备份字符串> "或 “–suffix=<字尾备份字符串>” |
-V | “-V<备份方式>“或”–version-control=<备份方式>” |
–help | 显示帮助信息 |
–version | 显示版本信息 |
【less】浏览文件
语法:
less [参数] 文件
参数说明:
参数 | 说明 |
---|---|
-b | <缓冲区大小> 设置缓冲区的大小 |
-e | 当文件显示结束后,自动离开 |
-f | 强迫打开特殊文件,例如外围设备代号、目录和二进制文件 |
-g | 只标志最后搜索的关键词 |
-i | 忽略搜索时的大小写 |
-m | 显示类似more命令的百分比 |
-N | 显示每行的行号 |
-o | <文件名> 将less 输出的内容在指定文件中保存起来 |
-Q | 不使用警告音 |
-s | 显示连续空行为一行 |
-S | 行过长时间将超出部分舍弃 |
-x | <数字> 将"tab"键显示为规定的数字空格 |
/字符串 | 向下搜索"字符串"的功能 |
?字符串 | 向上搜索"字符串"的功能 |
n | 重复前一个搜索(与 / 或 ? 有关) |
N | 反向重复前一个搜索(与 / 或 ? 有关) |
b | 向上翻一页 |
d | 向后翻半页 |
h | 显示帮助界面 |
Q | 退出less 命令 |
u | 向前滚动半页 |
y | 向前滚动一行 |
空格键 | 滚动一页 |
回车键 | 滚动一行 |
[pagedown] | 向下翻动一页 |
[pageup] | 向上翻动一页 |
实例:
1、查看文件
less log.log
2、ps查看进程信息并通过less分页显示
ps -ef |less
3、浏览多个文件
less log0.log log1.log
#输入 :n后,切换到 log1.log
#输入 :p 后,切换到log0.log
更多操作:
1.全屏导航
- ctrl + F - 向前移动一屏
- ctrl + B - 向后移动一屏
- ctrl + D - 向前移动半屏
- ctrl + U - 向后移动半屏
2.单行导航
- j - 向前移动一行
- k - 向后移动一行
3.其它导航
- G - 移动到最后一行
- g - 移动到第一行
- q / ZZ - 退出 less 命令
4.其它有用的命令
- v - 使用配置的编辑器编辑当前文件
- h - 显示 less 的帮助文档
- &pattern - 仅显示匹配模式的行,而不是整个文件
5.标记导航
当使用 less 查看大文件时,可以在任何一个位置作标记,可以通过命令导航到标有特定标记的文本位置:
- ma - 使用 a 标记文本的当前位置
- 'a - 导航到标记 a 处
【locate】用于查找符合条件的文档
一般情况我们只需要输入 locate your_file_name 即可查找指定文件。
语法:
locate [-d ][--help][--version][范本样式...]
参数说明:
参数 | 说明 |
---|---|
-b, --basename | 仅匹配路径名的基本名称 |
-c, --count | 只输出找到的数量 |
-d, --database DBPATH | 使用 DBPATH 指定的数据库,而不是默认数据库 /var/lib/mlocate/mlocate.db |
-e, --existing | 仅打印当前现有文件的条目 |
-1 | 如果 是 1.则启动安全模式 |
-0, --null | 在输出上带有NUL的单独条目 |
-S, --statistics | 不搜索条目,打印有关每个数据库的统计信息 |
-q | 安静模式,不会显示任何错误讯息 |
-P, --nofollow, -H | 检查文件存在时不要遵循尾随的符号链接 |
-l, --limit, -n LIMIT | 将输出(或计数)限制为LIMIT个条目 |
-n | 至多显示 n个输出 |
-m, --mmap | 被忽略,为了向后兼容 |
-r, --regexp REGEXP | 使用基本正则表达式 |
–regex | 使用扩展正则表达式 |
-o | 指定资料库存的名称 |
-i, --ignore-case | 忽略大小写 |
实例:
查找 passwd 文件,输入以下命令:
locate passwd
搜索 etc 目录下所有以 sh 开头的文件 :
locate /etc/sh
忽略大小写搜索当前用户目录下所有以 r 开头的文件 :
locate -i ~/r