|
|
|
@ -1,6 +1,6 @@
|
|
|
|
|
##############################################################################
|
|
|
|
|
# BASH CHEATSHEET (中文速查表) - by skywind (created on 2018/02/14)
|
|
|
|
|
# Version: 12, Last Modified: 2018/02/25 01:56
|
|
|
|
|
# Version: 13, Last Modified: 2018/02/25 03:24
|
|
|
|
|
# https://github.com/skywind3000/awesome-cheatsheets
|
|
|
|
|
##############################################################################
|
|
|
|
|
|
|
|
|
@ -482,6 +482,69 @@ n>&- # 关闭作为输出的文件描述符 n
|
|
|
|
|
n<&- # 关闭作为输入的文件描述符 n
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##############################################################################
|
|
|
|
|
# 文本处理 - cut
|
|
|
|
|
##############################################################################
|
|
|
|
|
|
|
|
|
|
cut -c 1-16 # 截取每行头16个字符
|
|
|
|
|
cut -c 1-16 file # 截取指定文件中每行头 16个字符
|
|
|
|
|
cut -c3- # 截取每行从第三个字符开始到行末的内容
|
|
|
|
|
cut -d':' -f5 # 截取用冒号分隔的第五列内容
|
|
|
|
|
cut -d';' -f2,10 # 截取用分号分隔的第二和第十列内容
|
|
|
|
|
cut -d' ' -f3-7 # 截取空格分隔的三到七列
|
|
|
|
|
echo "hello" | cut -c1-3 # 显示 hel
|
|
|
|
|
echo "hello sir" | cut -d' ' -f2 # 显示 sir
|
|
|
|
|
ps | tr -s " " | cut -d " " -f 2,3,4 # cut 搭配 tr 压缩字符
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##############################################################################
|
|
|
|
|
# 文本处理 - awk / sed / sort
|
|
|
|
|
##############################################################################
|
|
|
|
|
|
|
|
|
|
awk '{print $5}' file # 打印文件中以空格分隔的第五列
|
|
|
|
|
awk -F ',' '{print $5}' file # 打印文件中以逗号分隔的第五列
|
|
|
|
|
awk '/str/ {print $2}' file # 打印文件中包含 str 的所有行的第二列
|
|
|
|
|
awk -F ',' '{print $NF}' file # 打印逗号分隔的文件中的每行最后一列
|
|
|
|
|
awk '{s+=$1} END {print s}' file # 计算所有第一列的合
|
|
|
|
|
awk 'NR%3==1' file # 从第一行开始,每隔三行打印一行
|
|
|
|
|
|
|
|
|
|
sed 's/find/replace/' file # 替换文件中首次出现的字符串并输出结果
|
|
|
|
|
sed -r 's/regex/replace/g' file # 替换文件中所有出现的字符串
|
|
|
|
|
sed -i 's/find/replace/g' file # 替换文件中所有出现的字符并且覆盖文件
|
|
|
|
|
sed '/line/s/find/replace/' file # 先搜索行特征再执行替换
|
|
|
|
|
sed -e 's/f/r/' -e 's/f/r' file # 执行多次替换
|
|
|
|
|
sed 's#find#replace#' file # 使用 # 替换 / 来避免 pattern 中有斜杆
|
|
|
|
|
sed -i -r 's/^\s+//g' file # 删除文件每行头部空格
|
|
|
|
|
sed '/^$/d' file # 删除文件空行并打印
|
|
|
|
|
sed -i 's/\s\+$//' file # 删除文件每行末尾多余空格
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##############################################################################
|
|
|
|
|
# 排序 - sort
|
|
|
|
|
##############################################################################
|
|
|
|
|
|
|
|
|
|
sort file # 排序文件
|
|
|
|
|
sort -r file # 反向排序(降序)
|
|
|
|
|
sort -n file # 使用数字而不是字符串进行比较
|
|
|
|
|
sort -t: -k 3n /etc/passwd # 按 passwd 文件的第三列进行排序
|
|
|
|
|
sort -u file # 去重排序
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##############################################################################
|
|
|
|
|
# 键盘绑定
|
|
|
|
|
##############################################################################
|
|
|
|
|
|
|
|
|
|
bind '"\eh":"\C-b"' # 绑定 ALT+h 为光标左移,同 CTRL+b / <Left>
|
|
|
|
|
bind '"\el":"\C-f"' # 绑定 ALT+l 为光标右移,同 CTRL+f / <Right>
|
|
|
|
|
bind '"\ej":"\C-n"' # 绑定 ALT+j 为下条历史,同 CTRL+n / <Down>
|
|
|
|
|
bind '"\ek":"\C-p"' # 绑定 ALT+k 为上调历史,同 CTRL+p / <Up>
|
|
|
|
|
bind '"\eH":"\eb"' # 绑定 ALT+H 为光标左移一个单词,同 ALT-b
|
|
|
|
|
bind '"\eL":"\ef"' # 绑定 ALT+L 为光标右移一个单词,同 ALT-f
|
|
|
|
|
bind '"\eJ":"\C-a"' # 绑定 ALT+J 为移动到行首,同 CTRL+a / <Home>
|
|
|
|
|
bind '"\eK":"\C-e"' # 绑定 ALT+K 为移动到行末,同 CTRL+e / <End>
|
|
|
|
|
bind '"\e;":"ls -l\n"' # 绑定 ALT+; 为执行 ls -l 命令
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##############################################################################
|
|
|
|
|
# 有趣的命令
|
|
|
|
|
##############################################################################
|
|
|
|
|