수색…


소개

명령을 함께 연결하는 방법이 있습니다. 단순한 것만의 것; 또는 일부 조건에 따라 실행되는 논리 체인과 같은 복잡한 것들이 있습니다. 세 번째는 파이핑 명령으로, 출력 데이터를 체인의 다음 명령으로 효과적으로 넘깁니다.

텍스트 패턴 발생 계산하기

파이프를 사용하면 명령 출력이 다음 명령의 입력이됩니다.

ls -1 | grep -c ".conf"

이 경우 ls 명령의 출력은 grep 명령의 입력으로 사용됩니다. 결과는 이름에 ".conf"가 포함 된 파일의 수입니다.

이것은 필요한만큼 후속 명령 체인을 구성하는 데 사용할 수 있습니다.

ls -1 | grep ".conf" | grep -c .

루트 cmd 출력을 사용자 파일로 전송

root가 실행 한 명령의 결과를 다른 사용자에게 표시하려는 경우가 많습니다. tee 명령을 사용하면 root로 실행되는 명령에서 사용자 perm을 사용하여 파일을 쉽게 작성할 수 있습니다.

su -c ifconfig | tee ~/results-of-ifconfig.txt

ifconfig 만이 루트로 실행됩니다.

&& 및 ||를 사용하여 명령을 논리 적으로 연결

&& 두 개의 명령을 연결합니다. 두 번째 작업은 첫 번째 작업이 성공하면 종료됩니다. || 두 개의 명령을 연결합니다. 하지만 두 번째 것은 실패로 끝나는 경우에만 실행됩니다.

[ a = b  ] && echo "yes" || echo "no"

# if you want to run more commands within a logical chain, use curly braces
# which designate a block of commands 
# They do need a ; before closing bracket so bash can diffentiate from other uses
# of curly braces
[ a = b ] && { echo "let me see." 
               echo "hmmm, yes, i think it is true" ; } \
          || { echo "as i am in the negation i think " 
               echo "this is false. a is a not b."  ; }
# mind the use of line continuation sign \
# only needed to chain yes block with || ....

명령을 세미콜론으로 직렬 연결

세미콜론은 두 개의 명령을 구분합니다.

echo "i am first" ; echo "i am second" ; echo " i am third"

명령에 |

| 왼쪽 명령의 출력을 가져 와서 오른쪽 명령을 입력으로 파이프합니다. 이것이 하위 쉘에서 수행된다는 것을 알아 두십시오. 따라서 파이프를 통해 호출 프로세스의 값을 설정할 수 없습니다.

find . -type f -a -iname '*.mp3'  | \
       while read filename; do
             mute --noise "$filename"
       done 


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow