2012-12-11 2 views
2

텍스트 파일의 변수 목록을 간단한 bash 명령으로 전달하려고합니다. 본질적으로 나는 모든 리눅스 명령어 (commands.txt) 목록을 가지고있다.간단한 bash 명령에 변수 목록 전달

man $command > $command.txt 

각각의 변수 것 : 나는 사람의 명령에 (각 새로운 라인에) 해당 파일에서 각 명령을 전달하고 각각의 변수이 전달 될 새로운 .txt 인 파일에 각을 인쇄 할 그것의 man 페이지가 그 이름 .txt로 인쇄되도록하십시오. 도와주세요! 나는 bash 스크립트에서이 작업을하고 싶지만 작동할만한 것이라면 고맙겠습니다.

+0

호출기에 따라 예상치 못한 결과가 발생할 수 있으므로'man'의 결과를 맹목적으로 파이프하지 않습니다. 내 시스템에서 호출기는'vim '이고 명령은 내 터미널에 걸릴 것입니다. 적어도보다 쉬운 호출기 (여기서는'cat')를 사용하려면'man -P cat $ command'를 사용하십시오. 또한 작업을 약간 더 효율적으로 만듭니다. –

답변

2

를 사용하여 내장 된 명령 read :

cat commands.txt | while read command; do 
    man $command > $command.txt 
done 
+3

읽기 명령 인 동안'cat' :'대신 입력 리다이렉션을 사용하십시오; ...; done <명령 .txt '. – chepner

+0

이것은 불필요한 코드없이 완벽하게 작동합니다. 고맙습니다!!! –

1

당신 CAN과 같은 파일에 man 페이지의 NOT 리디렉션 출력 : 위의와

man man > man.txt # DON'T DO THIS 

문제는 출력 man.txt 그 파일에는 많은 추가 서식 지정 문자가 포함됩니다. 모든 서식 문자를 제거하기 위해 여기 col -b

while read command; do 
    man $command | col -b > $command.txt 
done < commands.txt 

주 사용 : 여기

는 스크립트를 작성하는 올바른 방법입니다.

+0

사실 이것은 사실이 아닙니다. 앞서 언급 한 것처럼 명령 맨 페이지를 .txt 파일로 만들 수 있습니다. 형식 오류 또는 추가가 없습니다. –

+0

시스템에있을 수 있지만 Mac & Linux에서 시도했지만 출력 파일에 모든 종류의 서식 지정 문자가 있습니다. – anubhava