设为首页 收藏本站
查看: 894|回复: 0

[经验分享] history and its relevant variables in Linux/GNU and Mac OS history命令以及相关环境变量

[复制链接]

尚未签到

发表于 2015-12-31 11:13:55 | 显示全部楼层 |阅读模式
  对于Terminalor们,history命令并不陌生,什么!n, !!更是很常用的,而且您在命令行敲的cmds是默认保存在/home/$USER/.bash_history(linux)
  /Users/$USER/.bash_history(Mac)下的。
  但是history不只是这个样子:存了命令然后可以查看调用。
  先介绍几个与history相关的变量,控制history的行为和size
  HISTIGNORE (hist-ignore) 告诉history哪些命令不需要保存,直接把它们忽略掉。
  例如我的是:
  HISTIGNORE="ls *:ll:ls:l:ll *:freq*:cd *:*.log:dl:dc:des:bi:pic:sublime:brackets:open*"
  就是把常用的ls命令们忽略掉,这些都是很常用但是很少被再利用的“废料“,cd到哪哪哪也没用,还有就是查看log文件的也没用,freq*是我把常用的目录alias的
  例如 alias freq1="cd ~/Edge/dl/GSE38600/NEW"
  还有 dl dc des pic bi都对应一个alias, alias dl="cd ~/Downloads"这样的
  还有 sublime brackets是我常用的editor,在Mac中是alias sublime="open -a sublime\ text",linux下直接用subl就好了
  open*也是Mac下的
  对于在Debian类的Linux系统的,常用的apt-get类命令可以alias
  alias update="sudo apt-get update"
  alias upgrade="sudo apt-get upgrade  | tee ~/Documents/`date +%F_%H:%M:%S`-upgrade.log"
  alias dist-upgrade="sudo apt-get dist-upgrade  | tee ~/Documents/`date +%F_%H:%M:%S`-dupgrade.log"
  alias remove="sudo apt-get remove"
  alias install="sudo apt-get install"
  alias purge="sudo apt-get purge"
  ...
  然后把update,upgrade,dist-upgrade等添加到HISTIGNORE中
  HISTSIZE 表示最多可以存多少条命令,默认的你可以看.bashrc或者.bash_profile里面一般把这个变量定义为1000
  超过这个数字会自动把原来的命令挤出去,相当于一个隧道一样的。
  但是真的很不够用的,我把HISTSIZE定义为1,000,000反正暂时也达不到这个要求,一般100,000也要很久才能达到
  一般可以文件到了一定的大小把它备份了,再重新开始一个文件存,备份的可以写个bash函数并结合history来一起查看新旧文件
  HISTFILESIZE 表示文件的最大大小,默认也是1000,自己按照自己的实际cmd量,DIY
  HISTTIMEFORMAT (hist-time-format)当然是记录你敲的这条命令的时间,格式和·date·是一样的
  我的是定义为:
  HISTTIMEFORMAT="%F#%H:%M:%S " >>>>> 2015-04-08#04:27:32
  HISTTIMEFORMAT="%F#%T " >>>>> 2015-04-08#04:27:32
  [注意这个时间不会存到.bash_history中的,只是你用history查看的时候显示]
  HISTCONTROL 相当于是.bash_history的质量(品质)控制,有ignoredups,erasedups (就是ignore duplicates,和 erase duplicates)
  假如选择ignoreredups,就是忽略连续的重复,不连续的没作用。
  假如你在调试一个程序,不停地 perl bowtie2_all.pl,假如尝试20次后最终成功的,但是history中就有了20条命令,
  当然你可以应HISTIGNORE把这条命令忽略掉,但是很不明智,HISTCONTROL就可以啦,它会在存入时检查要存的命令是否合上一条一样
  重复的话就忽略,也就是不存入
  假如选择erasedups,当然会在存入时把要存入的命令和以后的所有命令比对一次,如果有重复的话,就会把这条命令不存入
  还有一个trick:可以选择 ignorespace,意思就是,你在输入命令的时候如果最开始有一个空格,那么就会不存入这条命令,所以
  你就可以把不想存入的命令前面加一个或者多个空格来忽略它。
  HISTFILE当然就是自定义你要把命令存到哪里,默认是~/.bash_history,当然如果你不想存这儿,就指定要存的地方,OK。
  例如 HISTFILE="/home/$USER/Backup/bash_2015_history"
  [注意最好用绝对路径]
  注意,这些变量的定义存入.bashrc,然后再命令行 source ~/.bashrc,意思就是把我修改过的.bashrc中的设置覆盖已经读到内存中的设置(以后打开的terminal都会用这个设置,在source之间打开的,除了这个窗口,都保持原来的设置)
  很讨厌用export来导入,因为在你关掉这个Terminal或者重启之后这个设置就没有了,因为每次打开Terminal都会重读.bashrc
  当然我直接把export VARIABLE=CONTENT写入.bashrc不就好了,但是直接用VARIABLE=CONTENT就好了,何必再多敲7个字符呢
  还有就是,所有的你在这个窗口中敲的命令会在这个窗口exit或者close后才写入.bash_history中,(缓存机制),如果想敲一条写一条的话,呵呵,来一个trick
  PROMPT_COMMAND="history -a; $PROMPT_COMMAND"
  PROMPT_COMMAND就是.bash_rc中定义的PS1啦,也就是每次的admin@Ubuntu : ~ $,上面的trick就是在每次Prompt前将命令存入,-a可以指定其他文件名,
  但默认是.bash_profile
  由于bash的history文件默认是覆盖,如果存在多个终端,最后退出的会覆盖以前历史记录,改为追加形式:shopt -s histappend,不过默认在.bashrc中是有的,无需再填
  history N 查看最新存入的N条命令: 相当于 history | tail -n N
  !N 查看并运行存入的第N条命令: history | sed -n 'Np'(只查看的话)
  !! 查看并运行上一条命令
  !STR 查看以STR打头的命令
  但是我更喜欢 : alias hist="history | grep "
  -w / -r/ -c 分别是 write to / read from / clear
  Ctrl + R 也是常用的history搜索
  
  Reference:
  1. http://www.iyunv.net/LINUXjishu/157030.html
  2. http://blog.csdn.net/dyllove98/article/details/9412805

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-158765-1-1.html 上篇帖子: [xUnix 开发环境--01] MAMP mac os 10.10 配置经历、要点——01. phpmyadmin连不上 下篇帖子: mac OS X 安装svn
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表