Bash~可以从目录的子目录中的脚本更改的Access目录

时间:2016-09-27 15:22:32

标签: linux bash scripting grep directory

我对bash及其工作方式有点新意,但我想知道无论如何在bash中访问一个可能因地址而改变的目录,因为用户在bash中安装它。 (这种情况一直都在发生,所以必须有)

例如: 我有一个目录为../program-directory/..

的程序

然后用户下载/extra-directory/中的程序文​​件,创建了/extradirectory/program-directory

的情况

然后我有一个在../program-directory/script-directory/script/example.bash

中运行的bash脚本

然后我想从grep -rnw 'sample text' /program-directory脚本

example.bash

我可以在program-directory中使用任何简单的方法,而无需用户安装此程序的麻烦

仅供参考,我查看了Can a Bash script tell which directory it is stored in?,但我需要在../program-directory

的子目录中调用的脚本中../program-directory进行grep

1 个答案:

答案 0 :(得分:1)

如果你的程序在/some/example/dir/program-directory/script-directory/script/example.bash,并且你想在文件grep上运行/some/example/dir/program-directory/sample.txt,那么你用bash代码写一下:

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

上面的代码有很多变体,含义相同或略有改变。编写此代码是为了清楚起见并正确处理带有空格和特殊字符的目录名称。这段代码故意忽略了当前的工作目录(据我所知,这就是你想要的)。