导航到刚刚输入命令的目录

导航到刚刚输入命令的目录

我不知道是否有这样的命令,但当我在终端中工作时,我经常发现自己将文件移动到某个目录,然后想 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

相关内容