Linux命令每日一句系列-文件管理篇

  • A+
所属分类:Linux

Linux命令在开发工作中运用的并不是很频繁,但是在软件部署、搭建常用服务器软件时通常会操作Linux系统,那么Linux常用命令必须掌握。
这里整理了Linux中所有的命令,共分为10个部分,每个部分会开设一篇文章,每天会坚持更新一个命令。加油!

  1. 文件管理篇

  2. 文件传输篇

  3. 文档编辑篇

  4. 系统管理篇

  5. 系统设置篇

  6. 网络通讯篇

  7. 磁盘管理篇

  8. 磁盘维护篇

  9. 备份压缩

  10. 设备管理

文件管理篇


cat 查看文件内容

使用权限:所有使用者
语法:cat [-AbeEnstTuv] [--help] [--version] fileName
说明:把档案串连接后传到基本输出(萤幕或加 > fileName 到另一个档案)
参数:
-n 或 --number 由 1 开始对所有输出的行数编号
-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 --show-nonprinting

范例:
cat -n textfile1 > textfile2 把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
cat -b textfile1 textfile2 >> textfile3 把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。


chattr 改变文件属性

语  法:chattr [-RV][-v<版本编号>][+/-/=<属性>][文件或目录...]

参  数:
 -R 递归处理,将指定目录下的所有文件及子目录一并处理。
 -v<版本编号> 设置文件或目录版本。
 -V 显示指令执行过程。
 +<属性> 开启文件或目录的该项属性。
 -<属性> 关闭文件或目录的该项属性。
 =<属性> 指定文件或目录的该项属性。

补充说明:这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式:
 a:让文件或目录仅供附加用途。
 b:不更新文件或目录的最后存取时间。
 c:将文件或目录压缩后存放。
 d:将文件或目录排除在倾倒操作之外。
 i:不得任意更动文件或目录。
 s:保密性删除文件或目录。
 S:即时更新文件或目录。
 u:预防以外删除。

范例:
chattr -R +a /test 更改test目录下所有的文件仅可以作为附加用途,不可以做其他操作。
chattr -R +i /test/resolv.conf 设置为resolv.conf为不可被修改的文件。


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  显示版本信息。

补充说明:在UNIX系统家族里,文件或目录权限的掌控以拥有者及所属群组来管理。您可以使用chgrp指令去变更文件与目录的所属群组,设置方式采用群组名称或群组识别码皆可。

范例:
chgrp -v bin log2019.log 改变文件的群组属性

[root@localhost test]# chgrp -v bin log2019.log
[root@localhost test]# ll
---xrw-r-- 1 root bin  302108 11-13 06:03 log2019.log

chgrp --reference=log2019.log log201901.log 根据指定文件(log2019.log)改变文件(log201901.log)的群组属性

---xrw-r-- 1 root bin  302108 11-13 06:03 log2019.log
-rw-r--r-- 1 root root     61 11-13 06:03 log201901.log
[root@localhost test]#  chgrp --reference=log2019.log log201901.log
[root@localhost test]# ll
---xrw-r-- 1 root bin  302108 11-13 06:03 log2019.log
-rw-r--r-- 1 root bin      61 11-13 06:03 log201901.log

chmod(change mode) 变更文件或目录的权限

语  法:chmod [-cfRv][--help][--version][<权限范围>+/-/=<权限设置...>][文件或目录...] 或 chmod [-cfRv][--help][--version][数字代号][文件或目录...] 或 chmod [-cfRv][--help][--reference=<参考文件或目录>][--version][文件或目录...]
参  数:
 -c或--changes  效果类似"-v"参数,但仅回报更改的部分。
 -f或--quiet或--silent  不显示错误信息。
 -R或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。
 -v或--verbose  显示指令执行过程。
 --help  在线帮助。
 --reference=<参考文件或目录>  把指定文件或目录的权限全部设成和参考文件或目录的权限相同。
 --version  显示版本信息。
 <权限范围>+<权限设置>  开启权限范围的文件或目录的该项权限设置。
 <权限范围>-<权限设置>  关闭权限范围的文件或目录的该项权限设置。
 <权限范围>=<权限设置>  指定权限范围的文件或目录的该项权限设置。

