2016-09-27 83 views
0

我对bash及其工作有点新,但我想知道bash中是否有访问可能在其地址中发生更改的目录到用户将其安装在bash中的位置。 (这一切发生的时候,所以必须有)Bash〜可能会改变的访问目录,从目录的子目录内的脚本

例如: 我有了的../program-directory/..

目录中的程序,但然后用户下载的程序文件/extra-directory/建立的情况下,我们有/extradirectory/program-directory

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

运行bash脚本,我会那么喜欢grep -rnw 'sample text' /program-directoryexample.bash脚本

是否有一行没有简单的方法,我可以在program-directory的grep没有在用户安装此程序

仅供参考,我已经看过Can a Bash script tell which directory it is stored in?的麻烦,但我需要从一个叫脚本在../program-directory到grep的../program-directory

+0

这是一个非常混乱的描述,我不确定你在问什么。你是否在说(在你的最后一行)你需要记住一个目录,以便以后能够切换回目录?如果是这样,'$ OLDPWD'保存'$ PWD'的先前值。但是,你可能会发布一些代码来展示你想要做什么,期望发生什么,以及如果你有那么多失败的地方,可能会更好。 – gilez

+0

你只是想要一个相对路径,例如'grep -rnw'示例文本'../ ..'? – ccarton

+0

我写的最后一行的道歉很蠢,我只是想用example.bash脚本访问../program-directory – PJConnol

回答

1

子目录如果你的程序是在/some/example/dir/program-directory/script-directory/script/example.bash,你想你在bash代码编写的文件/some/example/dir/program-directory/sample.txt然后运行grep

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

上面的代码有很多变体,其含义相同或意义稍有改变。此代码是为了清晰和正确处理具有空格和特殊字符的目录名而编写的。这段代码故意忽略了currend工作目录(就我所知,这就是你想要的)。

+0

这正是我想要的谢谢 – PJConnol