如何将目录更改为刚刚在bash中将文件移动到的位置?

时间:2015-07-08 16:43:34

标签: bash shell unix terminal

如果我说mv Folder/ ~/Documents/Folder1/Folder2

现在我要cd ~/Documents/Folder1/Folder2

那么,这两个都可以归结为单行吗?

3 个答案:

答案 0 :(得分:4)

这很容易:

mv Folder/ ~/Documents/Folder1/Folder2
cd !$

in bash(interactive)!$代表最后一个命令的最后一个参数

答案 1 :(得分:3)

在脚本中,您只需重复使用同一目录,在交互式会话中,您可以按 ESC +

答案 2 :(得分:1)

我一直有这个问题,特别是对于这个通常情况:

$ mkdir folder
$ cd folder

我已经为这个特例做了一个小别名:

function mkcd()
{
    mkdir "$1" && cd "$1"
}

$ mkcd folder

但有两个问题让我感到沮丧"用这个别名:

  • 这是一个更大问题的特殊情况(mkdir);
  • 它不直接" :一般来说,在我意识到我需要它的那一刻,我已输入:$ mkdir folder;所以,为了使用我的别名,我必须回去一个字,然后删除mkdir的最后3个字符,然后用cd替换,然后......然后我放弃,因为它&# 39;输入cd folder ...
  • 的速度更快

因此,当我阅读你的问题时,它让我想要写一些更好的东西,你可以在行尾添加一些东西(不必考虑之前),并且可以使用任何其他命令,而不仅仅是{ {1}}。

它是一个函数(我称之为mkdir),您只需要在一行(cdd)的末尾追加以获取当前命令,然后更改当前命令中最后一个参数的路径,是目录的路径。

实施例

"<cmd> ; cdd"

另一个:

/etc $ cp fstab /tmp; cdd            # --> current dir = /tmp
/tmp $ ...

代码:

~ $ mkdir "some proj/src" -p; cdd    # --> current dir = some proj/src
~/some proj/src $ ...