转自:http://www.ztloo.com/2018/10/06/%E5%90%8C%E4%B9%90%E5%AD%A6%E5%A0%82linux%E6%93%8D%E4%BD%9C%E7%B2%BE%E5%93%81%E5%8F%91%E5%B8%83/?from=timeline

 

 

一、目录切换、清屏,与手册学习


二、文件与目录展示

cat选项

          

     

                       

            

              

        

                       

          

                      

     

                 

             

MORE选项

   

    

         

    

        

     

    

    

 

   

      

MORE.常用操作命令:

   

   

 

  

      

    

 

   

      

LESS选项和按键命令

 

 

 

 

 

 

 

 

 

 

 

 


三、文件与目录权限

ls  -l 中显示的内容如下:

– 10个字符确定不同用户能对文件干什么

– 第一个字符代表文件()、目录(d),链接(l

– 其余字符每3个一组(rwx),读(r)、写(w)、执行(x

– 第一组rwx:文件所有者的权限是读、写和执行

– 第二组rw-:与文件所有者同一组的用户的权限是读、写但不能执行

– 第三组r–:不与文件所有者同组的其他用户的权限是读不能写和执行

 

也可用数字表示为:r=4w=2x=1  因此rwx=4+2+1=7

– 1 表示连接的文件数

– root 表示用户

– root表示用户所在的组

– 1213 表示文件大小(字节)

– Feb 2 09:39 表示最后修改日期

– abc 表示文件名

 

linux常用命令及示例-LMLPHP

例:rwx rw- r–

 

r=读取属性  //值=4

w=写入属性  //值=2

x=执行属性  //值=1

 

chmod u+x,g+w f01  //为文件f01设置自己可以执行,组员可以写入的权限

chmod u=rwx,g=rw,o=r f01

chmod 764 f01

chmod a+x f01  //对文件f01的u,g,o都设置可执行属性

chown user:market f01  //把文件f01给uesr,添加到market组


1、chgrp(转变文件所属用户组)

2、chown(转变文件拥有者)

3、chmod(变动文件属性)

4、查看对应用户和组。

cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown|awk -F":" '{ print $1"|"$3"|"$4 }'|more   


四、文件与目录操作

额外需要知道的知识:

在linux中经常会看到stdin,stdout和stderr,这3个可以称为终端(Terminal)的标准输入(standard input),标准输出( standard out)和标准错误输出(standard error)。

组合命令

多条命令之间以“;”间隔,就组成组合命令,依次执行,上条语句执行成功与否不影响下个语句的执行。

如果使用“&&”代替“;”,在上条语句执行成功的前提下才能执行下条命令

当用“||”代替“;”时,上条命令执行失败时才能执行下条语。

 Touch命令

 

 

 

 

 

  

 

 

 

CP命令

cp(选项)(参数)

参数:

源文件:制定源文件列表。默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-R选项;

目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。

 

 

 

 

 

 

 

 

 

 

 

 

 

MV命令

 

 

 

 

 

 

 

 

 

LN命令

如果使用-s选项创建符号连接,则“源文件”可以是文件或者目录。创建硬连接时,则“源文件”参数只能是文件;

 

 

 

 

 

 

 

 

 

 

 

 

 

RM命令

rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。

 

 

 

 

 

 

 

软连接与硬链接区别

硬链接是有着相同 inode 号仅文件名不同的文件. 只能对已存在的文件进行创建,

删除一个硬链接文件并不影响其他有相同 inode 号的文件.

不能交叉文件系统进行硬链接的创建, 不能对目录进行创建,只可对文件创建.

[root@c7_m8_s1 local]# link hello hello2

linux常用命令及示例-LMLPHP


五、使用过滤器操作文本

nl选项

  -b, –body-numbering=样式     使用指定样式编号文件的正文行目

  -d, –section-delimiter=CC    使用指定的CC 分割逻辑页数

  -f, –footer-numbering=样式   使用指定样式编号文件的页脚行目

  -h, –header-numbering=样式   使用指定样式编号文件的页眉行目

  -i, –page-increment=数值     设置每一行遍历后的自动递增值

  -l, –join-blank-lines=数值   设置数值为多少的若干空行被视作一行

  -n, –number-format=格式      根据指定格式插入行号

  -p, –no-renumber             在逻辑页数切换时不将行号值复位

  -s, –number-separator=字符串 可能的话在行号后添加字符串

  -v, –starting-line-number=数字       每个逻辑页上的第一行的行号

  -w, –number-width=数字       为行号使用指定的栏数

        a     对所有行编号

        t     对非空行编号

        n     不编行号

  pBRE  只对符合正则表达式BRE 的行编号

     FORMAT 是下列之一:

      ln    左对齐,空格不用0 填充

      rn    右对齐,空格不用0 填充

      rz    右对齐,空格用0 填充

cut选项

  -b, –bytes=列表              只选中指定的这些字节

  -c, –characters=列表         只选中指定的这些字符

  -d, –delimiter=分界符        使用指定分界符代替制表符作为区域分界

  -f, –fields=LIST         select only these fields;  also print any line

                            that contains no delimiter character, unless

                            the -s option is specified

  -n                        with -b: don't split multibyte characters

  –complement              补全选中的字节、字符或域

  -s, –only-delimited          不打印没有包含分界符的行

   –output-delimiter=字符串 使用指定的字符串作为输出分界符,默认采用输入的分界符

每种参数格式表示范围如下:

    N   从第1 个开始数的第N 个字节、字符或域

    N-  从第N 个开始到所在行结束的所有字符、字节或域

    N-M 从第N 个开始到第M 个之间(包括第M 个)的所有字符、字节或域

    -M  从第1 个开始到第M 个之间(包括第M 个)的所有字符、字节或域

 

sort 使用教程及选项

AAA:BB:CC

aaa:30:1.6

ccc:50:3.3

ddd:20:4.2

bbb:10:2.5

eee:40:5.4

eee:60:5.1

AAA:BB:CC

bbb:10:2.5

ddd:20:4.2

aaa:30:1.6

eee:40:5.4

ccc:50:3.3

eee:60:5.1

eee:40:5.4

eee:60:5.1

ddd:20:4.2

ccc:50:3.3

bbb:10:2.5

aaa:30:1.6

AAA:BB:CC

  -b, –ignore-leading-blanks   忽略前导的空白区域

  -d, –dictionary-order        只考虑空白区域和字母字符

  -f, –ignore-case             忽略字母大小写

  -g, –general-numeric-sort  compare according to general numerical value

  -i, –ignore-nonprinting    consider only printable characters

  -M, –month-sort            compare (unknown) < 'JAN' < … < 'DEC'

  -h, –human-numeric-sort    使用易读性数字(例如: 2K 1G)

  -n, –numeric-sort            根据字符串数值比较

  -R, –random-sort             根据随机hash 排序

      –random-source=文件      从指定文件中获得随机字节

  -r, –reverse                 逆序输出排序结果

      –sort=WORD               按照WORD 指定的格式排序: 一般数字-g,高可读性-h,月份-M,数字-n,随机-R,版本-V

  -V, –version-sort            在文本内进行自然版本排序

其他选项:

      –batch-size=NMERGE       一次最多合并NMERGE 个输入;如果输入更多则使用临时文件

  -c, –check, –check=diagnose-first   检查输入是否已排序,若已有序则不进行操作

  -C, –check=quiet, –check=silent     类似-c,但不报告第一个无序行

      –compress-program=程序   使用指定程序压缩临时文件;使用该程序的-d 参数解压缩文件

      –debug                   为用于排序的行添加注释,并将有可能有问题的用法输出到标准错误输出

      –files0-from=文件        从指定文件读取以NUL 终止的名称,如果该文件被指定为"-"则从标准输入读文件名

  -k, –key=KEYDEF          sort via a key; KEYDEF gives location and type

  -m, –merge               merge already sorted files; do not sort

  -o, –output=文件             将结果写入到文件而非标准输出

  -s, –stable                  禁用last-resort 比较以稳定比较算法

  -S, –buffer-size=大小        指定主内存缓存大小

  -t, –field-separator=分隔符  使用指定的分隔符代替非空格到空格的转换

  -T, –temporary-directory=目录        使用指定目录而非$TMPDIR 或/tmp 作为临时目录,可用多个选项指定多个目录

      –parallel=N              将同时运行的排序数改变为N

  -u, –unique          配合-c,严格校验排序;不配合-c,则只输出一次排序结果

  -z, –zero-terminated 以0 字节而非新行作为行尾标志


TR命令选项

用法:tr [选项]… SET1 [SET2]

从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出。

  -c, -C, –complement          首先补足SET1

  -d, –delete                  删除匹配SET1 的内容,并不作替换

  -s, –squeeze-repeats 如果匹配于SET1 的字符在输入序列中存在连续的重复,在替换时会被统一缩为一个字符的长度

  -t, –truncate-set1           先将SET1 的长度截为和SET2 相等

      –help            显示此帮助信息并退出

      –version         显示版本信息并退出

SET 是一组字符串,一般都可按照字面含义理解。解析序列如下:

  NNN  八进制值为NNN 的字符(1 至3 个数位)

  \            反斜杠

  a            终端鸣响

  b            退格

  f            换页

  n            换行

  r            回车

  t            水平制表符

  v            垂直制表符

  字符1-字符2   从字符1 到字符2 的升序递增过程中经历的所有字符

  [字符*]       在SET2 中适用,指定字符会被连续复制直到吻合设置1 的长度

  [字符*次数]   对字符执行指定次数的复制,若次数以 0 开头则被视为八进制数

  [:alnum:]     所有的字母和数字

  [:alpha:]     所有的字母

  [:blank:]     所有呈水平排列的空白字符

  [:cntrl:]     所有的控制字符

  [:digit:]     所有的数字

  [:graph:]     所有的可打印字符,不包括空格

  [:lower:]     所有的小写字母

  [:print:]     所有的可打印字符,包括空格

  [:punct:]     所有的标点字符

  [:space:]     所有呈水平或垂直排列的空白字符

  [:upper:]     所有的大写字母

  [:xdigit:]    所有的十六进制数

  [=字符=]      所有和指定字符相等的字符

仅在SET1 和SET2 都给出,同时没有-d 选项的时候才会进行替换。

仅在替换时才可能用到-t 选项。如果需要SET2 将被通过在末尾添加原来的末字符的方式

补充到同SET1 等长。SET2 中多余的字符将被省略。只有[:lower:] 和[:upper:]

以升序展开字符;在用于替换时的SET2 中以成对表示大小写转换。-s 作用于SET1,既不

替换也不删除,否则在替换或展开后使用SET2 缩减。


SED命令选项

用法: sed [选项]… {脚本(如果没有其他脚本)} [输入文件]…

  -n, –quiet, –silent                    取消自动打印模式空间

  -e 脚本, –expression=脚本     添加“脚本”到程序的运行列表

  -f 脚本文件, –file=脚本文件    添加“脚本文件”到程序的运行列表

  –follow-symlinks                    直接修改文件时跟随软链接

  -i[SUFFIX], –in-place[=SUFFIX]     edit files in place (makes backup if SUFFIX supplied)

  -c, –copy                                   use copy instead of rename when shuffling files in -i mode

  -b, –binary                            does nothing; for compatibility with WIN32/CYGWIN/MSDOS/EMX (

                                                open files in binary mode (CR+LFs are not treated specially))

  -l N, –line-length=N                  指定“l”命令的换行期望长度

  –posix                                  关闭所有 GNU 扩展

  -r, –regexp-extended          在脚本中使用扩展正则表达式

  -s, –separate                        将输入文件视为各个独立的文件而不是一个长的连续输入

  -u, –unbuffered                   从输入文件读取最少的数据,更频繁的刷新输出

  -z, –null-data                     separate lines by NUL characters

  –help                                  display this help and exit

  –version                            output version information and exit

如果没有 -e, –expression, -f 或 –file 选项,那么第一个非选项参数被视为

sed脚本。其他非选项参数被视为输入文件,如果没有输入文件,那么程序将从标准输入读取数据。

sed案例详解

>101,chensiqi,CEO

>102,zhangyang,CTO

>103,Alex,COO

>104,yy,CFO

>105,feixue,CIO

> KOF

[root@c7_m8_s1 local]#

101,chensiqi,CEO

102,zhangyang,CTO

106,dandan,CSO

103,Alex,COO

104,yy,CFO

105,feixue,CIO

101,chensiqi,CEO

102,zhangyang,CTO

107,ztl,ufo

103,Alex,COO

104,yy,CFO

105,feixue,CIO

101,chensiqi,CEO

102,zhangyang,CTO

103,Alex,COO

104,yy,CFO

108,dandan,CSO

109,bingbing,CCO

105,feixue,CIO

101,chensiqi,CEO

103,Alex,COO

104,yy,CFO

105,feixue,CIO

101,chensiqi,CEO

101,chensiqi,CEO

103,Alex,COO

104,yy,CFO

105,feixue,CIO

#命令说明: 在sed软件中,使用正则的格式和awk一样,使用2个”/“包含指定的正则表达式,即“/正则表达式/”。

#当然也可以使用两个正则表达式,如下例所示

[root@c7_m8_s1 local]#  sed '/chensiqi/,/Alex/d' person.txt

104,yy,CFO

105,feixue,CIO

命令说明:这是正则表达式形式的多行删除,也是以逗号分隔2个地址,最后结果是删除包含“chensiqi”的行到包含“Alex”的行

#删除第三行到最后一行

[root@c7_m8_s1 local]# sed '3,$d' person.txt

101,chensiqi,CEO

102,zhangyang,CTO

命令说明:学过正则表达式后我们知道“$”代表行尾,但是在sed中就有一些变化了,“$”在sed中代表文件的最后一行。因此本例子的含义是删除第3行到最后一行的文本,包含第3行和最后一行,因此剩下第1,2行的内容。

#从第2行开始循环,sed软件第一次遇到字母O(第三行)就认为循环结束

[root@c7_m8_s1 local]# sed '2,/O/d' person.txt

101,chensiqi,CEO

104,yy,CFO

105,feixue,CIO

# 处理等差数列

[root@c7_m8_s1 local]#  seq 10 | sed -n '1~2p'

1

3

5

7

9

# 修改第二行

[root@c7_m8_s1 local]# cat person.txt

101,chensiqi,CEO

102,zhangyang,CTO

103,Alex,COO

104,yy,CFO

105,feixue,CIO

[root@c7_m8_s1 local]# sed '2c 106,dandan,CSO' person.txt

101,chensiqi,CEO

106,dandan,CSO

103,Alex,COO

104,yy,CFO

105,feixue,CIO

#修改文中内容,将zhangyang 修改成 dandan

[root@c7_m8_s1 local]# sed 's#zhangyang#dandan#g' person.txt

101,chensiqi,CEO

102,dandan,CTO

103,Alex,COO

104,yy,CFO

105,feixue,CIO

默认sed软件是对模式空间(内存中的数据)操作,而-i选项会更改磁盘上的文件内容。

[root@c7_m8_s1 local]# sed -i 's#zhangyang#dandan#g' person.txt

[root@c7_m8_s1 local]# cat person.txt

101,chensiqi,CEO

102,dandan,CTO

103,Alex,COO

104,yy,CFO

105,feixue,CIO

 

* 这里用到的sed命令,选项:

“s”:单独使用–>将每一行中第一处匹配的字符串进行替换==>sed命令

“g”:每一行进行全部替换–>sed命令s的替换标志之一(全局替换),非sed命令。

“-i”:修改文件内容–>sed软件的选项,注意和sed命令i区别。

#把第三行的 0 修改成9

[root@c7_m8_s1 local]# sed '3s#0#9#' person.txt

101,chensiqi,CEO

102,dandan,CTO

193,Alex,COO

104,yy,CFO

105,feixue,CIO

# 变量

sed s#$x#$y#g test.txt

 

#分组替换()和1的使用说明

 

[root@c7_m8_s1 local]# echo "I am chensiqi teacher." | sed 's#^.*am ([a-z]+) tea.*$#1#g'

chensiqi

[root@c7_m8_s1 local]# echo "I am chensiqi teacher." | sed -r 's#^.*am ([a-z]+) tea.*$#1#g'

chensiqi

[root@c7_m8_s1 local]#  echo "I am chensiqi teacher." | sed -r 's#I (.*) (.*) teacher.#12#g'

amchensiqi

命令说明: sed如果不加-r后缀,那么默认不支持扩展正则表达式,需要符号进行转义。小括号的作用是将括号里的匹配内容进行分组以便在第2和第3个#号之间进行sed的反向引用,1代表引用第一组,2代表引用第二组

# 取IP

[root@c7_m8_s1 local]# ifconfig ens33 | sed -rn '2s#^.*inet(.*) netmask.*$#1#gp'

192.168.1.107

解释:ens33网卡名称。,用正则匹配出来的第二行内容中的ip地址,来替换第二行内容。-n取消默认的sed软件的输出,常与sed命令的p连用。*p:打印模式空间内容,通常p会与选项-n一起使用*

更简单的命令

[root@c7_m8_s1 local]# hostname -i

192.168.1.107

#特殊符号&代表被替换的内容

 

[root@c7_m8_s1 local]# sed -r 's#(.*),(.*),(.*)#& —– 1 2 3#' person.txt

101,chensiqi,CEO —– 101 chensiqi CEO

102,dandan,CTO —– 102 dandan CTO

103,Alex,COO —– 103 Alex COO

104,yy,CFO —– 104 yy CFO

105,feixue,CIO —– 105 feixue CIO

命令说明: 1,这里将分组替换和&符号放在一起对比 2,命令中的分组替换使用了3个小括号,每个小括号分别代表每一行以逗号作为分隔符的每一列。 3,上面命令的&符号代表每一行,即模型中‘s#目标内容#替换内容#g’的目标内容。

#查找到后缀名包含_finished的图片之后进行改名,把包含的内容去掉。涉及到find 、sed、mv  bash

[root@c7_m8_s1 test]# ls

stu_102999_1_finished.jpg

[root@c7_m8_s1 test]# find ./ -name "*_finished.jpg" | sed -r 's#^(.*)_finished(.*)#mv & 12#g' |bash

[root@c7_m8_s1 test]# ls

stu_102999_1.jpg

find ./ -name "*_finished.jpg" | sed -r 's#^(.*)_finished(.*)#mv & 12#g' |bash

#按行查询,加选项n。字母p 和n 连用。

[root@c7_m8_s1 local]# sed '2p' person.txt

101,chensiqi,CEO

102,dandan,CTO

102,dandan,CTO

103,Alex,COO

104,yy,CFO

105,feixue,CIO

#把第二行取出来

[root@c7_m8_s1 local]# sed -n '2p' person.txt

102,dandan,CTO

 

#查询第二行到第三行的内容,不指定地址范围:'p',默认打印全部内容。

[root@c7_m8_s1 local]#  sed -n '2,3p' person.txt

102,dandan,CTO

103,Alex,COO

#一直查询从第二行开始,步长为2的内容。之道结束。

[root@c7_m8_s1 local]#  sed -n '2~2p' person.txt

102,dandan,CTO

104,yy,CFO

 

#按字符串查询

[root@c7_m8_s1 local]# sed -n '/CTO/p' person.txt

102,dandan,CTO

 

#查询从CTO 到CFO的所有内容

[root@c7_m8_s1 local]#  sed -n '/CTO/,/CFO/p' person.txt

102,dandan,CTO

103,Alex,COO

104,yy,CFO

#查询从第二行到包含CFO的行

[root@c7_m8_s1 local]# sed -n '2,/CFO/p' person.txt

102,dandan,CTO

103,Alex,COO

104,yy,CFO

 

#过滤查询多个字符串匹配

[root@c7_m8_s1 local]# sed -rn '/chensiqi|yy/p' person.txt

101,chensiqi,CEO

104,yy,CFO

#sed修改文件的同时进行备份

 

[root@c7_m8_s1 local]#  sed -i.bak 's#dandan#NB#g' person.txt

[root@c7_m8_s1 local]# cat person.txt

101,chensiqi,CEO

102,NB,CTO

103,Alex,COO

104,yy,CFO

105,feixue,CIO

#查看文件获取行号

 

[root@c7_m8_s1 local]# sed '=' person.txt

1

101,chensiqi,CEO

2

102,NB,CTO

3

103,Alex,COO

4

104,yy,CFO

5

命令说明:使用特殊符号“=”就可以获取文件的行号,这是特殊用法,记住即可。从上面的命令结果我们也发现了一个不好的地方:行号和行不在一行。

 

#查询不连续的行

[root@c7_m8_s1 local]# sed -n '1p;3p;5p' person.txt

101,chensiqi,CEO

103,Alex,COO

105,feixue,CIO

awk命令选项

 

Usage: awk [POSIX or GNU style options] [–] 'program' file …

POSIX options:          GNU long options: (standard)

        -f progfile             –file=progfile

        -F fs                   –field-separator=fs

        -v var=val              –assign=var=val

Short options:          GNU long options: (extensions)

        -b                      –characters-as-bytes

        -c                      –traditional

        -C                      –copyright

        -d[file]                –dump-variables[=file]

        -e 'program-text'       –source='program-text'

        -E file                 –exec=file

        -g                      –gen-pot

        -h                      –help

        -L [fatal]              –lint[=fatal]

        -n                      –non-decimal-data

        -N                      –use-lc-numeric

        -O                      –optimize

        -p[file]                –profile[=file]

        -P                      –posix

        -r                      –re-interval

        -S                      –sandbox

        -t                      –lint-old

        -V                      –version

locate选项

 

  -A, –all              only print entries that match all patterns

  -b, –basename         match only the base name of path names

  -c, –count            only print number of found entries

  -d, –database DBPATH  use DBPATH instead of default database (which is  /var/lib/mlocate/mlocate.db)

  -e, –existing         only print entries for currently existing files

  -L, –follow           follow trailing symbolic links when checking file existence (default)

  -h, –help             print this help

  -i, –ignore-case      ignore case distinctions when matching patterns

  -l, –limit, -n LIMIT  limit output (or counting) to LIMIT entries

  -m, –mmap             ignored, for backward compatibility

  -P, –nofollow, -H     don't follow trailing symbolic links when checking file existence

  -0, –null             separate entries with NUL on output

  -S, –statistics       don't search for entries, print statistics about each  used database

  -q, –quiet            report no error messages about reading databases

  -r, –regexp REGEXP    search for basic regexp REGEXP instead of patterns

      –regex            patterns are extended regexps

  -s, –stdio            ignored, for backward compatibility

  -V, –version          print version information

  -w, –wholename        match whole path name (default)

 

grep选项

-a 不要忽略二进制数据。

-A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容。

-b 在显示符合范本样式的那一行之外,并显示该行之前的内容。

-c 计算符合范本样式的列数。

-C<显示列数>或-<显示列数>  除了显示符合范本样式的那一列之外,并显示该列之前后的内容。

-d<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。

-e<范本样式> 指定字符串作为查找文件内容的范本样式。

-E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。

-f<范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。

-F 将范本样式视为固定字符串的列表。

-G 将范本样式视为普通的表示法来使用。

-h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。

-H 在显示符合范本样式的那一列之前,标示该列的文件名称。

-i 忽略字符大小写的差别。

-l 列出文件内容符合指定的范本样式的文件名称。

-L 列出文件内容不符合指定的范本样式的文件名称。

-n 在显示符合范本样式的那一列之前,标示出该列的编号。

-q 不显示任何信息。

-R/-r 此参数的效果和指定“-d recurse”参数相同。

-s 不显示错误信息。

-v 反转查找。

-w 只显示全字符合的列。

-x 只显示全列符合的列。

-y 此参数效果跟“-i”相同。

-o 只输出文件中匹配到的部分。

find 选项命令

-amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算;

-anewer<参考文件或目录>:查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录;

-atime<24小时数>:查找在指定时间曾被存取过的文件或目录,单位以24小时计算;

-cmin<分钟>:查找在指定时间之时被更改过的文件或目录;

-cnewer<参考文件或目录>查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;

-ctime<24小时数>:查找在指定时间之时被更改的文件或目录,单位以24小时计算;

-daystart:从本日开始计算时间;

-depth:从指定目录下最深层的子目录开始查找;

-expty:寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录;

-exec<执行指令>:假设find指令的回传值为True,就执行该指令;

-false:将find指令的回传值皆设为False;

-fls<列表文件>:此参数的效果和指定“-ls”参数类似,但会把结果保存为指定的列表文件;

-follow:排除符号连接;

-fprint<列表文件>:此参数的效果和指定“-print”参数类似,但会把结果保存成指定的列表文件;

-fprint0<列表文件>:此参数的效果和指定“-print0”参数类似,但会把结果保存成指定的列表文件;

-fprintf<列表文件><输出格式>:此参数的效果和指定“-printf”参数类似,但会把结果保存成指定的列表文件;

-fstype<文件系统类型>:只寻找该文件系统类型下的文件或目录;

-gid<群组识别码>:查找符合指定之群组识别码的文件或目录;

-group<群组名称>:查找符合指定之群组名称的文件或目录;

-help或——help:在线帮助;

-ilname<范本样式>:此参数的效果和指定“-lname”参数类似,但忽略字符大小写的差别;

-iname<范本样式>:此参数的效果和指定“-name”参数类似,但忽略字符大小写的差别;

-inum<inode编号>:查找符合指定的inode编号的文件或目录;

-ipath<范本样式>:此参数的效果和指定“-path”参数类似,但忽略字符大小写的差别;

-iregex<范本样式>:此参数的效果和指定“-regexe”参数类似,但忽略字符大小写的差别;

-links<连接数目>:查找符合指定的硬连接数目的文件或目录;

-iname<范本样式>:指定字符串作为寻找符号连接的范本样式;

-ls:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出;

-maxdepth<目录层级>:设置最大目录层级;

-mindepth<目录层级>:设置最小目录层级;

-mmin<分钟>:查找在指定时间曾被更改过的文件或目录,单位以分钟计算;

-mount:此参数的效果和指定“-xdev”相同;

-mtime<24小时数>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算;

-name<范本样式>:指定字符串作为寻找文件或目录的范本样式;

-newer<参考文件或目录>:查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;

-nogroup:找出不属于本地主机群组识别码的文件或目录;

-noleaf:不去考虑目录至少需拥有两个硬连接存在;

-nouser:找出不属于本地主机用户识别码的文件或目录;

-ok<执行指令>:此参数的效果和指定“-exec”类似,但在执行指令之前会先询问用户,若回答“y”或“Y”,则放弃执行命令;

-path<范本样式>:指定字符串作为寻找目录的范本样式;

-perm<权限数值>:查找符合指定的权限数值的文件或目录;

-print:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有“./”字符串;

-print0:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行;

-printf<输出格式>:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式可以自行指定;

-prune:不寻找字符串作为寻找文件或目录的范本样式;

-regex<范本样式>:指定字符串作为寻找文件或目录的范本样式;

-size<文件大小>:查找符合指定的文件大小的文件;

-true:将find指令的回传值皆设为True;

-typ<文件类型>:只寻找符合指定的文件类型的文件;

-uid<用户识别码>:查找符合指定的用户识别码的文件或目录;

-used<日数>:查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算;

-user<拥有者名称>:查找符和指定的拥有者名称的文件或目录;

-version或——version:显示版本信息;

-xdev:将范围局限在先行的文件系统中;

-xtype<文件类型>:此参数的效果和指定“-type”参数类似,差别在于它针对符号连接检查。

 

总结:如果可以在awk中完成工作,不要在C中编写代码,如果sed可以处理此工作,则绝不要在awk中执行操作,如果tr可以 完成此工作,则绝不要使用sed。

          如果cat 能胜任此工作,绝对不要用tr。尽可能避免使用cat。


 

六、监视系统资源

 

PS选项命令

a:显示所有终端机下执行的程序,除了阶段作业领导者之外。

a:显示现行终端机下的所有程序,包括其他用户的程序。

-A:显示所有程序。

-c:显示CLS和PRI栏位。

c:列出程序时,显示每个程序真正的指令名称,而不包含路径,选项或常驻服务的标示。

-C<指令名称>:指定执行指令的名称,并列出该指令的程序的状况。

-d:显示所有程序,但不包括阶段作业领导者的程序。

-e:此选项的效果和指定"A"选项相同。

e:列出程序时,显示每个程序所使用的环境变量。

-f:显示UID,PPIP,C与STIME栏位。

f:用ASCII字符显示树状结构,表达程序间的相互关系。

-g<群组名称>:此选项的效果和指定"-G"选项相同,当亦能使用阶段作业领导者的名称来指定。

g:显示现行终端机下的所有程序,包括群组领导者的程序。

-G<群组识别码>:列出属于该群组的程序的状况,也可使用群组名称来指定。

h:不显示标题列。

-H:显示树状结构,表示程序间的相互关系。

-j或j:采用工作控制的格式显示程序状况。

-l或l:采用详细的格式来显示程序状况。

L:列出栏位的相关信息。

-m或m:显示所有的执行绪。

n:以数字来表示USER和WCHAN栏位。

-N:显示所有的程序,除了执行ps指令终端机下的程序之外。

-p<程序识别码>:指定程序识别码,并列出该程序的状况。

p<程序识别码>:此选项的效果和指定"-p"选项相同,只在列表格式方面稍有差异。

r:只列出现行终端机正在执行中的程序。

-s<阶段作业>:指定阶段作业的程序识别码,并列出隶属该阶段作业的程序的状况。

s:采用程序信号的格式显示程序状况。

S:列出程序时,包括已中断的子程序资料。

-t<终端机编号>:指定终端机编号,并列出属于该终端机的程序的状况。

t<终端机编号>:此选项的效果和指定"-t"选项相同,只在列表格式方面稍有差异。

-T:显示现行终端机下的所有程序。

-u<用户识别码>:此选项的效果和指定"-U"选项相同。

u:以用户为主的格式来显示程序状况。

-U<用户识别码>:列出属于该用户的程序的状况,也可使用用户名称来指定。

U<用户名称>:列出属于该用户的程序的状况。

v:采用虚拟内存的格式显示程序状况。

-V或V:显示版本信息。

-w或w:采用宽阔的格式来显示程序状况。 

x:显示所有程序,不以终端机来区分。

X:采用旧式的Linux i386登陆格式显示程序状况。

-y:配合选项"-l"使用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位 。

-<程序识别码>:此选项的效果和指定"p"选项相同。

–cols<每列字符数>:设置每列的最大字符数。

–columns<每列字符数>:此选项的效果和指定"–cols"选项相同。

–cumulative:此选项的效果和指定"S"选项相同。

–deselect:此选项的效果和指定"-N"选项相同。

–forest:此选项的效果和指定"f"选项相同。

–headers:重复显示标题列。

–help:在线帮助。

–info:显示排错信息。

–lines<显示列数>:设置显示画面的列数。

–no-headers:此选项的效果和指定"h"选项相同,只在列表格式方面稍有差异。

–group<群组名称>:此选项的效果和指定"-G"选项相同。

–Group<群组识别码>:此选项的效果和指定"-G"选项相同。

–pid<程序识别码>:此选项的效果和指定"-p"选项相同。

–rows<显示列数>:此选项的效果和指定"–lines"选项相同。

–sid<阶段作业>:此选项的效果和指定"-s"选项相同。

–tty<终端机编号>:此选项的效果和指定"-t"选项相同。

–user<用户名称>:此选项的效果和指定"-U"选项相同。

–User<用户识别码>:此选项的效果和指定"-U"选项相同。

–version:此选项的效果和指定"-V"选项相同。

–widty<每列字符数>:此选项的效果和指定"-cols"选项相同。

七、rsync  远程文件同步

 

-v, –verbose 详细模式输出。

-q, –quiet 精简输出模式。

-c, –checksum 打开校验开关,强制对文件传输进行校验。

-a, –archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。

-r, –recursive 对子目录以递归模式处理。

-R, –relative 使用相对路径信息。

-b, –backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用–suffix选项来指定不同的备份文件前缀。

–backup-dir 将备份文件(如~filename)存放在在目录下。

-suffix=SUFFIX 定义备份文件前缀。

-u, –update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件,不覆盖更新的文件。

-l, –links 保留软链结。

-L, –copy-links 想对待常规文件一样处理软链结。

–copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结。

–safe-links 忽略指向SRC路径目录树以外的链结。

-H, –hard-links 保留硬链结。

-p, –perms 保持文件权限。

-o, –owner 保持文件属主信息。

-g, –group 保持文件属组信息。

-D, –devices 保持设备文件信息。

-t, –times 保持文件时间信息。

-S, –sparse 对稀疏文件进行特殊处理以节省DST的空间。

-n, –dry-run现实哪些文件将被传输。

-w, –whole-file 拷贝文件,不进行增量检测。

-x, –one-file-system 不要跨越文件系统边界。

-B, –block-size=SIZE 检验算法使用的块尺寸,默认是700字节。

-e, –rsh=command 指定使用rsh、ssh方式进行数据同步。

–rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息。

-C, –cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件。

–existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件。

–delete 删除那些DST中SRC没有的文件。

–delete-excluded 同样删除接收端那些被该选项指定排除的文件。

–delete-after 传输结束以后再删除。

–ignore-errors 及时出现IO错误也进行删除。

–max-delete=NUM 最多删除NUM个文件。

–partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输。

–force 强制删除目录,即使不为空。

–numeric-ids 不将数字的用户和组id匹配为用户名和组名。

–timeout=time ip超时时间,单位为秒。

-I, –ignore-times 不跳过那些有同样的时间和长度的文件。

–size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间。

–modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0。

-T –temp-dir=DIR 在DIR中创建临时文件。

–compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份。

-P 等同于 –partial。

–progress 显示备份过程。

-z, –compress 对备份的文件在传输时进行压缩处理。

–exclude=PATTERN 指定排除不需要传输的文件模式。

–include=PATTERN 指定不排除而需要传输的文件模式。

–exclude-from=FILE 排除FILE中指定模式的文件。

–include-from=FILE 不排除FILE指定模式匹配的文件。

–version 打印版本信息。

–address 绑定到特定的地址。

–config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件。

–port=PORT 指定其他的rsync服务端口。

–blocking-io 对远程shell使用阻塞IO。

-stats 给出某些文件的传输状态。

–progress 在传输时现实传输过程。

–log-format=formAT 指定日志文件格式。

–password-file=FILE 从FILE中得到密码。

–bwlimit=KBPS 限制I/O带宽,KBytes per second。

-h, –help 显示帮助信息。

 

 

 rsync六种工作模式

除此上述几个参数之外,我们还注意到上图中rsync的七个命令格式:如下:

1)rsync [OPTION]… SRC [SRC]… DEST

2)rsync [OPTION]… SRC [SRC]… [USER@]HOST:DEST

