微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Bashfunction里面的Cd

我在SO上的第一个问题,如果没有做正确的道歉,

互联网上有很多关于在脚本中使用cd的问题,但是我的问题是在我放入我的.bashrc的bash函数中使用cd。 它的任务是find一个文件并转到文件的工作目录。 在发现多个文件的情况下,我只是去第一个。 这里是:

fcd() { cd $PWD if [ -z "$1" ]; then echo 'Specify a file name to find' else found_dir=$( find . -name $1 -type f -printf "%h/" -quit ) echo $found_dir if [ -z "$found_dir" ]; then echo "No file found. Directory was not changed" else cd $found_dir fi fi }

但是,当我使用它,目录被发现,但试图cd $found_dir结果在消息:

cd: (directory_here): No such file or directory

我排除了path错误的可能性 – 通过复制echo $found_dir的输出并将其粘贴到cd前,目录被成功更改。 有任何想法吗?

从Linux中的数字获取天花板整数(BASH)

rdiff备份bash脚本和cron的麻烦

有没有办法find最后执行的命令在shell中的运行时间?

获取variables中的当前path并使用它

incron和subtitle小标题下载

谢谢,

的Jakub

Linux脚本来select性地终止进程

如何按顺序打印包含特定string的行?

在不降低所述命令的function的情况下传递命令别名/function的最佳方式是什么?

一个信号来到时,杀死bash脚本前台儿童

为每个目录创build一个tar文件

你不应该在find命令中引用这个目录,你应该在稍后使用这个变量时引用它。 所以改变find命令

find . -name $1 -type f -printf "%h/" -quit

find . -name "$1" -type f -printf %h -quit

一个命令返回引号包围的目录路径,如"/path/to/dir" 。 所以当你试图cd到那个目录时, cd会认为引号是路径的一部分。

然后将cd调整为cd "$found_dir"以确保如果$found_dir包含特殊字符(如空格或* , cd将不会失败。

另外请注意, cd $PWD是冗余的,因为我们已经在该目录中。 事实上,这可能会导致一个问题,因为你没有引用变量。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