我不知道是否有这样的命令,但当我在终端中工作时,我经常发现自己将文件移动到某个目录,然后想 cd 到那里。例如
mv Keasbey\ Nights /media/ipod/Music/Catch\ 22
cd /media/ipod/音乐/Catch\ 22
每次都要输入第二部分,这太麻烦了。有没有简单的方法可以在 bash 中自动完成这个操作?我知道
cd-
会将我带到最后一个目录,但这并不是我真正想要的。在我的示例中,我还没有去过 /media/ipod/Music/Catch\ 22。
答案1
如果您按住 alt 键并按下“.”,shell 将自动键入您输入的最后一个命令的最后一个参数。在您的例子中,对于第二个命令,键入“cd”,按下 alt-.,其余操作将自动完成。
答案2
您想要使用!$
,它扩展为上一个命令中使用的最后一个单词:
computer:~ zac$ mkdir My\ Subdir
computer:~ zac$ cd !$
cd My\ Subdir
computer:~/My Subdir zac$
请参阅 bash 的手册页,位于历史扩展、单词指示符。
另请参阅!*
,它扩展为除第一个单词之外的所有内容。
答案3
您还可以创建一个函数(将其放在您的中~/.bashrc
):
function mvcd ()
{
mv "$1" "$2"
cd "$2"
}
您可以使用与 mv 相同的参数来使用它,只是执行该命令后您将进入该目录。
例子:
[john@awesome ~]# touch 文件 [john@awesome ~]# mkdir some_folder [john@awesome ~]# mvcd 文件 some_folder/ [john@awesome some_folder]# ls 文件 [john@awesome some_folder]# pwd /主页/约翰/some_folder
答案4
获取倒数第二个参数:
Alt- -(alt-减号) 后跟Ctrl- Alt-y
即“数字参数(负)”后跟“yank-nth-arg”。请参阅man readline
以了解更多信息。
您可以在 alt-minus 后输入数字来获取前面的参数。
要从头开始计算参数:
Alt-0是命令
Alt-1是第一个参数
等等,然后是Ctrl- Alt-y