Linux系统管理之文件管理命令

cat 是一个所有使用者可以使用,把档案输出或者定向到另一个file中的命令;

参数:

    -n  1开始对所有输出标上行号,包括空白行和重复行;

    -b  1开始对输出标上行号,过滤空白行;

    -s  当输出中有多个连续的空白行,代换为1个空白行;

    >定向到另一个文件中

范例:

首先取出install.log的前20行,然后编辑添加空白行,定向到tmp下的install.log中,并添加空行5个;

[root@server ~]# touch /tmp/install.log

[root@server ~]# cat  install.log | head -n 10 >/tmp/install.log

[root@server ~]# vi /tmp/install.log

安装 xkeyboard-config-2.11-1.el6.noarch

安装 fontpackages-filesystem-1.41-1.1.el6.noarch

warning: fontpackages-filesystem-1.41-1.1.el6.noarch:Header V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY

安装 m17n-db-1.5.5-1.1.el6.noarch

安装 liberation-fonts-common-1.05.1.20090721-5.el6.noarch

安装 setup-2.8.14-20.el6_4.1.noarch

安装 xkeyboard-config-2.11-1.el6.noarch

安装 xml-common-0.6.3-33.el6.noarch

安装 iso-codes-3.16-2.el6.noarch

安装 filesystem-2.4.30-3.el6.i686

安装 dejavu-fonts-common-2.30-2.el6.noarch~

~

~

 

输出install.log,加上行号

[root@server ~]# cat -n /tmp/install.log

    1  安装fontpackages-filesystem-1.41-1.1.el6.noarch

    2  warning:fontpackages-filesystem-1.41-1.1.el6.noarch: Header V3 RSA/SHA256 Signature,key ID c105b9de: NOKEY

    3  安装m17n-db-1.5.5-1.1.el6.noarch

    4  安装liberation-fonts-common-1.05.1.20090721-5.el6.noarch

    5

    6

    7

    8

    9

   10  安装setup-2.8.14-20.el6_4.1.noarch

   11  安装xkeyboard-config-2.11-1.el6.noarch

   12  安装xml-common-0.6.3-33.el6.noarch

   13  安装iso-codes-3.16-2.el6.noarch

   14  安装filesystem-2.4.30-3.el6.i686

15  安装dejavu-fonts-common-2.30-2.el6.noarch

 

过滤掉install.log中的空白行,并标上行号

[root@server ~]# cat -b /tmp/install.log

    1  安装fontpackages-filesystem-1.41-1.1.el6.noarch

    2  warning:fontpackages-filesystem-1.41-1.1.el6.noarch: Header V3 RSA/SHA256 Signature,key ID c105b9de: NOKEY

    3  安装 m17n-db-1.5.5-1.1.el6.noarch

    4  安装liberation-fonts-common-1.05.1.20090721-5.el6.noarch

 

 

 

 

 

    5  安装setup-2.8.14-20.el6_4.1.noarch

    6  安装xkeyboard-config-2.11-1.el6.noarch

    7  安装xml-common-0.6.3-33.el6.noarch

    8  安装iso-codes-3.16-2.el6.noarch

    9  安装filesystem-2.4.30-3.el6.i686

   10  安装dejavu-fonts-common-2.30-2.el6.noarch

将多个连续的空白行代换为一个,加上行号,空白行不加行号

[root@server ~]# cat -sb /tmp/install.log

    1  安装fontpackages-filesystem-1.41-1.1.el6.noarch

    2  warning:fontpackages-filesystem-1.41-1.1.el6.noarch: Header V3 RSA/SHA256 Signature,key ID c105b9de: NOKEY

    3  安装m17n-db-1.5.5-1.1.el6.noarch

    4  安装liberation-fonts-common-1.05.1.20090721-5.el6.noarch

 

    5  安装setup-2.8.14-20.el6_4.1.noarch

    6  安装xkeyboard-config-2.11-1.el6.noarch

    7  安装xml-common-0.6.3-33.el6.noarch

    8  安装iso-codes-3.16-2.el6.noarch

    9  安装filesystem-2.4.30-3.el6.i686

10  安装dejavu-fonts-common-2.30-2.el6.noarch

 

 

more

类似cat但是对于有N多行的文件,具有翻页的功能,空格键向下翻,b回翻;

