LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: aegean sea

问有关于界面问题

[复制链接]
发表于 2009-7-2 23:23:11 | 显示全部楼层
Post by kardinal;2002922
比如说你在 $home 下执行了
du -h --max-depth=1

然后到其它目录,这时是没有 du -h --max-depth=1 这个纪录的
cphist 后,fc -l 就有了 ,并且上翻可以找到
hist 则没有这个命令,翻出来后如果不执行,这个命令也不纪录到 histfile 中

PS:其实不用列出也是一样的。但是这个操作一点反应也没有,列出来能够提醒一下
如果不想列出,把 history -fi 那行删了就行,绝对一点动静没有,唯一的表现是按了空格光标却没有动 ;)
我听见硬盘“咯嗒”了一下。。。
回复 支持 反对

使用道具 举报

发表于 2009-7-2 23:25:13 | 显示全部楼层
Post by kardinal;2002927
如果列出的话,还要自己按下回车
加了一行,回车不用自己按了
  1. cphist() {
  2.     fc -R $HISTDIR/${OLDPWD//\//:}
  3.     print '\n'
  4.     history -fi
  5.     zle accept-line
  6. }
复制代码
列出来的话,如果我有上百条命令。。。那不就是成了恶意刷屏了嘛
回复 支持 反对

使用道具 举报

发表于 2009-7-2 23:53:39 | 显示全部楼层
等等,问下哈,如果我在某目录执行了某命令,然后关掉终端,在另一目录直接打开终端,cphist 还有效么?我的意思是说不用 cd 更改目录。还有cphist似乎只能记录上一个目录内执行的命令。

edit: 测过了,关掉终端后就无效了。看样子我只好去用单独的一个历史文件了。泪奔。。。
回复 支持 反对

使用道具 举报

发表于 2009-7-3 13:23:09 | 显示全部楼层
Post by zhuqin_83;2003090
列出来的话,如果我有上百条命令。。。那不就是成了恶意刷屏了嘛


默认只显示最近的10条哈(好像是10条,俺没有数-_-!!)
回复 支持 反对

使用道具 举报

发表于 2009-7-3 13:23:54 | 显示全部楼层
Post by zhuqin_83;2003089
我听见硬盘“咯嗒”了一下。。。


只有偶尔会咯嗒一下吧,一般都没有动静
回复 支持 反对

使用道具 举报

发表于 2009-7-3 13:26:04 | 显示全部楼层
Post by zhuqin_83;2003098
等等,问下哈,如果我在某目录执行了某命令,然后关掉终端,在另一目录直接打开终端,cphist 还有效么?我的意思是说不用 cd 更改目录。还有cphist似乎只能记录上一个目录内执行的命令。

edit: 测过了,关掉终端后就无效了。看样子我只好去用单独的一个历史文件了。泪奔。。。


依靠 $OLDPWD 这个变量实现的,如果没有切换目录,可能就没有这个变量…… 要不就是这个变量为空
回复 支持 反对

使用道具 举报

发表于 2009-7-3 14:14:10 | 显示全部楼层
关掉终端后无效的问题可以这样解决
TRAPEXIT  zshexit 钩子可以在退出时执行操作
(zshexit 是整个zsh 退出时执行, TRAPEXIT 似乎是单个会话退出时执行)
可以在退出时把 $PWD 写入一个文件,启动时设置 OLDPWD=(此文件内容)

有点事,晚上回来再试试吧
回复 支持 反对

使用道具 举报

发表于 2009-7-3 14:29:21 | 显示全部楼层
先 touch $HISTDIR/OLDPWD
  1. TRAPEXIT(){
  2.     echo $PWD > $HISTDIR/OLDPWD
  3. }
  4. OLDPWD=$(cat $HISTDIR/OLDPWD)
复制代码
使用 exit 命令退出 zsh 的情况下肯定有效
直接关闭似乎有时不行……兄弟试验一下吧
回复 支持 反对

使用道具 举报

发表于 2009-7-3 14:33:40 | 显示全部楼层
另外只能是上一个目录的命令,如果所有目录都有的话,那和一个整的纪录又一样了
想要哪个目录的纪录,可以直接给 $OLDPWD 赋值
比如想要 /var/log 这个目录下的纪录,可以这样
  1. OLDPWD=/var/log
  2. [ESC] [SPC]
复制代码
回复 支持 反对

使用道具 举报

发表于 2009-7-3 14:55:28 | 显示全部楼层
Post by kardinal;2003213

直接关闭似乎有时不行……
如果实在不行可以把   echo $PWD > $HISTDIR/OLDPWD 这句放到 chpwd() 里,肯定没问题。不过老是写同一个文件的同一个位置,如果是U盘损伤很大的说
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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