2013-05-18 2 views
1

bash 코드를 통해 파일 이름을 파이프로 연결하려고합니다.Bash : 파이핑 to eog

내 코드는 다음과 같습니다. ls | grep "sample" | head -1 여기서 sample은 필수 파일의 이름입니다.

출력을 파이프로 연결하는 방법을 알아 내려는 데 문제가 있습니다.

나는 위의 코드의 출력을 변수에 저장 한 다음 그 변수를 무시한 결과로 전달하려고 시도했습니다.

제안 사항?

+0

'아이그'란 무엇입니까? 파일? 프로그램? 내 돈을 위해 코드를 쉘 스크립트로 작성하고 실행 가능하게 만든다. 실패하면, 그것을 기능으로 만드십시오. –

+0

명확히하기 : 파일 이름을 인자로 호출하고 싶습니까, 아니면 파일 이름을 표준 입력란에 쓰길 원합니까? 나는 후자가 어떤 것을 성취 할 것이라고 생각하지 않는다. – sepp2k

+0

@JonathanLeffler : 이미지 뷰어 인 [Eye of GNOME] (http://projects.gnome.org/eog/). – hammar

답변

1

이게 당신이 찾고 있는게 있나요?

ls | grep "sample" | head -1 | xargs eog 
+0

도와 주셔서 감사합니다. 그게 내가 찾고 있던거야. – mundomug

1

eog ("그놈의 눈")은 파일을 그 안에 넣는 것을 허용하지 않습니다. 명령 줄 매개 변수로 파일 이름을 제공해야합니다.

eog *sample* 

을하지만 그 이름이 단어 sample을 포함하는 현재 디렉토리에있는 모든 파일을 보여주는 효과가있을 것입니다 : 하나의 일치하는 파일 이름이 있다면

, 당신은 입력 할 수 있습니다. 당신이 알파벳 순으로 최초의 파일을 표시 할 하나가 될 것으로 기대하는 이유는 나에게 분명하지 않다, 그러나 당신은에 그렇게 할 수 있습니다 :

eog $(ls *sample* | head -n1) 
당신은하지만,보다 구체적인 패턴을 찾기 위해 선호 할 수

.

+0

감사합니다. 당신의 솔루션과 @ linuts의 해결책은 모두 작동합니다. – mundomug

3

하나는 때때로 (파일 이름에 예를 들어, 공백 또는 줄 바꿈을) 잘못 될 수있는 ls의 출력을 구문 분석보다는 말할 수있는, 그래서 당신은 다음 시도 할 수 있습니다 :

find . -iname '*sample*' -exec eog '{}' \; -quit 

또는 제한을 현재 디렉토리

로를
find . -maxdepth 1 -iname '*sample*' -exec eog '{}' \; -quit 

위의 "샘플"에 포함 된 내용을 모든 파일을 찾을 것입니다 (대소 문자 구분을 - 대소 문자에 대한 -name 사용) 그것에 eog를 실행합니다 - 그리고 1 경기 후 종료됩니다, 그래서 첫 번째 파일을 엽니 다.