参数:

-num        设置单页每次输出多少行;

-s       连续多个空白行代换为1

+num    从第num行开始显示

范例

单页输出10行;

[root@server ~]#more -10 install.log

安装fontpackages-filesystem-1.41-1.1.el6.noarch

warning:fontpackages-filesystem-1.41-1.1.el6.noarch: Header V3 RSA/SHA256 Signa

ture, key IDc105b9de: NOKEY

安装 m17n-db-1.5.5-1.1.el6.noarch

安装liberation-fonts-common-1.05.1.20090721-5.el6.noarch

安装setup-2.8.14-20.el6_4.1.noarch

安装xkeyboard-config-2.11-1.el6.noarch

安装xml-common-0.6.3-33.el6.noarch

安装iso-codes-3.16-2.el6.noarch

安装filesystem-2.4.30-3.el6.i686

--More--(1%)

从第11行开始,到20行结束;

[root@server ~]#more +10 install.log |head -n 10

安装dejavu-fonts-common-2.30-2.el6.noarch

安装mozilla-filesystem-1.9-5.1.el6.i686

安装control-center-filesystem-2.28.1-39.el6.i686

安装paktype-fonts-common-2.0-8.el6.noarch

安装mesa-dri-filesystem-10.1.2-2.el6.i686

安装autocorr-zh-4.0.4.2-14.el6.noarch

安装autocorr-en-4.0.4.2-14.el6.noarch

安装tzdata-2014g-1.el6.noarch

安装tzdata-java-2014g-1.el6.noarch

安装foomatic-db-filesystem-4.0-7.20091126.el6.noarch

 

chgrp

change group 显而易见,变更文件或目录的所属组;

参数:

     -c 显示命令执行回报的结果

     -v 显示命令执行过程

     -h 只对链接文件做修改;

     -R 递归处理,针对目录;

    

范例

建立/tmp/install.log的链接文件install;更改install.log的所属组为woon

[root@server ~]#ln -s /tmp/install.log /tmp/install

[root@server ~]#

[root@server ~]#chgrp -c woon /tmp/install.log

"/tmp/install.log"的所属组已更改为woon

[root@server ~]#chgrp -v woon /tmp/install.log

"/tmp/install.log"的所属组已更改为woon

更改/tmp目录下链接文件的所属组为woon

[root@server ~]#chgrp -h woon /tmp/install

[root@server ~]#ll /tmp/

总用量 24

lrwxrwxrwx. 1 root woon  16 1  24 22:24 install -> /tmp/install.log

-rw-r--r--. 1root woon  495 1  24 21:58 install.log

drwx------. 2gdm  gdm 4096 1  24 21:38 orbit-gdm

drwx------. 2gdm  gdm 4096 1  24 21:38 pulse-0ts1VFVI1yGH

drwx------. 2root root 4096 1  24 16:43 pulse-lM4QFZX7jWbv

drwx------. 2root root 4096 1  22 11:22 virtual-root.G7TKY9

drwx------. 2root root 4096 1  24 16:06 virtual-root.yb3tU4

[root@server ~]#

 

chown

Change owner

使用权限为rootLinux/Unix 是多人多工操作系统,所有的档案皆有拥有者。利用 chown 可以将档案的拥有者加以改变。一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的档案拥有者,也没有权限可以自己的档案拥有者改设为别人。只有系统管理者(root)才有这样的权限。

参数:

-c     若该档案拥有者确实已经更改,那么显示更改动作

-h  只对于连结(link)进行变更

-v  显示拥有者变更的详细资料

-R  对目前目录下的所有档案与子目录进行相同的拥有者变更

范例:

更改/tmp/install.log的拥有者为woon,并显示更改动作和详细信息

[root@server ~]#chown -v woon install.log

"install.log"的所有者已更改为woon

 

Chmod

使用权限为root,档案和目录的权限管理,包括ugoa三级权限和特殊权限;

参数:

Mode 权限设定串,u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。

r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。

# r=4 w=2 x=1

表示增加权限

  • 表示取消权限

表示设定唯一权限

 

-c 权限确实更改显示动作过程

-v -c类似,显示更改的详细信息

-f 若该档案无法更改也不显示错误信息

