我在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的最佳方式是什么?
你不应该在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] 举报,一经查实,本站将立刻删除。