我目前花了很多工作时间在两条路径之间来回移动,这些路径离树很远,并且在根部相互转移。让我吃惊的是,如果有一个参数cd将用户带到他们所在的最后一个目录,我的生活会容易得多。
也就是说,如果我在:
/etc/foo/bar/baz/moo
Run Code Online (Sandbox Code Playgroud)
然后输入:
cd /var/lib/fubarred_app/blargh/logs
Run Code Online (Sandbox Code Playgroud)
我希望能够返回到第一个目录而无需再次键入整个路径。
记忆键不会切断它,因为我在每个地方都使用了足够多的命令,因此返回并找到我想要的路径与自己输入路径一样困难。
是否有一个简短的命令可以让我转到上一个目录?
bry*_*yan 315
命令
cd -
Run Code Online (Sandbox Code Playgroud)
将在大多数主流 shell 上执行您需要的交换,较旧的较长变体是
cd "$OLDPWD"
Run Code Online (Sandbox Code Playgroud)
这将使用包含先前工作目录的环境变量。
描述
如果在执行上述步骤的过程中,PWD 环境变量发生了变化,则 OLDPWD 环境变量也应更改为旧工作目录(即调用 cd 之前的当前工作目录)的值。
操作数
- 当连字符用作操作数时,这应等同于以下命令:
Run Code Online (Sandbox Code Playgroud)cd "$OLDPWD" && pwd它更改为以前的工作目录,然后写入其名称。
slh*_*hck 104
除了 bryan 的回答,值得一提的是还有pushdand popd,它像堆栈一样构建目录。这也适用于 Windows NT;但是,它并非在所有 shell 中都可用。
例如,我们可以转到三个不同的目录,当您调用时,您将始终看到您的堆栈pushd:
charon:~ werner$ pushd Documents/
~/Documents ~
charon:Documents werner$ pushd ../Movies/
~/Movies ~/Documents ~
charon:Movies werner$ pushd ../Downloads/
~/Downloads ~/Movies ~/Documents ~
Run Code Online (Sandbox Code Playgroud)
当您popd连续调用3 次时,您会以相反的顺序访问堆栈中的那些目录。同时,堆栈将再次清空。
charon:Downloads werner$ popd
~/Movies ~/Documents ~
charon:Movies werner$ popd
~/Documents ~
charon:Documents werner$ popd
~
charon:~ werner$ popd
-bash: popd: directory stack empty
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 Zsh;它有一个 AUTO_PUSHD 选项,它会自动将cd's压入堆栈。
hay*_*lci 13
有一些“跳转”程序
这些简化了任何类型的目录导航。您通过提供路径的一部分来使用它,它就可以工作。
在你的情况下
~$ j baz
/etc/foo/bar/baz/moo$
~$ j bla
/var/lib/fubarred_app/blargh/logs$
Run Code Online (Sandbox Code Playgroud)
您可以为这些程序分配任何您想要的字母,“j”是传统:)
j2 和 z 支持多个搜索词,...
~$ j baz src
/home/me/projects/baz/repository/trunk/src$
Run Code Online (Sandbox Code Playgroud)
...以及更多选择。
~$ j -l # list directories by "frecency"(frequency + recency) score
~$ j -r PATTERN # match by rank only, not recency
~$ j -t PATTERN # match by recency only, not rank
Run Code Online (Sandbox Code Playgroud)
小智 10
您可以使用它轻松地为目录创建别名:
a() { alias $1=cd\ $PWD; }
a 1
Run Code Online (Sandbox Code Playgroud)
然后:
1
Run Code Online (Sandbox Code Playgroud)
mus*_*usa 10
除了
cd -和cd $OLDPWD
您可以通过按下CTRL-R并键入cd您之前输入的命令的几个字母来使用历史搜索。CTRL-R反复按将带来较旧的匹配。
如果要更改的路径超过两条,此方法将更有用。
bashmarks可以让你为一系列文件夹添加书签,并通过选项卡完成在它们之间跳转:
要为文件夹添加书签,只需转到该文件夹,然后像这样将其添加为书签:
Run Code Online (Sandbox Code Playgroud)bookmark foo书签将被命名为“foo”。当您想返回该文件夹时,请使用:
Run Code Online (Sandbox Code Playgroud)go foo要查看书签列表:
Run Code Online (Sandbox Code Playgroud)bookmarksshow选项卡完成工作,转到 shoobie 书签,只需:
Run Code Online (Sandbox Code Playgroud)go sho[tab]