모든 상위 디렉터리 계층 나열

모든 상위 디렉터리 계층 나열

모든 상위 디렉토리 목록을 얻는 방법.

내가 현재에 있다고 가정 해 봅시다

% 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 /"
}

내 버전은 후행 슬래시를 추가하지 않습니다. 필요한 경우 추가할 수 있습니다.

관련 정보