在Ubuntu终端中,我发现自己每次计算机启动时都花费大量时间切换到特定目录。有什么办法可以使此过程变得更容易?我可以使用一些热键或快速目录更改吗(例如电话上的快速拨号)?
eg:
cd 1:Changes to saved directory one
在Ubuntu终端中,我发现自己每次计算机启动时都花费大量时间切换到特定目录。有什么办法可以使此过程变得更容易?我可以使用一些热键或快速目录更改吗(例如电话上的快速拨号)?
eg:
cd 1:Changes to saved directory one
Answers:
有两种选择:
如果您想每次打开bash终端时都位于特定目录中,请编辑~/.bashrc
文件并仅添加该行cd Directory
,例如cd ~/Desktop
。
如果你想有几个快捷方式,你可以随时使用全局变量,你可以在你的设置~/.bashrc
文件,如下所示export a=/tmp
,然后你就可以做到cd $a
这将使你/tmp
。
请记住,编辑.bashrc
文件后,您必须重新启动终端或打开一个新终端。
source ~/.bashrc
或更短的. ~/.bashrc
。
还要看看autojump
,它会建立一个具有先前访问目录的数据库,然后您可以跳转到该数据库。例如,你有
/home/user/this/long/and/annoyingly/deep/directory/workstuff
然后,如果您曾经访问过它,可以跳到
j workstuff
甚至
j stuff
因为它也适用于部分匹配。如果多个目录匹配,您将跳转到访问量最大的目录,如果不是您想要的目录,则重复该命令以转到第二个目录。
但是它会变得更好!如果您还有目录
/home/user/stuff
你也是
j stuff
然后TabTabTab您得到(按访问量最大的顺序)
$ j stuff__
stuff__1__/home/user/this/long/and/annoyingly/deep/directory/workstuff
stuff__2__/home/user/stuff
然后您可以按所需目录的号码!
要安装,您可以使用sudo apt-get install autojump
,然后需要添加
source /usr/share/autojump/autojump.bash
给你~/.bashrc
。
此处的更多信息:https : //github.com/wting/autojump(以及有关如何从src安装它的说明,该指南可为您提供最新版本)
Bash 别名对于创建常用命令的快捷方式很有用。
在中~/.bashrc
,添加类似于以下内容的行以创建别名:
alias jump1='cd /long/path/name/that/is/frequently/used'
关闭并再次打开终端,或运行source ~/.bashrc
。
从现在开始,您可以运行jump1
该长cd
命令。
也可以看看:
尽管也有一些很好的答案了,我想我会提的完整性老pushd
和popd
Bash的内建有让你在你的文件系统路径深层目录间快速移动。与burger.gaautojump
提到的书签相反,使用创建的目录堆栈只是临时的。pushd
作为GNU 手动注释,pushd
并且popd
被击建宏用于构造是一个临时目录堆
最近访问的目录列表。推送的内置命令会在更改当前目录时将目录添加到堆栈中,而popd内置命令会从堆栈中删除指定的目录并将当前目录更改为已删除的目录。内置的dirs显示目录堆栈的内容。
这需要一点时间来适应,但是例如在此博客和此站点上有很多有用的教程。这些命令没有单独的手册页,因为它们包含在Bash手册页中,但是要快速参考,您可以查看GNU Bash页。
最清楚的解释是在这篇非常有用的文章中,正是我使用pushd
and 的方式popd
:
首先,使用dirs
或dirs -l
列出堆栈上的目录并dirs -c
清除堆栈。
从某种意义上说,您可以通过输入以下内容为要返回的位置添加书签
pushd /home/mike/Pictures/Canon/2012_07_01
然后您可以将更多目录添加到堆栈中,因此您将看到以下目录,其中包括3个指定文件夹和您的~
主文件夹:
dirs
~/Downloads/folder/interest ~/Music/artist/album ~ ~/Pictures/Canon/2012_07_01
实际上,您不需要直接使用,popd
因为这样可以从堆栈中删除目录。最好的办法是使用pushd
旋转堆栈,以便您可以继续在目录之间切换并根据需要对它们进行排序。有关该有用的堆栈旋转的更多信息,请参见Bash联机帮助页。
如果您具有如上dirs
清单所示的堆栈排列,请pushd +3
切换到特定的Pictures文件夹,并将其放置在堆栈顶部(它是+3而不是+4,因为您不计入~
目录堆栈):
pushd +3
~/Pictures/Canon/2012_07_01 ~/Downloads/folder/interest ~/Music/artist/album ~
提示如下:
~/Pictures/Canon/2012_07_01$
您可以继续执行此操作而无需将其从堆栈中删除,尽管您cd
要访问的任何文件夹(使用添加到目录堆栈的文件夹除外)pushd
都会更改您的目录堆栈。
一旦按照所需顺序排列了目录堆栈,就可以使用popd
来快速循环浏览目录,然后返回到主文件夹。例如,从Pictures
我们可以返回Downloads
:
popd
~/Downloads/folder/interest ~/Music/artist/album ~
然后提示显示
~/Downloads/folder/interest$
通常,这样做的好处是,您可以使用以下命令设置目录堆栈及其中的项的顺序,pushd
然后说您要在每个目录中编辑三个文件,可以popd
在删除它们的同时立即返回到每个目录从目录堆栈。然后,您的最后一个popd
将返回~
。当您拥有特别深的目录并可以使用它来设置目录堆栈以在它们之间快速移动时,它特别有用。
此外,此问题包含一些在命令行上工作时可能会有用的提示:
即使有一些命令行方法可以更快地完成此操作,但我还是会亲自使用Nautilus扩展名来重新命令nautilus-open-terminal
。
首先安装该软件包,nautilus-open-terminal
并用Nautilus将喜爱的文件夹添加为书签。在Nautilus 3.6。*上,您必须进入齿轮菜单并选择为该位置添加书签。
然后使用Nautilus书签在您喜欢的目录中更快,然后右键单击空白处,然后选择“ 在终端中打开”。
现在,您可以同时通过命令行和文件管理器快速访问自己喜欢的目录。
anc正是为该用例设计的。
https://github.com/tobimensch/anc
以下是README.md的摘录:
# make the current directory the default anchor:
$ anc s
# go to /etc, then /, then /usr/local and then back to the default anchor:
$ cd /etc; cd ..; cd usr/local; anc
# go back to /usr/local :
$ anc b
# add another anchor:
$ anc a $HOME/test
# view the list of anchors (the default one has the asterisk):
$ anc l
(0) /path/to/first/anchor *
(1) /home/usr/test
# jump to the anchor we just added:
# by using its anchor number
$ anc 1
# or by jumping to the last anchor in the list
$ anc -1
# add multiple anchors:
$ anc a $HOME/projects/first $HOME/projects/second $HOME/documents/first
# use text matching to jump to $HOME/projects/first
$ anc pro fir
# use text matching to jump to $HOME/documents/first
$ anc doc fir
# add anchor and jump to it using an absolute path
$ anc /etc
# is the same as
$ anc a /etc; anc -1
# add anchor and jump to it using a relative path
$ anc ./X11 #note that "./" is required for relative paths
# is the same as
$ anc a X11; anc -1
# using wildcards you can add many anchors at once
$ anc a $HOME/projects/*
# use shell completion to see a list of matching anchors
# and select the one you want to jump to directly
$ anc pro[TAB]
完全披露:我是anc的作者。
我为此创建了一组bash函数并将其添加到我的.bash_profile中
goto(){
cd $(getFolders $1)
}
gf(){
getFolders $1
}
getFolders (){
local folderList=(
'alias'
'Description of alias'
'/path/to/alias/folder'
'alias2'
'Description of alias2'
'/path/to/alias2/folder'
)
local moved="0"
local count=0
# Returns the path to the project
while [ "${folderList[count]}" != "" ]
do
if [ "$1" == "${folderList[count]}" ]; then
echo ${folderList[$(( $count + 2 ))]}
moved="1"
fi
count=$(( $count + 3 ))
done
# Returns all project names
if [ "$moved" != "1" ]; then
count=0
while [ "${folderList[count]}" != "" ]
do
echoc 6 ${folderList[count]}
echo - ${folderList[count+1]}
count=$(( $count + 3 ))
done
fi
}
使用getFolders,您可以获得每个文件夹的速记,说明和位置的列表。将getFolders与速记一起使用时,它将输出文件夹位置。您可以通过简单地调用不带参数的getFolders来获得可用文件夹及其描述的列表。
获取文件夹路径的示例
getFolders alias
输出
/path/to/alias/folder
获取可用文件夹的示例。
getFolders
输出
alias
- Description of alias
alias2
- Description of alias2
gf是getFolders的快捷方式
gf alias2
输出
/path/to/alias2/folder
goto是CD到选定文件夹的一种简单方法。
goto alias
输出
cd在/ path / to / alias / folder上运行
/ path / to / alias / folder>
从本质上讲,Unix和Linux具有可链接在一起的简单可重用功能。我更喜欢这种方法,因为它不仅可以将您移动到选定的位置,而且可以通过别名返回路径。您可以使用此功能执行从cd到该路径的任何操作。
考虑在.bashrc或.bash_profile中设置CDPATH
环境变量。CDPATH与其他PATH
类似变量采用相同的冒号分隔形式,并允许cd
使用快捷方式查找目录。例如:
$ mkdir -p /tmp/foo/bar/baz
$ CDPATH='/tmp/foo/bar'
$ cd baz
/tmp/foo/bar/baz
您可以设置自己的指向特定目录的快捷方式。例如,您想转到嵌套目录,通常
cd / home / dir-1 / dir-2 / dir3 / dir4 / dir5 / dir6 / dir-target
您通常使用cd命令,然后键入所有目录名称,或者可能跳过了键入(使用TAB按钮),但仍然需要几分钟的时间。
因此,为了节省您的时间,您可以在终端中对其进行别名。它的一次性任务是设置别名。
别名dir-target ='/ home / dir-1 / dir-2 / dir3 / dir4 / dir5 / dir6 / dir-target'
现在,您只需要使用别名(dir-target)进入目标目录。
我发现最快的方法是xd
一个名为Frank B. Brokken的荷兰人编写的“ eXchange Directories”程序。
它通过在文件系统上找到所有可以解析为您键入的缩写的路径来工作,例如ulb
,/usr/local/bin
如果该文件夹存在于您的系统中,则可以代表:
% cx ulb
Multiple Solutions:
1: /usr/lib/binfmt.d/
2: /usr/local/bin/
按下2,您进入/usr/local/bin
。
它是真的很老的软件,不再在原始位置可用,也没有与作者联系,因此为了防止丢失,我将其放在Github存储库中:
我使用DirB(目录书签)来执行此操作。非常好! http://www.linuxjournal.com/article/10585
我已经修改了我的产品以适合我的口味,但是更易于使用和更清晰。