Sh/Bash 技巧
使用 time
命令计算脚本执行时间
time bash /path/to/your/script.sh
crontab
下将命令输出存入日志文件
*/2 * * * * /usr/bin/bash /path/to/some/bash/script.sh >> /path/to/log/file 2>&1
使用 curl
定时从 FTP 服务器下载数据脚本
{{#include ../projects/.bins_download_v0.0.3.sh}}
统计到指定 IP 地址 ping
延迟脚本
此脚本每 10 分钟向特定 IP 地址进行 ping
操作,并获取结果中的 avg
信息记录到文本文件中。
#!/usr/bin/env bash
# Parameter list:
# $1 - target ip address
# $2 - target name
TARGET_IP=$1
TARGET_NAME=$2
record="delay_${TARGET_IP}_${TARGET_NAME}-$(date '+%Y%m%d').txt"
if [ -f "$record" ]; then rm -rf $record; fi
touch $record
echo -e "\nDelay to ${TARGET_IP}(${TARGET_NAME}) based upon \`ping\` command\n\n\t---------------------------" > $record
delay_sampling () {
delay_average=$(ping -c 4 $1 | tail -1 | awk '{print $4}' | cut -d '/' -f 2)
ping_at=$(date '+%Y-%m-%d %H:%M:%S')
echo -e "Delay at $ping_at\t- $delay_average ms" >> $2
}
i=0
while [ $i -lt 144 ]; do
delay_sampling $TARGET_IP $record
i=$((i+1))
sleep 600
done
exit 0
在当前目录及其所有子目录下,查找并删除所有某类型的文件
$ find . -name '*.pyc'
$ find . -name '*.pyc' -delete
批量删除文件夹(保留想要的文件夹)
ls | grep -w -v -e "lenny" -e "sw" | xargs rm -rf
注:其中当前文件夹下,匹配
lenny
与sw
的文件夹将被保留。
替换文件夹中所有文件名包含 log
文件的字符串
ls | grep log | xargs sed -i 's/text-wrap: wrap;/text-wrap: wrap; white-space: pre-wrap;/g'
注:将匹配当前文件夹下,文件名中包含
log
的文件,并将这些文件中的text-wrap: wrap;
字符串,替换为text-wrap: wrap; white-space: pre-wrap;
,实现 HTML 的pre
元素,在 Chrome(WebKit) 与 Firefox(Gecko) 下,都能自动断行。
建立与更新软链接
// 建立软链接
$ ln -s File link
// 更新软链接
$ ln -vfns File1 link
(End)