2013-04-05 61 views
1

我不能工作了這一點,似乎我在awk命令是不夠的:Bash - 如何在命令行中刪除尾隨的「/ bin/java」?

基本上我想從一個簡單的Linux ls -l命令中提取信息:

ls -l /etc/alternatives/java 

lrwxrwxrwx. 1 root root 29 Apr 5 12:28 /etc/alternatives/java -> /jre/IBM/JDK6SR10FP1/bin/java 

然後我用awk獲取該部分:

ls /etc/alternatives/java -l | awk -F"->" '{print $2}' 
/jre/IBM/JDK6SR10FP1/bin/java 

,因爲我需要刪除尾隨/斌/ java的,使之成爲有效的$ JAVA_HOME,該怎麼做在bash?

所有我想要的是:

/jre/IBM/JDK6SR10FP1 

提前感謝

+2

你可能要考慮使用'從GNU coreutils軟件包readlink'。 – 2013-04-05 02:50:53

回答

2

假設你使用命令替換分配這個值/jre/IBM/JDK6SR10FP1/bin/javaJAVA_HOME

JAVA_HOME=$(ls /etc/alternatives/java -l | awk -F"->" '{print $2}') 

,那麼你可以刪除後部分使用

JAVA_HOME=${JAVA_HOME%/bin/java} 

欲瞭解更多信息,請參見,例如部分Manipulating Strings

+0

感謝您的快速和工作響應,我將暫時放在那裏以查看是否有其他選項 – 2013-04-05 02:36:40

+0

只是一個附註:我需要運行sed命令以從awk中刪除前導和尾隨空白。但總體來說是一個很好的簡單解非常感謝! – 2013-04-05 03:58:03