补充说明:在UNIX系统家族里,文件或目录权限的控制分别以读取,写入,执行3种一般权限来区分,另有3种特殊权限可供运用,再搭配拥有者与所属群组管理权限范围。您可以使用chmod指令去变更文件与目录的权限,设置方式采用文字或数字代号皆可。符号连接的权限无法变更,如果您对符号连接修改权限,其改变会作用在被连接的原始文件。权限范围的表示法如下:
 u:User,即文件或目录的拥有者。
 g:Group,即文件或目录的所属群组。
 o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围。
 a:All,即全部的用户,包含拥有者,所属群组以及其他用户。

 有关权限代号的部分,列表于下:
 r:读取权限,数字代号为"4"。
 w:写入权限,数字代号为"2"。
 x:执行或切换权限,数字代号为"1"。
 -:不具任何权限,数字代号为"0"。
 s:特殊?b>功能说明:变更文件或目录的权限。
范例:

//赋予start.sh脚本可执行权限
chmod +x start.sh

chown(change owner) 变更文件或目录的拥有者或所属群组

语  法:chown [-cfhRv][--dereference][--help][--version][拥有者.<所属群组>][文件或目录..] 或chown [-chfRv][--dereference][--help][--version][.所属群组][文件或目录... ...] 或chown [-cfhRv][--dereference][--help][--reference=<参考文件或目录>][--version][文件或目录...]
参  数:
 -c或--changes  效果类似"-v"参数,但仅回报更改的部分。
 -f或--quite或--silent  不显示错误信息。
 -h或--no-dereference  之对符号连接的文件作修改,而不更动其他任何相关文件。
 -R或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。
 -v或--version  显示指令执行过程。
 --dereference  效果和"-h"参数相同。
 --help  在线帮助。
 --reference=<参考文件或目录>  把指定文件或目录的拥有者与所属群组全部设成和参考文件或目 录的拥有者与所属群组相同。
 --version  显示版本信息。
范例:

//赋予test目录下所有文件全部的权限
chown -R 777 /test

cksum(check sum) 检查文件的CRC是否正确

语  法:cksum [--help][--version][文件...]
参  数:
 --help  在线帮助。
 --version  显示版本信息。
补充说明:CRC是一种排错检查方式,该演算法的标准由CCITT所指定,至少可检测到99.998%的已知错误。指定文件交由cksum演算,它会回报计算结果,供用户核对文件是否正确无误。若不指定任何文件名称或是所给予的文件名为"-",则cksum指令会从标准输入设备读取数据。
范例:

//使用指令"cksum"计算文件"antx.properties"的完整性,输入如下命令:
cksum antx.properties
//以上命令执行后,将输出校验码等相关的信息,具体输出信息如下所示:
4257609129 383 antx.properties
//4257609129表示校验码,383表示字节数

cmp(compare) 比较两个文件是否有差异

语  法:cmp [-clsv][-i <字符数目>][--help][第一个文件][第二个文件]
参  数:
 -c或--print-chars  除了标明差异处的十进制字码之外,一并显示该字符所对应字符。
 -i<字符数目>或--ignore-initial=<字符数目>  指定一个数目。
 -l或--verbose  标示出所有不一样的地方。
 -s或--quiet或--silent  不显示错误信息。
 -v或--version  显示版本信息。
 --help  在线帮助。
补充说明:当相互比较的两个文件完全一样时,则该指令不会显示任何信息。若发现有所差异,预设会标示出第一个不同之处的字符和列数编号。若不指定任何文件名称或是所给予的文件名为"-",则cmp指令会从标准输入设备读取数据。
范例:

//要确定两个文件是否相同
cmp test.txt test1.txt
//这比较 test.txt 和 test1.txt。如果文件相同,则不显示消息。如果文件不同,则显示第一个不同的位置;例如:
test.txt test1.txt: char 4, line 1
//如果显示消息 cmp: EOF on test1.txt,则 test1.txt 的第一部分与 test.txt 相同,但在 test1.txt 中还有其他数据。


