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


30

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

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

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

 cd reallylongnamefolder

1
많은 방법 : cd */또는 cd rea*/항상 하나의 하위 디렉토리가 있는지 확실하지 않은 경우 (bash를 사용하는 경우 cd rea[TAB]다른 쉘 에서도 .. 을 사용할 수 있지만 이름을 확장하는 방법은 다를 수 있습니다). "/ reallylongnamefolder"가 절대 경로 인 경우에도 같은 것이지만 앞에 '/'가있는 경우 : 예 :cd /rea*/
Olivier Dulac

답변:


38

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

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

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

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


15
디렉토리가 하나만 있다면 글자를 전혀 입력하지 않아도됩니다 cd <tab>.
amalloy

1
Windows에서도 작동합니다. (google ..에서 온 사람들을 위해)
Koray Tugay

16

실제로 알아 낸 것 같아요

cd * 
cd */

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


@Rinzwind는 코멘트에 언급!

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

 /thisislongfolder1
 /thisislongfolder2
 /thisislongfolder3

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

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

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

Rinzwind 감사합니다!


6
CD를 first_letter_or_some_letters 다음 {탭} 가장 쉬운 (또한 폴더의 많은 문제를 해결합니다. 당신이 할 수있는 1 개 이상의 탭 문자와도 혼합 된 편지를. 시스템 의지 자동 완성까지로 할 수있다. 또한 할 수 cd r*r및 그것이 r로 시작하고 끝나는 유일한 폴더가되기를 바랍니다.
Rinzwind

@Rinzwind 와우! 나는 그것을 몰랐다! 감사!
Arian Faurtosh

사용해보십시오. 귀하의 답변에 결과를 추가하면 아마 명성을 얻게 될 것입니다 ;-)
Rinzwind

4
cd */트릭을 할 수 있습니다
gniourf_gniourf

3
cd *아마도 성공보다 더 자주 실패합니다.
David Richerby

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

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


네, 입력 하시겠어요 ... 탭탭으로 가서이 이름을 입력하는 것보다 이름을 찾아보세요. 그래도 100 % 정확합니다. 좋은 대답입니다!
tomsmeding

1
@tomsmeding cd첫 번째 디렉토리에 필요한 스크립트를 작성하는 경우 탭을 수행 할 수 없습니다.
pastebin.com 슬래시 0mr8spkT

-n 1은 파일의 마지막 1 파일을 보여줍니다. 이 명령을 변수 순서로 사용하려면 cd $ (ls -d -1 * / | sed -n '4p')를 사용하여 디렉토리에서 4 번째 폴더를 열 수 있습니다. 별칭에 추가하면 폴더 탐색 속도가 빨라집니다.
Ivan Ivković

2

~ / 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로 바뀔 수 있습니다.

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


0

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

cd $(find -inum directory_inode_number)

0

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

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인쇄 할 때 현재 로케일에서 이름을 표시 할 수 없는 경우 작동합니다 ??.


0

에이스의 대답으로 확장 :

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

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

ls -d -1 -la */

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.