惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LangChain Blog
V
V2EX
爱范儿
爱范儿
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Martin Fowler
Martin Fowler
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
宝玉的分享
宝玉的分享
Last Week in AI
Last Week in AI
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
罗磊的独立博客
小众软件
小众软件
Vercel News
Vercel News
博客园 - 司徒正美
阮一峰的网络日志
阮一峰的网络日志
V
Visual Studio Blog
J
Java Code Geeks
P
Proofpoint News Feed
MongoDB | Blog
MongoDB | Blog
B
Blog
美团技术团队
量子位

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观CodeLab Neverland 发布 CodeLab Adapter 3.3.1 DynamicTable 之 纸糊方向盘 CodeLab DynamicTable: 一个可实施的技术方案 CodeLab Insight 发布 Alpha 版 情人节 Home Assistant 周报 && IoT 周报 (02) Joplin: 关注隐私的 Evernote 开源替代软件 浏览器的未来与 Web 传感器 Home Assistant 周报 && IoT 周报 (01) 百宝箱(01) 论自由 介绍 WebThings Home Assistant 周报 && iot 周报 (00) 百宝箱(00) 毛姆读书心得 传世之作 周末徒步 CodeLab Adapter ❤️ Jupyter/Python 航班 躲雨 夏令营途中 [译]思想--作为一种技术 The future of coding 美国之行 三门问题的程序模拟
command tricks
2016-01-26 · via 夜行人

文章目录

列出一些常用的命令的参数和例子,方便自己查阅和上手

建议采用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 ###常见用法

1
2
tar -zcvf /tmp/etc.tar.gz /etc #打包后,以 gzip 压缩
tar -zxvf /tmp/etc.tar.gz #解压

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 -重新将程序唤到前台

#参考

文章作者 种瓜

上次更新 2016-01-26