当前位置: 首页>>技术教程>>正文


linux – bash的目录书签

, ,

问题描述

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脚本/命令中,可以使用pushdpopd

pushd

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9237.html,未经允许,请勿转载。