linux – Bash功能中的Cd
发布时间:2020-12-13 23:52:49 所属栏目:Linux 来源:网络整理
导读:我关于SO的第一个问题,如果不做正确的事情就道歉! 互联网上有很多关于在脚本中使用cd的问题,但我的问题是在我放入.bashrc的bash函数中使用cd.它的任务是找到一个文件并转到该文件的工作目录.如果找到多个文件,我只是转到第一个.这里是: fcd() {cd $PWDif [
我关于SO的第一个问题,如果不做正确的事情就道歉!
互联网上有很多关于在脚本中使用cd的问题,但我的问题是在我放入.bashrc的bash函数中使用cd.它的任务是找到一个文件并转到该文件的工作目录.如果找到多个文件,我只是转到第一个.这里是: 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 我已经排除了路径错误的可能性 – 通过复制echo $found_dir的输出并将其粘贴到cd前面,目录会成功更改.有任何想法吗? 谢谢, 的Jakub 解决方法
您不应该在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是冗余的,因为我们已经在该目录中.实际上,它甚至可能导致问题,因为您没有引用变量. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |