Linux命令-文件管理(一)git
1.命令:catshell
cat命令用于把档案串链接后传到基本输出(萤幕或加 > fileName 到另外一个档案)ui
使用权限:全部使用者spa
语法格式:cat [-AbeEnstTuv] [--help] [--version] fileName操作系统
参数说明:日志
-n 或 --number 由 1 开始对全部输出的行数编号code
-b 或 --number-nonblank 和 -n 类似,只不过对于空白行不编号递归
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行utf-8
-v 或 --show-nonprinting字符串
实例:
1.把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
cat -n textfile1 > textfile2
2.把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)以后将内容附加到 textfile3 里。
cat -b textfile1 textfile2 > textfile3
3.清空/etc/test.txt档案内容
cat /dev/null > /etc/test.txt
cat 也能够用来制做镜像文件。例如要制做软碟的像文件,将软碟放好后打
cat /dev/fd0 > OUTFILE
相反的,若是想把 image file 写到软碟,请打
cat IMG_FILE > /dev/fd0
注:
1. OUTFILE 指输出的镜像文件名。
2. IMG_FILE 指镜像文件。
3. 若从镜像文件写回 device 时,device 容量需与至关。
4. 一般用在制做开机磁片。
----------------------------------------------------------------------------------------------
2. chattr命令
Linux chattr命令用于改变文件属性。
这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有如下8种模式:
a:让文件或目录仅供附加用途。
b:不更新文件或目录的最后存取时间。
c:将文件或目录压缩后存放。
d:将文件或目录排除在倾倒操做以外。
i:不得任意更动文件或目录。
s:保密性删除文件或目录。
S:即时更新文件或目录。
u:预防之外删除。
语法: chattr [-RV][-v<版本编号>][+/-/=<属性>][文件或目录...]
参数
-R 递归处理,将指定目录下的全部文件及子目录一并处理。
-v<版本编号> 设置文件或目录版本。
-V 显示指令执行过程。
+<属性> 开启文件或目录的该项属性。
-<属性> 关闭文件或目录的该项属性。
=<属性> 指定文件或目录的该项属性。
实例
用chattr命令防止系统中某个关键文件被修改:
chattr +i /etc/resolv.conf
lsattr /etc/resolv.conf
会显示以下属性
----i-------- /etc/resolv.conf
让某个文件只能往里面追加数据,但不能删除,适用于各类日志文件:
chattr +a /var/log/messages
----------------------------------------------------------------------------------------------
chgrp命令
Linux chgrp命令用于变动文件或目录的所属群组。
在UNIX系统家族里,文件或目录权限的掌控以拥有者及所属群组来管理。您可使用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 -v bin log2012.log
输出:
[root@localhost test]# ll
---xrw-r-- 1 root root 302108 11-13 06:03 log2012.log
[root@localhost test]# chgrp -v bin log2012.log
"log2012.log" 的所属组已更改成 bin
[root@localhost test]# ll
---xrw-r-- 1 root bin 302108 11-13 06:03 log2012.log
实例2:根据指定文件改变文件的群组属性
chgrp --reference=log2012.log log2013.log
输出:
[root@localhost test]# ll
---xrw-r-- 1 root bin 302108 11-13 06:03 log2012.log
-rw-r--r-- 1 root root 61 11-13 06:03 log2013.log
[root@localhost test]# chgrp --reference=log2012.log log2013.log
[root@localhost test]# ll
---xrw-r-- 1 root bin 302108 11-13 06:03 log2012.log
-rw-r--r-- 1 root bin 61 11-13 06:03 log2013.log
说明: 改变文件log2013.log 的群组属性,使得文件log2013.log的群组属性和参考文件log2012.log的群组属性相同
----------------------------------------------------------------------------------------------
chmod命令
Linux/Unix 的文件调用权限分为三级 : 文件拥有者、群组、其余。利用 chmod 能够藉以控制文件如何被他人所调用。
使用权限 : 全部使用者
语法
chmod [-cfvR] [--help] [--version] mode file...
参数说明
mode : 权限设定字串,格式以下 :
[ugoa...][[+-=][rwxX]...][,...]
其中:
u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其余之外的人,a 表示这三者皆是。
+ 表示增长权限、- 表示取消权限、= 表示惟一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
-c : 若该文件权限确实已经更改,才显示其更改动做
-f : 若该文件权限没法被更改也不要显示错误讯息
-v : 显示权限变动的详细资料
-R : 对目前目录下的全部文件与子目录进行相同的权限变动(即以递回的方式逐个变动)
--help : 显示辅助说明
--version : 显示版本
实例
将文件 file1.txt 设为全部人皆可读取 :
chmod ugo+r file1.txt
将文件 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 777 file
语法为:
chmod abc file
其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
r=4,w=2,x=1
若要rwx属性则4+2+1=7;
若要rw-属性则4+2=6;
若要r-x属性则4+1=5。
chmod a=rwx file
和
chmod 777 file
效果相同
chmod ug=rwx,o=x file
和
chmod 771 file
效果相同
若用chmod 4755 filename可以使此程序具备root的权限
----------------------------------------------------------------------------------------------
Linux chown命令
Linux/Unix 是多人多工操做系统,全部的文件皆有拥有者。利用 chown 将指定文件的拥有者改成指定的用户或组,用户能够是用户名或者用户ID;
组能够是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。
通常来讲,这个指令只有是由系统管理者(root)所使用,通常使用者没有权限能够改变别人的文件拥有者,也没有权限能够本身的文件拥有者改设为别人。
只有系统管理者(root)才有这样的权限。
使用权限 : root
语法 : chmod [-cfhvR] [--help] [--version] user[:group] file...
参数 :
user : 新的文件拥有者的使用者 ID
group : 新的文件拥有者的使用者群体(group)
-c : 若该文件拥有者确实已经更改,才显示其更改动做
-f : 若该文件拥有者没法被更改也不要显示错误讯息
-h : 只对于连结(link)进行变动,而非该 link 真正指向的文件
-v : 显示拥有者变动的详细资料
-R : 对目前目录下的全部文件与子目录进行相同的拥有者变动(即以递回的方式逐个变动)
--help : 显示辅助说明
--version : 显示版本
实例
将文件 file1.txt 的拥有者设为 weizhong, 群体设为 hulab:
chown weizhong:hulab file1.txt
将目前目录下的全部文件与子目录的拥有者设为 tu, 群体设为 hulab:
chown -R tu:hulab *
----------------------------------------------------------------------------------------------
Linux cksum命令
Linux cksum命令用于检查文件的CRC是否正确。确保文件从一个系统传输到另外一个系统的过程当中不被损坏。
CRC是一种排错检查方式,该校验法的标准由CCITT所指定,至少可检测到99.998%的已知错误。
指定文件交由指令"cksum"进行校验后,该指令会返回校验结果供用户核对文件是否正确无误。
若不指定任何文件名称或是所给予的文件名为"-",则指令"cksum"会从标准输入设备中读取数据。
语法: cksum [--help][--version][文件...]
参数:
--help:在线帮助。
--version:显示版本信息。
文件…:须要进行检查的文件路径
实例
使用指令"cksum"计算文件"testfile1"的完整性,输入以下命令:
$ cksum testfile1
以上命令执行后,将输出校验码等相关的信息,具体输出信息以下所示:
1263453430 78 testfile1 //输出信息
上面的输出信息中,"1263453430"表示校验码,"78"表示字节数。
注意:若是文件中有任何字符被修改,都将改变计算后CRC校验码的值。
----------------------------------------------------------------------------------------------
Linux cmp命令
Linux cmp命令用于比较两个文件是否有差别。
当相互比较的两个文件彻底同样时,则该指令不会显示任何信息。若发现有所差别,预设会标示出第一个不一样之处的字符和列数编号。
若不指定任何文件名称或是所给予的文件名为"-",则cmp指令会从标准输入设备读取数据。
语法
cmp [-clsv][-i <字符数目>][--help][第一个文件][第二个文件]
参数:
-c或--print-chars 除了标明差别处的十进制字码以外,一并显示该字符所对应字符。
-i<字符数目>或--ignore-initial=<字符数目> 指定一个数目。
-l或--verbose 标示出全部不同的地方。
-s或--quiet或--silent 不显示错误信息。
-v或--version 显示版本信息。
--help 在线帮助。
实例
要肯定两个文件是否相同,请输入:
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 中还有其余数据。
----------------------------------------------------------------------------------------------
Linux diff命令
Linux diff命令用于比较文件的差别。
diff以逐行的方式,比较文本文件的异同处。所是指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录。
语法
diff [-abBcdefHilnNpPqrstTuvwy][-<行数>][-C <行数>][-D <巨集名称>][-I <字符或字符串>][-S <文件>][-W <宽度>][-x <文件或目录>][-X <文件>][--help][--left-column][--suppress-common-line][文件或目录1][文件或目录2]
参数:
略
实例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行。
实例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行内容
----------------------------------------------------------------------------------------------
Linux diffstat命令
Linux diffstat命令根据diff的比较结果,显示统计数字。
diffstat读取diff的输出结果,而后统计各文件的插入,删除,修改等差别计量。
语法
diff [-wV][-n <文件名长度>][-p <文件名长度>]
将目录"test1"和"test2"下的同名文件"testf.txt"使用diff指令进行比较。而后使用diffstat指令对结果进行统计显示,输入以下命令:
$ diff test1 test2 | diffstat #进行比较结果的统计显示
----------------------------------------------------------------------------------------------
Linux file命令
Linux file命令用于辨识文件类型。
经过file指令,咱们得以辨识该文件的类型。
语法 : file [-beLvz][-f <名称文件>][-m <魔法数字文件>...][文件或目录...]
参数:
-b 列出辨识结果时,不显示文件名称。
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-f <名称文件> 指定名称文件,其内容有一个或多个文件名称呢感,让file依序辨识这些文件,格式为每列一个文件名称。
-L 直接显示符号链接所指向的文件的类别。
-m <魔法数字文件> 指定魔法数字文件。
-v 显示版本信息。
-z 尝试去解读压缩文件的内容。
[文件或目录...] 要肯定类型的文件列表,多个文件之间使用空格分开,可使用shell通配符匹配多个文件。
[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
----------------------------------------------------------------------------------------------
Linux find命令
Linux find命令用来在指定目录下查找文件。任何位于参数以前的字符串都将被视为欲查找的目录名。
若是使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。而且将查找到的子目录和文件所有进行显示。
语法
find path -option [ -print ] [-exec -ok command] {} \;
参数说明 : 略
将目前目录及其子目录下全部延伸档名是 c 的文件列出来。
find . -name "*.c"
删除 workspace 中全部的 .pyc 文件
find workspace -name "*.pyc" -exec rm {} \;
将目前目录其其下子目录中全部通常文件列出
find . -type f
将目前目录及其子目录下全部最近 20 分钟内更新过的文件列出
find . -ctime -20
查找/var/logs目录中更改时间在7日之前的普通文件,并在删除以前询问它们:
find /var/logs -type f -mtime +7 -ok rm {} \;
----------------------------------------------------------------------------------------------
Linux git命令
Linux git命令是文字模式下的文件管理员。
git是用来管理文件的程序,它十分相似DOS下的Norton Commander,具备互动式操做界面。它的操做方法和Norton Commander几乎同样。
语法
git