파일 및 폴더에 대한 명령줄 완성을 수행하는 방법

파일 및 폴더에 대한 명령줄 완성을 수행하는 방법

새로운 Linux 사용자로서 제가 명령줄(CL)을 사용하지 않는 이유 중 하나는 관련된 입력 양으로 인해 파일 및 폴더(예: 모든 것!)와 관련된 작업에 CL을 사용하는 것이 비효율적이라는 것입니다. 저는 개인적으로 장황한 파일 이름을 사용하는 것을 선호합니다. 예를 들어, William Boyce와 Richard DiPrima가 쓴 9판인 "초등 미분 방정식 및 경계값 문제"라는 책이 있다면 이름을 다음과 같이 지정합니다.

elementary_differentail_equations_and_boundary_value_problems_9ed_boyce_diprima.pdf.

그래서 CL 사용법을 배우려고 노력하면서 이 문제를 극복할 수 있는 방법을 찾아보았고,명령줄 완성Tab열쇠를 사용하세요 . 문제는 단어 완성을 수행하지만 파일이나 폴더가 아닌 명령에 대해서만 수행된다는 것입니다. 파일에도 비슷한 기능이 있는지 궁금합니다.

답변1

나는 를 사용 bash하고 에서는 tab파일 이름 완성도 발생합니다.

그러나 특정 예에서는 긴 파일 이름, 디렉터리에 동일한 접두어를 가진 파일이 많이 있는 경우많은 tab이 파일에 액세스하려면 s가 필요합니다!

내가 사용하고 있던 코드베이스에서 비슷한 문제가 있었고 내가 직접 만든 해결 방법은 alias첫 글자만 제공하는 + Perl 스크립트 조합을 사용하는 것이었습니다.성격파일 이름에. 예를 들어,

$ ls
elementary_differentail_equations.pdf # 1
elementary_differentail_equations_and_boundary_value_problems.pdf # 2
elementary_differentail_equations_and_boundary_value_problems_9ed_boyce_diprima.pdf # 3

$ opdf e d e                      # opens 1
$ opdf e d e a b v p              # opens 2
$ opdf e d e a b v p 9 b d        # opens 3

확장 opdf만 찾는 별칭은 어디에 있습니까?.pdf

답변2

Bash를 사용할 때 혼동될 수 있는 완성의 두 가지 측면과 키를 통해 완성을 수행하는 기능이 Tab있습니다 .

프롬프트에 문자를 입력하고 을 클릭하기 시작하면 Tab설명하는 동작을 알 수 있습니다.

$ 엘Tab

el4-rpmlint  el5-rpmlint  elbadmin     elfedit      elif    elinks    else

이는 시스템을 검색 $PATH하고 검색 기준과 일치하는 실행 파일을 표시합니다 el.

그러나 아래와 같은 파일 디렉터리가 있는 경우에는 Tab다음과 같이 동일한 완성 기능을 사용할 수 있습니다.

예시 파일:

$ ls -1
efile.pdf
elementary_differentail_equations_and_boundary_value_problems_9ed_boyce_diprima.pdf
elements1.pdf

이 작업을 수행:

$ ls 엘Tab

Bash는 자동으로 단어를 완성합니다 element. 이 시점에서는 현재 디렉터리의 파일 집합(또는 단일 파일)에서 일반적으로 볼 수 있는 가장 큰 문자열이기 때문에 중지됩니다. 지금 두 번 클릭 하면 TabBash는 지금까지 일치한 파일을 나열합니다.

$ ls 요소elementary_ TabTab Differentail_equations_and_boundary_value_problems_9ed_boyce_diprima.pdf elements1.pdf

$ls 요소

그런 다음 프롬프트의 동일한 위치로 다시 이동합니다. ls element*그 순간 Bash는 기본적으로 여러분을 위해 뭔가를 합니다. Bash가 제공하는 하위 집합에서 원하는 파일을 찾도록 안내하기 위해 문자 한두 개를 입력한 다음 Tab다시 누르면 현재 프롬프트 문자열에 표시되는 확장 문자와 더 많은 파일을 일치시키려고 시도합니다. 어울리는:

$ls 요소Tab

나머지 파일 이름을 얻는 것으로 충분합니다.

$ ls Primary_ Differentail_equations_and_boundary_value_problems_9ed_boyce_diprima.pdf

답변3

실제로 달성하고 싶은 것이 무엇인지 자세히 묻는 또 다른 방법은 입력을 줄이는 것입니다.

또한 좋은 별칭은 긴 폴더 이름이라는 두 세계의 장점을 모두 제공한다는 것을 알 수 있습니다. 나는 긴 폴더 이름과 짧은 입력 이름을 좋아합니다. 예를 들어 별칭을 통해 이를 달성합니다.

alias zab='cd ~/mycar/activerecord-boolean-converter'
alias q='cd ~/Dropbox/95_2014/work/code/ruby__rails/ruby/ruby_quiz'
alias dummy='cd ~/zipcar/zipcar-rails-core/spec/dummy'

그런 다음 예를 들어 입력 q하고return

관련 정보