Shell(五)Bash行操作目录堆栈
1.光标移动
Ctrl + a
:移到行首。Ctrl + b
:向行首移动一个字符,与左箭头作用相同。Ctrl + e
:移到行尾。Ctrl + f
:向行尾移动一个字符,与右箭头作用相同。Alt + f
:移动到当前单词的词尾。Alt + b
:移动到当前单词的词首。
2.清除屏幕
Ctrl+l 清除屏幕
3.编辑操作
Ctrl + d
:删除光标位置的字符(delete)。Ctrl + w
:删除光标前面的单词。Ctrl + t
:光标位置的字符与它前面一位的字符交换位置(transpose)。Alt + t
:光标位置的词与它前面一位的词交换位置(transpose)。Alt + l
:将光标位置至词尾转为小写(lowercase)。Alt + u
:将光标位置至词尾转为大写(uppercase)。
注:Ctrl+d得是偶,如果当前行没有任何字符,会导致退出当前Shell。
剪切和粘贴快捷键如下。
Ctrl + k
:剪切光标位置到行尾的文本。Ctrl + u
:剪切光标位置到行首的文本。Alt + d
:剪切光标位置到词尾的文本。Alt + Backspace
:剪切光标位置到词首的文本。Ctrl + y
:在光标位置粘贴文本。
history命令
history命令能显示操作历史,最近得操作在最后,行号最大
目录堆栈
1.cd -
返回前一次所在的目录
2.pushd,popd
如果希望记录多重目录,可以使用pushd命令和popd命令,他们用来操作目标堆栈。
上面命令会进入目录dirname
,并将该目录放入堆栈。
第一次使用pushd
命令时,会将当前目录先放入堆栈,然后将所要进入的目录也放入堆栈,位置在前一个记录的上方。以后每次使用pushd
命令,都会将所要进入的目录,放在堆栈的顶部。
popd
命令不带有参数时,会移除堆栈的顶部记录,并进入新的栈顶目录(即原来的第二条目录)。
下面是一个例子。
# 当前处在主目录,堆栈为空
$ pwd
/home/me
# 进入 /home/me/foo
# 当前堆栈为 /home/me/foo /home/me
$ pushd ~/foo
# 进入 /etc
# 当前堆栈为 /etc /home/me/foo /home/me
$ pushd /etc
# 进入 /home/me/foo
# 当前堆栈为 /home/me/foo /home/me
$ popd
# 进入 /home/me
# 当前堆栈为 /home/me
$ popd
# 目录不变,当前堆栈为空
$ popd
这两个命令的参数如下。
(1)-n 参数
-n
的参数表示仅操作堆栈,不改变目录。
$ popd -n
上面的命令仅删除堆栈顶部的记录,不改变目录,执行完成后还停留在当前目录。
(2)整数参数
这两个命令还可以接受一个整数作为参数,该整数表示堆栈中指定位置的记录(从0开始)。pushd
命令会把这条记录移动到栈顶,同时切换到该目录;popd
则从堆栈中删除这条记录,不会切换目录。
# 将从栈顶算起的3号目录(从0开始)移动到栈顶,同时切换到该目录
$ pushd +3
# 将从栈底算起的3号目录(从0开始)移动到栈顶,同时切换到该目录
$ pushd -3
# 删除从栈顶算起的3号目录(从0开始),不改变当前目录
$ popd +3
# 删除从栈底算起的3号目录(从0开始),不改变当前目录
$ popd -3
上面例子的整数编号都是从0开始计算,popd +0
是删除第一个目录,popd +1
是删除第二个,popd -0
是删除最后一个目录,popd -1
是删除倒数第二个。
(3)目录参数
pushd
可以接受一个目录作为参数,表示将该目录放到堆栈顶部,并进入该目录。
$ pushd dir
popd
没有这个参数。