加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

shell – pushd popd全局目录堆栈?

发布时间:2020-12-15 21:51:16 所属栏目:安全 来源:网络整理
导读:我不知道是否有一种有效的方法可以做到这一点.但是,一直想看看它是否可能. 我知道pushd,popd和dirs对于你最近访问过的目录之间的复制很有用. 但是,有没有一种方法可以保持全局堆栈?因此,如果我在一个终端中推送一些东西(使用pushd),它会反映在另一个终端中(
我不知道是否有一种有效的方法可以做到这一点.但是,一直想看看它是否可能.

我知道pushd,popd和dirs对于你最近访问过的目录之间的复制很有用.

但是,有没有一种方法可以保持全局堆栈?因此,如果我在一个终端中推送一些东西(使用pushd),它会反映在另一个终端中(可能只是该登录会话中的终端).

解决方法

您应该能够使用一对 shell函数和一个临时文件来完成此操作.

您的临时文件将被命名为’/home/me/.directory_stack’,并且只包含目录列表:

/home/me
/etc
/var/log

你的’push_directory’函数只是将当前目录添加到列表中. ‘pop_directory’函数将拉出最近的列表并切换到该目录.将堆栈存储在这样的文件中可确保所有打开的终端(甚至重新启动)之间存在信息.

以下是一些示例函数(警告:仅经过轻微测试)

directory_stack=/home/me/.directory_stack
function push_dir() {
    echo $(pwd) >> $directory_stack
    cd $1
}
function pop_dir() {
    [ ! -s $directory_stack ] && return
    newdir=$(sed -n '$p' $directory_stack)
    sed -i -e '$d' $directory_stack
    cd $newdir
}

将其添加到.bashrc中,每次登录shell时都会自动定义它们.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读