3)rsync [OPTION]… SRC [SRC]… [USER@]HOST::DEST

4)rsync [OPTION]… SRC [SRC]… rsync://[USER@]HOST[:PORT]/DEST

5)rsync [OPTION]… [USER@]HOST:SRC [DEST]

6)rsync [OPTION]… [USER@]HOST::SRC [DEST]

7)rsync [OPTION]… rsync://[USER@]HOST[:PORT]/SRC [DEST]

这七个命令格式就是代表rsync六种不同的工作模式,其中第四种和第七种模式没有多大的区别。在这几种模式中第三种和第六种模式是我们经常使用的,特别是第三种模式。

这六种模式总体上可以用两个词进行区分:推送、拉取。

推送就是在客户端上执行rsync命令,目的是把客户端需要同步的文件推送到服务器上。

拉取也是在客户端上执行rsync命令,目的是把服务器上的文件拉取到本地。

注意:无论是推送和拉取,rsync命令都是在客户端执行,只是命令的格式不同而已。

1) rsync [OPTION]… SRC [SRC]… DEST

同步本地文件,从一个目录同步到另外一个目录。如:rsync -avz /data /backup,表示把本地/data目录下的文件同步到本地/backup目录下。

2) rsync [OPTION]… SRC [SRC]… [USER@]HOST:DEST