-R 递归修改

范例:

~/.bashrc 复制到/tmp/woon下,命名为bashrc.bashrcbash.rc

对上述三个文件进行权限操作

[root@server ~]# mkdir /tmp/woon

[root@server ~]#  cp ~/.bashrc /tmp/woon/bashrc

[root@server ~]#  cp ~/.bashrc /tmp/woon/.bashrc

[root@server ~]#  cp ~/.bashrc /tmp/woon/bash.rc

查看权限

[root@server ~]# ls -al /tmp/woon/

总用量 20

drwxr-xr-x. 2 root root 4096 1  25 15:06 .

drwxrwxrwt. 11 root root 4096 1  25 15:04 ..

-rw-r--r--. 1 root root  176 1  25 15:06 bashrc

-rw-r--r--.  1 root root 176 1  25 15:06 .bashrc

-rw-r--r--. 1 root root  176 1  25 15:06 bash.rc

Bashrc目前的权限是644,将其修改为所有具有所有权限

[root@server ~]# chmod 777  /tmp/woon/bashrc

[root@server ~]# chmod a+rwx/tmp/woon/bashrc

 

文件默认权限

umask

可用来设定[权限掩码][权限掩码]是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。

如某目录umask=0022那么在该目录下目录属性为755 文件为644

[root@server woon]# umask 066

[root@server woon]# touch umask

[root@server woon]# mkdir umaskdir

[root@server woon]# ll

总用量 8

-rwxrwxrwx. 1 root root 176 1  25 15:06 bashrc

-rw-r--r--. 1 root root 176 1  25 15:06 bash.rc

-rw-------. 1 root root   0 1  25 15:22 umask

drwx--x--x. 2 root root 4096 1  25 15:24 umaskdir

 

文件特殊权限

Suidsgid sbit

SUID

SUID仅对二进制文件有效;

执行者对改程序需有执行x权限;

本权限仅在执行过程中有效;

执行者将具有改程序的所有者权限;

SUID对目录无效

 

Sgid类似suid用户群组;

 

SBID针对目录

范例:

/tmp下简历目录woonwoon属于群组woon,用户woonwoonli属于woon组,要求woonwoonli可以对woon目录内档案具有所有权限;且不允许其他人查阅;

准备:

[root@server tmp]# groupadd woon

[root@server tmp]# useradd -g woon woon

[root@server tmp]# useradd -g woon woonli

[root@server tmp]# useradd  user1

[root@server tmp]# echo "xlwoon"|passwd --stdin woon

更改用户 woon 的密码

passwd所有的身份验证令牌已经成功更新。

[root@server tmp]# echo "xlwoon"|passwd --stdin woonli

更改用户 woonli 的密码

passwd所有的身份验证令牌已经成功更新。

[root@server tmp]# echo "xlwoon"|passwd --stdin user1

更改用户 user1 的密码

passwd所有的身份验证令牌已经成功更新。

[root@server tmp]# id woon

uid=500(woon) gid=500(woon) =500(woon)

[root@server tmp]# id user1

uid=502(user1) gid=502(user1) =502(user1)

[root@server tmp]# mkdir woon

[root@server tmp]# chgrp woon woon

[root@server tmp]# chmod 775 woon

[root@server tmp]# ll

总用量 28

lrwxrwxrwx. 1 root woon   16 1  24 22:24 install -> /tmp/install.log

-rw-r--r--. 1 root woon  495 1  24 21:58 install.log

drwx------. 2 gdm  gdm 4096 1  25 17:33 orbit-gdm

drwx------. 2 gdm  gdm 4096 1  25 17:33 pulse-0ts1VFVI1yGH

drwx------. 2 root root 4096 1  24 16:43 pulse-lM4QFZX7jWbv

drwx------. 2 root root 4096 1  22 11:22 virtual-root.G7TKY9

drwx------. 2 root root 4096 1  24 16:06 virtual-root.yb3tU4

drwxrwxr-x. 2 rootwoon 4096 1  25 17:59 woon

 

此时woonwoonli是否可以查看woon目录先得所有文件?

分别用woonwoonliuser1woon在建立文件;

[root@server woon]# echo "这是root建立的文件">rotfile

[woon@server woon]$ echo 这是woon建立的文件">woonfile

