繁体   English   中英

Linux 创建别名模式(别名系列)或具有类似效果的东西

[英]Linux creating an alias schema (a family of aliases) or something with similar effect

我个人习惯的一组别名如下:

alias ..="cd ../"
alias ...="cd ../../"
alias ....="cd ../../../"

我将它们添加到我的 bash 配置中,有时会按照相同的模式添加更多。

问题:如何为任意数量的点获得相同的功能? 即使输入.^n (n 个点)导致应用cd ../命令 n 次。

也许单独的alias无法表达这一点,但似乎 Bash(它具有循环和条件)可能能够做到这一点。 不幸的是,我对它的了解还很初级。 也许命令的名称更改使其不可能。 我只是不知道。

这是另一种更简单的方法:

name=".."
cmd="cd .."
for _ in {1..10}
do
  alias "$name=$cmd"
  name+="." cmd+="/.."
done

这是一种方法:

strrepeat() {
    local str=$1 count=$2
    local i result
    for ((i=1; i<=count; i++)); do
        result+=$str
    done
    printf "%s" "$result"
}

ascend() {
    local count=${1:-1}
    cd "$(strrepeat "../" "$count")"
}

for i in {1..8}; do
    alias ".$(strrepeat "." $i)"="ascend $i"
done

这会生成 8 个别名,这些别名可以提升明显的目录数量。


如果我们将..的别名更改为

alias ..=ascend

然后你可以写.. 6 ,而不是.......朴素..仍然上升1级。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM