본문 바로가기
카테고리 없음

[Linux] 다중 명령어(|, & 등), 자주 쓰는 명령어 ⑥

by 떵해이 2020. 12. 12.
300x250

○ 다중 명령어

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

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

 

이해가 쉽게 예시로 설명을 하겠습니다.

 

 

● 세미콜론 (;)


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

    ▷ 한 줄의 여러 명령어를 입력하게 해줍니다.

        앞에 명령을 실패해도 두번째 명령이 실행이 됩니다. (앞의 명령어부터 순차적으로 실행)

 

예시

# mkdir test; touch a; ls

명령어가 전부 실행되었습니다. test디렉토리 생성, a파일 생성, 파일 리스트 보기

 

 

● 엠퍼센트 (&)


    ▷ 엠퍼센트로 명령어를 구분하여 앞의 명령어는 백그라운드로 실행하고,

        즉시 뒤의 명령어를 실행하게 됩니다.

     앞의 명령어 성공 여부 상관없이 뒤 명령어는 실행됩니다.

        하지만 뒤의 명령어가 앞의 명령어의 결과에 종속되면 안됩니다.

        (예를 들어 mkdir test & cd test 이렇게 되면 안됩니다.

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

 

예시

# mkdir test & touch test1

test 디렉토리 생성, test1 파일 생성

 


● 더블 엠퍼센트 (&&)


    ▷ 명령어를 연결하게 되면 앞에 있는 명령어가 실패하면 뒤에 있는 명령어를 실행하지 않습니다.

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

 

예시

위에서 test 디렉토리를 만들었고, test1 파일을 만들었습니다.

# cat test && echo a

test가 디렉토리라 cat 명령어를 실패하여 다음 명령어를 실행하지 않습니다.

 

# cat test1 && echo a

test1 파일에 아무것도 없어서 출력하지 않았지만 명령을 성공해서 다음 명령어도 실행되었습니다.

 

 

● 버티컬바 (|)


    ▷ 앞의 명령어의 실행결과를 뒤의 명령어의 입력으로 넘깁니다.

     다른 이름으로 파이프(pipe)라고 불립니다.

     grep명령어와 묶어서 아주 유용하게 사용됩니다.

 

예시

# ls -l | grep test

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

 

 

● 더블 버티컬바 (||)

 

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

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

 

예시

# rmdir test || sudo rmdir test

테스트 디렉토리를 삭제하려는데 디렉토리의 권한이 없어서 삭제하지 못할 경우

sudo명령어로 관리자 권한을 얻어서 test 디렉토리를 삭제합니다.

 

 

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

작업을 할 수 있습니다.

 

○ 리눅스에서 자주 사용하는 명령어

# ifconfig (= # ip a)

리눅스 IP확인 하는 명령어

만약 ifconfig 명령어가 안된다면 # yum -y install net-tools 설치하면 됩니다.

 

# ping [통신하고 싶은 IP]

# ping 8.8.8.8 (구글DNS) 외부 통신 확인할 때 사용

네트워크 통신이 되는지 확인하는 명령어

 

# Ctrl + C 누르면 현재 실행중인 프로세스 강제 종료

 

# route (= # ip r = # netstat -nr)

외부 통신이 안될 때 gateway확인하는 명령어

 

# netstat -nat | grep LISTEN

TCP 통신만, 대기중인 상태 확인하는 명령어 (t를 빼면 모든 프로토콜 출력)

보통 옵션은 -nap / -napt 를 많이 사용합니다.

n 도메인 숫자로 출력, a 모든 네트워크 출력, p PID 출력, t TCP 프로토콜 출력

 

# netstat -nat | grep ESTABLISHED

TCP 통신만, 접속중인 상태 확인하는 명령어

 

# netstat -nltp

TCP listening 상태의 포트를 확인하는 명령어

 

# netstat -an | grep 포트번호

특정 포트가 사용중에 있는지 확인하는 명령어

 

# ps -ef | grep [프로세스명]

시스템에 동작중인 프로세스를 정보 확인하는 명령어

 

# firewall-cmd --list-all

사용 가능한 서비스, 포트 확인하는 명령어

 

# systemctl status [서비스명]

서비스 상태 확인하는 명령어

 

○ 그 외 다른 명령어, 용어

간단하게 설명을 할 예정입니다.

이런 명령어들이 있다 정도만 개략적으로 이해하시면 좋을거 같습니다.

 

● 터미널 관련 용어

 

- 터미널 : 서버 로컬이나 원격으로 접속할 수 있는 콘솔을 구현한 소프트웨어

- 쉘 : 명령어를 해석하여 전달해주는 소프트웨어

- 콘솔 : 서버의 로컬에서 직접 명령어를 작성할 수 있는 입출력 장치

- tty (Tele Type Writer) : 콘솔 및 터미널 환경

- pty (Pseudo-Terminal) : 가상 터미널 환경

- pts (Pseudo-Terminal Slave) : 원격 터미널 환경

 

● diff

 

different의 약자

 

실제 파일을 수정하기 전에 원본 파일을 복사해두고, 변경 파일과 원본 파일을 비교해서

원하는 부분이 잘 수정이 되었는지 확인하는 것이 필요합니다.

 

이런 경우 등등 파일을 비교할 때 사용하는 명령어입니다.

 

자주 쓰이고 많이 쓰이는 명령어 입니다.

 

# diff [옵션] [파일1] [파일2]

두 개의 파일을 행 단위로 비교하여 차이점을 출력해주는 명령어

 

# diff3 [옵션] [파일1] [파일2] [파일3]

파일 3개를 비교할 때 사용하는 명령어

 

옵션도 다양하게 많이 있습니다.

 

● split

 

파일을 쪼개는 명령어

 

시간이 지나서 로그 파일이 커지는 것처럼

파일에 내용을 계속 추가하다보면 일정 크기를 넘으면 vi 편집기가 에러 뜨는 경우도 있고

파일이 너무 커서 찾는데 오래 걸리는 경우도 있습니다.

 

이런 경우 등등 대비해 파일을 분할하기 위한 명령어 입니다.

(로그가 계속 쌓여 커질 때 파일을 분리해줄 때 많이 사용합니다.)

 

# split [옵션] [파일명]

 

● date

 

서버에 설정된 날짜와 시간을 확인할 수 있고, 수정할 수 있는 명령어

 

# date [옵션]

 

● who

 

현재 서버에 접속해 있는 사용자를 확인하는 명령어

접속한 계정의 터미널, 접속 시간 등을 확인할 수 있습니다.

 

# who

 

● whoami

 

자신의 정보 확인하는 명령어

 

# whoami

 

● cal

 

현재 달력을 출력하는 명령어

 

# cal [옵션]

반응형

댓글