使用一个远程shell程序(如rsh、ssh)来实现把本地的文件同步到远程机器上。此种方式属于推送方式。如:rsync -avz /data test@192.168.199.247:/backup,表示把本地/data目录下的文件同步到服务器192.168.199.247的/backup目录下。

3) rsync [OPTION]… SRC [SRC]… [USER@]HOST::DEST

把本地的文件同步到远程服务器上,其中DEST表示的是rsync服务器的认证模块名。此种方式属于推送方式。如:rsync -avz /data test@192.168.199.247::backup –password-file=/etc/rsyncd.password,表示把本地/data目录下的文件同步到服务器192.168.199.247的backup模块下path路径下。

4) rsync [OPTION]… SRC [SRC]… rsync://[USER@]HOST[:PORT]/DEST

列出远程机器的文件列表。这类似于ls命令,不过只要在命令中省略掉本地机信息即可。如:rsync -v rsync://test@192.168.199.247/backup,表示在本机列出服务器192.168.199.247的/backup目录下的内容,如下:

5) rsync [OPTION]… [USER@]HOST:SRC [DEST]

把远程机器的文件同步到本地,此种方式属于拉取方式。如:rsync -avz test@192.168.199.247:/backup /data,表示把192.168.199.247的/backup目录下文件同步到本地/data目录下。

6) rsync [OPTION]… [USER@]HOST::SRC [DEST]

把远程机器的文件同步到本地,此种方式属于拉取方式。如:rsync -avz test@192.168.199.247::backup –password-file=/etc/rsyncd.password /data,表示把192.168.199.247的backup模块path路径下的文件同步到本地/data目录下。

 

10-07 11:10