全部博文(322)
分类: LINUX
2010-10-29 09:23:07
sudo
,回车;高手用户就蛋定多了,按Ctrl-p
,按Ctrl-a
,输入sudo
,回车。sudo !!
。!!
其实相当于!-1
,引用前一条命令,当然也可以!-2
,!-50
。默认情况下bash会在~/.bash_history
文件内记录用户执行的最近500条命令,history
命令可以显示这些命令。:w !sudo tee %
这题目读起来纠结,其实是很常见的,常常忘记了sudo就直接用vim编辑/etc内的文件,(不过也不一定,vim发现保存的文件无法保存时候会提示)等编辑好了,保存时候才发现没权限。曲线方法是先保存个临时文件,退出后再sudo cp
回去。不过实际上在vim里面可以直接完成这个过程的,命令就是如此。
查阅vim的文档(输入:help :w
),会提到命令:w!{cmd}
,让vim执行一个外部命令{cmd}
,然后把当前缓冲区的内容从stdin传入。
tee是一个把stdin保存到文件的小工具。
而%,是vim当中一个只读寄存器的名字,总保存着当前编辑文件的文件路径。
所以执行这个命令,就相当于从vim外部修改了当前编辑的文件,好完工。
$ cp filename{,.bak}
filename
文件拷贝成filename.bak
,大家应该在一些比较复杂的安装教程里面见过这样的用法。其原理就在于bash对大括号的展开操作,filename{,.bak}
这一段会被展开成filename filename.bak
再传给cp,于是就有了备份的命令了。$ echo {a,b,c}{a,b,c}{a,b,c}
aaa aab aac aba abb abc aca acb acc
baa bab bac bba bbb bbc bca bcb bcc
caa cab cac cba cbb cbc cca ccb ccc
$ ssh-copy-id remote-machine
~/.ssh/authorized_keys
内,这样下次使用ssh登录的时候,远程主机就直接根据这串密钥完成身份校验,不再询问密码了。前提是你当前用户有生成了公钥,默认是没有的,先执行ssh-keygen
试试吧!your-machine$ scp ~/.ssh/identity.pub remote-machine:
your-machine$ ssh remote-machine
remote-machine$ cat identity.pub >> ~/.ssh/authorized_keys
$ command
,会打开一个你指定的编辑器(比如vim,通过环境变量$EDITOR
指定),里面就是你刚输入的命令,然后爱怎么编辑就怎么编辑吧,特别是那些参数异常复杂的程序,比如mencoder/ffmpeg,一个命令动辄3、4行的,要修改其中的参数,这个方法最合适不过了,保存退出后自动执行这个程序。
是调用这个功能的一个绑定。如果你习惯使用vi模式,按
可以实现同样功能。export EDITOR=nano
的命令。$ reset
reset
命令只是输出了一些特殊字符,我们看BusyBox里面最简单的reset程序的实现:printf("\033c\033(K\033[J\033[0m\033[?25h");
\033c
: “ESC c” – 发送重置命令;\033(K
: “ESC ( K” – 重载终端的字符映射;\033[J
: “ESC [ J” – 清空终端内容;\033[0m
: “ESC [ 0 m” – 初始化字符显示属性;\033[?25h
: “ESC [ ? 25 h” – 让光标可见;通过在命令行前面添加一个空格,就可以阻止这条命令被保存到 bash history (~/.bash_history) 文件中,这个行为可以通过 $HISTIGNORE shell 变量来控制。我的设置是 HISTIGNORE=”&:[ ]*” ,表示不保存重复的命令到 history 中,并且不保存以空格开头的命令行。$HISTIGNORE 中的值以冒号分隔。