모든 상위 디렉토리 목록을 얻는 방법.
내가 현재에 있다고 가정 해 봅시다
% pwd
/media/blueray/WDPurple/_DataBackup/_Work/_NotesFilteredADOC/linux/shell-command-language/zsh-scripting
제 생각에는
0 /media/blueray/WDPurple/_DataBackup/_Work/_NotesFilteredADOC/linux/shell-command-language/zsh-scripting
1 /media/blueray/WDPurple/_DataBackup/_Work/_NotesFilteredADOC/linux/shell-command-language
2 /media/blueray/WDPurple/_DataBackup/_Work/_NotesFilteredADOC/linux/
3 /media/blueray/WDPurple/_DataBackup/_Work/_NotesFilteredADOC/
4 /media/blueray/WDPurple/_DataBackup/_Work/
5 /media/blueray/WDPurple/_DataBackup/
6 /media/blueray/WDPurple/
7 /media/blueray/
8 /media/
9 /
rofi -dmenu
실제로 상위 디렉토리로 쉽게 CD를 이동할 수 있도록 이 출력을 파이프해야 합니다 .
현재 제가 사용하고 있는 솔루션 pushd
은
function d () {
select=$( dirs -v | head -10 | rofi -dmenu )
cd -${select:0:1}
}
답변1
루프를 사용하여 한 디렉터리 수준에서 시작 $PWD
하고 한 번에 한 디렉터리 수준을 벗겨냅니다. 엔딩만 주의하시면 됩니다 /
. 또한 행 수를 계산합니다(또는 파이프로 연결 nl
). 이것은 bash와 zsh 모두에서 작동하는 기능입니다.
function pwd_and_parents {
local d n
d=$PWD
n=0
while [[ $d = *[!/]* ]]; do
printf '%d %s\n' "$n" "$d"
d=${d%/*}
((++n))
done
echo "$n /"
}
내 버전은 후행 슬래시를 추가하지 않습니다. 필요한 경우 추가할 수 있습니다.