January 13, 2008 – 11:42 pm
在某些教学环境下,老师需要讲解某些shell操作,然而学生无法现场观看终端操作,则就出现了需要“直播”一个终端操作的需求。
在FreeBSD下,有一个watch命令,可以与snoop设备–snp(4)配合 来实现,只需要简单地执行watch ttyXX即可,XX为你需要观看的教师演示用终端编号。
然而在其他操作系统下,却并无这个命令,要实现这个目的,还有以下2个方法:
用script通过一个fifo实现
教师执行mkfifo xxx,然后script xxx。学生直接cat xxx即可。
利用screen这个软件
教师演示前执行screen -S xxx,学生用screen -X xxx即可。xxx是随便起的一个名字,只要双方一致即可。
第一种方法有个小问题,就是fifo的刷新是有时间的,因此学生看到的操作可能稍稍滞后于教师操作。这种方法有点是几乎所有操作系统都附带了这两个工具。第二种方法一般需要安装screen套件,但这个用起来更为舒心一些,而且更绝的是,这个方式老师和学生是可以互动的,也就是学生不仅仅是被动地看,他所敲入的命令也会反馈给老师的终端。
整天在shell环境下操作,不积累点快捷输入的小技巧是不行的。
最常用的技巧恐怕就是Tab自动补全以及上方向键来回退上几条历史命令了,这些对于csh,bash,ksh,zsh都适用。
最近还找到一种快速回退上一条历史的一些小技巧,暂记录之。
1,除了方向键上,还可以用“!!”代表上一条输入的命令,用这个的好处在于可以将这两个字符放在命令行任何位置以便于构成新的命令。
例如:
$./some-shell-command
$cat !!
则后一条命令就相当于cat ./some-shell-command,这样做比先按方向键上回退一条命令,然后定位到开始,插入cat要快捷得多。
2,除了!!,!$代表得是上一条命令中最后一个parameter,这是个更有用的变量,例如:
$ls /some-path-to-a-directory
$cat !$/some-file.txt
如果some-path-to-a-directory不幸为一个非常长的路径的时候,使用!$恰好就能省去输入这个超长路径的麻烦,这条命令实际上就相当于cat /some-path-to-a-directory/some-file.txt
3,!str代表以历史命令中最近一条以str开头的命令。
4,!?str?代表历史命令中最近一条包含str的命令。
5,!n和!-n,前者代表history命令显示出来前面的条目数为n的那条命令,后者代表当前命令条目数减去n的那条命令,例如!-3就代表3条前的那个命令。
对比起来,1和2是相当实用的,剩下3条记得住就用,记不住也无妨了。
开始逐渐习惯并喜欢使用zshell,这里记录一下自己的zshrc,便于以后移植到新服务器的shell环境中。
不断补充中
bindkey “\e[1~” beginning-of-line
bindkey “\e[4~” end-of-line
bindkey “\e[3~” delete-char
PROMPT=’%/>’
alias ll=”ls -laG”
alias ls=”ls -G”
export LANG=en_US.UTF-8
直接下载地址