command tricks
文章目录
列出一些常用的命令的参数和例子,方便自己查阅和上手
建议采用command 小抄!!
pip install cheat
例如:cheat tar
#find find命令用来在指定目录下查找文件,默认以递归的方式
###选项
1 2 3 4 5 6 |
:::text -maxdepth <目录层级> : 设置最大目录层级; -exec <执行指令> : 假设find指令的回传值为True,就执行该指令; -print:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有“./”字符串; -print0:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行; -printf <输出格式>:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式可以自行指定; |
###常见用法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
:::text find /home -name "*.txt" #在/home目录下查找以.txt结尾的文件名 find /home -iname "*.txt" #同上,但忽略大小写 find /usr/ -path "*local*" #匹配文件路径或者文件 find . -regex ".*\(\.txt\|\.pdf\)$" #基于正则表达式匹配文件路径 find . -iregex ".*\(\.txt\|\.pdf\)$" #同上,但忽略大小写 #根据文件时间戳进行搜索 find . -type f -atime -7 #搜索最近七天内被访问过的所有文件 find . -type f -amin +10 #搜索访问时间超过10分钟的所有文件 #根据文件类型进行搜索 find . -type 类型参数(f 普通文件/d 目录) #根据文件大小进行匹配 find . -type f -size +10k #搜索大于10KB的文件 (M:兆字节,G:吉字节) find . -type f -size +1G #搜索大于1G的文件 #根据文件权限/所有权进行匹配 find . -type f -user wwj #找出当前目录用户wwj拥有的所有文件 |
#grep grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
###选项
1 2 3 4 5 6 7 8 |
:::text -i : 不区分大小写地搜索。默认情况区分大小写 (ignore case) -l : 只列出匹配的文件名 (ls?) -r/R : 递归(recurse)搜索 -n : 显示行号信息(num) -c : 计算符合pattern的列数。(count) -C : 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。 -v : 反转(reverse)查找(不匹配) |
###常见用法
1 2 3 4 5 6 7 8 |
:::text grep match_pattern file_name grep "match_pattern" file_name grep "match_pattern" file_name --color=auto #标记匹配颜色 grep -E "[1-9]+" #使用正则表达式,等效于egrep grep "text" . -r -n #当前目录下递归搜索 echo this is a text line | grep -e "is" -e "line" -o #多种匹配方式 seq 10 | grep "5" -C 3 # 显示匹配某个结果的前三行和后三行 |
#sed
sed是一种流编辑器,用程序的方式来编辑文本。sed 是基于行的,因此按顺序对每一行执行命令。
使用单引号来括起 sed 命令的习惯
###选项
1 2 3 4 5 6 |
:::text s : 替换指定字符 /g : 替换每一行中的所有匹配,当需要从第N处匹配开始替换时,可以使用 /Ng d : 删除操作 -e: 允许在同一行里执行多条命令 a\ : 追加到行下,i\ 追加到行上 |
###常见用法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
:::text grep -rl picDir ./ | xargs sed -i 's/picDir/picPath/g' # 重构项目时,重命名变量 sed 's/book/books/' file #替换文本中的字符串 sed -n 's/test/TEST/p' file #-n选项和p命令一起使用表示只打印那些发生替换的行 sed -i 's/book/books/g' file #匹配file文件中每一行的第一个book替换为books sed 's:test:TEXT:g' #可以使用任意的定界符 sed '/^$/d' file #删除空白行 sed '2,$d' file #删除文件的第2行到末尾所有行 sed '/^test/d' file #删除文件中所有开头是test的行 echo this is a test line | sed 's/\w\+/[&]/g' #[this] [is] [a] [test] [line] echo this is digit 7 in a number | sed 's/digit \([0-9]\)/\1/' #this is 7 in a number sed -n '/test/,/check/p' file #test和check所确定的范围内的行都被打印 sed -n '5,/^test/p' file #打印从第5行开始到第一个包含以test开始的行之间的所有行 sed '/test/,/west/s/$/aaa bbb/' file #test和west之间的行,每行的末尾用字符串aaa bbb替换 sed -e '1,5d' -e 's/test/check/' file #第一条命令删除1至5行,第二条命令用check替换test sed '/^test/a\this is a test line' file #将 this is a test line 追加到 以test 开头的行后面 #正则 sed -n '/[34]/ p ' source.txt #匹配包含3或4的行 sed -n '/^[0-9]\{3,5\}$/ p' numbers.txt $sed -e 's/#.*//' -e '/^$/ d' /etc/profile #删除所有注释行和空行 #修改源文件和备份 sed -ibak 's/Ian/IAN/' source.txt #-i会修改源文件,但是可以同时使用bak备份 |
#xargs
xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。
xargs的默认命令是echo,空格是默认定界符
xargs与-exec的区别:-exec会为处理每一个匹配到的文件而发起一个相应的进程。可能占用过多资源。 而使用xargs命令则只有一个进程,顺序执行
###选项
1 2 3 |
:::text -d : 指定定界符 -I : 指定一个替换字符串{} |
###常见用法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
:::text echo "nameXnameXnameXname" | xargs -dX #name name name name echo "nameXnameXnameXname" | xargs -dX -n2 #name name #name name echo 'axaxa' |xargs -dx -n1 -I {} echo b{} #ba #ba #ba ls *.jpg | xargs -n1 -I cp {} /data/images #复制所有图片文件到 /data/images 目录下 find . -type f -name "*.py" -print0 | xargs -0 wc -l #统计python代码行数 #等效于find . -type f -name "*.py" | xargs wc -l 吧 cat url-list.txt | xargs wget -c #下载文件里的所有链接 |
#seq seq命令用于产生从某个数到另外一个数之间的所有整数
###选项
1 2 3 4 |
:::text -f : 使用printf 样式的浮点格式 -s : 使用指定字符串分隔数字(默认使用:\n) -w : 在列前添加0 使得宽度相同 |
###常见用法 touch (seq -f “%03g-4.mp3” 1 10)
#$()
###常见用法 cp gogs-repositories/ gogs-repositories_$(date “+%Y-%m%d”) -R
#tree ###选项
1 2 3 4 5 |
:::text -d : 仅显示目录 -L : 限制目录的最大深度 -C : 在文件和目录清单加上色彩,便于区分各种类型; -f:在每个文件或目录之前,显示完整的相对路径名称; |
###常见用法 tree -ah –du
#ln ###选项
1 2 3 4 |
:::text -s或--symbolic:对源文件建立符号连接,而非硬连接; -d或-F或--directory:建立目录的硬连接; -i或--interactive:覆盖既有文件之前先询问用户; |
###常见用法
1 2 |
:::text ln -s /usr/mengqc/mub1 /usr/liu/abc #在目录/usr/liu下建立一个符号链接文件abc,使它指向目录/usr/mengqc/mub1 |
#streams(input,output and redirect) streams
###常见用法
1 2 3 4 5 6 7 8 9 10 11 12 |
:::text # output of ls will be written to list.txt ls -l > list.txt # append output to list.txt ls -a >> list.txt # all errors will be written to errors.txt grep da * 2> errors.txt # read from errors.txt less < errors.txt |
#逻辑判断
###常见用法
1 2 3 4 5 |
if [[ 2 -ne 1 ]]; then echo "true" else echo "false" fi |
#实用案例
###递归替换
grep -rl 'ajax.googleapis.com' ./ | xargs sed -i 's#ajax.googleapis.com#ajax.useso.com#g'
作用 : 把./目录及其子目录下的ajax.googleapis.com
替换为ajax.useso.com
(实用360CDN替换google CDN)
解释:
1 2 3 4 5 |
:::text -r : 递归 -l : 只列出文件名 xargs : 拼接命令 -i : sed 原地替换 |
###批量生成文件
touch (seq -f "%03g-1.mp3" 1 10)
(fish下用()替代$())
批量生成001-1.mp3到010-1.mp3
#date ###常见用法 * echo $(date +“%Y%m%d_%S”) #2016_02_22_53 * echo $(date +“s”) #从1970至今的秒数
#tar ###常见用法
|
|
du
du -hls * // 列出当前目录下所有文件/目录的大小 du -hls * | grep G //查找大目录
定时任务
cron用于例行性的任务,at用于一次性的任务
at
1 2 3 4 |
at now+1 minute cowsay 'hello at' >/tmp/test #atq 查看任务 # at -c 8 #查看数字对应任务的具体内容 |
mac下有问题:Mac OS X: at command not working
cron
sudo crontab -e
暂停并在后台运行命令
- CTRL + Z -暂停应用程序
- fg -重新将程序唤到前台
#参考 * Linux命令大全
文章作者 种瓜
上次更新 2016-01-26