sco*_*eep 4 cd-command command
在测试环境中,我们有一个日志文件的目录结构,如下所示:
/var/Logs/int/app-id/region-code/log/file-name.log
/var/Logs/sat/app-id/region-code/log/file-name.log
/var/Logs/cat/app-id/region-code/log/file-name.log
Run Code Online (Sandbox Code Playgroud)
每个环境有许多应用程序 ID,每个应用程序 ID 有多个区域代码(取决于应用程序)。
是否有一个命令可以让我将目录从 int 更改为 sat,并使路径的所有其余部分保持不变?类似于以下内容:
$ pwd
/var/Logs/int/abc/01/log
$ cdswap int sat
$ pwd
/var/Logs/sat/abc/01/log
$ cdswap abc def
$ pwd
/var/Logs/sat/def/01/log
Run Code Online (Sandbox Code Playgroud)
如果这也有效,那将是一个奖励:
$ cdswap def/01 ghi/02
$ pwd
/var/Logs/sat/ghi/02/log
Run Code Online (Sandbox Code Playgroud)
如果没有这样的命令,我可以设置一个别名来有效地做同样的事情吗?那会怎样?
谢谢你的帮助!
在zsh的,cdswap
是... cd
。当给定两个参数时,cd
用当前目录中的第二个参数替换第一个参数并更改到结果目录。
您可以通过创建cd
一个函数在 bash 中模拟这一点。
cd () {
local i=1
while [[ "${!i}" = -* ]]; do ((++i)); done
if ((i == $# - 1)); then
local operands
operands=("$@")
operands[$i]=${PWD/${!i}/${!#}}
if [[ "${operands[$i]}" == "$PWD" ]]; then
echo >&2 "cd: string not in pwd: ${operands[$i]}"
return 1
fi
set -- "${operands[@]:$(($#-1))}"
fi
builtin cd "$@"
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1037 次 |
最近记录: |