linux – Bash功能中的Cd
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – Bash功能中的Cd,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1163字,纯文字阅读大概需要2分钟。
内容图文
我关于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是冗余的,因为我们已经在该目录中.实际上,它甚至可能导致问题,因为您没有引用变量.
内容总结
以上是互联网集市为您收集整理的linux – Bash功能中的Cd全部内容,希望文章能够帮你解决linux – Bash功能中的Cd所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。