我需要在UNIX中打印當前,父目錄和根目錄的路徑。我可以使用命令或shell腳本。我設法爲當前和父目錄做到這一點,但我不知道如何打印它的根目錄。當前,父母和根目錄的路徑
這裏是我做了什麼:
- 電流:
pwd
- 父:
echo $(pwd) | sed -e s/\\/[^\\/]*$//
我需要在UNIX中打印當前,父目錄和根目錄的路徑。我可以使用命令或shell腳本。我設法爲當前和父目錄做到這一點,但我不知道如何打印它的根目錄。當前,父母和根目錄的路徑
這裏是我做了什麼:
pwd
echo $(pwd) | sed -e s/\\/[^\\/]*$//
GNU sed的
echo $(pwd) | sed -r -e 'p; :a; s#(.*)/.*#\1#; H; ta; x' | sed '/^$/d'
會打印出從當前所有目錄 - >根
它使用貪婪搜索'/'只保留左部分,附加在保留空間中,ta是用於替換的條件分支,所以如果有一個分支到:a,在末尾x將保持空間交換到模式空間。
最後sed命令用於清除空行
,這不起作用。我得到了一些錯誤,然後當前目錄的路徑打印兩次 – user4859999
os系統? sed的版本?線拷貝/粘貼?在這裏它的工作原理:) – josifoski
嘗試刪除\ s在最後sed命令,所以只sed'/^$/d' – josifoski
我認爲這是比較容易做到這一點使用AWK:
echo $(pwd) | awk 'BEGIN {FS=OFS="/"} {l=NF; while (i++<l-1) {print; NF--}}'
說明
這將打印的所有目錄從當前 - >根。它通過打印行,然後遞減NF
,字段數。請注意,我已將輸入和輸出字段分隔符設置爲/
。
相同的思路@josifoski
pwd | sed ':a;\#/\(.*\)/[^/]*# {p;s##/\1#;ba}'
打印和循環,直到僅1文件夾名稱,刪除每個週期
在這裏一些新的想法,需要解釋(學習),爲什麼它以「\#」開頭+1 – josifoski
使用另一個分隔符不是默認的'/'(通常當是模式的一部分時),轉義第一個字符,指定這個字符是下一個模式的新分隔符,在這種情況下''',同樣的想法,但不需要轉義#s#' – NeronLeVelu
對我來說也是這個組可以標記在地址參考 – josifoski
你能提供的示例路徑,什麼路徑的最後一個文件夾,你找的根目錄? – Grokify
例如在/ usr/home/dir中,根目錄是/ usr – user4859999