[woonli@server woon]$ echo "这是woonli建立的文件">woonlifil

[user1@server woon]$ echo "这是user1建立文件"> user1file

bash: user1file: 权限不够

[root@server woon]# ll

总用量 12

-rw-r--r--. 1 root   root 26 1  25 18:21 rotfile

-rw-rw-r--. 1 woon   woon 26 1  25 18:18 woonfile

-rw-r--r--. 1 woonli woon 28 1  25 18:19 woonlifile

[woon@server woon]$ vi woonfile

 

这是woon建立的文件

可以修改吗?

 

~

~

"woonfile" 2L, 45C 已写入   

可以修改的

                                

[woon@server woon]$ vi woonlifile

 

这是woonli建立的文件

keyi xiugai ?

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

E45: 已设定选项 'readonly' (请加 ! 强制执行)

不能修改;

为什么?woon目录已经是woon群组的,且woon群组具有rwx权限,此时就不能满足woonwoonliwoon目录下的所有文件进行修改和编辑,项目也就不能很好配合;

这是就需要用到SGID

[root@server tmp]# chmod g+s woon

然后用woon建立woon1文件,woonli建立woonli1文件,再看看

[woonli@server woon]$ ll

总用量 12

-rw-r--r--. 1 root   root 26 1  25 18:21 rotfile

-rw-rw-r--. 1 woon   woon 0 1  25 18:30 woon1

-rw-rw-r--. 1 woon   woon 45 1  25 18:24 woonfile

-rw-r--r--. 1 woonli woon  0 1  25 18:30 woonli1

 

此时woon就可以对woonli1进行修改和写入等操作;

 

文件的隐藏属性

Chattr  lsattr

Chattr设置文件的隐藏属性,

参数:

+ 增加某个特殊参数,其他本身参数保持不变

  • 删除某一参数,其他参数保持不变;

设定参数

A 添加设个属性时,不会修改atime,可在I/O较慢的机器上进行;

S 一般文件时异步写入磁盘,该参数可以同步写入;

a 设置之后只能添加数据,不能更改和删除数据;当然root可以取消这个属性

I 添加该属性后,文件不能修改,不能删除,改名等;

s彻底删除

 

范例:

/tmp/woon下的woonfile添加属性,使其只能添加数据

[root@server woon]# chattr +a woonfile

[root@server woon]# rm -rf woonfile

rm: 无法删除"woonfile":不允许的操作

此时对woonfile进行删除一个字符都是不行的,也无法删除;可以用chattr  -a woonfile取消设个权限;

 

cmp

cmp命令可以比较两个文件的差异

参数:

-l 标示处所有有差异的地方

-c--print-chars  除了标明差异处的十进制字码之外,一并显示该字符所对应字符

范例:

[root@server tmp]# cmp -c bashrc bashrcroot

bashrc bashrcroot differ: byte 14, line 3is 123 S 125 U

 

diff

diff比较两个文件的差异,逐行比较

参数:

    -b 不比较空格字符的不同

    -B 不比较空白行

    -c 显示全部内容,标示不同之处

范例:

 

 

file

file辨识文件的类型;

参  数:
-b  列出辨识结果时,不显示文件名称。
-c  详细显示指令执行过程,便于排错或分析程序执行的情形。
-f<名称文件>  指定名称文件,其内容有一个或多个文件名称呢感,让file依序辨识这些文件,格式为每列一个文件名称。 
-L  直接显示符号连接所指向的文件的类别。
-m<魔法数字文件>  指定魔法数字文件。
-v  显示版本信息。
-z  尝试去解读压缩文件的内容。

范例:

[root@server tmp]# file woon/ bashrc

woon/: setgid directory

bashrc: UTF-8 Unicode text

 

find

将档案系统内符合 expression 的档案列出来。你可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。

参数:

    -amin n : 在过去 n 分钟内被读取过

    -anewer file : 比档案 file 更晚被读取过的档案

        -atime n : 在过去 n 天过读取过的档案

        -cmin n : 在过去 n 分钟内被修改过

-cnewerfile :比档案 file 更新的档案

-ctime n: 在过去 n 天过修改过的档案

-name name档案名称符合 name 的档案。iname 会忽略大小写

