diff --git a/LearnPython3/Test.py b/LearnPython3/Test.py index 4d64b47..5199188 100644 --- a/LearnPython3/Test.py +++ b/LearnPython3/Test.py @@ -9,6 +9,3 @@ def index(): if __name__ == '__main__': app.run() - - - diff --git a/Linux_man_cn/apropos.md b/Linux_man_cn/apropos.md index 41928a8..b386819 100644 --- a/Linux_man_cn/apropos.md +++ b/Linux_man_cn/apropos.md @@ -1,74 +1,33 @@ -apropos -=== +# apropos -在 whatis 数据库中查找字符串 - -## 补充说明 +## 说明 **apropos命令** 在一些特定的包含系统命令的简短描述的数据库文件里查找关键字,然后把结果送到标准输出。  如果你不知道完成某个特定任务所需要命令的名称,可以使用一个关键字通过Linux apropos实用程序来搜索它。该实用程序可以搜索关键字并且显示所有包含匹配项的man页面的简短描述。另外,使用man实用程序和-k(关键字)选项,可以得到和用Linux apropos实用程序相同的结果(实际上是相同的命令)。 -### 语法 - -``` -apropos [-dalhvV] -e|-[w|-r] [-s section] [-m system[,...]] [-M path] [-L locale] -C [file] keyword ... -``` - -### 选项 - -``` --d, --debug:输出调试信息。 --v, --verbose:输出详细的警告信息。 --r, -- regex:将每个keyword作为正则表达式解释。这是默认行为。每个keyword将匹配手册页和描述。 --w, --wildcard:将每个keyword作为shell样式的通配符解释。 --e, --exact:每个keyword将精确匹配手册页名字和描述。 --a, --and:只显示匹配所有keyword的手册页和描述。默认显示匹配任何keyword的项。 --l, --long:不根据终端宽度缩减输出。 --s section, --section section:只查找指定的手册section。 --m system[,...], --systems=system[,...]:用于查找其它操作系统的手册页。 --M path, --manpath=path:指定从其它以冒号分隔的手册页层次查找。默认使用$MANPATH环境变量。这个选项覆盖$MANPATH的内容。 --L locale, --locale=locale:apropos调用C函数setlocale来得到当前本地化信息,包括$LC_MESSAGE和$LANG。使用该选项提供一个locale字符串来临时更改本地化信息。 --C file, --config-file=file:使用这个用户配置文件而不是默认的~/.manpath。 --h, --help:打印帮助信息并退出。 --V, --version:打印版本信息并退出。 -``` - -### 返回值 - -返回0表示成功,1表示用法、语法或配置文件错误,2表示操作错误,16表示没有找到匹配的内容。 - -### 实例 - -``` -[root@localhost ~]# man -k who -at.allow [at] (5) - determine who can submit jobs via at or batch -at.deny [at] (5) - determine who can submit jobs via at or batch -jwhois (1) - client for the whois service -jwhois (rpm) - Internet whois/nicname client. -Net::LDAP::Extension::whoami (3pm) - LDAP Who am I? Operation -w (1) - Show who is logged on and what they are doing -who (1p) - display who is on the system -who (1) - show who is logged on -whoami (1) - print effective userid - -[root@localhost ~]# apropos who -at.allow [at] (5) - determine who can submit jobs via at or batch -at.deny [at] (5) - determine who can submit jobs via at or batch -jwhois (1) - client for the whois service -jwhois (rpm) - Internet whois/nicname client. -Net::LDAP::Extension::WhoAmI (3pm) - LDAP Who am I? Operation -w (1) - Show who is logged on and what they are doing -who (1p) - display who is on the system -who (1) - show who is logged on -whoami (1) - print effective userid -``` +## 选项 -查找手册页名字和描述中包含emacs和vi的手册页: +```info +-d, --debug 输出调试信息 +-v, --verbose 输出详细的警告信息 +-e, --exact 对每个关键词都进行严格匹配的搜索 +-r, --regex 把每个关键词都当作正则表达式解读,默认开启 --regex 选项 +-w, --wildcard 关键词里包含通配符 +-a, --and 要求所有的关键词都同时匹配 +-l, --long 不要把输出按终端宽度截断 +-C, --config-file=文件 使用该用户设置文件 +-L, --locale=区域 定义本次搜索所使用的区域设置 +-m, --systems=系统 use manual pages from other systems +-M, --manpath=路径 设置搜索手册页的路径为“路径”,默认使用$MANPATH环境变量 +-s, --sections=列表, --section=列表 只查找指定的手册section -``` -apropos -a emacs vi +返回值:返回0表示成功,1表示用法、语法或配置文件错误,2表示操作错误,16表示没有找到匹配的内容。 ``` +## 实例 - \ No newline at end of file +```sh +apropos -a emacs vi # 查找手册页名字和描述中包含emacs和vi的手册页 +apropos whatis # 显示和whatis相关的命令 +``` \ No newline at end of file diff --git a/Linux_man_cn/awk.md b/Linux_man_cn/awk.md index 1683966..78efa9f 100644 --- a/Linux_man_cn/awk.md +++ b/Linux_man_cn/awk.md @@ -1,26 +1,46 @@ -# awk +# **awk** ## 说明 -**awk** awk的基本功能是在文件中搜索包含一个或多个模式的行或其他文本单元。当一行与其中一个模式匹配时,将对该行执行特殊操作。 awk中的程序与大多数其他语言中的程序不同,因为awk程序是“数据驱动的”:您描述要使用的数据,然后在找到时执行的操作。大多数其他语言都是“程序性的”。您必须详细描述该计划要采取的每个步骤。使用过程语言时,通常很难清楚地描述程序将处理的数据。出于这个原因,awk程序通常易于读写。 - -## 语法形式 - -```sh -awk [options] 'script' var=value file(s) -awk [options] -f scriptfile var=value file(s) -``` - -## 常用命令选项 - -***-F fs   *** fs指定输入分隔符,fs可以是字符串或正则表达式,如-F: -***-v var=value   *** 赋值一个用户定义变量,将外部变量传递给awk -***-f scripfile  *** 从脚本文件中读取awk命令 -***-m[fr] val   *** 对val值设置内在限制,-mf选项限制分配给val的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。 - -## 模式 - -模式可以是以下任意一个: +**awk** awk的基本功能是在文件中搜索包含一个或多个模式的行或其他文本单元。当一行与其中一个模式匹配时,将对该行执行特殊操作。 awk中的程序与大多数其他语言中的程序不同,因为awk程序是“数据驱动的”:您描述要使用的数据,然后在找到时执行的操作。大多数其他语言都是“程序性的”。您必须详细描述该计划要采取的每个步骤。使用过程语言时,通常很难清楚地描述程序将处理的数据。出于这个原因,awk程序通常易于读写 + +## 选项 + +```info +Usage: awk [POSIX or GNU style options] -f progfile [--] file ... +Usage: awk [POSIX or GNU style options] [--] 'program' file ... +POSIX options:GNU long options: (standard) + -f progfile --file=progfile # 从脚本文件中读取awk命令 + -F fs --field-separator=fs # fs指定输入分隔符,fs可以是字符串或正则表达式 + -v var=val --assign=var=val # 赋值一个用户定义变量,将外部变量传递给awk +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 + -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 + +To report bugs, see node `Bugs' in `gawk.info', which is +section `Reporting Problems and Bugs' in the printed version. + +gawk is a pattern scanning and processing language. +By default it reads standard input and writes standard output +``` + +## pattern + +pattern可以是以下任意一个: * /正则表达式/:使用通配符的扩展集。 * 关系表达式:使用运算符进行操作,可以是字符串或数字的比较测试。 @@ -38,19 +58,6 @@ awk [options] -f scriptfile var=value file(s) ## awk脚本基本结构 -```sh -awk 'BEGIN{ print "start" } pattern{ commands } END{ print "end" }' file -``` - -一个awk脚本通常由:BEGIN语句块、能够使用模式匹配的通用语句块、END语句块3部分组成,这三个部分是可选的。任意一个部分都可以不出现在脚本中,脚本通常是被** 单引号** 或** 双引号** 中,例如: - -```sh -awk 'BEGIN{ i=0 } { i++ } END{ print i }' filename -awk "BEGIN{ i=0 } { i++ } END{ print i }" filename -``` - -## awk的工作原理 - ```sh awk 'BEGIN{ commands } pattern{ commands } END{ commands }' ``` @@ -65,10 +72,18 @@ awk 'BEGIN{ commands } pattern{ commands } END{ commands }' **pattern语句块** 中的通用命令是最重要的部分,它也是可选的。如果没有提供pattern语句块,则默认执行`{ print }`,即打印每一个读取到的行,awk读取的每一行都会执行该语句块。 -## 示例 +一个awk脚本通常由:BEGIN语句块、能够使用模式匹配的通用语句块、END语句块3部分组成,这三个部分是可选的。任意一个部分都可以不出现在脚本中,脚本通常是被**单引号**或**双引号**中,例如: + +```sh +awk 'BEGIN{ i=0 } { i++ } END{ print i }' filename +awk "BEGIN{ i=0 } { i++ } END{ print i }" filename +``` + +## 实例 ```sh echo -e "A line 1nA line 2" | awk 'BEGIN{ print "Start" } { print } END{ print "End" }' +输出: Start A line 1 A line 2 @@ -79,14 +94,14 @@ End ```sh echo | awk '{ var1="v1"; var2="v2"; var3="v3"; print var1,var2,var3; }' -v1 v2 v3 +输出:v1 v2 v3 ``` 双引号拼接使用: ```sh echo | awk '{ var1="v1"; var2="v2"; var3="v3"; print var1"="var2"="var3; }' -v1=v2=v3 +输出:v1=v2=v3 ``` { }类似一个循环体,会对文件中的每一行进行迭代,通常变量初始化语句(如:i=0)以及打印文件头部的语句放入BEGIN语句块中,将打印的结果等语句放在END语句块中。 @@ -97,35 +112,32 @@ v1=v2=v3 可自定义变量,变量可以是字符串或数值。输入字段的内容也可以分配给变量。为了更精确地控制输出格式而不是打印通常提供的输出格式,请使用printf。 printf命令可用于指定每个项目使用的字段宽度,以及数字的各种格式选择(例如要使用的输出基数,是否打印指数,是否打印标记以及数字位数在小数点后打印)。这是通过提供一个名为格式字符串的字符串来完成的,该字符串控制打印其他参数的方式和位置。 ```sh -** $n**当前记录的第n个字段,比如n为1表示第一个字段,n为2表示第二个字段。 -** $0**这个变量包含执行过程中当前行的文本内容。 -[N]**ARGC**命令行参数的数目。 -[G]**ARGIND**命令行中当前文件的位置(从0开始算)。 -[N]**ARGV**包含命令行参数的数组。 -[G]**CONVFMT**数字转换格式(默认值为%.6g)。 -[P]**ENVIRON**环境变量关联数组。 -[N]**ERRNO**最后一个系统错误的描述。 -[G]**FIELDWIDTHS**字段宽度列表(用空格键分隔)。 -[A]**FILENAME**当前输入文件的名。 -[P]**FNR**同NR,但相对于当前文件。 -[A]**FS(fields separator)**字段分隔符(此变量预定义为一个或多个空格或制表符)。 -[G]**IGNORECASE**如果为真,则进行忽略大小写的匹配。 -[A]**NF**表示字段数,在执行过程中对应于当前的字段数。 -[A]**NR(number of records)**表示记录数,在执行过程中对应于当前的行号。 -[A]**OFMT**数字的输出格式(默认值是%.6g)。 -[A]**OFS(output fields separator)**输出字段分隔符(默认值是一个空格)。 -[A]**ORS(output record separator)**输出记录分隔符(默认值是一个换行符)。 -[A]**RS**记录分隔符(默认是一个换行符)。 -[N]**RSTART**由match函数所匹配的字符串的第一个位置。 -[N]**RLENGTH**由match函数所匹配的字符串的长度。 -[N]**SUBSEP**数组下标分隔符(默认值是34)。 -``` - -示例 - -FS示例 - -```sh +$n 当前记录的第n个字段,比如n为1表示第一个字段,n为2表示第二个字段 +$0 这个变量包含执行过程中当前行的文本内容 +[N] ARGC 命令行参数的数目 +[G] ARGIND 命令行中当前文件的位置(从0开始算) +[N] ARGV 包含命令行参数的数组 +[G] CONVFMT 数字转换格式(默认值为%.6g) +[P] ENVIRON 环境变量关联数组 +[N] ERRNO 最后一个系统错误的描述 +[G] FIELDWIDTHS 字段宽度列表(用空格键分隔) +[A] FILENAME 当前输入文件的名 +[P] FNR 同NR,但相对于当前文件 +[A] FS(fields separator) 字段分隔符(此变量预定义为一个或多个空格或制表符) +[G] IGNORECASE 如果为真,则进行忽略大小写的匹配 +[A] NF 表示字段数,在执行过程中对应于当前的字段数 +[A] NR(number of records) 表示记录数,在执行过程中对应于当前的行号 +[A] OFMT 数字的输出格式(默认值是%.6g) +[A] OFS(output fields separator) 输出字段分隔符(默认值是一个空格) +[A] ORS(output record separator) 输出记录分隔符(默认值是一个换行符) +[A] RS 记录分隔符(默认是一个换行符) +[N] RSTART 由match函数所匹配的字符串的第一个位置 +[N] RLENGTH 由match函数所匹配的字符串的长度 +[N] SUBSEP 数组下标分隔符(默认值是34) +``` + +```sh +# FS示例 awk FS变量用于设置每个记录的字段分割符,其可以设置为任何单个字符或者正则表达式 FS可以更改任意次数,会保留其值直到明确更改,如果想更改字段分割符,在阅读行之前更改,固此改变会影响阅读的内容 @@ -155,9 +167,8 @@ awk -F ':' '{print $3,$4;}' /etc/passwd awk -F ':' 'BEGIN{OFS ="=";}{print $3,$4;}' /etc/passwd ``` -awk RS示例:记录分割符变量 - ```sh +# RS示例:记录分割符变量 awk RS定义了一条线,awk默认逐行读取。将信息存储在一个文件中,每个记录由两个新行隔开,每个字段用一个新行分割 打印姓名和第二行数字 @@ -173,9 +184,6 @@ BEGIN { } awk -f student.awk student.txt - - - ``` ```sh @@ -185,78 +193,43 @@ Line No:2, No of fields:3 $0=line2 f4 f5 $1=line2 $2=f4 $3=f5 Line No:3, No of fields:3 $0=line3 f6 f7 $1=line3 $2=f6 $3=f7 ``` -使用`print $NF`可以打印出一行中的最后一个字段,使用`$(NF-1)`则是打印倒数第二个字段,其他以此类推: - ```sh +# 使用`print $NF`可以打印出一行中的最后一个字段,使用`$(NF-1)`则是打印倒数第二个字段,其他以此类推: echo -e "line1 f2 f3n line2 f4 f5" | awk '{print $NF}' +输出: f3 f5 -``` - -```sh +------------------------------------------------------------- echo -e "line1 f2 f3n line2 f4 f5" | awk '{print $(NF-1)}' +输出: f2 f4 - ``` -打印每一行的第二和第三个字段: - ```sh -awk '{ print $2,$3 }' filename -``` - -统计文件中的行数: - -```sh -awk 'END{ print NR }' filename -``` - -以上命令只使用了END语句块,在读入每一行的时,awk会将NR更新为对应的行号,当到达最后一行NR的值就是最后一行的行号,所以END语句块中的NR就是文件的行数。 +awk '{ print $2,$3 }' filename # 打印每一行的第二和第三个字段 +awk 'END{ print NR }' filename # 统计文件中的行数 +# 以上命令只使用了END语句块,在读入每一行的时,awk会将NR更新为对应的行号,当到达最后一行NR的值就是最后一行的行号,所以END语句块中的NR就是文件的行数。 -一个每一行中第一个字段值累加的例子: - -```sh -seq 5 | awk 'BEGIN{ sum=0; print "总和:" } { print $1"+"; sum+=$1 } END{ print "等于"; print sum }' -总和: -1+ -2+ -3+ -4+ -5+ -等于 -15 +seq 5 | awk 'BEGIN{ sum=0; print "总和:" } { print $1"+"; sum+=$1 } END{ print "等于"; print sum }' # 一个每一行中第一个字段值累加的例子 ``` ## 将外部变量值传递给awk -借助** `-v`选项** ,可以将外部值(并非来自stdin)传递给awk: - ```sh +# 借助-v选项,可以将外部值(并非来自stdin)传递给awk VAR=10000 echo | awk -v VARIABLE=$VAR '{ print VARIABLE }' -``` - -另一种传递外部变量方法: -```sh +# 另一种传递外部变量方法 var1="aaa" var2="bbb" echo | awk '{ print v1,v2 }' v1=$var1 v2=$var2 -``` - -当输入来自于文件时使用: - -```sh -awk '{ print v1,v2 }' v1=$var1 v2=$var2 filename -``` - -以上方法中,变量之间用空格分隔作为awk的命令行参数跟随在BEGIN、{}和END语句块之后。 -## 查找进程pid +awk '{ print v1,v2 }' v1=$var1 v2=$var2 filename # 当输入来自于文件时使用 +# 以上方法中,变量之间用空格分隔作为awk的命令行参数跟随在BEGIN、{}和END语句块之后。 -```sh -netstat -antup | grep 7770 | awk '{ print $NF NR}' | awk '{ print $1}' +netstat -antup | grep 7770 | awk '{ print $NF NR}' | awk '{ print $1}' # 查找进程pid ``` ## awk运算与判断 @@ -273,23 +246,18 @@ netstat -antup | grep 7770 | awk '{ print $NF NR}' | awk '{ print $1}' | ^** * | 求幂 | | ++ -- | 增加或减少,作为前缀或后缀 | -例: - ```sh awk 'BEGIN{a="b";print a++,++a;}' 0 2 +# 注意:所有用作算术运算符进行操作,操作数自动转为数值,所有非数值都变为0 ``` -注意:所有用作算术运算符进行操作,操作数自动转为数值,所有非数值都变为0 - ## 赋值运算符 | 运算符 | 描述 | | ----- | ---- | | = += -= *= /= %= ^=** = | 赋值语句 | -例: - ```sh a+=5; 等价于:a=a+5; 其它同类 ``` @@ -301,8 +269,6 @@ a+=5; 等价于:a=a+5; 其它同类 | `\|\|` | 逻辑或 | | && | 逻辑与 | -例: - ```sh awk 'BEGIN{a=1;b=2;print (a>5 && b<=2),(a>5 || b<=2);}' 0 1 @@ -314,8 +280,6 @@ awk 'BEGIN{a=1;b=2;print (a>5 && b<=2),(a>5 || b<=2);}' | ----- | ---- | | ~ ~! | 匹配正则表达式和不匹配正则表达式 | -例: - ```sh awk 'BEGIN{a="100testa";if(a ~ /^100*/){print "ok";}}' ok @@ -327,15 +291,12 @@ ok | ----- | ---- | | < <= > >= != == | 关系运算符 | -例: - ```sh awk 'BEGIN{a=11;if(a >= 9){print "ok";}}' ok +# 注意:> < 可以作为字符串比较,也可以用作数值比较,关键看操作数如果是字符串就会转换为字符串比较。两个都为数字才转为数值比较。字符串比较:按照ASCII码顺序比较。 ``` -注意:> < 可以作为字符串比较,也可以用作数值比较,关键看操作数如果是字符串就会转换为字符串比较。两个都为数字才转为数值比较。字符串比较:按照ASCII码顺序比较。 - ## 其它运算符 | 运算符 | 描述 | @@ -345,27 +306,18 @@ ok | ?: | C条件表达式 | | in | 数组中是否存在某键值 | -例: - ```sh -awk 'BEGIN{a="b";print a=="b"?"ok":"err";}' -ok -``` +awk 'BEGIN{a="b";print a=="b"?"ok":"err";}' # 输出:ok -```sh -awk 'BEGIN{a="b";arr[0]="b";arr[1]="c";print (a in arr);}' -0 -``` +awk 'BEGIN{a="b";arr[0]="b";arr[1]="c";print (a in arr);}' # 输出:0 -```sh -awk 'BEGIN{a="b";arr[0]="b";arr["b"]="c";print (a in arr);}' -1 +awk 'BEGIN{a="b";arr[0]="b";arr["b"]="c";print (a in arr);}' # 输出:1 ``` ## 运算级优先级表 -!级别越高越优先 -级别越高越优先 +* !级别越高越优先 +* 级别越高越优先 ## awk高级输入输出 diff --git a/Linux_man_cn/bzip2.md b/Linux_man_cn/bzip2.md index 6598b50..0dade95 100644 --- a/Linux_man_cn/bzip2.md +++ b/Linux_man_cn/bzip2.md @@ -1,128 +1,55 @@ -bzip2 -=== +# **bzip2** -将文件压缩成bz2格式 +## 说明 -## 补充说明 +**bzip2命令** 用于创建和管理(包括解压缩)“.bz2”格式的压缩包。我们遇见Linux压缩打包方法有很多种,以下讲解了Linux压缩打包方法中的Linux bzip2命令的多种范例供大家查看,相信大家看完后会有很多收获 -**bzip2命令** 用于创建和管理(包括解压缩)“.bz2”格式的压缩包。我们遇见Linux压缩打包方法有很多种,以下讲解了Linux压缩打包方法中的Linux bzip2命令的多种范例供大家查看,相信大家看完后会有很多收获。 +## 选项 -### 语法 +```info +用法: bzip2 [flags and input files in any order] -``` -bzip2(选项)(参数) -``` +-d --decompress 强制执行解压缩 +-z --compress 强制执行压缩 +-k --keep bzip2在压缩或解压缩后,会删除原始文件。若要保留原始文件,请使用此参数 +-f --force bzip2在压缩或解压缩时,覆盖已存在文件或目录 +-t --test 测试.bz2压缩文件的完整性 +-c --stdout 将压缩与解压缩的结果送到标准输出 +-q --quiet suppress noncritical error messages +-v --verbose be verbose (a 2nd -v gives more) +-L --license 显示软件version & license +-V --version 显示软件version & license +-s --small 降低程序执行时内存的使用量(at most 2500k) +-1 .. -9 set block size to 100k .. 900k +--fast alias for -1 +--best alias for -9 -### 选项 - -``` --c或——stdout:将压缩与解压缩的结果送到标准输出; --d或——decompress:执行解压缩; --f或-force:bzip2在压缩或解压缩时,若输出文件与现有文件同名,预设不会覆盖现有文件。若要覆盖。请使用此参数; --h或——help:在线帮助; --k或——keep:bzip2在压缩或解压缩后,会删除原始文件。若要保留原始文件,请使用此参数; --s或——small:降低程序执行时内存的使用量; --t或——test:测试.bz2压缩文件的完整性; --v或——verbose:压缩或解压缩文件时,显示详细的信息; --z或——compress:强制执行压缩; --V或——version:显示版本信息; ---repetitive-best:若文件中有重复出现的资料时,可利用此参数提高压缩效果; ---repetitive-fast:若文件中有重复出现的资料时,可利用此参数加快执行效果。 ``` -### 参数 - -文件:指定要压缩的文件。 - -### 实例 - - **压缩指定文件filename:** +## 实例 -``` +```sh +# 压缩指定文件filename bzip2 filename -或 bzip2 -z filename -``` - -这里,压缩的时候不会输出,会将原来的文件filename给删除,替换成filename.bz2.如果以前有filename.bz2则不会替换并提示错误(如果想要替换则指定-f选项,例如`bzip2 -f filename`;如果filename是目录则也提醒错误不做任何操作;如果filename已经是压过的了有bz2后缀就提醒一下,不再压缩,没有bz2后缀会再次压缩。 - - **解压指定的文件filename.bz2:** +# 这里压缩的时候不会输出,会将原来的文件filename给删除,替换成filename.bz2.如果以前有filename.bz2则不会替换并提示错误(如果想要替换则指定-f选项,例如`bzip2 -f filename`;如果filename是目录则也提醒错误不做任何操作;如果filename已经是压过的了有bz2后缀就提醒一下,不再压缩,没有bz2后缀会再次压缩 -``` +# 解压指定的文件filename.bz2 bzip2 -d filename.bz2 -或 bunzip2 filename.bz2 -``` - -这里,解压的时候没标准输出,会将原来的文件filename.bz2给替换成filename。如果以前有filename则不会替换并提示错误(如果想要替换则指定`-f`选项,例如`bzip2 -df filename.bz2`。 - - **压缩解压的时候将结果也输出:** - -``` -$bzip2 -v filename -``` - -输入之后,输出如下: - -``` -filename: 0.119:1, 67.200 bits/byte, -740.00% saved, 5 in, 42 out. -``` - -这里,加上`-v`选项就会输出了,只用压缩举例了,解压的时候同理`bzip2 -dv filename.bz2`不再举例了。 - - **模拟解压实际并不解压:** - -``` -bzip2 -tv filename.bz2 -``` +# 这里解压的时候没标准输出,会将原来的文件filename.bz2给替换成filename。如果以前有filename则不会替换并提示错误(如果想要替换则指定`-f`选项,例如`bzip2 -df filename.bz2` -输入之后,输出如下: +# 压缩解压的时候将结果也输出;加上`-v`选项就会输出了,只用压缩举例了,解压的时候同理`bzip2 -dv filename.bz2` +bzip2 -v filename -``` -filename.bz2: ok -``` - -这里,`-t`指定要进行模拟解压,不实际生成结果,也就是说类似检查文件,当然就算目录下面有filename也不会有什么错误输出了,因为它根本不会真的解压文件。为了在屏幕上输出,这里加上`-v`选项了,如果是真的解压`bzip2 -dv filename.bz2`则输出的是把"ok"替换成了"done"。 - - **压缩解压的时候,除了生成结果文件,将原来的文件也保存:** - -``` -bzip2 -k filename -``` - -这里,加上`-k`就保存原始的文件了,否则原始文件会被结果文件替代。只用压缩举例了,解压的时候同理`$bzip2 -dk filename.bz2`不再举例了。 - - **解压到标准输出:** - -``` -bzip2 -dc filename.bz2 -``` - -输入之后,输出如下: - -``` -hahahhaahahha -``` - -这里,使用`-c`指定到标准输出,输出的是文件filename的内容,不会将filename.bz2删除。 - - **压缩到标准输出:** - -``` -bzip2 -c filename -bzip2: I won't write compressed data to a terminal. -bzip2: For help, type: `bzip2 --help'. -``` - -这里,使用`-c`指定压缩到标准输出不删除原有文件,不同的是,压缩后的文件无法输出到标准输出。 - - **使用bzip2的时候将所有后面的看作文件(即使文件名以'-'开头):** - -``` -bzip2 -- -myfilename -``` +bzip2 -tv filename.bz2 # 模拟解压实际并不解压 +# `-t`指定要进行模拟解压,不实际生成结果,也就是说类似检查文件,当然就算目录下面有filename也不会有什么错误输出了,因为它根本不会真的解压文件。为了在屏幕上输出,这里加上`-v`选项了,如果是真的解压`bzip2 -dv filename.bz2`则输出的是把"ok"替换成了"done" -这里主要是为了防止文件名中`-`产生以为是选项的歧义。 +bzip2 -k filename # 压缩解压的时候,除了生成结果文件,将原来的文件也保存;加上`-k`就保存原始的文件了,否则原始文件会被结果文件替代。只用压缩举例了,解压的时候同理`$bzip2 -dk filename.bz2`不再举例了 +bzip2 -dc filename.bz2 # 解压到标准输出;使用`-c`指定到标准输出,输出的是文件filename的内容,不会将filename.bz2删除 +bzip2 -dc dir.tar.bz2 | tar -x # 展开压缩包,对tar.gz文件使用gzip而不是bzip2 - \ No newline at end of file +bzip2 -c filename # 压缩到标准输出;使用`-c`指定压缩到标准输出不删除原有文件,不同的是,压缩后的文件无法输出到标准输出 +bzip2 -- -myfilename # 使用bzip2的时候将所有后面的看作文件(即使文件名以'-'开头);为了防止文件名中`-`产生以为是选项的歧义 +``` \ No newline at end of file diff --git a/Linux_man_cn/cd.md b/Linux_man_cn/cd.md index 78c5adf..1ffaad8 100644 --- a/Linux_man_cn/cd.md +++ b/Linux_man_cn/cd.md @@ -1,36 +1,24 @@ -cd -=== +# **cd** -切换用户当前工作目录 +## 说明 -## 补充说明 +**cd命令** 用来切换工作目录至dirname。 其中dirName表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的home directory(也就是刚login时所在的目录)。另外,`~`也表示为home directory的意思,`.`则是表示目前所在的目录,`..`则表示目前目录位置的上一层目录 -**cd命令** 用来切换工作目录至dirname。 其中dirName表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的home directory(也就是刚login时所在的目录)。另外,`~`也表示为home directory的意思,`.`则是表示目前所在的目录,`..`则表示目前目录位置的上一层目录。 +## 选项 -### 语法 - -``` -cd (选项) (参数) -``` - -### 选项 - -``` +```info -p 如果要切换到的目标目录是一个符号连接,直接切换到符号连接指向的目标目录 --L 如果要切换的目标目录是一个符号的连接,直接切换到字符连接名代表的目录,而非符号连接所指向的目标目录。 -- 当仅实用"-"一个选项时,当前工作目录将被切换到环境变量"OLDPWD"所表示的目录。 -``` - -### 实例 - -``` -cd 进入用户主目录; -cd ~ 进入用户主目录; -cd - 返回进入此目录之前所在的目录; -cd .. 返回上级目录(若当前目录为“/“,则执行完后还在“/";".."为上级目录的意思); -cd ../.. 返回上两级目录; -cd !$ 把上个命令的参数作为cd参数使用。 +-L 如果要切换的目标目录是一个符号的连接,直接切换到字符连接名代表的目录,而非符号连接所指向的目标目录 +- 当仅实用"-"一个选项时,当前工作目录将被切换到环境变量"OLDPWD"所表示的目录 ``` +## 实例 - \ No newline at end of file +```sh +cd ~ # 进入用户主目录 +cd - # 返回进入此目录之前所在的目录 +cd .. # 返回上级目录(若当前目录为“/“,则执行完后还在“/";".."为上级目录的意思) +cd ../.. # 返回上两级目录 +cd !$ # 把上个命令的参数作为cd参数使用 +cd dir && command # 进入目录dir,执行命令command然后回到当前目录 +``` \ No newline at end of file diff --git a/Linux_man_cn/echo.md b/Linux_man_cn/echo.md index 7cfb92e..af7724c 100644 --- a/Linux_man_cn/echo.md +++ b/Linux_man_cn/echo.md @@ -4,11 +4,10 @@ **echo命令** 用于在shell中打印shell变量的值,或者直接输出指定的字符串。linux的echo命令,在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的,因此有必要了解下echo的用法echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。 -## 描述 - - echo [SHORT-OPTION] ... [STRING] - echo LONG-OPTION +## 选项 +echo [SHORT-OPTION] ... [STRING] +echo LONG-OPTION 使用`-e`选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出: * \a 发出警告声 @@ -28,34 +27,20 @@ ## 实例 -用echo命令打印带有色彩的文字: +```sh +echo "I live in `locale territory`" # 从locale数据库中展开信息 -## 文字色: +用echo命令打印带有色彩的文字: -```sh +## 文字色:# 颜色码:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37 echo -e "\e[1;31mThis is red text\e[0m" -This is red text(粉红色字体) -``` * `\e[1;31m` 将颜色设置为红色 * `\e[0m` 将颜色重新置回 -颜色码:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37 - -## 背景色: - -```sh +## 背景色:# 颜色码:重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,洋红=45,青色=46,白色=47 echo -e "\e[1;42mGreed Background\e[0m" -Greed Background(绿色背景) -``` - -颜色码:重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,洋红=45,青色=46,白色=47 -## 文字闪动: - -```sh +## 文字闪动:# 红色数字处还有其他数字参数:0 关闭所有属性、1 设置高亮度(加粗)、4 下划线、5 闪烁、7 反显、8 消隐 echo -e "\033[37;31;5mMySQL Server Stop...\033[39;49;0m" -MySQL Server Stop...(红色字体并闪烁) ``` - -红色数字处还有其他数字参数:0 关闭所有属性、1 设置高亮度(加粗)、4 下划线、5 闪烁、7 反显、8 消隐 diff --git a/Linux_man_cn/find.md b/Linux_man_cn/find.md index 9ab1822..07d6a09 100644 --- a/Linux_man_cn/find.md +++ b/Linux_man_cn/find.md @@ -1,136 +1,142 @@ -find -=== +# **find** ```txt 使用find和xargs可能需要系统查找具有某一特征的文件,例如文件权限、文件属主、文件长度、文件类型等,出于安全性考虑,一般系统管理任务只是为了找出一个知道存放在哪里的文件,find可以遍历当前目录甚至整个文件系统查找文件或目录。即使系统中含有网络文件系统(NFS),find命令在该文件系统中同样有效,只要你具有相应的权限。 ``` -## 补充说明 +## 说明 **find命令** 用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。 -### 语法 - -```sh -find(选项)(参数) +## 语法 + +```info +用法: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression] + +默认路径为当前目录;默认表达式为 -print +表达式可能由下列成份组成:操作符、选项、测试表达式以及动作: +操作符 (优先级递减;未做任何指定时默认使用 -and): +( EXPR ) ! EXPR -not EXPR EXPR1 -a EXPR2 EXPR1 -and EXPR2 +EXPR1 -o EXPR2 EXPR1 -or EXPR2 EXPR1 , EXPR2 + +positional options (always true): -daystart -follow -regextype + +normal options (always true, specified before other expressions): + -depth --help -maxdepth LEVELS -mindepth LEVELS -mount -noleaf + --version -xautofs -xdev -ignore_readdir_race -noignore_readdir_race + +比较测试 (N 可以是 +N 或 -N 或 N): -amin N -anewer FILE -atime N -cmin N + -cnewer 文件 -ctime N -empty -false -fstype 类型 -gid N -group 名称 + -ilname 匹配模式 -iname 匹配模式 -inum N -ipath 匹配模式 -iregex 匹配模式 + -links N -lname 匹配模式 -mmin N -mtime N -name 匹配模式 -newer 文件 + -nouser -nogroup -path 匹配模式 -perm [+-]访问模式 -regex 匹配模式 + -readable -writable -executable + -wholename 匹配模式 -size N[bcwkMG] -true -type [bcdpflsD] -uid N + -used N -user 用户名 -xtype [bcdpfls] + -context 文本 +操作: -delete -print0 -printf 格式 -fprintf 文件 格式 -print + -fprint0 文件 -fprint 文件 -ls -fls 文件 -prune -quit + -exec 命令 ; -exec 命令 {} + -ok 命令 + -execdir 命令 ; -execdir 命令 {} + -okdir 命令 find的使用格式如下: -$ find <指定目录> <指定条件> <指定动作> -- <指定目录>: 所要搜索的目录及其所有子目录。默认为当前目录。 -- <指定条件>: 所要搜索的文件的特征。 -- <指定动作>: 对搜索结果进行特定的处理。 +find <指定目录> <指定条件> <指定动作> + - <指定目录>: 所要搜索的目录及其所有子目录。默认为当前目录。 + - <指定条件>: 所要搜索的文件的特征。 + - <指定动作>: 对搜索结果进行特定的处理。 find 命令格式: 1、find命令的一般形式为; 2、find命令的参数; 3、find命令选项; 4、使用exec或ok来执行shell命令; -``` -```sh -Find命令的一般形式为: - find pathname -options [-print -exec -ok] -该命令的参数解释: - pathname find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。 - -print find命令将匹配的文件输出到标准输出。 - -exec find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'comm- - and'{}\;,注意{}和\;之间的空格。 - -ok和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。 -``` +Find命令的一般形式为:find pathname -options [-print -exec -ok] -### 选项 +该命令的参数解释: +pathname find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。 +-print find命令将匹配的文件输出到标准输出。 +-exec find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'comm-and'{}\;,注意{}和\;之间的空格。 +-ok和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,会给出提示,让用户来确定是否执行。 +``` + +## 选项 + +```info +-amin<分钟> 查找在指定时间曾被存取过的文件或目录,单位以分钟计算; +-anewer<参考文件或目录> 查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录; +-atime<24小时数> 查找在指定时间曾被存取过的文件或目录,单位以24小时计算; +-cmin<分钟> 查找在指定时间之时被更改过的文件或目录; +-cnewer<参考文件或目录> 查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录; +-ctime<24小时数> 查找在指定时间之时被更改的文件或目录,单位以24小时计算; +-daystart 从本日开始计算时间; +-depth 从指定目录下最深层的子目录开始查找; +-empty 寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录; +-exec<执行指令> 假设find指令的回传值为True,就执行该指令; +-false 将find指令的回传值皆设为False; +-fls<列表文件> 此参数的效果和指定“-ls”参数类似,但会把结果保存为指定的列表文件; +-follow 排除符号连接;如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。(常用选项) +-fprint<列表文件> 此参数的效果和指定“-print”参数类似,但会把结果保存成指定的列表文件; +-fprint0<列表文件> 此参数的效果和指定“-print0”参数类似,但会把结果保存成指定的列表文件; +-fprintf<列表文件><输出格式> 此参数的效果和指定“-printf”参数类似,但会把结果保存成指定的列表文件; +-fstype<文件系统类型> 只寻找该文件系统类型下的文件或目录;(常用选项) +-gid<群组识别码> 查找符合指定之群组识别码的文件或目录; +-group<群组名称> 查找符合指定之群组名称的文件或目录;(常用选项) +-ilname<范本样式> 此参数的效果和指定“-lname”参数类似,但忽略字符大小写的差别; +-iname<范本样式> 此参数的效果和指定“-name”参数类似,但忽略字符大小写的差别; +-inum 查找符合指定的inode编号的文件或目录; +-ipath<范本样式> 此参数的效果和指定“-path”参数类似,但忽略字符大小写的差别; +-iregex<范本样式> 此参数的效果和指定“-regexe”参数类似,但忽略字符大小写的差别; +-links<连接数目> 查找符合指定的硬连接数目的文件或目录; +-iname<范本样式> 指定字符串作为寻找符号连接的范本样式; +-ls 假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出; +-maxdepth<目录层级> 设置最大目录层级; +-mindepth<目录层级> 设置最小目录层级; +-mmin<分钟> 查找在指定时间曾被更改过的文件或目录,单位以分钟计算; +-mount 此参数的效果和指定“-xdev”相同;在查找文件时不跨越文件系统mount点。(常用选项) +-mtime<24小时数> 查找在指定时间曾被更改过的文件或目录,单位以24小时计算;-mtime-n+n按照文件的更改时间来查找文件,-n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前。(常用选项) +-name<范本样式> 指定字符串作为寻找文件或目录的范本样式;(常用选项) +-newer<参考文件或目录> 查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;-newerfile1!file2 查找更改时间比文件file1新但比文件file2旧的文件。(常用选项) +-nogroup 找出不属于本地主机群组识别码的文件或目录;(常用选项) +-noleaf 不去考虑目录至少需拥有两个硬连接存在; +-nouser 找出不属于本地主机用户识别码的文件或目录;(常用选项) +-ok<执行指令> 此参数的效果和指定“-exec”类似,但在执行指令之前会先询问用户,若回答“y”或“Y”,则放弃执行命令; +-path<范本样式> 指定字符串作为寻找目录的范本样式; +-perm<权限数值> 查找符合指定的权限数值的文件或目录;(常用选项) +-print 假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有“./”字符串; +-print0 假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行; +-printf<输出格式> 假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式可以自行指定; +-prune 不寻找字符串作为寻找文件或目录的范本样式;如果同时使用了-depth选项,那么-prune选项将被find命令忽略。(常用选项) +-regex<范本样式> 指定字符串作为寻找文件或目录的范本样式; +-size<文件大小> 查找符合指定的文件大小的文件; +-true 将find指令的回传值皆设为True; +-type<文件类型> 只寻找符合指定的文件类型的文件;(常用选项) -```sh --amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算; --anewer<参考文件或目录>:查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录; --atime<24小时数>:查找在指定时间曾被存取过的文件或目录,单位以24小时计算; --cmin<分钟>:查找在指定时间之时被更改过的文件或目录; --cnewer<参考文件或目录>查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录; --ctime<24小时数>:查找在指定时间之时被更改的文件或目录,单位以24小时计算; --daystart:从本日开始计算时间; --depth:从指定目录下最深层的子目录开始查找; --empty:寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录; --exec<执行指令>:假设find指令的回传值为True,就执行该指令; --false:将find指令的回传值皆设为False; --fls<列表文件>:此参数的效果和指定“-ls”参数类似,但会把结果保存为指定的列表文件; --follow:排除符号连接;如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。(常用选项) --fprint<列表文件>:此参数的效果和指定“-print”参数类似,但会把结果保存成指定的列表文件; --fprint0<列表文件>:此参数的效果和指定“-print0”参数类似,但会把结果保存成指定的列表文件; --fprintf<列表文件><输出格式>:此参数的效果和指定“-printf”参数类似,但会把结果保存成指定的列表文件; --fstype<文件系统类型>:只寻找该文件系统类型下的文件或目录;(常用选项) --gid<群组识别码>:查找符合指定之群组识别码的文件或目录; --group<群组名称>:查找符合指定之群组名称的文件或目录;(常用选项) --help或——help:在线帮助; --ilname<范本样式>:此参数的效果和指定“-lname”参数类似,但忽略字符大小写的差别; --iname<范本样式>:此参数的效果和指定“-name”参数类似,但忽略字符大小写的差别; --inum:查找符合指定的inode编号的文件或目录; --ipath<范本样式>:此参数的效果和指定“-path”参数类似,但忽略字符大小写的差别; --iregex<范本样式>:此参数的效果和指定“-regexe”参数类似,但忽略字符大小写的差别; --links<连接数目>:查找符合指定的硬连接数目的文件或目录; --iname<范本样式>:指定字符串作为寻找符号连接的范本样式; --ls:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出; --maxdepth<目录层级>:设置最大目录层级; --mindepth<目录层级>:设置最小目录层级; --mmin<分钟>:查找在指定时间曾被更改过的文件或目录,单位以分钟计算; --mount:此参数的效果和指定“-xdev”相同;在查找文件时不跨越文件系统mount点。(常用选项) --mtime<24小时数>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算;-mtime-n+n按照文件的更改时间来查找文件,-n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前。(常用选项) --name<范本样式>:指定字符串作为寻找文件或目录的范本样式;(常用选项) --newer<参考文件或目录>:查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;-newerfile1!file2查找更改时间比文件file1新但比文件file2旧的文件。(常用选项) --nogroup:找出不属于本地主机群组识别码的文件或目录;(常用选项) --noleaf:不去考虑目录至少需拥有两个硬连接存在; --nouser:找出不属于本地主机用户识别码的文件或目录;(常用选项) --ok<执行指令>:此参数的效果和指定“-exec”类似,但在执行指令之前会先询问用户,若回答“y”或“Y”,则放弃执行命令; --path<范本样式>:指定字符串作为寻找目录的范本样式; --perm<权限数值>:查找符合指定的权限数值的文件或目录;(常用选项) --print:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有“./”字符串; --print0:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行; --printf<输出格式>:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式可以自行指定; --prune:不寻找字符串作为寻找文件或目录的范本样式;如果同时使用了-depth选项,那么-prune选项将被find命令忽略。(常用选项) --regex<范本样式>:指定字符串作为寻找文件或目录的范本样式; --size<文件大小>:查找符合指定的文件大小的文件; --true:将find指令的回传值皆设为True; --type<文件类型>:只寻找符合指定的文件类型的文件;(常用选项) 诸如: - b-块设备文件。 - d-目录。 - c-字符设备文件。 - p-管道文件。 - l-符号链接文件。 - f-普通文件。 --uid<用户识别码>:查找符合指定的用户识别码的文件或目录; --used<日数>:查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算; + b-块设备文件 + d-目录 + c-字符设备文件 + p-管道文件 + l-符号链接文件 + f-普通文件 + +-uid<用户识别码>:查找符合指定的用户识别码的文件或目录 +-used<日数>:查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算 -user<拥有者名称>:查找符和指定的拥有者名称的文件或目录;(常用选项) --version或——version:显示版本信息; --xdev:将范围局限在先行的文件系统中; --xtype<文件类型>:此参数的效果和指定“-type”参数类似,差别在于它针对符号连接检查。 +-xdev:将范围局限在先行的文件系统中 +-xtype<文件类型>:此参数的效果和指定“-type”参数类似,差别在于它针对符号连接检查 ``` -### 参数 - -起始目录:查找文件的起始目录。 - -### 实例 +## 实例 ```sh -# 当前目录搜索所有文件,文件内容 包含 “140.206.111.111” 的内容 -find . -type f -name "*" | xargs grep "140.206.111.111" -print -``` - -搜索当前目录中,所有文件名以my开头的文件,并显示它们的详细信息。 -find . -name 'my*' -ls - -搜索当前目录中,所有过去10分钟中更新过的普通文件。如果不加-type f参数,则搜索普通文件+特殊文件+目录。 -find . -type f -mmin -10 +find . -type f -name "*" | xargs grep "test" # 当前目录搜索所有文件,文件内容包含 “test” 的内容 +find . -name "my*" -ls # 搜索当前目录中,所有文件名以my开头的文件,并显示它们的详细信息 +find . -type f -mmin -10 # 搜索当前目录中,所有过去10分钟中更新过的普通文件。如果不加-type f参数,则搜索普通文件+特殊文件+目录 -#### 根据文件或者正则表达式进行匹配 - -列出当前目录及子目录下所有文件和文件夹 - -```sh -find . -``` +## 根据文件或者正则表达式进行匹配 在`/home`目录下查找以.txt结尾的文件名 @@ -210,13 +216,13 @@ find . -type 类型参数 类型参数列表: -* **f** 普通文件 -* **l** 符号连接 -* **d** 目录 -* **c** 字符设备 -* **b** 块设备 -* **s** 套接字 -* **p** Fifo +* f 普通文件 +* l 符号连接 +* d 目录 +* c 字符设备 +* b 块设备 +* s 套接字 +* p Fifo #### 基于目录深度搜索 @@ -426,8 +432,6 @@ find / -type f -perm +6000 -exec ls -lh {} \; 两种方法的区别在于:前者使用了Shell的命令替换操作( $() 符号或者反撇号 ``),只有在find命令执行完毕后才能看到结果;而后一种方法则每找到一条结果就立即显示出来了 ``` - - #### 暂未整理一 ```sh @@ -1248,4 +1252,11 @@ $ find / -name "CON.FILE" -depth -print $ find . -name "*.XC" -mount -print +find -name '*.[ch]' | xargs grep -E 'expr' # 在当前目录及其子目录下所有.c和.h文件中寻找'expr' +find -type f -print0 | xargs -r0 grep -F 'example' # 在当前目录及其子目录中的常规文件中查找字符串'example' +find -maxdepth 1 -type f | xargs grep -F 'example' # 在当前目录下查找字符串'example' +find -maxdepth 1 -type d | while read dir; do echo $dir; echo cmd2; done # 对每一个找到的文件执行多个命令使用while循环 +find -type f ! -perm -444 # 寻找所有不可读的文件;对网站有用 +find -type d ! -perm -111 # 寻找不可访问的目录;对网站有用 + ``` \ No newline at end of file diff --git a/Linux_man_cn/grep.md b/Linux_man_cn/grep.md index 5efb3ad..5292e7a 100644 --- a/Linux_man_cn/grep.md +++ b/Linux_man_cn/grep.md @@ -1,10 +1,8 @@ -# grep - -强大的文本搜索工具 +# **grep** ## 说明 -**grep** (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。用于过滤/搜索的特定字符。可使用正则表达式能多种命令配合使用,使用上十分灵活。 +**grep**(global search regular expression(RE))and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。用于过滤/搜索的特定字符。可使用正则表达式能多种命令配合使用,使用上十分灵活。 grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到屏幕,不影响原文件内容。 @@ -32,7 +30,7 @@ grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索 杂项: -s, --no-messages 抑制错误消息 - -v, --invert-match 查看没有被匹配的行 + -v, --invert-match 查看没有被匹配的行 -V, --version display version information and exit --help display this help text and exit @@ -65,8 +63,8 @@ grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索 --exclude-from=FILE skip files matching any file pattern from FILE --exclude-dir=PATTERN directories that match PATTERN will be skipped. -L, --files-without-match print only names of FILEs containing no match - -l, --files-with-matches 只打印包含匹配的文件的名称 - -c, --count 只打印每个文件匹配字符串行的数量 + -l, --files-with-matches 只打印包含匹配的文件的名称 + -c, --count 只打印每个文件匹配字符串行的数量 -T, --initial-tab make tabs line up (if needed) -Z, --null print 0 byte after FILE name @@ -87,279 +85,109 @@ grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索 ‘egrep’即‘grep -E’。‘fgrep’即‘grep -F’。 直接使用‘egrep’或是‘fgrep’均已不可行了。 egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。 -若FILE 为 -,将读取标准输入。不带FILE,读取当前目录,除非命令行中指定了-r 选项。 +若FILE 为 -,将读取标准输入。不带FILE,读取当前目录,除非命令行中指定了-r选项。 如果少于两个FILE 参数,就要默认使用-h 参数。 如果有任意行被匹配,那退出状态为 0,否则为 1; 如果有错误产生,且未指定 -q 参数,那退出状态为 2。 - ``` -### 规则表达式 - -```bash -^ # 锚定行的开始 如:'^grep'匹配所有以grep开头的行。 -$ # 锚定行的结束 如:'grep$'匹配所有以grep结尾的行。 -\ # 转义符 -. # 匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。 -* # 匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。 -.* # 一起用代表任意字符。 -[] # 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。 -[^] # 匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。 -\(..\) # 标记匹配字符,如'\(love\)',love被标记为1。 -\< # 锚定单词的开始,如:'\ # 锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。 -x\{m\} # 重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。 -x\{m,\} # 重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。 -x\{m,n\} # 重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。 -\w # 匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。 -\W # \w的反置形式,匹配一个或多个非单词字符,如点号句号等。 -\b # 单词锁定符,如: '\bgrep\b'只匹配grep。 -``` -## POSIX字符类 +## grep可用的规则表达式 ```sh -[:upper:] 表示大写字母[A-Z] - -[:lower:] 表示小写字母[a-z] - -[:digit:] 表示阿拉伯数字[0-9] - -[:alnum:] 表示大小写字母和阿拉伯数字[0-9a-zA-Z] - -[:space:] 表示空格或tab键 - -[:alpha:] 表示大小写字母[a-zA-Z] - -[:cntrl:] 表示Ctrl键 - -[:graph:]或[:print:] 表示ASCII码33-126之间的字符 - - -搜索以大写字母开头的行 - -grep ^[[:upper:]] test.txt - -POSIX字符类作为模式的用法都类似,使用时注意用方括号将POSIX字符括起来就行了 - -精确匹配单词the的行 - -grep "\" test.txt或grep -w the test.txt - -或|字符,grep需要加上-E选项才能支持使用它 -匹配test.txt文件有zh或en的行 - -grep -E "zh|en" test.txt - -grep:标准grep命令,支持基本正则表达式 - -egrep:扩展grep命令,支持基本和扩展正则表达式,与grep -E等价 - -fgrep:快速grep命令,不支持正则表达式,与grep -F等价 - +^ # 锚定行的开始 如:'^grep'匹配所有以grep开头的行 +$ # 锚定行的结束 如:'grep$'匹配所有以grep结尾的行。 +\ # 转义符 +. # 匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p +* # 匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行 +.* # 一起用代表任意字符 +[] # 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep +[^] # 匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行 +\(..\) # 标记匹配字符,如'\(love\)',love被标记为1 +\< # 锚定单词的开始,如:'\ # 锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行 +x\{m\} # 重复字符x,m次,如:'0\{5\}'匹配包含5个o的行 +x\{m,\} # 重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行 +x\{m,n\} # 重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行 +\w # 匹配文字和数字字符,即[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p +\W # \w的反置形式,匹配一个或多个非单词字符,如点号句号等 +\b # 单词锁定符,如: '\bgrep\b'只匹配grep。 + +# POSIX字符类 + +[:upper:] # 表示大写字母[A-Z] +[:lower:] # 表示小写字母[a-z] +[:digit:] # 表示阿拉伯数字[0-9] +[:alnum:] # 表示大小写字母和阿拉伯数字[0-9a-zA-Z] +[:space:] # 表示空格或tab键 +[:alpha:] # 表示大小写字母[a-zA-Z] +[:cntrl:] # 表示Ctrl键 +[:graph:]或[:print:] # 表示ASCII码33-126之间的字符 + +grep 标准grep命令,支持基本正则表达式 +egrep 扩展grep命令,支持基本和扩展正则表达式,与grep -E等价 +fgrep 快速grep命令,不支持正则表达式,与grep -F等价 ``` ## grep命令常见用法 -显示系统上使用Bash shell登录的所有用户 -grep bash /etc/passwd | cut -d: -f1 +```sh +grep bash /etc/passwd | cut -d: -f1 # 显示系统上使用Bash shell登录的所有用户 +ls -algG --time-style=+%s | grep ^[^d] | awk -vlimit=$(date +%s -d '10 hours ago') '$4 > limit { print substr($0, index($0, $4) + length($4) + 1) }' # 搜索目录下十小时前更改的文件,不包括文件夹,只使用grep实现。(更好的方式用find实现) +grep ^[[:upper:]] test.txt # 搜索test.txt以大写字母开头的行,POSIX字符类作为模式的用法都类似,使用时注意用方括号将POSIX字符括起来就行了 -搜索目录下十小时前更改的文件,不包括文件夹,只使用grep实现。(更好的方式用find实现) -ls -algG --time-style=+%s | grep ^[^d] | awk -vlimit=$(date +%s -d '10 hours ago') '$4 > limit { print substr($0, index($0, $4) + length($4) + 1) }' +# 精确匹配单词the的行 +grep "\" test.txt +grep -w the test.txt -递归搜索含有某个关键字的文件目录 -grep -iHR "关键字" ./* +grep -E "zh|en" test.txt # | (或)字符,grep需要加上-E选项才能支持使用它,例:匹配test.txt文件有zh或en的行 +grep -iHR "关键字" ./* # 递归搜索含有某个关键字的文件目录 -i 对要搜索的字符忽略大小写 -H 同时打印包括搜索字符串的文件名 -R 递归搜索,当指定的搜索路径是一个目录时,加上-R的搜索会执行递归搜索 -搜所文件test.txt以/字符开始,中间任意四个字符,第六个字符为/的行 +grep ^/..../ test.txt # 搜索文件test.txt以/字符开始,中间任意四个字符,第六个字符为/的行 -grep ^/..../ test.txt - -在文件中搜索一个单词,命令会返回一个包含 **“match_pattern”** 的文本行: - -``` +# 在文件中搜索一个单词,命令会返回一个包含 **“match_pattern”** 的文本行 grep match_pattern file_name grep "match_pattern" file_name -``` - -在多个文件中查找: - -``` -grep "match_pattern" file_1 file_2 file_3 ... -``` - -输出除之外的所有行 **-v** 选项: - -``` -grep -v "match_pattern" file_name -``` - -标记匹配颜色 **--color=auto** 选项: - -``` -grep "match_pattern" file_name --color=auto - -``` -使用正则表达式 **-E** 选项: +grep "match_pattern" file_1 file_2 file_3 ... # 在多个文件中查找match_pattern +grep -v "match_pattern" file_name # 输出除之外的所有行-v选项 +grep "match_pattern" file_name --color=auto # 标记匹配颜色--color=auto选项 -``` +# 使用正则表达式-E选项 grep -E "[1-9]+" -或 egrep "[1-9]+" -``` - -只输出文件中匹配到的部分 **-o** 选项: - -``` +# 只输出文件中匹配到的部分-o选项 echo this is a test line. | grep -o -E "[a-z]+\." -line. - echo this is a test line. | egrep -o "[a-z]+\." -line. -``` - -统计文件或者文本中包含匹配字符串的行数 **-c** 选项: - -``` -grep -c "text" file_name - -``` +grep -c "text" file_name # 统计文件或者文本中包含匹配字符串的行数-c选项 -输出包含匹配字符串的行数 **-n** 选项: - -``` +# 输出包含匹配字符串的行数-n选项 grep "text" -n file_name -或 cat file_name | grep "text" -n +grep "text" -n file_1 file_2 # 多个文件 -#多个文件 -grep "text" -n file_1 file_2 - -``` - -打印样式匹配所位于的字符或字节偏移: - -``` -echo gun is not unix | grep -b -o "not" -7:not - -#一行中字符串的字符便宜是从该行的第一个字符开始计算,起始值为0。选项 **-b -o** 一般总是配合使用。 - -``` - -搜索多个文件并查找匹配文本在哪些文件中: - -``` -grep -l "text" file1 file2 file3... - -``` - -### grep递归搜索文件 - -在多级目录中对文本进行递归搜索: +echo gun is not unix | grep -b -o "not" # 打印样式匹配所位于的字符或字节偏移;一行中字符串的字符便宜是从该行的第一个字符开始计算,起始值为0。选项-b -o一般总是配合使用 -``` -grep "text" . -r -n -# .表示当前目录。 - -``` +grep -l "text" file1 file2 file3... # 搜索多个文件并查找匹配文本在哪些文件中 +grep "text" . -r -n # 在多级目录中对文本进行递归搜索 .表示当前目录。 -忽略匹配样式中的字符大小写: +# 在grep搜索结果中包括或者排除指定文件 +grep "main()" . -r --include *.{php,html} # 只在目录中所有的.php和.html文件中递归搜索字符"main()" +grep "main()" . -r --exclude "README" # 在搜索结果中排除所有README文件 +grep "main()" . -r --exclude-from filelist # 在搜索结果中排除filelist文件列表里的文件 -``` -echo "hello world" | grep -i "HELLO" -hello - -``` - -选项 **-e** 制动多个匹配样式: - -``` -echo this is a text line | grep -e "is" -e "line" -o -is -line +grep "aaa" file* -lZ | xargs -0 rm # 使用0值字节后缀的grep与xargs,删除包含aaa字符文件名以file开头的文件,grep输出用-Z选项来指定以0值字节作为终结符文件名(\0),xargs -0 读取输入并用0值字节终结符分隔文件名,然后删除匹配文件,-Z通常和-l结合使用 +grep -q "test" filename # 不会输出任何信息,如果命令运行成功返回0,失败则返回非0值。一般用于条件测试。 -#也可以使用 **-f** 选项来匹配多个样式,在样式文件中逐行写出需要匹配的字符。 -cat patfile -aaa -bbb - -echo aaa bbb ccc ddd eee | grep -f patfile -o - -``` - -在grep搜索结果中包括或者排除指定文件: - -``` -#只在目录中所有的.php和.html文件中递归搜索字符"main()" -grep "main()" . -r --include *.{php,html} - -#在搜索结果中排除所有README文件 -grep "main()" . -r --exclude "README" - -#在搜索结果中排除filelist文件列表里的文件 -grep "main()" . -r --exclude-from filelist - -``` - -使用0值字节后缀的grep与xargs: - -```bash -# 测试文件: -echo "aaa" > file1 -echo "bbb" > file2 -echo "aaa" > file3 - -grep "aaa" file* -lZ | xargs -0 rm - -#执行后会删除file1和file3,grep输出用-Z选项来指定以0值字节作为终结符文件名(\0),xargs -0 读取输入并用0值字节终结符分隔文件名,然后删除匹配文件,-Z通常和-l结合使用。 - -``` - -grep静默输出: - -```bash -grep -q "test" filename -# 不会输出任何信息,如果命令运行成功返回0,失败则返回非0值。一般用于条件测试。 -``` - -打印出匹配文本之前或者之后的行: - -```bash -# 显示匹配某个结果之后的3行,使用 -A 选项: -seq 10 | grep "example" -A 3 -或 +# 打印出匹配文本之前或者之后的行 +seq 10 | grep "example" -A 3 # 显示匹配某个结果之后的3行,使用 -A 选项 grep -A 3 -i "example" demo_text -# 显示匹配某个结果之前的3行,使用 -B 选项: -seq 10 | grep "5" -B 3 -2 -3 -4 -5 - -# 显示匹配某个结果的前三行和后三行,使用 -C 选项: -seq 10 | grep "5" -C 3 -2 -3 -4 -5 -6 -7 -8 - -# 如果匹配结果有多个,会用“--”作为各匹配结果之间的分隔符: -echo -e "a\nb\nc\na\nb\nc" | grep a -A 1 -a -b --- -a -b -``` - - - +seq 10 | grep "5" -B 3 # 显示匹配某个结果之前的3行,使用 -B 选项 +seq 10 | grep "5" -C 3 # 显示匹配某个结果的前三行和后三行,使用 -C 选项 +echo -e "a\nb\nc\na\nb\nc" | grep a -A 1 # 如果匹配结果有多个,会用“--”作为各匹配结果之间的分隔符 +``` \ No newline at end of file diff --git a/Linux_man_cn/ifconfig.md b/Linux_man_cn/ifconfig.md new file mode 100644 index 0000000..7a07dcb --- /dev/null +++ b/Linux_man_cn/ifconfig.md @@ -0,0 +1,128 @@ +ifconfig +=== + +配置和显示Linux系统网卡的网络参数 + +## 补充说明 + +**ifconfig命令** 被用于配置和显示Linux内核中网络接口的网络参数。用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。 + +### 语法 + +``` +ifconfig(参数) +``` + +### 参数 + +``` +add<地址>:设置网络设备IPv6的ip地址; +del<地址>:删除网络设备IPv6的IP地址; +down:关闭指定的网络设备; +<硬件地址>:设置网络设备的类型与硬件地址; +io_addr:设置网络设备的I/O地址; +irq:设置网络设备的IRQ; +media<网络媒介类型>:设置网络设备的媒介类型; +mem_start<内存地址>:设置网络设备在主内存所占用的起始地址; +metric<数目>:指定在计算数据包的转送次数时,所要加上的数目; +mtu<字节>:设置网络设备的MTU; +netmask<子网掩码>:设置网络设备的子网掩码; +tunnel<地址>:建立IPv4与IPv6之间的隧道通信地址; +up:启动指定的网络设备; +-broadcast<地址>:将要送往指定地址的数据包当成广播数据包来处理; +-pointopoint<地址>:与指定地址的网络设备建立直接连线,此模式具有保密功能; +-promisc:关闭或启动指定网络设备的promiscuous模式; +IP地址:指定网络设备的IP地址; +网络设备:指定网络设备的名称。 +``` + +### 实例 + + **显示网络设备信息(激活状态的):** + +``` +[root@localhost ~]# ifconfig +eth0 Link encap:Ethernet HWaddr 00:16:3E:00:1E:51 + inet addr:10.160.7.81 Bcast:10.160.15.255 Mask:255.255.240.0 + UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 + RX packets:61430830 errors:0 dropped:0 overruns:0 frame:0 + TX packets:88534 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:1000 + RX bytes:3607197869 (3.3 GiB) TX bytes:6115042 (5.8 MiB) + +lo Link encap:Local Loopback + inet addr:127.0.0.1 Mask:255.0.0.0 + UP LOOPBACK RUNNING MTU:16436 Metric:1 + RX packets:56103 errors:0 dropped:0 overruns:0 frame:0 + TX packets:56103 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:0 + RX bytes:5079451 (4.8 MiB) TX bytes:5079451 (4.8 MiB) +``` + +说明: + +**eth0** 表示第一块网卡,其中`HWaddr`表示网卡的物理地址,可以看到目前这个网卡的物理地址(MAC地址)是`00:16:3E:00:1E:51`。 + +**inet addr** 用来表示网卡的IP地址,此网卡的IP地址是`10.160.7.81`,广播地址`Bcast:10.160.15.255`,掩码地址`Mask:255.255.240.0`。 + +**lo** 是表示主机的回坏地址,这个一般是用来测试一个网络程序,但又不想让局域网或外网的用户能够查看,只能在此台主机上运行和查看所用的网络接口。比如把 httpd服务器的指定到回坏地址,在浏览器输入127.0.0.1就能看到你所架WEB网站了。但只是您能看得到,局域网的其它主机或用户无从知道。 + +* 第一行:连接类型:Ethernet(以太网)HWaddr(硬件mac地址)。 +* 第二行:网卡的IP地址、子网、掩码。 +* 第三行:UP(代表网卡开启状态)RUNNING(代表网卡的网线被接上)MULTICAST(支持组播)MTU:1500(最大传输单元):1500字节。 +* 第四、五行:接收、发送数据包情况统计。 +* 第七行:接收、发送数据字节数统计信息。 + +**启动关闭指定网卡:** + +``` +ifconfig eth0 up +ifconfig eth0 down +``` + +`ifconfig eth0 up`为启动网卡eth0,`ifconfig eth0 down`为关闭网卡eth0。ssh登陆linux服务器操作要小心,关闭了就不能开启了,除非你有多网卡。 + +**为网卡配置和删除IPv6地址:** + +``` +ifconfig eth0 add 33ffe:3240:800:1005::2/64 #为网卡eth0配置IPv6地址 +ifconfig eth0 del 33ffe:3240:800:1005::2/64 #为网卡eth0删除IPv6地址 +``` + +**用ifconfig修改MAC地址:** + +``` +ifconfig eth0 hw ether 00:AA:BB:CC:dd:EE +``` + +**配置IP地址:** + +``` +[root@localhost ~]# ifconfig eth0 192.168.2.10 +[root@localhost ~]# ifconfig eth0 192.168.2.10 netmask 255.255.255.0 +[root@localhost ~]# ifconfig eth0 192.168.2.10 netmask 255.255.255.0 broadcast 192.168.2.255 +``` + +**启用和关闭arp协议:** + +``` +ifconfig eth0 arp #开启网卡eth0 的arp协议 +ifconfig eth0 -arp #关闭网卡eth0 的arp协议 +``` + +**设置最大传输单元:** + +``` +ifconfig eth0 mtu 1500 #设置能通过的最大数据包大小为 1500 bytes +``` + +**其它实例** + +```bash +ifconfig #处于激活状态的网络接口 +ifconfig -a #所有配置的网络接口,不论其是否激活 +ifconfig eth0 #显示eth0的网卡信息 +``` + + + diff --git a/Linux_man_cn/locate.md b/Linux_man_cn/locate.md index b17cdb7..f519c49 100644 --- a/Linux_man_cn/locate.md +++ b/Linux_man_cn/locate.md @@ -1,9 +1,6 @@ -locate -=== +# **locate** -Apache服务器的性能测试工具 - -## 补充说明 +## 说明 locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了。在一般的 distribution 之中,数据库的建立都被放在 crontab 中自动执行。 @@ -11,84 +8,36 @@ locate命令可以在搜寻数据库时快速找到档案,数据库(/var/lib locate指定用在搜寻符合条件的档案,它会去储存档案与目录名称的数据库内,寻找合乎范本样式条件的档案或目录录,可以使用特殊字元(如”*” 或”?”等)来指定范本样式,如指定范本为kcpa*ner, locate 会找出所有起始字串为kcpa且结尾为ner的档案或目录,如名称为kcpartner若目录录名称为kcpa_ner则会列出该目录下包括 子目录在内的所有档案。 -locate指令和find找寻档案的功能类似,但locate是透过update程序将硬盘中的所有档案和目录资料先建立一个索引数据库,在 执行loacte时直接找该索引,查询速度会较快,索引数据库一般是由操作系统管理,但也可以直接下达update强迫系统立即修改索引数据库。 - -### 语法 - -``` -locate [选择参数] [样式] -``` - -### 选项 +locate指令和find找寻档案的功能类似,但locate是透过update程序将硬盘中的所有档案和目录资料先建立一个索引数据库,在 执行loacte时直接找该索引,查询速度会较快,索引数据库一般是由操作系统管理,但也可以直接下达update强迫系统立即修改索引数据库 -``` --e 将排除在寻找的范围之外。 --1 如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到 的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的 权限资料。 --f 将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案 放在资料库中。 --q 安静模式,不会显示任何错误讯息。 --n 至多显示 n个输出。 --r 使用正规运算式 做寻找的条件。 --o 指定资料库存的名称。 --d 指定资料库的路径 --h 显示辅助讯息 --V 显示程式的版本讯息 -``` - -### 实例 +## 选项 -查找和pwd相关的所有文件 +```info +Usage: locate [OPTION]... [PATTERN]... 在mlocate数据库中搜索条目 +-A,--all 仅打印匹配所有模式的条目 +-b,--basename 仅匹配路径名的基本名称 +-c,--count 仅打印找到的条目数 +-d,--database DBPATH 使用DBPATH而不是默认数据库(即/var/lib/mlocate/mlocate.db) +-e,--existing 仅打印当前现有文件的条目 +-L,--follow 检查文件是否存在时跟踪尾随符号链接(default) +-i,--ignore-case 匹配模式时忽略大小写区别 +-l,--limit, -n LIMIT 将输出(或计数)限制为LIMIT条目 +-m,--mmap 忽略,以便向后兼容 +-P,--nofollow, -H 检查文件是否存在时,不要跟随尾随符号链接 +-0,--null 在输出上单独输入ZERO +-S,--statistics 不搜索全部,只打印每一个匹配的数据库 +-q,--quiet 报告没有关于读取数据库的错误消息,不会显示任何错误讯息 +-r,--regexp REGEXP 搜索基本的正则表达式REGEXP而不是模式 + --regex 模式是扩展的正则表达式 +-s,--stdio 忽略,以便向后兼容 +-w,--wholename 匹配整个路径名(default) -``` -root ~ # locate pwd -/bin/pwd -/etc/.pwd.lock -/sbin/unix_chkpwd -/usr/bin/pwdx -/usr/include/pwd.h -/usr/lib/python2.7/dist-packages/twisted/python/fakepwd.py -/usr/lib/python2.7/dist-packages/twisted/python/fakepwd.pyc -/usr/lib/python2.7/dist-packages/twisted/python/test/test_fakepwd.py -/usr/lib/python2.7/dist-packages/twisted/python/test/test_fakepwd.pyc -/usr/lib/syslinux/pwd.c32 -/usr/share/help/C/empathy/irc-join-pwd.page -/usr/share/help/ca/empathy/irc-join-pwd.page -/usr/share/help/cs/empathy/irc-join-pwd.page -/usr/share/help/de/empathy/irc-join-pwd.page -/usr/share/help/el/empathy/irc-join-pwd.page ``` -搜索etc目录下所有以sh开头的文件 -``` -root ~ # locate /etc/sh -/etc/shadow -/etc/shadow- -/etc/shells -``` +## 实例 -搜索etc目录下,所有以m开头的文件 +```sh +locate pwd # 查找和pwd相关的所有文件数据库 +locate /etc/sh # 搜索etc目录下所有以sh开头的文件 +locate -r 'file[^/]*\.txt' # 使用locate 查找所有符合*file*.txt的文件 ``` -root ~ # locate /etc/m -/etc/magic -/etc/magic.mime -/etc/mailcap -/etc/mailcap.order -/etc/manpath.config -/etc/mate-settings-daemon -``` - -搜索etc目录下所有以sh开头的文件。 -``` -locate /etc/sh -``` - -搜索用户主目录下,所有以m开头的文件。 -``` -locate ~/m -``` - -搜索用户主目录下,所有以m开头的文件,并且忽略大小写。 -``` -locate -i ~/m -``` - - diff --git a/Linux_man_cn/look.md b/Linux_man_cn/look.md index 0be6063..f3e4625 100644 --- a/Linux_man_cn/look.md +++ b/Linux_man_cn/look.md @@ -1,31 +1,20 @@ -look -=== +# look -显示文件中以指定字符串开头的任意行 +## 说明 -## 补充说明 +**look命令** look实用程序显示文件中包含字符串的所有行。 当外观执行二进制搜索时,必须对文件中的行进行排序;如果未指定file,则使用文件/usr/share/dict/words,仅比较字母数字字符,并忽略字母字符的大小写。 -**look命令** 用于显示文件中以指定字符串开头的任意行。 +## 选项 -### 语法 +```info +用法:look [选项] 字符串 [文件] -``` -look(选项)(参数) -``` +选项: +-a,--alternative 使用备选词典(字典文件web2,该文件也位于/usr/dict目录下) +-d,--alphanum 只比较字母和数字 +-f,--ignore-case 比较时忽略大小写 +-t,--terminate <字符> 定义字符串终止字符 -### 选项 - -``` --a:使用另一个字典文件web2,该文件也位于/usr/dict目录下; --d:只对比英文字母和数字,其余一概忽略不予比对; --f:忽略字符大小写差别; --t<字尾字符串>:设置字尾字符串。 +字符串:指定要查找的字符串 +文件:指定要查找的目标文件 ``` - -### 参数 - -* 字符串:指定要查找的字符串; -* 文件:指定要查找的目标文件。 - - - \ No newline at end of file diff --git a/Linux_man_cn/ls.md b/Linux_man_cn/ls.md index 8504010..cd18cea 100644 --- a/Linux_man_cn/ls.md +++ b/Linux_man_cn/ls.md @@ -1,268 +1,59 @@ -# ls +# **ls** 显示目录内容列表 ## 说明 -**ls命令** 用来显示目标列表,在Linux中是使用率较高的命令。ls命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件。 - -## 选项 - -```sh --a:显示所有档案及目录(连同隐藏档,开头为.文件一起罗列出来); --A:显示全部文件和目录,连同隐藏文件,但不包括.和..这两个目录; --C:多列显示输出结果。这是默认选项; --l:与“-C”选项功能相反,所有输出信息用单列格式输出,不输出为多列; --F:在每个输出项后追加文件的类型标识符,具体含义:“*”表示具有可执行权限的普通文件,“/”表示目录,“@”表示符号链接,“|”表示命令管道FIFO,“=”表示sockets套接字。当文件为普通文件时,不输出任何标识符; --b:将文件中的不可输出的字符以反斜线“”加字符编码的方式输出; --c:与“-lt”选项连用时,按照文件状态时间排序输出目录内容,排序的依据是文件的索引节点中的ctime字段。与“-l”选项连用时,则排序的一句是文件的状态改变时间; --d:仅显示目录名,而不显示目录下的内容列表。显示符号链接文件本身,而不显示其所指向的目录列表; --f:此参数的效果和同时指定“aU”参数相同,并关闭“lst”参数的效果; --i:显示文件索引节点号(inode)。一个索引节点代表一个文件; ---file-type:与“-F”选项的功能相同,但是不显示“*”; --k:以KB(千字节)为单位显示文件大小; --h:将文件容量以人类易读的方式显示 --l:以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件名,文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等; --m:用“,”号区隔每个文件和目录的名称; --n:以用户识别码和群组识别码替代其名称; --r:以文件名反序排列并输出目录内容列表; --s:显示文件和目录的大小,以区块为单位; --S: 以文件大小排序,最大的优先(降序) --t:用文件和目录的更改时间排序; --L:如果遇到性质为符号链接的文件或目录,直接列出该链接所指向的原始文件或目录; --R:递归处理,将指定目录下的所有文件及子目录一并处理; ---full-time:列出完整的日期与时间; ---color[=WHEN]:使用不同的颜色高亮显示不同类型的。 -``` - -### 参数 - -目录:指定要显示列表的目录,也可以是具体的文件。 - -### 实例 +**ls命令** 用来显示目标列表,在Linux中是使用率较高的命令。ls命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件 + +## 选项 + +```info +-a 显示所有档案及目录(连同隐藏档,开头为.文件一起罗列出来) +-A 显示全部文件和目录,连同隐藏文件,但不包括.和..这两个目录 +-C 多列显示输出结果。这是默认选项 +-l 与“-C”选项功能相反,所有输出信息用单列格式输出,不输出为多列 +-F 在每个输出项后追加文件的类型标识符,具体含义“*”表示具有可执行权限的普通文件,“/”表示目录,“@”表示符号链接,“|”表示命令管道FIFO,“=”表示sockets套接字。当文件为普通文件时,不输出任何标识符 +-b 将文件中的不可输出的字符以反斜线“”加字符编码的方式输出 +-c 与“-lt”选项连用时,按照文件状态时间排序输出目录内容,排序的依据是文件的索引节点中的ctime字段。与“-l”选项连用时,则排序的一句是文件的状态改变时间 +-d 仅显示目录名,而不显示目录下的内容列表。显示符号链接文件本身,而不显示其所指向的目录列表 +-f 此参数的效果和同时指定“aU”参数相同,并关闭“lst”参数的效果 +-i 显示文件索引节点号(inode)。一个索引节点代表一个文件 +--file-type 与“-F”选项的功能相同,但是不显示“*” +-k 以KB(千字节)为单位显示文件大小 +-h 将文件容量以人类易读的方式显示 +-l 以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件名,文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等 +-m 用“,”号区隔每个文件和目录的名称 +-n 以用户识别码和群组识别码替代其名称 +-r 以文件名反序排列并输出目录内容列表 +-s 显示文件和目录的大小,以区块为单位 +-S 以文件大小排序,最大的优先(降序) +-t 用文件和目录的更改时间排序 +-L 如果遇到性质为符号链接的文件或目录,直接列出该链接所指向的原始文件或目录 +-R 递归处理,将指定目录下的所有文件及子目录一并处理 +--full-time 列出完整的日期与时间 +--color[=WHEN] 使用不同的颜色高亮显示不同类型的 + +使用色彩来区分文件类型的功能已被禁用,默认设置和 --color=never 同时禁用了它。使用 --color=auto 选项,ls 只在标准输出被连至终端时才生成颜色代码。LS_COLORS 环境变量可改变此设置,可使用 dircolors 命令来设置。color有效的参数为:"always","yes","force","never","no","none","auto","tty","if-tty" + +退出状态: + 0 正常 + 1 一般问题 (例如:无法访问子文件夹) + 2 严重问题 (例如:无法使用命令行参数) + +* 匹配文件名中的任何字符串,包括空字符串。 +? 匹配文件名中的任何单个字符。 +[...] 匹配[ ]中所包含的任何字符。 +[!...] 匹配[ ]中非感叹号!之后的字符。 +``` + +## 实例 ```sh -ls # 仅列出当前目录可见文件 -ls -l # 列出当前目录可见文件详细信息 -ls -hl # 列出详细信息并以可读大小显示文件大小 -ls -al # 列出所有文件(包括隐藏)的详细信息 -``` - -显示文件的inode信息 - -索引节点(index inode简称为“inode”)是Linux中一个特殊的概念,具有相同的索引节点号的两个文本本质上是同一个文件(除文件名不同外)。 - -``` -[root@localhost ~]# ls -i -l anaconda-ks.cfg install.log -2345481 -rw------- 1 root root 859 Jun 11 22:49 anaconda-ks.cfg -2345474 -rw-r--r-- 1 root root 13837 Jun 11 22:49 install.log -``` - -水平输出文件列表 - -``` -[root@localhost /]# ls -m - -bin, boot, data, dev, etc, home, lib, lost+found, media, misc, mnt, opt, proc, root, sbin, selinux, srv, sys, tmp, usr, var -``` - -修改最后一次编辑的文件 - -最近修改的文件显示在最上面。 - -``` -[root@localhost /]# ls -t - -tmp root etc dev lib boot sys proc data home bin sbin usr var lost+found media mnt opt selinux srv misc -``` - -显示递归文件 - -``` -[root@localhost ~]# ls -R -.: -anaconda-ks.cfg install.log install.log.syslog satools - -./satools: -black.txt freemem.sh iptables.sh lnmp.sh mysql php502_check.sh ssh_safe.sh - -``` - -打印文件的UID和GID - -``` -[root@localhost /]# ls -n - -total 254 -drwxr-xr-x 2 0 0 4096 Jun 12 04:03 bin -drwxr-xr-x 4 0 0 1024 Jun 15 14:45 boot -drwxr-xr-x 6 0 0 4096 Jun 12 10:26 data -drwxr-xr-x 10 0 0 3520 Sep 26 15:38 dev -drwxr-xr-x 75 0 0 4096 Oct 16 04:02 etc -drwxr-xr-x 4 0 0 4096 Jun 12 10:26 home -drwxr-xr-x 14 0 0 12288 Jun 16 04:02 lib -drwx------ 2 0 0 16384 Jun 11 22:46 lost+found -drwxr-xr-x 2 0 0 4096 May 11 2011 media -drwxr-xr-x 2 0 0 4096 Nov 8 2010 misc -drwxr-xr-x 2 0 0 4096 May 11 2011 mnt -drwxr-xr-x 2 0 0 4096 May 11 2011 opt -dr-xr-xr-x 232 0 0 0 Jun 15 11:04 proc -drwxr-x--- 4 0 0 4096 Oct 15 14:43 root -drwxr-xr-x 2 0 0 12288 Jun 12 04:03 sbin -drwxr-xr-x 2 0 0 4096 May 11 2011 selinux -drwxr-xr-x 2 0 0 4096 May 11 2011 srv -drwxr-xr-x 11 0 0 0 Jun 15 11:04 sys -drwxrwxrwt 3 0 0 98304 Oct 16 08:45 tmp -drwxr-xr-x 13 0 0 4096 Jun 11 23:38 usr -drwxr-xr-x 19 0 0 4096 Jun 11 23:38 var - -``` - -列出文件和文件夹的详细信息 - -``` -[root@localhost /]# ls -l - -total 254 -drwxr-xr-x 2 root root 4096 Jun 12 04:03 bin -drwxr-xr-x 4 root root 1024 Jun 15 14:45 boot -drwxr-xr-x 6 root root 4096 Jun 12 10:26 data -drwxr-xr-x 10 root root 3520 Sep 26 15:38 dev -drwxr-xr-x 75 root root 4096 Oct 16 04:02 etc -drwxr-xr-x 4 root root 4096 Jun 12 10:26 home -drwxr-xr-x 14 root root 12288 Jun 16 04:02 lib -drwx------ 2 root root 16384 Jun 11 22:46 lost+found -drwxr-xr-x 2 root root 4096 May 11 2011 media -drwxr-xr-x 2 root root 4096 Nov 8 2010 misc -drwxr-xr-x 2 root root 4096 May 11 2011 mnt -drwxr-xr-x 2 root root 4096 May 11 2011 opt -dr-xr-xr-x 232 root root 0 Jun 15 11:04 proc -drwxr-x--- 4 root root 4096 Oct 15 14:43 root -drwxr-xr-x 2 root root 12288 Jun 12 04:03 sbin -drwxr-xr-x 2 root root 4096 May 11 2011 selinux -drwxr-xr-x 2 root root 4096 May 11 2011 srv -drwxr-xr-x 11 root root 0 Jun 15 11:04 sys -drwxrwxrwt 3 root root 98304 Oct 16 08:48 tmp -drwxr-xr-x 13 root root 4096 Jun 11 23:38 usr -drwxr-xr-x 19 root root 4096 Jun 11 23:38 var - -``` - -列出可读文件和文件夹详细信息 - -``` -[root@localhost /]# ls -lh - -total 254K -drwxr-xr-x 2 root root 4.0K Jun 12 04:03 bin -drwxr-xr-x 4 root root 1.0K Jun 15 14:45 boot -drwxr-xr-x 6 root root 4.0K Jun 12 10:26 data -drwxr-xr-x 10 root root 3.5K Sep 26 15:38 dev -drwxr-xr-x 75 root root 4.0K Oct 16 04:02 etc -drwxr-xr-x 4 root root 4.0K Jun 12 10:26 home -drwxr-xr-x 14 root root 12K Jun 16 04:02 lib -drwx------ 2 root root 16K Jun 11 22:46 lost+found -drwxr-xr-x 2 root root 4.0K May 11 2011 media -drwxr-xr-x 2 root root 4.0K Nov 8 2010 misc -drwxr-xr-x 2 root root 4.0K May 11 2011 mnt -drwxr-xr-x 2 root root 4.0K May 11 2011 opt -dr-xr-xr-x 235 root root 0 Jun 15 11:04 proc -drwxr-x--- 4 root root 4.0K Oct 15 14:43 root -drwxr-xr-x 2 root root 12K Jun 12 04:03 sbin -drwxr-xr-x 2 root root 4.0K May 11 2011 selinux -drwxr-xr-x 2 root root 4.0K May 11 2011 srv -drwxr-xr-x 11 root root 0 Jun 15 11:04 sys -drwxrwxrwt 3 root root 96K Oct 16 08:49 tmp -drwxr-xr-x 13 root root 4.0K Jun 11 23:38 usr -drwxr-xr-x 19 root root 4.0K Jun 11 23:38 var - -``` - -显示文件夹信息 - -``` -[root@localhost /]# ls -ld /etc/ - -drwxr-xr-x 75 root root 4096 Oct 16 04:02 /etc/ - -``` - -按时间列出文件和文件夹详细信息 - -``` -[root@localhost /]# ls -lt - -total 254 -drwxrwxrwt 3 root root 98304 Oct 16 08:53 tmp -drwxr-xr-x 75 root root 4096 Oct 16 04:02 etc -drwxr-x--- 4 root root 4096 Oct 15 14:43 root -drwxr-xr-x 10 root root 3520 Sep 26 15:38 dev -drwxr-xr-x 14 root root 12288 Jun 16 04:02 lib -drwxr-xr-x 4 root root 1024 Jun 15 14:45 boot -drwxr-xr-x 11 root root 0 Jun 15 11:04 sys -dr-xr-xr-x 232 root root 0 Jun 15 11:04 proc -drwxr-xr-x 6 root root 4096 Jun 12 10:26 data -drwxr-xr-x 4 root root 4096 Jun 12 10:26 home -drwxr-xr-x 2 root root 4096 Jun 12 04:03 bin -drwxr-xr-x 2 root root 12288 Jun 12 04:03 sbin -drwxr-xr-x 13 root root 4096 Jun 11 23:38 usr -drwxr-xr-x 19 root root 4096 Jun 11 23:38 var -drwx------ 2 root root 16384 Jun 11 22:46 lost+found -drwxr-xr-x 2 root root 4096 May 11 2011 media -drwxr-xr-x 2 root root 4096 May 11 2011 mnt -drwxr-xr-x 2 root root 4096 May 11 2011 opt -drwxr-xr-x 2 root root 4096 May 11 2011 selinux -drwxr-xr-x 2 root root 4096 May 11 2011 srv -drwxr-xr-x 2 root root 4096 Nov 8 2010 misc - -``` - -按修改时间列出文件和文件夹详细信息 - -``` -[root@localhost /]# ls -ltr - -total 254 -drwxr-xr-x 2 root root 4096 Nov 8 2010 misc -drwxr-xr-x 2 root root 4096 May 11 2011 srv -drwxr-xr-x 2 root root 4096 May 11 2011 selinux -drwxr-xr-x 2 root root 4096 May 11 2011 opt -drwxr-xr-x 2 root root 4096 May 11 2011 mnt -drwxr-xr-x 2 root root 4096 May 11 2011 media -drwx------ 2 root root 16384 Jun 11 22:46 lost+found -drwxr-xr-x 19 root root 4096 Jun 11 23:38 var -drwxr-xr-x 13 root root 4096 Jun 11 23:38 usr -drwxr-xr-x 2 root root 12288 Jun 12 04:03 sbin -drwxr-xr-x 2 root root 4096 Jun 12 04:03 bin -drwxr-xr-x 4 root root 4096 Jun 12 10:26 home -drwxr-xr-x 6 root root 4096 Jun 12 10:26 data -dr-xr-xr-x 232 root root 0 Jun 15 11:04 proc -drwxr-xr-x 11 root root 0 Jun 15 11:04 sys -drwxr-xr-x 4 root root 1024 Jun 15 14:45 boot -drwxr-xr-x 14 root root 12288 Jun 16 04:02 lib -drwxr-xr-x 10 root root 3520 Sep 26 15:38 dev -drwxr-x--- 4 root root 4096 Oct 15 14:43 root -drwxr-xr-x 75 root root 4096 Oct 16 04:02 etc -drwxrwxrwt 3 root root 98304 Oct 16 08:54 tmp - -``` - -按照特殊字符对文件进行分类 - -``` -[root@localhost nginx-1.2.1]# ls -F - -auto/ CHANGES CHANGES.ru conf/ configure* contrib/ html/ LICENSE Makefile man/ objs/ README src/ - -``` - -列出文件并标记颜色分类 - -``` -[root@localhost nginx-1.2.1]# ls --color=auto - -auto CHANGES CHANGES.ru conf configure contrib html LICENSE Makefile man objs README src -``` - - - +ls -lrt # 列出当前目录可见文件详细信息并以时间倒序排列 +ls -hl # 列出详细信息并以可读大小显示文件大小 +ls -al # 列出所有文件(包括隐藏)的详细信息 +ls ??R* # 列出任意两个字符开始,接着跟R,后面任何字符的文件 +ls log.[0-9]* # 匹配log+任何数字+任意字符的文件 +ls /usr/bin | pr -T9 -W$COLUMNS # 在当前终端宽度上以9列打印输出 +``` \ No newline at end of file diff --git a/Linux_man_cn/man.md b/Linux_man_cn/man.md index 4ee6af7..220d9f9 100644 --- a/Linux_man_cn/man.md +++ b/Linux_man_cn/man.md @@ -1,112 +1,56 @@ -man -=== +# **man** -查看Linux中的指令帮助 +## 选项 -## 补充说明 - -**man命令** 是Linux下的帮助指令,通过man指令可以查看Linux中的指令帮助、配置文件帮助和编程帮助等信息。 - -### 语法 - -``` - - man [OPTION...] [章节] 手册页... - - -C, --config-file=文件 使用该用户设置文件 - -d, --debug 输出调试信息 - -D, --default 将所有选项都重置为默认值 - --warnings[=警告] 开启 groff 的警告 +```info +用法: man[选项...] [章节] 手册页... + -C, --config-file=文件 使用该用户设置文件 + -d, --debug 输出调试信息 + -D, --default 将所有选项都重置为默认值 + --warnings[=警告] 开启 groff 的警告 主要运行模式: - -f, --whatis 等同于 whatis - -k, --apropos 等同于 apropos - -K, --global-apropos search for text in all pages - -l, --local-file - 把“手册页”参数当成本地文件名来解读 - -w, --where, --path, --location - 输出手册页的物理位置 - -W, --where-cat, --location-cat - 输出 cat 文件的物理位置 - - -c, --catman 由 catman 使用,用来对过时的 cat - 页重新排版 - -R, --recode=编码 output source page encoded in ENCODING + -f, --whatis 等同于whatis,显示给定关键字的简短描述信息 + -k, --apropos 等同于apropos + -K, --global-apropos search for text in all pages + -l, --local-file 把“手册页”参数当成本地文件名来解读 + -w, --where, --path, --location 输出手册页的物理位置 + -W, --where-cat, --location-cat 输出cat文件的物理位置 + -c, --catman 由catman 使用,用来对过时的cat页重新排版 + -R, --recode=编码 output source page encoded in ENCODING 寻找手册页: - -L, --locale=区域 - 定义本次手册页搜索所采用的区域设置 - -m, --systems=系统 use manual pages from other systems - -M, --manpath=路径 设置搜索手册页的路径为“路径” - - -S, -s, --sections=列表 使用以半角冒号分隔的章节列表 - - -e, --extension=扩展 - 将搜索限制在扩展类型为“扩展”的手册页之内 - - -i, --ignore-case 查找手册页时不区分大小写字母 - (默认) - -I, --match-case 查找手册页时区分大小写字母。 - - --regex show all pages matching regex - --wildcard show all pages matching wildcard - - --names-only make --regex and --wildcard match page names only, - not descriptions - - -a, --all 寻找所有匹配的手册页 - -u, --update 强制进行缓存一致性的检查 - - --no-subpages don't try subpages, e.g. 'man foo bar' => 'man - foo-bar' + -L, --locale=区域 定义本次手册页搜索所采用的区域设置 + -m, --systems=系统 use manual pages from other systems + -M, --manpath=路径 设置搜索手册页的路径为“路径” + -S, -s, --sections=列表 使用以半角冒号分隔的章节列表 + -e, --extension=扩展 将搜索限制在扩展类型为“扩展”的手册页之内 + -i, --ignore-case 查找手册页时不区分大小写字母(默认) + -I, --match-case 查找手册页时区分大小写字母。 + --regex show all pages matching regex + --wildcard show all pages matching wildcard + --names-only make --regex and --wildcard match page names only,not descriptions + -a, --all 寻找所有匹配的手册页 + -u, --update 强制进行缓存一致性的检查 + --no-subpages don't try subpages, e.g. 'man foo bar' => 'manfoo-bar' 控制格式化的输出: - -P, --pager=PAGER 使用 PAGER 程序显示输出文本 - -r, --prompt=字符串 给 less pager 提供一个提示行 - - -7, --ascii 显示某些 latin1 字符的 ASCII 翻译形式 - -E, --encoding=编码 use selected output encoding - --no-hyphenation, --nh turn off hyphenation - --no-justification, --nj turn off justification - -p, --preprocessor=字符串 字符串表示要运行哪些预处理器: - e - [n]eqn, p - pic, t - tbl, -g - grap, r - refer, v - vgrind - - -t, --troff 使用 groff 对手册页排版 - -T, --troff-device[=设备] 使用 groff 的指定设备 - - -H, --html[=浏览器] 使用 elinks 或指定浏览器显示 HTML - 输出 - -X, --gxditview[=分辨率] 使用 groff 并通过 gxditview (X11) - 来显示: - -X = -TX75, -X100 = -TX100, -X100-12 = -TX100-12 - -Z, --ditroff 使用 groff 并强制它生成 ditroff - - -?, --help give this help list - --usage give a short usage message - -V, --version print program version - -Mandatory or optional arguments to long options are also mandatory or optional -for any corresponding short options. + -P, --pager=PAGER 使用 PAGER 程序显示输出文本 + -r, --prompt=字符串 给 less pager 提供一个提示行 + -7, --ascii 显示某些 latin1 字符的 ASCII 翻译形式 + -E, --encoding=编码 use selected output encoding + --no-hyphenation, --nh turn off hyphenation + --no-justification,--nj turn off justification + -p, --preprocessor=字符串 字符串表示要运行哪些预处理器:e - [n]eqn, p - pic, t - tbl,g - grap, r - refer, v - vgrind + -t, --troff 使用 groff 对手册页排版 + -T, --troff-device[=设备] 使用 groff 的指定设备 + -H, --html[=浏览器] 使用 www-browser 或指定浏览器显示 HTML输出 + -X, --gxditview[=分辨率] 使用 groff 并通过 gxditview (X11)来显示:-X = -TX75, -X100 = -TX100, -X100-12 = -TX100-12 + -Z, --ditroff 使用 groff 并强制它生成 ditroff ``` -### 选项 - -``` --a:在所有的man帮助手册中搜索; --f:等价于whatis指令,显示给定关键字的简短描述信息; --P:指定内容时使用分页程序; --M:指定man手册搜索的路径。 -``` - -### 参数 - -* 数字:指定从哪本man手册中搜索帮助; -* 关键字:指定要搜索帮助的关键字。 - -### 数字代表内容 - -``` +```sh +# 数字所代表内容 1:用户在shell环境可操作的命令或执行文件; 2:系统内核可调用的函数与工具等 3:一些常用的函数(function)与函数库(library),大部分为C的函数库(libc) @@ -118,23 +62,11 @@ for any corresponding short options. 9:跟kernel有关的文件 ``` -### 实例 +## 实例 我们输入`man ls`,它会在最左上角显示“LS(1)”,在这里,“LS”表示手册名称,而“(1)”表示该手册位于第一节章,同样,我们输`man ifconfig`它会在最左上角显示“IFCONFIG(8)”。也可以这样输入命令:“man [章节号] 手册名称”。 -man是按照手册的章节号的顺序进行搜索的,比如: - +```sh +man -t man | ps2pdf - > man.pdf # 生成一个PDF格式的帮助文件 +man 3 sleep # 显示sleep命令的手册并查看库函数sleep ``` -man sleep -``` - -只会显示sleep命令的手册,如果想查看库函数sleep,就要输入: - -``` -man 3 sleep -``` - - - - - diff --git a/Linux_man_cn/nice.md b/Linux_man_cn/nice.md index 0beb229..cd26740 100644 --- a/Linux_man_cn/nice.md +++ b/Linux_man_cn/nice.md @@ -1,17 +1,12 @@ -nice -=== +# nice -改变程序执行的优先权等级 - -## 补充说明 +## 说明 **nice命令** 用于以指定的进程调度优先级启动其他的程序。Crontab中用什么命令定义某个程序执行的优先级别 nice/renice:进程执行优先级 -概念: - -进程优先级:系统按进程优先级的不同分配CPU时间,优先级高的进程会得到更多的CPU使用时间,以提高速度,缩短总的执行时间。 +概念:进程优先级:系统按进程优先级的不同分配CPU时间,优先级高的进程会得到更多的CPU使用时间,以提高速度,缩短总的执行时间。 进程优先级范围:-20至19 @@ -19,72 +14,36 @@ nice/renice:进程执行优先级 最低等级:19 -系统管理员有权将进程优先级设置为-1至-20,而普通用户只能设置0至19。 - -进程运行的默认等级为0。 - -用nice执行的进程其默认等级为10(即nice <程序名>,不指定等级时)。 - -### 语法 - -``` -nice [选项] [命令 [参数]...] -``` +系统管理员有权将进程优先级设置为-1至-20,而普通用户只能设置0至19。进程运行的默认等级为0。用nice执行的进程其默认等级为10(即nice <程序名>,不指定等级时)。 -### 选项 +## 选项 +```info +-n, --adjustment=N 指定进程的优先级(整数,默认是10) ``` --n:指定进程的优先级(整数,默认是10)。 -``` - -### 参数 - -指令及选项:需要运行的指令及其他选项。 - -### 实例 -新建一个进程并设置优先级,将当前目录下的documents目录打包,但不希望tar占用太多CPU: +## 实例 -``` -nice -19 tar zcf pack.tar.gz documents -``` +```sh +nice -19 tar zcf pack.tar.gz documents # 新建一个进程并设置优先级,将当前目录下的documents目录打包,但不希望tar占用太多CPU 方法非常简单,即在原命令前加上`nice -19`。很多人可能有疑问了,最低优先级不是19么?那是因为这个“-19”中的“-”仅表示参数前缀;所以,如果希望将当前目录下的documents目录打包,并且赋予tar进程最高的优先级: - -``` nice --19 tar zcf pack.tar.gz documents -``` 如:(命令后加&表示以后台运行) - -vi & 优先等级0,默认等级。 - -nice vi & 优先等级10,使用nice执行程序时的默认等级。 - -nice -50 vi & 优先等级19,-号表示选项,等级50超过最低等级19,因此系统以等级19执行。 - -nice -18 vi & 优先等级18。 - -nice --50 vi & 优先等级-20,选项值为-50,超过最高等级-20,因此系统以等级-20执行。 - -nice --18 vi & 优先等级-18。 - -通过ps -l可查看以上命令的执行情况(注意查看各vi进程NI值的不同)。 - -重新调整正在执行的进程的优先级: - -调整指定PID进程的等级 - +vi & 优先等级0,默认等级 +nice vi & 优先等级10,使用nice执行程序时的默认等级 +nice -50 vi & 优先等级19,-号表示选项,等级50超过最低等级19,因此系统以等级19执行 +nice -18 vi & 优先等级18 +nice --50 vi & 优先等级-20,选项值为-50,超过最高等级-20,因此系统以等级-20执行 +nice --18 vi & 优先等级-18 +通过ps -l可查看以上命令的执行情况(注意查看各vi进程NI值的不同) +重新调整正在执行的进程的优先级:调整指定PID进程的等级 renice <等级> 注意:<等级>是参数,不是选项,没有前缀-号。 - 调整指定用户的所有进程的等级 - renice <等级> <用户名1> <用户名2> ... 调整指定组的所有用户的所有进程的等级 - -renice <等级> -g <组名1> - - \ No newline at end of file +renice <等级> -g <组名1> \ No newline at end of file diff --git a/Linux_man_cn/pushd.md b/Linux_man_cn/pushd.md index 3a8e1e8..fd0d129 100644 --- a/Linux_man_cn/pushd.md +++ b/Linux_man_cn/pushd.md @@ -1,33 +1,22 @@ -pushd -=== +# pushd -将目录加入命令堆叠中 +## 说明 -## 补充说明 +**pushd命令** 是将目录加入命令堆叠中。如果指令没有指定目录名称,则会将当前的工作目录置入目录堆叠的最顶端。置入目录如果没有指定堆叠的位置,也会置入目录堆叠的最顶端,同时工作目录会自动切换到目录堆叠最顶端的目录去 -**pushd命令** 是将目录加入命令堆叠中。如果指令没有指定目录名称,则会将当前的工作目录置入目录堆叠的最顶端。置入目录如果没有指定堆叠的位置,也会置入目录堆叠的最顶端,同时工作目录会自动切换到目录堆叠最顶端的目录去。 +## 选项 -### 语法 - -``` -pushd(选项)(参数) -``` - -### 选项 - -``` --n:只加入目录到堆叠中,不进行cd操作; -+n:删除从左到右的第n个目录,数字从0开始; --n:删除从右到左的第n个目录,数字从0开始; +```info +-n 只加入目录到堆叠中,不进行cd操作 ++N 删除从左到右的第n个目录,数字从0开始 +-N 删除从右到左的第n个目录,数字从0开始 ``` -### 参数 - -目录:需要压入堆栈的目录。 ### 实例 -``` +```sh +# 参数--目录:需要压入堆栈的目录。 root@Mylinux:/tmp/dir4# pushd /tmp/dir3 /tmp/dir3 /tmp/dir4 /tmp/dir1 ~ @@ -36,9 +25,5 @@ root@Mylinux:/tmp/dir3# pushd /tmp/dir2 root@Mylinux:/tmp/dir2# pushd -1 /tmp/dir1 ~ /tmp/dir2 /tmp/dir3 /tmp/dir4 +# 注意:最左边表示栈顶,最右边表示栈底。 ``` - -注意:最左边表示栈顶,最右边表示栈底。 - - - \ No newline at end of file diff --git a/Linux_man_cn/renice.md b/Linux_man_cn/renice.md index c0264c9..f11ad08 100644 --- a/Linux_man_cn/renice.md +++ b/Linux_man_cn/renice.md @@ -1,39 +1,28 @@ -renice -=== +# renice -修改正在运行的进程的调度优先级 +## 说明 -## 补充说明 +**renice命令** 可以修改正在运行的进程的调度优先级。预设是以程序识别码指定程序调整其优先权,您亦可以指定程序群组或用户名称调整优先权等级,并修改所有隶属于该程序群组或用户的程序的优先权。只有系统管理者可以改变其他用户程序的优先权,也仅有系统管理者可以设置负数等级 -**renice命令** 可以修改正在运行的进程的调度优先级。预设是以程序识别码指定程序调整其优先权,您亦可以指定程序群组或用户名称调整优先权等级,并修改所有隶属于该程序群组或用户的程序的优先权。只有系统管理者可以改变其他用户程序的优先权,也仅有系统管理者可以设置负数等级。 +## 选项 -### 语法 +```info +renice [-n] <优先级> [-p|--pid] ... +renice [-n] <优先级> -g|--pgrp ... +renice [-n] <优先级> -u|--user <用户>... +选项: + -g, --pgrp 将参数解释为进程组ID;指定进程组id + -n, --priority <数字> 指定 nice 增加值 + -p, --pid 将参数解释为进程ID (默认);改变该程序的优先权等级 + -u, --user 将参数解释为用户名或用户ID;指定开启进程的用户名 ``` -renice(选项)(参数) -``` - -### 选项 - -``` --g:指定进程组id; --p<程序识别码>:改变该程序的优先权等级,此参数为预设值。 --u:指定开启进程的用户名。 -``` - -### 参数 -进程号:指定要修改优先级的进程。 +## 实例 -### 实例 +```sh +renice 1 987 -u daemon root -p 32 # 将行程id为987及32的行程与行程拥有者为daemon及root的优先序号码加1 +# 注意:每一个进程都有一个唯一的id -将行程id为987及32的行程与行程拥有者为daemon及root的优先序号码加1: - -``` -renice 1 987 -u daemon root -p 32 +renice 19 -p $$ # 使脚本运行于低优先级。用于非交互任务 ``` - -注意:每一个行程都有一个唯一的id。 - - - \ No newline at end of file diff --git a/Linux_man_cn/sed.md b/Linux_man_cn/sed.md index f201623..97a210c 100644 --- a/Linux_man_cn/sed.md +++ b/Linux_man_cn/sed.md @@ -1,314 +1,142 @@ -# sed - -功能强大的流式文本编辑器 +# **sed** ## 说明 **sed** 是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。 -## 命令格式 +## 选项 -```sh +```info 用法: 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 +-n, --quiet, --silent 取消自动打印模式空间 +-e 脚本, --expression=脚本 添加“脚本”到程序的运行列表,指定script处理文本 +-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 如果没有 -e, --expression, -f 或 --file 选项,那么第一个非选项参数被视为 sed脚本。其他非选项参数被视为输入文件,如果没有输入文件,那么程序将从标准 输入读取数据。 ``` -### 选项 - -```sh --e