코드코코

[리눅스] 다중명령어 본문

기록/리눅스

[리눅스] 다중명령어

코드코코 2021. 12. 15. 15:40

다중 명령어

    - 여러 명령어들을 한번에 수행하게 도와주는 기능이 있는 명령어

    - 명령어와 명령어 사이에 붙여 여러개의 명령어를 전달할 수 있다.

    - 다중 명령어는 명령어의 성공 여부에 따라서 동작을 제어할 수 있다는 점에서 효율적

 

 

1. 세미콜론 (;) 

    - 명령이 끝났음을 나타내는 명령어

    - 한 줄에 여러 명령어를 입력할 수 있게 한다.

    - 앞의 명령어부터 순차적으로 실행

    - 앞의 명령어 실행에 실패해도 두번째 명령어가 실행 된다.

    - 예시 

      # mkdir test; touch a; ls : test디렉토리 생성, a파일 생성, 파일 리스트 보기

2. 엠퍼센트 (&)

    - 엠퍼센트로 명령어를 구분하며 앞의 명령어는 백그라운드로 실행하고, 즉시 뒤의 명령어를 실행

    - 앞의 명령어 실행의 성공 여부 상관없이 뒤의 명령어는 실행 됨.

    - 주의 : 뒤의 명령어가 앞의 명령어의 결과에 종속되면 안됨

      (mkdir test & cd test

         : 백그라운드로 앞의 명령을 실행시키고, test디렉토리가 만들어 지기 전에 뒤 명령어가 실행되기 때문에)

    - 예시

      # mkdir test & touch test1 : test 디렉토리 생성, test1 파일 생성


3. 더블 엠퍼센트 (&&)

    - &&로 명령어를 연결하게 되면 앞에 있는 명령어가 실패하는 경우, 뒤에 있는 명령어를 실행하지 않습니다.

    - 첫번째 명령을 성공을 해야만 다음 명령을 실행

    - 예시

        위에서 test 디렉토리와 test1 파일을 만듦.

        # cat test && echo a : test가 디렉토리라 cat 명령어를 실패하여 다음 명령어를 실행하지 않는다.

 

       # cat test1 && echo a : test1 파일에 아무것도 없어서 출력하지 않았지만, 명령을 성공하여 다음 명령어도 실행.

 

4. 버티컬바 (|)

   - 앞 명령어의 실행결과를 뒤 명령어의 입력으로 넘긴다.

   - 다른 이름으로 파이프(pipe)라고 부른다.

   - grep명령어와 묶어서 유용하게 사용된다.

   - 예시

     # ls -l | grep test : ls -l 명령 결과를 뒤로 넘겨 grep으로 test라는 이름을 가진 것들만 출력

 

5. 더블 버티컬바 (||)

    - 명령어를 연결하게 되면, 앞에 있는 명령어가 성공하면 뒤에 있는 명령어가 실행 안됨.

    - 앞에 명령어가 실패하면 뒤에 명령어가 실행

    - 예시

      # rmdir test || sudo rmdir test : 테스트 디렉토리를 삭제하려할 때, 디렉토리의 권한이 없어서 삭제하지 못할 경우 sudo명령어로 관리자 권한을 얻어서 test 디렉토리를 삭제

test 폴더가 사라짐