gpt4 book ai didi

bash - shell 脚本 : changing working dir and spaces in folder name

转载 作者:行者123 更新时间:2023-11-29 09:41:23 27 4
gpt4 key购买 nike

我想制作一个脚本,该脚本采用文件路径作为参数,并将 cd 放入其文件夹中。这是我做的:

#!/bin/bash

#remove the file name, and change every space into \space
shorter=`echo "$1" | sed 's/\/[^\/]*$//' | sed 's/\ /\\\ /g'`

echo $shorter
cd $shorter

我实际上有 2 个问题(我是 shell 脚本的新手):

  • 我怎样才能使 cd “持久化”?我想把这个脚本放到/usr/bin 中,然后从文件系统的任何地方调用它。返回脚本后,我想留在 $shorter 文件夹中。基本上,如果 pwd 是/usr/bin,我可以通过键入 来实现。 script/my/path 而不是 ./script/my/path,但是如果我在其他文件夹中怎么办?

  • 第二个问题比较棘手。只要给定参数中有空格,我的脚本就会失败。虽然 $shorter 正是我想要的(例如 /home/jack/my\folder/subfolder),但 cd 失败并出现错误 /usr/bin/脚本:第 4 行:cd:/home/jack/my\: 没有这种类型的文件或文件夹。我想我已经尝试了所有方法,使用 cd '$shorter'cd "'"$shorter"'" 之类的东西没有帮助。我错过了什么??

非常感谢您的回答

最佳答案

在您的 .bashrc 中添加以下行:

function shorter() { cd "${1%/*}"; }
  • %表示去掉末尾较小的图案
  • /*是模式

然后在您的终端中:

$ . ~/.bashrc   # to refresh your bash configuration
$ type shorter # to check if your new function is available
shorter is a function
shorter ()
{
cd "${1%/*}"
}
$ shorter ./your/directory/filename # this will move to ./your/directory

关于bash - shell 脚本 : changing working dir and spaces in folder name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9040368/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com