READLINE
C-u 删除光标之前的所有字符
C-k 删除光标之后的所有字符
C-w 删除光标之前的一个单词
C-l 清屏,但是保存当前行
C-b 向左移动一个字符
C-f 向右移动一个字符
A-b 向左移动一个单词
A-f 向右移动一个单词
A-. 取上一条命令的最后一个参数,反复按可以依此取历史中命令中的最后一个参数,这个命令等价于!$,但是按键更加方便
其他常用技巧
1.为某个藏在很深的路径下的文件重命名,比如下边的文件,要把filenaem.txt,改成filename.txt(利用bash的Expansion功能,有很多Expansion,此处为Brace Expansion)
/some/very/long/path/to/target/file/filenaem.txt
可以使用下边的命令
mv /some/very/long/path/to/target/file/filenaem.txt /some/very/long/path/to/target/file/filename.txt
但是,这样非常的麻烦,即使有自动补全
使用下边的命令,只需打一次路径
mv /some/very/long/path/to/target/file/{filenaem.txt, filename.txt}
更简单的,还可以这样做
mv /some/very/long/path/to/target/file/filena{em,me}.txt
即只抽取改变的部分
除此之外,还有很多种方法可以实现,下面直接引用superuser网站上的一个回答:
Here are several options:
Change to the directory:
cd /home/long/path
mv file1 file2
cd -
Change directories using the directory stack:
pushd /some/long/path
mv file1 file2
popd
Change to the directory using a subshell:
(
cd /some/long/path
mv file1 file2
) # no need to change back
Use a variable:
D=/some/long/path
mv "$D/file1" "$D/file2"
2.有些命令在执行过程中需要我们选择yes/no/cancel,linux中提供了一个非常有用的命令yes,它可以持续的输出y。
在管道中使用yes,可以省略选择的过程,当管道断开时,yes结束,例如下面的命令
yes | rm *.txt
默认情况下,yes持续输出y,当然我们还可以定制yes的输出内容,当需要持续不断地输出其他字符串时,也可以用yes,比如下面的命令持续输出hello
yes hello
3.显示当前目录下的子目录
ls -d */
4.比如首先执行了下面的一个命令
echo a b c d e
接下来,我们要引用上面命令中的参数,引用上一个命令中的参数有两种方法
第一种,如下形式,n代表参数的位置
!:n
!:0代表命令“echo”,参数表从1开始,其中a是!:1,e是!:5,因为a和e分别位于参数表开头的末尾,还可以分别用!^和!$来引用
第二种形式,采用快捷键
首先用Alt+数字,选定要引用的参数,数字的含义和上边的第一种方式相同
Alt + n
然后用下面的组合键即可把选定的参数粘贴到当前光标处
Ctrl + Alt + y