bash的目录书签

get*_*nur 24 linux bash ubuntu

bash是否有任何目录书签实用程序允许在命令行上更快地移动?

UPDATE

谢谢大家的反馈,但我创建了自己的简单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
}
Run Code Online (Sandbox Code Playgroud)

安装

1. /创建一个文件〜/ .cdb并将上面的脚本复制到其中.

2. /在〜/ .bashrc中添加以下内容

if [ -f ~/.cdb ]; then
    source ~/.cdb
fi 
Run Code Online (Sandbox Code Playgroud)

3. /重启你的bash会话

用法

1. /创建书签

$cd my_project
$cdb -c project1
Run Code Online (Sandbox Code Playgroud)

2. /转到书签

$cdb -g project1
Run Code Online (Sandbox Code Playgroud)

3. /列出书签

$cdb -l 
Run Code Online (Sandbox Code Playgroud)

4. /删除书签

$cdb -d project1
Run Code Online (Sandbox Code Playgroud)

5. /我的书签存放在哪里?

$cd ~/.cd_bookmarks
Run Code Online (Sandbox Code Playgroud)

Fre*_*ihl 24

另外,看看CDPATH

cd命令可用的以冒号分隔的搜索路径列表,功能类似于二进制文件的$ 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
Run Code Online (Sandbox Code Playgroud)

cd -
Run Code Online (Sandbox Code Playgroud)

它是后退按钮的命令行等效项(将您带到您以前的目录).

  • 我更喜欢这个解决方案,因为我的组织结构很好. (2认同)

Dmi*_*ank 9

感谢您分享您的解决方案,我也希望与我分享,我觉得这比我之前遇到的任何其他内容都更有用.

该引擎是一个伟大的通用工具:Junegunn的命令行模糊查找器.

它主要允许您以多种方式"模糊查找"文件,但它还允许向其提供任意文本数据并过滤此数据.因此,快捷方式的想法很简单:我们所需要的只是维护一个带有路径的文件(这是快捷方式),并对该文件进行模糊过滤.以下是它的外观:我们输入cdg命令(来自"cd global",如果你愿意的话),获取我们的书签列表,只需几次击键即可选择所需的书签,然后按Enter键.工作目录更改为选择的项目:

CDG

它非常快速和方便:通常我只需要输入所需项目的3-4个字母,其他所有项目都已被过滤掉.此外,当然我们可以使用箭头键或类似vim的键绑定Ctrl+j/ 来移动列表Ctrl+k.

文章详细信息:shell的模糊快捷方式.

也可以将它用于GUI应用程序(通过xterm):我将它用于我的GUI文件管理器Double Commander.我也打算写一篇关于这个用例的文章.


ajr*_*eal 7

在bash脚本/命令中,
您可以使用pushdpopd

PUSHD

保存,然后更改当前目录.没有参数,pushd交换前两个目录.

用法

cd /abc
pushd /xxx    <-- save /abc to environment variables and cd to /xxx
pushd /zzz
pushd +1      <-- cd /xxx
Run Code Online (Sandbox Code Playgroud)

popd是删除变量(反向方式)


Fri*_*ner 6

bookmarks.sh为Bash 4.0+提供书签管理系统.它也可以使用Midnight Commander热门列表.


Cản*_*yễn 6

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
Run Code Online (Sandbox Code Playgroud)