title | date | tags | categories | ||
---|---|---|---|---|---|
Linux基础命令 |
2018-12-15 03:11:55 -0800 |
|
|
💠
💠 2024-12-12 15:04:18
The Art of Command Line
高效优美的工具
/bin/* 系统自带命令
- false 以失败码退出程序
stty -a
查看快捷键映射- for
for i in $(seq 1 10); do echo $i; done
语法和Shell差不多, 但是需要在循环体内的每一句命令都加上;
- sort
- -k2 按指定的第二列进行排序
- -n 字符串数值排序,例如 Mib大于Kib
- -r 逆序
- whence 查看命令的真实面貌 (zsh中的内建命令)
- where 查找命令的位置 (Zsh中内建命令)
- which 寻找命令的位置
- type 展示命令的描述
- 输出重定向
> a.log 2>&1
表示为将2也输出到标准输出 为了方便记忆也可以将 &1 理解为C语言中的取地址符:2重定向到1的地址- 2 是错误输出 1 是标准输出
- 接收输入流且输出流 类似于 Java8 中的 peek() 函数
cat README.md | grep Java | tee > java.log | grep -v Maven
常在管道中使用 能将输入流转为 命令 的参数
- 输出所有的md文件的内容
find . -name "*.md" | xargs cat | less
- 定义替换符
xargs -I {} echo {}
xargs -I XX sh -c 'echo XX;touch XX'
可以用于统计命令运行消耗的时间
- bash内置简易time
time
和 /usr/bin/time\time
\time -v ls -al
获取日期和时间
date +%Y_%m_%d_%H:%M:%S
或者date +%F %T
- 获取前一天日期
date --date='1 day ago' -R
- 将秒时间戳转换为日期
date --date='@1524738626'
- 设置日期或时间
date -s '2020-12-01'
或date -s '23:00:20'
- 日期计算
date -d "+10 days"
g
(globally) search for are
(regular expression ) andp
(print ) the results.
egrep 相关网页 与 grep -E 等价
-
- 标准正则
grep -E "[1-9]+"
注意[]
是里面单个字符()
是里面所有字符一起 用于匹配 - Perl正则
grep -P ''
- 标准正则
-
-o 只输出匹配值
一行内多个匹配时多行输出
- 统计所有main字符数量
grep -o main test.log | wc -l
- 统计所有main字符数量
-
-i 忽略大小写
eg:
- 匹配中文
-P '[\p{Han}]'
- 截取字符
ping jd.com | grep -oP '(?<=time=).*(?=ms)'
提取出ms值。 - 两个文件的差异行
grep -vwf 文件1 文件2
make typescript of terminal session
录制终端
minute hour day-of-month month-of-year day-of-week commands
- cron 脚本中的操作命令 都使用绝对路径, 必须注意环境变量问题
- 以及每行配置都需要以换行符结尾
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
- 编辑配置文件
crontab -e
- 时间配置格式
-
- 表示所有值;
- ? 表示未说明的值,即不关心它为何值;
-
- 表示一个指定的范围;
- , 表示附加一个可能值;
- / 符号前表示开始时间,符号后表示每次递增的值;
-
- 例如:
- 每分钟执行二进制命令
- 每分钟执行脚本
注意
如果command是shell脚本,注意执行环境和权限问题
参考: Systemd 定时器教程
配置和使用上比Crontab更繁杂, 但是有更多的可控制项