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
使用权限为root,Linux/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,档案和目录的权限管理,包括u、g、o、a三级权限和特殊权限;
参数:
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、.bashrc、bash.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下简历目录woon,woon属于群组woon,用户woon和woonli属于woon组,要求woon和woonli可以对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
此时woon和woonli是否可以查看woon目录先得所有文件?
分别用woon、woonli、user1在woon在建立文件;
[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权限,此时就不能满足woon和woonli对woon目录下的所有文件进行修改和编辑,项目也就不能很好配合;
这是就需要用到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 bytes,w 是二个位元组。-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 的文字。 cut由1开始计数
范例:
[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 查找不包含指定类型的文件。