cp(copy) 复制文件或目录

语  法:cp [-abdfilpPrRsuvx][-S <备份字尾字符串>][-V <备份方式>][--help][--spares=<使用时机>][--version][源文件或目录][目标文件或目录] [目的目录]
参  数:
 -a或--archive  此参数的效果和同时指定"-dpR"参数相同。
 -b或--backup  删除,覆盖目标文件之前的备份,备份文件会在字尾加上一个备份字符串。
 -d或--no-dereference  当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录。
 -f或--force  强行复制文件或目录,不论目标文件或目录是否已存在。
 -i或--interactive  覆盖既有文件之前先询问用户。
 -l或--link  对源文件建立硬连接,而非复制文件。
 -p或--preserve  保留源文件或目录的属性。
 -P或--parents  保留源文件或目录的路径。
 -r  递归处理,将指定目录下的文件与子目录一并处理。
 -R或--recursive  递归处理,将指定目录下的所有文件与子目录一并处理。
 -s或--symbolic-link  对源文件建立符号连接,而非复制文件。
 -S<备份字尾字符串>或--suffix=<备份字尾字符串>  用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,预设的备份字尾字符串是符号"~"。
 -u或--update  使用这项参数后只会在源文件的更改时间较目标文件更新时或是 名称相互对应的目标文件并不存在,才复制文件。
 -v或--verbose  显示指令执行过程。
 -V<备份方式>或--version-control=<备份方式>  用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,这字符串不仅可用"-S"参数变更,当使用"-V"参数指定不同备份方式时,也会产生不同字尾的备份字串。
 -x或--one-file-system  复制的文件或目录存放的文件系统,必须与cp指令执行时所处的文件系统相同,否则不予复制。
 --help  在线帮助。
 --sparse=<使用时机>  设置保存稀疏文件的时机。
 --version  显示版本信息。
补充说明:cp指令用在复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,而最后的目的地并非是一个已存在的目录,则会出现错误信息。
范例:

//将test目录下所有文件复制到admin/test1目录下 -r 递归处理
cp -r test/ ../admin/test1

cut 显示每行指定的文字

语法:cut -cnum1-num2 filename
说明:显示每行从开头算起 num1 到 num2 的文字。
范例:

//查看示例
cat test.txt
abcdefghigk
//查看指定的文字
cut -c 1-3 test.txt
abc

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  以并列的方式显示文件的异同之处。
 --help  显示帮助。
 --left-column  在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容。
 --suppress-common-lines  在使用-y参数时,仅显示不同之处。
范例
1. 实例1:比较两个文件

[root@localhost test3]# diff log2014.log log2013.log 
3c3
< 2014-03
---
> 2013-03
8c8
< 2013-07
---
> 2013-08
11,12d10
< 2013-11
< 2013-12
//上面的"3c3"和"8c8"表示log2014.log和log20143log文件在3行和第8行内容有所不同;"11,12d10"表示第一个文件比第二个文件多了第11和12行。
  1. 实例2:并排格式输出
[root@localhost test3]# diff log2014.log log2013.log  -y -W 50
2013-01                 2013-01
2013-02                 2013-02
2014-03               | 2013-03
2013-04                 2013-04
2013-05                 2013-05
2013-06                 2013-06
2013-07                 2013-07
2013-07               | 2013-08
2013-09                 2013-09
2013-10                 2013-10
2013-11               <
2013-12               <
[root@localhost test3]# diff log2013.log log2014.log  -y -W 50
2013-01                 2013-01
2013-02                 2013-02
2013-03               | 2014-03
2013-04                 2013-04
2013-05                 2013-05
2013-06                 2013-06
2013-07                 2013-07
2013-08               | 2013-07
2013-09                 2013-09
2013-10                 2013-10
                      > 2013-11
                      > 2013-12
//"|"表示前后2个文件内容有不同
//"<"表示后面文件比前面文件少了1行内容
//">"表示后面文件比前面文件多了1行内容
  • 我的微信
  • 加好友一起交流!
  • weinxin
  • 微信公众号
  • 关注公众号获取分享资源!
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: