繁体   English   中英

Bash〜从目录子目录中的脚本访问可能更改的目录

[英]Bash ~ Access directory that may change, from script within sub-directories of directory

我对bash及其工作方式有些陌生,但是我想知道bash中是否有访问目录的地址,该目录可能由于用户在bash中的安装位置而改变。 (这种情况一直发生,所以一定有)

例如:我有一个程序,其目录为../program-directory/..

但是,然后用户将程序文件下载到/extra-directory/从而导致我们存在/extradirectory/program-directory

然后我有一个运行在../program-directory/script-directory/script/example.bash的bash脚本

然后,我想从example.bash脚本中grep -rnw 'sample text' /program-directory

有没有一种简单的方法可以在program-directory grep而不用担心用户在哪里安装该程序

仅供参考,我查看了一个Bash脚本可以告诉它存储在哪个目录中吗? 但我需要到grep ../program-directory从一个名为的子目录脚本../program-directory

如果您的程序位于/some/example/dir/program-directory/script-directory/script/example.bash并且您要在文件/some/example/dir/program-directory/sample.txt上运行grep ,则您用bash代码编写:

main() {
    local DIR="$(dirname "$0")"
    local DIR="$(cd "${DIR}" && pwd)"
    cd "${DIR}"
    grep 'search term' -- ../../sample.txt
}

上面的代码有许多变体,它们的含义相同或含义略有不同。 编写此代码是为了清楚和正确处理带有空格和特殊字符的目录名称。 这段代码故意忽略了currend工作目录(据我所知,这是您想要的)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM