权限管理命令:chmod
命令名称:chmod
命令英文原意:change the permissions mode of a file
命令所在路径:/bin/chmod
执行权限:所有用户
语法:chmod [{ugoa}{±=}{rwx}] [文件或目录]
[mode=421 ] [文件或目录]
-R递归修改
功能描述:改变文件或目录权限
权限管理命令:chown
命令名称:chown
命令英文原意:change file ownership
命令所在路径:/bin/chown
执行权限:所有用户
语法:chown [用户] [文件或目录]
功能描述:改变文件或目录的所有者
范例:$ chown hpe fengjie
权限管理命令:chgrp
命令名称:chgrp
命令英文原意:change file group ownership
命令所在路径:/bin/chgrp
执行权限:所有用户
语法:chgrp [用户组] [文件或目录]
功能描述:改变文件或目录的所属组
范例:$ chgrp lampbrother fengjie
文件搜索命令:find
命令名称:find
命令所在路径:/bin/find
执行权限:所有用户
语法:find [搜索范围] [匹配条件]
功能描述:文件搜索
实例
$ find /etc -name ‘init’
在目录/etc中查找文件init
- iname不区分大小写
$ find / -size +100M
在根目录下查找大于100MB的文件
+n大于 -n小于 n等于
$ find /home -user user1
在根目录下查找所有者为user1的文件
-group根据所属组查找
$ find /etc -cmin -5
在/etc下查找5分钟内被修改过属性的文件和目录
-amin访问时间 access
-cmin文件属性 change
-mmin文件内容 modify
$ find /etc -size +80M -a -size -100M
在/etc下查找大于80MB小于100MB的文件
-a两个条件同时满足(and)
-o两个条件满足任意一个即可(or)
常用单位为G,M,k
$ find /etc -name ‘inittab’ -exec ls -l {} ;
在/etc下查找initt6ab文件并显示其详细信息
-exec 命令 {} ;对搜索结果执行操作
文件搜索命令:which
命令名称:which
命令所在路径:/usr/bin/which
执行权限:所有用户
语法:which 命令
功能描述:搜索命令所在目录及别名信息
范例:$ which ls
文件搜索命令:whereis
命令名称:whereis
命令所在路径:/usr/bin/whereis
执行权限:所有用户
语法:whereis [命令名称]
功能描述:搜索命令所在目录及帮助文档路径
范例:$whereis ls
文件搜索命令:locate
命令名称:locate
命令所在路径:/usr/bin/locate
执行权限:所有用户
语法:locate 文件名
功能描述:在文件资料库中查找文件
范例:$ locate inittab
文件搜索命令:grep
命令名称:grep
命令所在路径:/bin/grep
执行权限:所有用户
语法:grep -iv [指定字串] [文件]
功能描述:在文件中搜寻字串匹配的行并输出
-i不区分大小写
-v排除指定字串
范例:# grep mysql /root/install.log
帮助命令:man
命令名称:man
命令英文原意:manual
命令所在路径:/usr/bin/man
执行权限:所有用户
语法:man [命令或配置文件]
功能描述:获得帮助信息
范例: $ man ls
查看ls命令的帮助信息
$ man services
查看配置文件services的帮助信息
man –f 命令:可以查看该命令所有的帮助文档列表
支持如下搜索,搜索后支持n和N进行定位
/keyword (/加关键字 向下搜索)
?keywork (/加关键字 向上搜索)
历史命令:history
登录shell时,会读取命令历史文件中记录下的命令:~/.bash_history
登录进shell后执行的命令只会记录在缓存中,不会记录在/.bash_history,只有用户退出时才会才会追加到****/.bash_history**
history -a:把命令追加到~/.bash_history中
history –c :清空历史命令
快捷操作
!#:调用历史中第#条命令
!Str:从后向前找到最近一个Str开头的命令
!!:重复运行上一条命令
用户管理命令:who
命令名称:who
命令所在路径:/usr/bin/who
执行权限:所有用户
语法:who
功能描述:查看登录用户信息
范例: $ who
用户管理命令:w
命令名称:w
命令所在路径:/usr/bin/w
执行权限:所有用户
语法:w
功能描述:查看登录用户详细信息
范例: $ w
统计命令:wc
命令格式
wc [OPTION]… [FILE]…
选项
-c 统计字节数
-l 统计行数
-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串
-L 打印最长行的长度
裁剪命令:cut
cut命令是一个选取命令,其功能是将文件中的每一行字节、字符、字段进行剪切,选取我们需要的,并将这些选取好的数据输出至标准输出
其语法格式为
cut [-bn] [file] 或 cut [-c] [file] 或 cut [-df] [file]
使用说明
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。
主要参数
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的范围之内,该字符将被写出;否则,该字符将被排除。
cut命令主要是接受三个定位方法
第一,字节(bytes),用选项-b
第二,字符(characters),用选项-c
第三,域(fields),用选项-f
例
[rocrocket@rocrocket programming]$ who
rocrocket :0 2009-01-08 11:07
rocrocket pts/0 2009-01-08 11:23 (:0.0)
rocrocket pts/1 2009-01-08 14:15 (:0.0)
如果我们想提取每一行的第3个字节,就这样:
[rocrocket@rocrocket programming]$ who|cut -b 3
c
c
c
例:如果“字节”定位中,我想提取第3,第4、第5和第8个字节,怎么办?
b支持形如3-5的写法,而且多个定位之间用逗号隔开就成了。看看例子吧:
[rocrocket@rocrocket programming]$ who|cut -b 3-5,8
croe
croe
croe
但有一点要注意,cut命令如果使用了-b选项,那么执行此命令时,cut会先把-b后面所有的定位进行从小到大排序,然后再提取。可不能颠倒定位的顺序哦。
这个例子就可以说明这个问题:
[rocrocket@rocrocket programming]$ who|cut -b 8,3-5
croe
croe
croe
[rocrocket@rocrocket programming]$ who
rocrocket :0 2009-01-08 11:07
rocrocket pts/0 2009-01-08 11:23 (:0.0)
rocrocket pts/1 2009-01-08 14:15 (:0.0)
[rocrocket@rocrocket programming]$ who|cut -b -3
roc
roc
roc
[rocrocket@rocrocket programming]$ who|cut -b 3-
crocket :0 2009-01-08 11:07
crocket pts/0 2009-01-08 11:23 (:0.0)
crocket pts/1 2009-01-08 14:15 (:0.0)
想必你也看到了,-3表示从第一个字节到第三个字节,而3-表示从第三个字节到行尾。如果你细心,你可以看到这两种情况下,都包括了第三个字节“c”。
如果我执行who|cut -b -3,3-,你觉得会如何呢?答案是输出整行,不会出
现连续两个重叠的c的
[rocrocket@rocrocket programming]$ who|cut -c 3-5,8
croe
croe
croe
不过,看着怎么和-b没有什么区别啊?莫非-b和-c作用一样? 其实不然,看似相同,只是因为这个例子举的不好,**who输出的都是单字节字符,所以用-b和-c没有区别,**如果你提取中文,区别就看出来了,来,看看中文提取的情况:
[rocrocket@rocrocket programming]$ cat cut_ch.txt
星期一
星期二
星期三
星期四
[rocrocket@rocrocket programming]$ cut -b 3 cut_ch.txt
�
�
�
�
[rocrocket@rocrocket programming]$ cut -c 3 cut_ch.txt
一
二
三
四
看到了吧,用-c则会以字符为单位,输出正常;而-b只会傻傻的以字节(8位二进制位)来计算,输出就是乱码。
[rocrocket@rocrocket programming]$ cat cut_ch.txt |cut -b 2
�
�
�
�
[rocrocket@rocrocket programming]$ cat cut_ch.txt |cut -nb 2
[rocrocket@rocrocket programming]$ cat cut_ch.txt |cut -nb 1,2,3
星
星
星
星
例:一般使用最多的是-d 和-f组合
注:如果文件里面的某些域是由若干个空格来间隔的,那么用cut就有点麻烦了,因为cut只擅长处理“以一个字符间隔”的文本内容
sort
sort [-bcfMnrtk][源文件][-o 输出文件]
补充说明:sort可针对文本文件的内容,以行为单位来排序。
参 数:
-b 忽略每行前面开始出的空格字符。
-c 检查文件是否已经按照顺序排序。
-f 排序时,忽略大小写字母。
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-o<输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t<分隔字符> 指定排序时所用的栏位分隔字符。
-k 选择以哪个区间进行排序。
-u 全局去重
例:
sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
cat seq.txt
banana
apple
pear
orange
pear
sort seq.txt
apple
banana
orange
pear
pear
sort -u seq.txt
apple
banana
orange
pear
如果你想把排序结果输出到原文件中,
用重定向可就不行了,可以使用-o
sort -r number.txt -o number.txt
例:
cat facebook.txt
banana:30:5.5
apple:10:2.5
pear:90:2.3
orange:20:3.4
这个文件有三列,列与列之间用冒号隔开了,第一列表示水果类型,第二列表示水果数量,第三列表示水果价格。那么我想以水果数量来排序,也就是以第二列来排序,如何利用sort实现?幸好,sort提供了-t选项,后面可以设定间隔符。指定了间隔符之后,就可以用-k来指定列数了
sort -n -k 2 -t ‘:’ facebook.txt
apple:10:2.5
orange:20:3.4
banana:30:5.5
pear:90:2.3
uniq
uniq 命令删除文件中的重复行
uniq 命令读取由 InFile 参数指定的标准输入或文件。该命令首先比较相邻的行,然后除去第二行和该行的后续副本。重复的行一定相邻。(在发出 uniq 命令之前,请使用 sort 命令使所有重复行相邻。)
-c 在输出行前面加上每行在输入文件中出现的次数。
-d 仅显示重复行。
-u 仅显示不重复的行