【问题标题】:How to create an alias in a shell to go to parent directories如何在 shell 中创建别名以转到父目录
【发布时间】:2015-06-28 14:19:50
【问题描述】:

我想知道如何为没有别名的父目录创建一个包含无穷无尽参数的别名!

目前我已经编写了这个功能来实现它并且完美地工作。

b() {
  list=$1
  for (( i=0; i<${#list}; i++ )); do
    cd ..
  done
}

您可以像 b ..b ...b . 一样使用它

我想要的是在没有“b”的情况下使用它,只是点!我们如何动态地制作它?

编辑:

输入 - 输出

.. => cd ../../
... => cd ../../../

提前致谢!

【问题讨论】:

  • 你想让b 自己做什么?转到父目录?
  • b 是任意名称,你可以说任何你想要的,是的,去父目录
  • 不,他希望.. 自己去他的父目录,... 去上面那个目录,等等。
  • 你需要创建一个函数名.,另一个名为..,另一个名为...,等等。也许只需将你的函数命名为.而不是b和做. ... ....
  • @rojomoke 哦!谢谢。我误读了。

标签: linux macos bash ubuntu


【解决方案1】:

如果您不介意在按 . n 次后定义 n-1 个别名,请将其添加到您的 .bashrc

function update_dots() {
    READLINE_LINE=${READLINE_LINE}.
    if [[ "$READLINE_LINE" =~ ^\.(\.+)$ ]]; then
        DOT_CMD="cd ${READLINE_LINE//\./\.\.\/}"
        alias $READLINE_LINE="$DOT_CMD"
    fi
    READLINE_POINT=$(($READLINE_POINT+1))
}

bind -x '".":"update_dots"'

它是这样工作的:

[thomas@corellia e]$ pwd
/tmp/a/b/c/d/e
[thomas@corellia e]$ .....
[thomas@corellia tmp]$ pwd
/tmp
[thomas@corellia tmp]$ alias
alias ..='cd ../../'
alias ...='cd ../../../'
alias ....='cd ../../../../'
alias .....='cd ../../../../../'

【讨论】:

    【解决方案2】:

    我只是采取安全但无聊的路线,并为每个级别的点定义一个别名,直到某个实际最大值:

    dots=""
    for((i=0; i<10; i++))
    do
        dots+="."
        alias "$dots=b $dots"
    done
    

    这并不有趣,但也没有任何奇怪的副作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-20
      • 2021-03-05
      • 1970-01-01
      • 2014-09-13
      • 2021-01-25
      • 1970-01-01
      • 2017-12-30
      • 1970-01-01
      相关资源
      最近更新 更多