如何使用shell从文件位置提取路径

ABU*_*HIM 1 shell shell-script filenames

如何从给定的字符串下方提取路径位置。

/opt/oracle/app/oracle/product/12.1.0/bin/tnslsnr
Run Code Online (Sandbox Code Playgroud)

预期输出。

/opt/oracle/app/oracle/product/12.1.0/bin
Run Code Online (Sandbox Code Playgroud)

(或者)

/opt/oracle/app/oracle/product/12.1.0/bin/
Run Code Online (Sandbox Code Playgroud)

Joh*_*024 6

使用shell的后缀去除功能

str=/opt/oracle/app/oracle/product/12.1.0/bin/tnslsnr
path=${str%/*}
echo "$path"
Run Code Online (Sandbox Code Playgroud)

一般情况下,${parameter%word}删除word从的末端parameter。在我们的例子中,我们想要删除最后一个斜杠和后面的所有字符:/*.

以上产生:

/opt/oracle/app/oracle/product/12.1.0/bin
Run Code Online (Sandbox Code Playgroud)

使用目录名

dirname可用于从路径中删除最后一个组件:

$ dirname -- "$str"
/opt/oracle/app/oracle/product/12.1.0/bin
Run Code Online (Sandbox Code Playgroud)