명령 완료 출력을 어떻게 리디렉션합니까?


25

명령 행에서 명령 뒤에 >또는 |연산자를 사용하여 명령 출력을 파일 또는 다른 명령으로 경로 재 지정하거나 파이프 할 수 있습니다 . 출력을 파일로 리디렉션하려는 덜 표준적인 상황을 겪었지만 파일을 리디렉션 할 가능성이없는 것 같습니다.

새로운 터미널에서

[chiliNUT ~]$

Tab아무 것도 입력하지 않고을 누르면 메시지 가 나타납니다

display all 1725 possibilities? (y or n)

그런 다음을 입력 y하면 다양한 명령 목록이 나타납니다. 이 출력을 파일로 리디렉션하거나 파이프하려면 어떻게해야합니까? 나는 > myfile.txt어디서나 타이핑 할 기회를 얻지 못하는 것 같습니다 .

사용 에 CentOS 6.4 (최종)를 출시 .

답변:


26

내장을 사용할 수 있습니다 compgen.

compgen: compgen [-abcdefgjksuv] [-o option]  [-A action] [-G globpat]
[-W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix]
[-S suffix] [word]

    Display possible completions depending on the options.

    Intended to be used from within a shell function generating possible
    completions.  If the optional WORD argument is supplied, matches against
    WORD are generated.

    Exit Status:
    Returns success unless an invalid option is supplied or an error occurs.

TAB프롬프트에서 명령, 쉘 내장, 키워드, 별명 및 기능을 나열합니다. 그래서 당신은 말할 수 있습니다 :

compgen -cbka -A function | grep '^y' > myfile.txt

yTAB셸 프롬프트에서 파일 에 입력 할 때 표시되는 모든 옵션을 가져옵니다 myfile.txt.

grep가능한 모든 명령, 함수 등을 파일로 가져 오려면 파이프 라인을 제거 하십시오.

compgen -cbka -A function > myfile.txt

1
대박! 실제로 쓰여진대로 답은 문자 y로 시작하는 명령 / 파일 만 가져 compgen -cbka -A function > myfile.txt오므로 전체 출력을 가져옵니다. 감사! 나는이 새로운 흥미로운 기능에 대해 전혀 몰랐다.
chiliNUT

오, 영리 해요
Hauke ​​Laging 14 년

@chiliNUT 나는 명령이 다음과 같이 시작한다는 것을 언급했다 y:) 이것은 당신이 질문에서 보여준 것과 거의 일치했습니다!
devnull

아, 조금 오해했습니다. 내 질문에서 'y'는 실제로 'yes'대 'no'에 해당합니다. 나는 'y'를 입력하면 모든 명령을 뱉어 내고 'n'을 입력하면 아무것도 출력하지 않습니다.
chiliNUT

2
@chiliNUT 나는 그것을 반영하기 위해 답변을 업데이트했습니다.
devnull
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.