linux - 一个 Shell 脚本,用于在一个步骤中以文件夹名称作为参数查找并 cd 到文件夹中

标签 linux bash shell terminal

我试着用 Bash 写了一个单行,

find ~ -name Music -type d -exec cd '{}' \;

这个使用 find 和 exec 但我收到错误:

查找:`cd':没有那个文件或目录

第二次尝试 XARGS,

find ~ -name Music  -type d -print0 | xargs -0 cd  

现在我再次尝试编写一个脚本.sh

pathe=$(find ~ -name $1 -type d | head -n 1 )
cd $pathe

并尝试执行脚本 ./1.sh Music ,但没有成功。

到目前为止唯一有效的方法是直接在终端中输入以下命令

cd `find ~ -iname books -type d | head -n 1`

谁能帮我指出我的错误?我正在尝试编写一个单行代码并稍后为其添加别名。

注意:该脚本甚至无法找到只有一个结果和没有空格的结果。

我正在使用带有 bash 版本 4.2.45(2) 的 konsole。

最佳答案

您必须在当前的 shell 中运行 cd 如您所见,在另一个 shell 中运行它是行不通的。创建一个函数。示例:

mycd (){
  cd "${1}foo"
}

关于linux - 一个 Shell 脚本,用于在一个步骤中以文件夹名称作为参数查找并 cd 到文件夹中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17248568/

相关文章:

linux - bash shell脚本中的最后一行命令是否将退出代码传递给父级?

Linux Shell if 语句

shell - 通过删除最后 n 个字符来重命名文件

ruby-on-rails - 打开一个新的终端选项卡并在里面运行命令,只有在打开选项卡之后

Linux shell 同时运行编程

linux - 在 Azure NEW 门户中捕获 Linux VM

linux - Bash、Keys 和 rSync

python - Linux/Python 如何以非根用户身份导入根访问 py 模块?

bash - sed/awk - 在跨越多行的模式之间打印文本

php - Linux 狂欢 : Run php script located in different folder