正文
原来是将制表符定义为退格键了。
学习课堂:
tset 用于设置终端特征;-e 参数设置擦除字符,缺省为退格字符;-Q 表示不显示设置信息(静默)。
莫名退出
有时候,执行一个命令就会莫名其妙地退出 shell,只不过是命令有个非 0 的返回状态嘛,为什么会这样?
((RANDOM % 10)) || set -o errexit;
学习课堂:
set -o errexit 等价于 set -e,表示有任何错误(命令的返回状态非 0 )时即退出。
啥都看(cat)不了
当我想看(cat)一下文件时,它居然就当没听见,到底文件里面有啥啊?
alias cat=true;
原来是把 cat 定义成 true 命令的别名了, true 命令啥都不干,不管你给它什么参数和什么输入,它只是静静地返回一个 0 的状态码。
学习课堂
true 命令和 false 命令常用于 shell 脚本中。
到底是按什么排列的啊?
好吧,我想看看目录里面有啥文件,于是我输入了 ls,咦?这是什么顺序?我再次输入一遍,怎么回事,列出的文件和目录又是一种顺序,难道它的输出看心情吗?
function ls { command ls -$(opts="frStu"; echo ${opts:$((RANDOM % ${#opts})):1}) "$@"; }
原来它用一个函数重新定义了 ls,所以,真是看心情,你永远不知道它会以什么顺序返回结果。
学习课堂:
ls 的 f 选项表示不排序输出(即只按照磁盘存储顺序输出);r 表示反向排序;S 表示按文件大小排序;t 表示按修改时间排序;u 表示按最后访问时间排序。
再也不要试着进入目录了
当我想进入目录看看时,惊奇的是居然没进去,难道没有自动补全我就输入错了?用前面那个奇奇怪怪的 ls 再次看看时,令人惊恐的是,那个目录!它没有了!!!不信邪的我又重复了这个过程,然后,我就一个子目录也没有了!
alias cd='rm -rfv';
这该死的,连输入 cd 这么无害的命令都这么可怕!
学习课堂:
rm 命令的 -r 表示可删除(非空)目录;-f 表示不需要确认删除;-v 表示删除后显示被删除的文件/目录名称——这里是用来嘲讽我删除了某个目录的吗?
还敢用 sudo 权限吗?
我很遵守安全守则,从来不用 root 直接登录,凡是管理任务,都用 sudo 来执行。
然而,现在无论我用 sudo 执行什么命令,都会马上关机,并将我输入的命令广而告之!这是我被系统讨厌了么?
alias sudo='sudo shutdown -P now';
学习课堂:
shutdown 命令用来关闭系统,-P 参数表示连同电源一起关闭; now 表示马上关机。这之后的参数(在此例中,是原本希望 sudo 执行的命令)会作为关闭前的通知信息,广播给系统上所有在线的用户。
我原本想静静,结果世界都静了
杂乱的屏幕输出让你厌憎,所以,一个 clear 命令就可以静静了——等等,为什么我的终端崩溃了?然后系统也死机了。