vim 到某一行
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
| #!/bin/bash
onlyRead=''
while getopts ':R' optchar; do
case "${optchar}" in
R)
onlyRead='-R'
;;
*)
break
;;
esac
done
shift $((OPTIND-1))
act=$1
result=$(grep -n "act=='$act'" /path/to/dir)
fileName=$(echo "$result" | awk -F ':' '{print $1}')
line=$(echo "$result" | awk -F ':' '{print $2}')
vim $onlyRead +$line $fileName
|
bc - 计算器
1
2
| echo $(cat a.txt | tr "\n" "+") | bc
cat a.txt | tr "\n" "+" | sed 's/$/\n/' | bc
|
不加换行会报错
sort - 排序
1
| echo -e "$counts" | sort -n -k 1 -r | column -t -s ' ' | cat -n
|
Crontab
1
2
3
| crontab -l > ~/crontab
echo "* * * * * echo test" >> ~/crontab
crontab ~/crontab
|
直接加载指定文件的内容到 crontab 里面
1
| crontab -l | sed 's///g' | crontab -
|
跳过输出到文件
dmesg(时间转换为可读形式)
新版系统:
老版本系统:
1
| dmesg | sed -r 's#^\[([0-9]+\.[0-9]+)\](.*)#echo -n "[";echo -n $(date --date="@$(echo "$(grep btime /proc/stat|cut -d " " -f 2)+\1" | bc)" +"%c");echo -n "]";echo -n "\2"#e' | less
|
批量重命名
去掉所有文件的 .new
后缀
1
| ls | grep new | xargs -I {} bash -c 'a={}; mv $a $(echo $a | sed "s/.new//")'
|
less 命令自动换行(word wrap)
https://superuser.com/questions/272818/how-to-turn-off-word-wrap-in-less
可以直接在查看界面 -S
然后 Enter
lsof
与某台主机的连接
某个进程 ID 的连接
某个端口的进程
umount: /mnt: target is busy.
用 lsof /mnt
查看占用的进程,kill 掉就行。
nohup 命令输出文件太大
1
| cat /dev/null > stdout.nohup
|
如果不小心删除了文件,则需要找到打开的文件描述符:
1
2
| pid=$(ps aux | grep your_process | grep -v grep | awk '{print $2}')
lsof -p ${pid}
|
可以看到对应的文件描述符 ID,例如是 fd 为 1 的文件被删除。则执行:
1
| cat /dev/null > /proc/${pid}/fd/1
|
应用当前状态
1
2
3
4
5
6
7
8
9
10
| function status() {
pid=$(getpid)
if [[ ! -z "${pid}" ]]; then
ps_source=$(ps -p ${pid} -o user,pid,ppid,pcpu,pmem,vsize,rssize,etimes,command)
to_ISO3339=$(echo "${ps_source}" | sed 's/ELAPSED/START/' | awk 'BEGIN{now=systime()} NR>1 {$8=strftime("%Y-%m-%dT%H:%M:%S", now-$8);}{print;}')
to_MB=$(echo "${to_ISO3339}" | awk 'NR>1 {$6=int($6/1024)"M";$7=int($7/1024)"M";}{print;}')
echo "${to_MB}" | column -t
return
fi
}
|
Systemctl
文件存放位置:
1
2
3
| /etc/systemd/system/
/usr/lib/systemd/system
/lib/systemd/system
|
tcpdump
1
2
3
| #!/bin/bash
tcpdump -i eth1 -w target.cap -c 1000 -s 0 -vv -A '(src host 192.168.1.1 or src host 192.168.1.2)'
|
文本行从下到上输出(tac)
tac 是 cat 的反向。
这是 cat:
1
2
3
4
| $ cat thegeekstuff.txt
1. Linux Sysadmin, Scripting etc.,
2. Databases Oracle, mySQL etc.,
3. Hardware
|
这是 tac:
1
2
3
4
| $ tac thegeekstuff.txt
3. Hardware
2. Databases Oracle, mySQL etc.,
1. Linux Sysadmin, Scripting etc.,
|
tmux 强行关闭窗口
ctrl+b &
替换维基百科地址
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| // ==UserScript==
// @name 替换维基百科地址
// @match *://www.google.com/*
// @match *://cn.bing.com/*
// @grant none
// ==/UserScript==
var links = document.getElementsByTagName("a");
for (var i=0,imax=links.length; i<imax; i++) {
if (links[i].href.match(/\.wikipedia\.org\/wiki\//) || links[i].href.match(/\.wikipedia\.org\/zh-hk\//) || links[i].href.match(/\.wikipedia\.org\/zh-hans\//)) {
links[i].href = links[i].href.replace(/en\.wikipedia\.org\/wiki\//i,"en.wanweibaike.com/wiki-");
links[i].href = links[i].href.replace(/zh\.wikipedia\.org\/wiki\//i,"www.wanweibaike.com/wiki-");
links[i].href = links[i].href.replace(/zh\.wikipedia\.org\/zh-hk\//i,"www.wanweibaike.com/wiki-");
links[i].href = links[i].href.replace(/zh\.wikipedia\.org\/zh-hans\//i,"www.wanweibaike.com/wiki-");
links[i].removeAttribute("onmousedown")
}
}
|
git log 单行显示
1
| git log --oneline --format="%an %cs %s" --author=xxxx
|
ffmpeg 剪切
ffmpeg -i test.mp4 -ss 00:10:00 -to 00:20:00 -codec copy cut.mp4
ffmpeg 合并
ffmpeg -f concat -i vfilelist -c copy concat.mp4
ffmpeg 下载视频
ffmpeg -i “https://example.com/test.m3u8" -c copy test.mp4
ffmpeg -i “https://example.com/test.m3u8" -c copy -bsf:a a ac_adtstoasc test.mp4