Linux上常用的文件管理类命令及其相关示例
一、文件权限管理类命令
1.chown
chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。系统管理员经常使用chown命令,在将文件拷贝到另一个用户的名录下之后,让用户拥有使用该文件的权限。
命令格式:
chown [选项]... [所有者][:[组]] 文件...
命令参数:
必要参数:
-c 显示更改的部分的信息
-f 忽略错误信息
-h 修复符号链接
-R 处理指定目录以及其子目录下的所有文件
-v 显示详细的处理信息
-deference 作用于符号链接的指向,而不是链接文件本身
选择参数:
--reference=<目录或文件> 把指定的目录/文件作为参考,把操作的文件/目录设置成参考文件/目录相同拥有者和群组
--from=<当前用户:当前群组> 只有当前用户和群组跟指定的用户和群组相同时才进行改变
--help 显示帮助信息
--version 显示版本信息
示例:
1>改变拥有者和组
[root@system1 ~]# ll
total 8
drwxr-xr-x. 2 root root 6 May 18 13:11 Music
[root@system1 ~]# chown gj:gj Music
[root@system1 ~]# ll
total 8
drwxr-xr-x. 2 gj gj 6 May 18 13:11 Music
改变文件拥有者:chown gj: Music
改变文件所属组:chown :gj Music
2>改变指定目录以及其子目录下的所有文件的拥有者和群组
[root@system1 Music]# ll
total 0
drwxr-xr-x. 2 root root 6 Sep 20 19:34 123
drwxr-xr-x. 2 root root 6 Sep 20 19:34 234
-rw-r--r--. 1 root root 0 Sep 20 19:34 789
[root@system1 ~]# ll
drwxr-xr-x. 4 root root 36 Sep 20 19:34 Music
[root@system1 ~]# chown -R -v gj:gj Music
changed ownership of ‘Music/123’ from root:root to gj:gj
changed ownership of ‘Music/234’ from root:root to gj:gj
changed ownership of ‘Music/789’ from root:root to gj:gj
changed ownership of ‘Music’ from root:root to gj:gj
[root@system1 ~]# ll
drwxr-xr-x. 4 gj gj 36 Sep 20 19:34 Music
[root@system1 Music]# ll
drwxr-xr-x. 2 gj gj 6 Sep 20 19:34 123
drwxr-xr-x. 2 gj gj 6 Sep 20 19:34 234
-rw-r--r--. 1 gj gj 0 Sep 20 19:34 789
2.chgrp:改变文件的所属组
用法,参数与chown基本相同
示例:
[root@system1 Music]# ll
drwxr-xr-x. 2 gj gj 6 Sep 20 19:34 123
[root@system1 Music]# chgrp root 123
drwxr-xr-x. 2 gj root 6 Sep 20 19:34 123
3.chmod:改变文件的权限
chmod用于改变文件或目录的访问权限。用户用它控制文件或目录的访问权限。该命令有两种用法。一种是包含
字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。
1>文字设定法
chmod [-cfvR] [--help] [--version] mode file...
mode : [ugoa...][[+-=][rwxX]...][,...],
u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
- 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
-c : 若该档案权限确实已经更改,才显示其更改动作
-f : 若该档案权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
--help : 显示辅助说明
--version : 显示版本
chmod [OPTION]... --reference=RFILE FILE...
参考RFILE文件的权限,将FILE的修改为同RFILE:
示例:# chmod -R --reference=/tmp/issue /tmp/fstab
2> 数字设定法
0表示没有权限,1表示可执行权限, 2表示可写权限,4表示可读权限,然后将其相加。所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。
语法:chmod [mode] 文件名
示例:让文件123的用户,组和其他都拥有可读可写可执行的权限
[root@system1 Music]# ll
drwxr-xr-x. 2 gj root 6 Sep 20 19:34 123
[root@system1 Music]# chmod 777 123
drwxrwxrwx. 2 gj root 6 Sep 20 19:34 123
4.umask
文件权限是linux系统中的一种安全机制,通过设置不同的权限,可以达到限制用户操作的目的,有效地保证了文件的完整性。
默认的情况下,创建一个文件的权限为"rw-r--r--",而创建一个目录的权限为rwxr-xr-x",如果默认的不符合用户的需求,可以用chmod命令进行设置,但这样的效率很低。
linux提供了一个方便的工具umask,可以用来设置文件的默认掩码。
文件的默认权限就是umask设置的掩码和系统中默认的最大权限码做异或运算,其结果就是文件的默认权限。
默认的umask的值为0022
对于文件的执行权限(即X权限)使用umask命令是无法使其起作用的,系统强制关闭文件的X默认执行权限,只能通过chmod修改
umask只对当前shell环境起作用。
umask对应的配置文件 :
umask的配置文件为:/etc/profile 或 ~/.profile 或 ~/.bask_profile,修改这些文件里的umask值,则umask的值会长期不变。
二、文本处理工具
1.wc命令:统计单词数,行数,字节数
语法:wc [选项] 文件…
- c 统计字节数。
- l 统计行数。
- w 统计字数。
示例:
[root@system1 etc]# wc -l passwd
40 passwd
[root@system1 etc]# wc -c passwd
1989 passwd
[root@system1 etc]# wc -w passwd
68 passwd
2.cut命令:切取文本
cut [-bn] [file] 或 cut [-c] [file] 或 cut [-df] [file]
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的<br />范围之内,该字符将被写出;否则,该字符将被排除。
cut命令主要是接受三个定位方法:
第一,字节(bytes),用选项-b
第二,字符(characters),用选项-c
第三,域(fields),用选项-f
3.sort命令:排序
sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
语 法:
sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]
参 数:
-b 忽略每行前面开始出的空格字符。
-c 检查文件是否已经按照顺序排序。
-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
-f 排序时,将小写字母视为大写字母。
-i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
-m 将几个排序好的文件进行合并。
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-o<输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t<分隔字符> 指定排序时所用的栏位分隔字符。
+<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
--help 显示帮助。
--version 显示版本信息
示例:
[root@system1 Music]# cat 123
banana
apple
pear
orage
pear
[root@system1 Music]# sort -u 123
apple
banana
orage
pear
4.uniq命令:不排序只去重
uniq [OPTION]... [FILE]...
-d:--repeated 仅显示重复的行
-u:--unique 仅显示不重复的行
-c:--count 在前缀显示重复的数量
注意:连续且完全相同方为重复
三、文件管理命令 cp,mv,rm
1.cp:用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。
语法:cp(选项)(参数)
选项:
-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。
参数:
源文件:制定源文件列表。默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-R选项;
目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。
2.mv
mv:是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。
命令格式:
mv [选项] 源文件或目录 目标文件或目录
命令参数:
-b :若需覆盖文件,则覆盖前先行备份。
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会更新(update)
-t : --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。
示例:
将文件111改名为001
[root@system1 Music]# ll
-rw-r--r--. 1 root root 0 Sep 21 23:34 111
[root@system1 Music]# mv 111 001
[root@system1 Music]# ll
-rw-r--r--. 1 root root 0 Sep 21 23:34 001
移动文件123到目录文件000中
[root@system1 Music]# ll
drwxr-xr-x. 2 root root 6 Sep 21 23:37 000
-rw-r--r--. 1 root root 29 Sep 21 23:17 123
[root@system1 Music]# mv 123 000
[root@system1 000]# ll
-rw-r--r--. 1 root root 29 Sep 21 23:17 123
3.rm
可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。
rm [选项] 文件…
-d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;
-f:强制删除文件或目录;
-i:删除已有文件或目录之前先询问用户;
-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;
--preserve-root:不对根目录进行递归操作;
-v:显示指令的详细执行过程。
文件:指定被删除的文件列表,如果参数中含有目录,则必须加上-r或者-R选项。
示例:
交互式删除当前目录下的文件456和789
[root@system1 Music]# ll
-rw-r--r--. 1 root root 0 Sep 21 23:34 456
-rw-r--r--. 1 root root 0 Sep 21 23:34 789
[root@system1 Music]# rm -r 456 789
rm: remove regular empty file ‘456’? y
rm: remove regular empty file ‘789’? n
[root@system1 Music]# ll
-rw-r--r--. 1 root root 0 Sep 21 23:34 789
删除当前目录下除隐含文件外的所有文件和子目录
[root@system1 Music]# ll
total 0
drwxr-xr-x. 2 root root 16 Sep 21 23:38 000
-rw-r--r--. 1 root root 0 Sep 21 23:34 001
-rw-r--r--. 1 root root 0 Sep 21 23:34 789
[root@system1 Music]# rm -rf *
[root@system1 Music]# ll
total 0
[root@system1 Music]#
四、文本文件查看类命令:cat,tac,more,less,tail,head
cat 是一个文本文件(查看)和(连接)工具,通常与more搭配使用,与more不同的是cat可以合并文件。查看一个文件的内容,用cat比较简单,就是cat后面直接接文件名。
cat 语法结构:
cat [选项] [文件]...
选项:
-A, --show-all 等价于 -vET
-b, --number-nonblank 对非空输出行编号
-e 等价于 -vE
-E, --show-ends 在每行结束处显示 $
-n, --number 对输出的所有行编号
-s, --squeeze-blank 不输出多行空行
-t 与 -vT 等价
-T, --show-tabs 将跳格字符显示为 ^I
-u (被忽略)
-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
--help 显示此帮助信息并离开
tac 从最后一行倒序显示内容,并将所有内容输出
more 根据窗口大小,一页一页的现实文件内容
less 和more类似,但其优点可以往前翻页,而且进行可以搜索字符 head 只显示头几行
tail 只显示最后几行
五、文件的时间戳管理工具:touch
touch的功能并不是用来创建新文件的,创建文件是touch命令的一个特殊情况,touch是用来修改指定的文件的访问和修改时间属性,如果指定的文件不存在,将建立一个新的空文件,并以当前的时间来设置文件的访问和修改时间。
命令格式:
touch [选项]。。。 文件。。。
命令参数:
-a 或--time=atime或--time=access或--time=use 只更改存取时间。
-c 或--no-create 不建立任何文档。
-d 使用指定的日期时间,而非现在的时间。
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m 或--time=mtime或--time=modify 只更改变动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间。
示例:
创建不存在的文件
[root@system1 Music]# touch 123 234
[root@system1 Music]# ll
total 0
-rw-r--r--. 1 root root 0 Sep 22 09:38 123
-rw-r--r--. 1 root root 0 Sep 22 09:38 234
[root@system1 Music]# touch -c 345
[root@system1 Music]# ll
total 0
-rw-r--r--. 1 root root 0 Sep 22 09:38 123
-rw-r--r--. 1 root root 0 Sep 22 09:38 234
更新111的时间和123的时间戳相同
[root@system1 Music]# ll
total 0
-rw-r--r--. 1 root root 0 Sep 22 09:40 111
-rw-r--r--. 1 root root 0 Sep 22 09:38 123
-rw-r--r--. 1 root root 0 Sep 22 09:38 234
[root@system1 Music]# touch -r 111 123
[root@system1 Music]# ll
total 0
-rw-r--r--. 1 root root 0 Sep 22 09:40 111
-rw-r--r--. 1 root root 0 Sep 22 09:40 123
-rw-r--r--. 1 root root 0 Sep 22 09:38 234
六、文件内容类型查看命令:file
file命令用来探测给定文件的类型。
语法:file(选项)(参数)
选项:
-b:列出辨识结果时,不显示文件名称;
-c:详细显示指令执行过程,便于排错或分析程序执行的情形;
-f<名称文件>:指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称;
-L:直接显示符号连接所指向的文件类别;
-m<魔法数字文件>:指定魔法数字文件;
-v:显示版本信息;
-z:尝试去解读压缩文件的内容。
参数:
文件:要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件。
示例:
显示文件类型
[root@system1 ~]# ll
-rw-------. 1 root root 1614 May 18 21:04 anaconda-ks.cfg
[root@system1 ~]# file anaconda-ks.cfg
anaconda-ks.cfg: ASCII text
[root@system1 ~]# file -b -i anaconda-ks.cfg (-i 显示MIME类别)
text/plain; charset=us-ascii