-size n :档案大小 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytesw 是二个位元组。-type c : 档案类型是 c 的档案。

d: 目录
c: 字型装置档案
b: 区块装置档案
p: 具名贮列
f: 一般档案
l: 符号连结
s: socket

范例:

find .-name "*" -exec grep xxx {} ; -print |morexxx为你想要找的字符串

 

 

cut

使用权限:所有使用者
  用法:cut -cnum1-num2 filename
  说明:显示每行从开头算起 num1 num2 的文字。 cut1开始计数

范例:

[root@server woon]# cut -c1-10 /etc/passwd |head -n 5

root:x:0:0

bin:x:1:1:

daemon:x:2

adm:x:3:4:

lp:x:4:7:l

 

ln   

使用权限 : 所有使用者



  参数 :

-f : 链结时先将与 dist 同档名的档案删除-d : 允许系统管理者硬链结自己的目录-i : 在删除与 dist 同档名的档案时先进行询问-n : 在进行软连结时,将 dist 视为一般的档案-s : 进行软链结(symbolic link)-v : 在连结之前显示其档名-b : 将在链结时会被覆写或删除的档案进行备份-S SUFFIX : 将备份的档案都加上 SUFFIX 的字尾-V METHOD : 指定备份的方式--help : 显示辅助说明--version : 显示版本
  范例 :

创建硬链接

[root@serverwoon]# ln woonlifile woonlifiles

[root@serverwoon]# ls �Cal

-rw-r--r--.  2 woonli woon   28 1  2518:19 woonlifile

-rw-r--r--.  2 woonli woon   28 1  2518:19 woonlifiles

创建软连接

[root@serverwoon]# ls -al

总用量 28

-rw-r--r--.  2 woonli woon   28 1  2518:19 woonlifile

-rw-r--r--.  2 woonli woon   28 1  2518:19 woonlifiles

lrwxrwxrwx.  1 root  woon   10 1 26 21:30 woonlifilesoft -> woonlifile

 将档案 yy 产生一个 symbolic link : zz

less    

less[Option] filename

说明:  

less 的作用与 more 十分相似,都可以用来浏览文字档案的内容,不同的是 less 允许使用者往回卷动以浏览已经看过的部份,同时因为 less 并未在一开始就读入整个档案,因此在遇上大型档案的开启时,会比一般的文书编辑器( vi)来的快速。

 

locate

使用权限:所有使用者
说明: locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了.

在一般的 distribution 之中,数据库的建立都被放在 contab 中自动执行。一般使用者在使用时只要用

# locate your_file_name

   

 

rmdir

删除空目录

参数:

-p 递归删除空目录

 

mktemp

建立一个缓存文件。可以提供给shellscripts使用

 

参  数:
-q  执行时若发生错误,不会显示任何信息。
-u  暂存文件会在mktemp结束前先行删除。

 

move

说明:将一个档案移至另一档案,或将数个档案移至另一目录。或者更名

参数:-i 若目的地已有同名档案,则先询问是否覆盖旧档。

rm

删除目录或档案

参数:

     -i删除前询问是否删除

     -f强制删除

     -r递归删除

split

将一个档案分割成数个。而从 INPUT 分割输出成固定大小的档案

参数:

 

tee

双重定向

读取stdin的数据,并将其内容输出成文件。

参数

-a 附件到指定文件的后面而非是覆盖

 

 

 

touch

touch可以建立新的文件。touch 指令改变档案的时间记录。 ls -l 可以显示档案的时间记录。

 

cp

 

说明:将一个档案拷贝至另一档案,或将数个档案拷贝至另一目录。

参数:

-a 尽可能将档案状态、权限等资料都照原状予以复制。

-r source 中含有目录名,则将目录下之档案亦皆依序拷贝至目的地。

-f 若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制。

whereis

查找文件

参  数:
-b  只查找二进制文件。 
-B<目录 只在设置的目录下查找二进制文件。 
-f  不显示文件名前的路径名称。 
-m  只查找说明文件。 
-M<目录 只在设置的目录下查找说明文件。 
-s  只查找原始代码文件。 
-S<目录 只在设置的目录下查找原始代码文件。 
-u  查找不包含指定类型的文件。




你可能感兴趣的:(权限,文本编辑,文件管理命令)