이름을 입력하지 않고 사용 가능한 첫 번째 폴더에 어떻게 CD를 넣습니까? 나는 최근에 내가 폴더

나는 최근에 내가 폴더 안에있는 처지에 있었고 cd하위 디렉토리 폴더를 원했습니다 . 이 폴더 안에 하나의 폴더 만 있었고 실제로는 긴 이름이었습니다.

Home (I am here)
 |
 |
  --> /reallylongnamefolder

입력하는 대신 해당 폴더로 들어가는 방법이 있습니까?

 cd reallylongnamefolder



답변

처음 몇 글자를 입력하고를 누르는 것이 tab좋습니다. Bash에는 실제로 유용한 자동 완성 기능이 있습니다. 현재 경로에 디렉토리 만있는 경우 누르면 tab전체 디렉토리가 채워집니다.

입력 cd하고 tab두 번 누르면 현재 디렉토리의 모든 옵션이 표시됩니다.

tab 하나 또는 두 번의 키 누름으로 거의 모든 실행 파일에 액세스 할 수 있기 때문에 일반적으로 bash에서 실제로 유용합니다.

cd *위에서 제안한 것처럼 디렉토리가 목록에서 첫 번째이고 숨겨지지 않은 경우에만 작동합니다. 디렉토리 앞에 알파벳순으로 파일이 있으면 디렉토리 cd가 전혀 변경되지 않습니다.


답변

실제로 알아 낸 것 같아요

cd *
cd */

그러나 여러 파일과 하나의 폴더가 있으면 테스트하지 않았습니다!


@Rinzwind는 코멘트에 언급!

세 개의 긴 폴더가 있다고 가정 해 봅시다.

 /thisislongfolder1
 /thisislongfolder2
 /thisislongfolder3

파일의 첫 글자를 입력 tab하면 파일 이름이 자동 완성됩니다. 미친 스터프!

따라서 위의 예에서 :를 입력하면 가능한 한 t tab자동 완성됩니다 cd thisislongfolder(숫자를 직접 입력).

아니면 당신 cd t*1을 데려 갈 수 있습니다thisislongfolder1

Rinzwind 감사합니다!


답변

cd $(ls -d */|head -n 1)

ls -d */디렉토리를 나열 head -n 1하고이 목록의 첫 번째 디렉토리를 제공합니다.


답변

~ / somereallylongfoldername으로 cd 할뿐만 아니라 / 폴더에있을 때도 cd 할 수 있습니다.

내가 사용하는 첫 번째 것은 oh-my-zsh를 사용하는 zsh입니다. 대소 문자를 걱정하거나 cd를 입력하지 않아도 CD를 사용할 수 있습니다.

  1. 자식과 zsh를 설치
sudo apt-get install zsh git
  1. 오 마이 ZSH 설치

curl -L http://install.ohmyz.sh | 쉬

  1. 기본 쉘을 ZSH로 변경
chsh -s /bin/zsh

홈 폴더에있는 .zshrc를 열고 편집하십시오. 숨겨지지 않았습니다.

나노 ~ / .zshrc

그런 다음 파일 맨 아래에 다음 줄을 추가하십시오.
export CDPATH=$CDPATH:/:/home/$USER/:/media/$USER/

내 테마가 마음에 들면 라인 #ZSH_THEME="robbyrussell"을 다음으로 변경할 수도 있습니다.ZSH_THEME="pygmalion"

파일을 저장하고 닫은 다음 다시 시작하십시오. 쉘을 닫았다가 다시 열거 나 새 탭을 열고 사용해보십시오.

탭 키를 사용하여 이름을 완성 할 수는 없으며 ZSH에서는 docu를 입력하고 탭을 누르면 ~ / Documents로 바뀔 수 있습니다.

여기에 이미지 설명을 입력하십시오


답변

inode 번호로 디렉토리를 변경할 수 있습니다.
먼저로 inode를 찾습니다 ls -il.
그때

cd $(find -inum directory_inode_number)


답변

스크립트에서 수행하거나 결정 불가능한 이름의 디렉토리를 지원해야하는 경우 :

cd $(python -c $'import os\nfor entry in os.listdir(b"."):\n if os.path.isdir(entry):\n  os.write(1, entry);break\nelse: os.write(1, b".")')

디렉토리와 관련된 정렬 순서에 관계없이 디렉토리에 파일이 있으면 작동합니다. 실패하면
숨겨진 디렉토리에서 작동 cd */합니다.
이름 대신 ls인쇄 할 때 현재 로케일에서 이름을 표시 할 수 없는 경우 작동합니다 ??.


답변

에이스의 대답으로 확장 :

cd $(ls -d -1 */ |sed -n '1p')

디렉토리에서 첫 번째 폴더를 엽니 다. 두 번째 디렉토리의 경우 ‘1p’를 ‘2p’로 변경할 수 있습니다.

ls -d -1 -la */

상위 디렉토리의 디렉토리 만 나열합니다.