问题描述
bash是否有任何目录书签实用程序,以允许在命令行上更快地移动?
更新
谢谢大家的反馈,但是我创建了自己的简单Shell脚本(可以随意修改/扩展)
function cdb() {
USAGE="Usage: cdb [-c|-g|-d|-l] [bookmark]" ;
if [ ! -e ~/.cd_bookmarks ] ; then
mkdir ~/.cd_bookmarks
fi
case $1 in
# create bookmark
-c) shift
if [ ! -f ~/.cd_bookmarks/$1 ] ; then
echo "cd `pwd`" > ~/.cd_bookmarks/"$1" ;
else
echo "Try again! Looks like there is already a bookmark '$1'"
fi
;;
# goto bookmark
-g) shift
if [ -f ~/.cd_bookmarks/$1 ] ; then
source ~/.cd_bookmarks/"$1"
else
echo "Mmm...looks like your bookmark has spontaneously combusted. What I mean to say is that your bookmark does not exist." ;
fi
;;
# delete bookmark
-d) shift
if [ -f ~/.cd_bookmarks/$1 ] ; then
rm ~/.cd_bookmarks/"$1" ;
else
echo "Oops, forgot to specify the bookmark" ;
fi
;;
# list bookmarks
-l) shift
ls -l ~/.cd_bookmarks/ ;
;;
*) echo "$USAGE" ;
;;
esac
}
安装
1. /创建一个〜/.cdb文件,并将上面的脚本复制到其中。
2. /在您的〜/.bashrc中添加以下内容
if [ -f ~/.cdb ]; then
source ~/.cdb
fi
3. /重启你的bash会话
用法
1. /创建一个书签
$cd my_project
$cdb -c project1
2. /进入书签
$cdb -g project1
3. /列出书签
$cdb -l
4. /删除书签
$cdb -d project1
5. /我所有的书签都存储在哪里?
$cd ~/.cd_bookmarks
最佳方法
另外,看看CDPATH
cd命令可用的搜索路径的colon-separated列表,其功能类似于二进制文件的$ PATH变量。 $ CDPATH变量可以在本地〜/.bashrc文件中设置。
ash$ cd bash-doc
bash: cd: bash-doc: No such file or directory
bash$ CDPATH=/usr/share/doc
bash$ cd bash-doc
/usr/share/doc/bash-doc
bash$ echo $PWD
/usr/share/doc/bash-doc
和
cd -
这相当于后退按钮的命令行(将您带到您所在的上一个目录)。
次佳方法
感谢您分享您的解决方案,我也想分享我的解决方案,我发现它比我以前遇到的任何其他功能都有用。
该引擎是一种出色的通用工具:Junegunn的命令行 fuzzy finder。
它主要允许您以多种方式来“fuzzy-find”文件,但它还允许向其馈送任意文本数据并过滤该数据。因此,快捷方式的想法很简单:我们只需要维护一个带有路径的文件(即快捷方式),然后使用fuzzy-filter维护该文件。外观如下:我们键入cdg
命令(如果需要,可以从”cd global”输入),获取我们的书签的列表,在几次按键中选择所需的书签,然后按Enter。工作目录已更改为选择的项目:
它非常快速和方便:通常我只键入所需项目的3-4个字母,而其他所有字母都已被过滤掉。另外,当然,我们可以使用箭头键或vim-like键绑定Ctrl+j
/Ctrl+k
在列表中移动。
详细信息文章:Fuzzy shortcuts for your shell。
也可以将其用于GUI应用程序(通过xterm):我将其用于GUI文件管理器Double Commander。我也计划撰写有关此用例的文章。
第三种方法
在bash脚本/命令中,可以使用pushd
和popd
Save and then change the current directory. With no arguments, pushd exchanges the top two directories.
用法
cd /abc
pushd /xxx <-- save /abc to environment variables and cd to /xxx
pushd /zzz
pushd +1 <-- cd /xxx
popd是删除变量(反向方式)
第四种方法
bookmarks.sh为Bash 4.0+版本提供了书签管理系统。它还可以使用Midnight Commander热点列表。
第五种方法
Bashmarks是一个非常简单直观的实用程序。简而言之,安装后的用法是:
s <bookmark_name> - Saves the current directory as "bookmark_name"
g <bookmark_name> - Goes (cd) to the directory associated with "bookmark_name"
p <bookmark_name> - Prints the directory associated with "bookmark_name"
d <bookmark_name> - Deletes the bookmark
l - Lists all available bookmarks