https://talk.linuxtoy.org/using-cli/#10
[toc]
统计历史命令使用比例
history |
> awk '{CMD[$2]++;count++;}END {for (a in CMD)print CMD[a] " " \
> CMD[a]/count*100 "% " a;}'|
> grep -v "./" |
> column -c3 -s " " -t |
> sort -nr |
> nl |
> head -n 10
^删除多余部分
grep fooo /var/log/auth.log
^o
grep foo /var/log/auth.log
oldnew替换输错或输少的部分
cat myflie
^li^il
cat myfile
!:gs/old/new将old全部替换为new
ansible nginx -m command -a 'which nginx'
!:gs/nginx/squid
要点: 一删,二换,三全变
忘记历史,就是背叛
# 了解历史记录
echo $HISTSIZE
# 历史记录的保持位置
echo $HISTFILE
# 历史记录的保持大小
echo $HISTFILESIZE
# 查看历史
history
history | less
histroy 5
history |grep your_string
# ctrl+r 逆向搜索历史命令
histroy 5
[ctrl+p] 访问上一条命令
[ctrl+n] 访问下一条命令
# !!执行上一条命令
apt install wget
sudo !!
# 使用!foo执行以foo开头的命令
!his
# !?foo执行包含foo的命令
!?is
# !n 执行第n各命令
!10
!-n # 执行倒数第n个命令
# 终端显示命令行编号
export PS1='!\! \u@\h:\w\$
# 使用!#引用当前行
cp filename filename.old
cp filename !#:1.old
# !:n 得到上一条命令的前n个
# touch {foo, baz, hh}.txt
touch foo.txt gza.txt abc.txt
vim !:2
# !* 上一条命令的所有参数
!!
![?]字符串
![-]数字
!#
- n
- ^|$
- [n]*
- x-y
:h选取路径开头
ls /usr/share/fonts/truetype
cd !$:h
:t 选取路径结尾
wget http://nginx.org/download/nginx-1.4.7.tar.gz
tar zxvf !$:t
# tar zxvf nginx-1.4.7.tar.gz
:r 选取文件名
unzip filename.zip
cd !$:r
# cd filename
:e 选取扩展名
echo abc.jpg
echo !$:e
:p 打印命令行
echo *
!:p
# 打印上一条命令
:s 替换, :g 全局替换
echo this that
!:s/is/e
# echo the that
echo abcd abed
!:gs/ab/cd # 全局替换,包括输出
# echo cdcd cdef
# cdcd cdef
:u 将其更改为大写(zsh),:l 小写
echo $histchars
echo !$:u