[Linux] 리눅스 명령어 구조

Shadis·2023년 10월 28일

Linux

목록 보기
4/9

리눅스 명령어 구조

(명령어) (옵션) (전달인자)

Shell 메타 문자

Shell 메타 문자는 Linux shell에서 명령어를 조합해주는 기능이다. 명령어를 조합하면 기존에는 구현하기 힘들었던 기능을 명령어의 조합을 통해 손쉽게 구현할 수 있다.

||

cat / || echo "Fail to execute cat."

||는 논리적 OR의 역할을 하는 메타 문자이다. 앞의 명령어가 실행에 성공하면 뒤의 명령어가 실행되지 않고 앞의 명령어가 실행에 실패하면 뒤의 명령어가 실행된다.

&&

cat text.txt && echo "Success to read the file."

&&는 논리적 AND의 역할을 하는 메타 문자이다. 앞의 명령어가 실행에 성공하면 뒤의 명령어가 실행되고 앞의 명어어가 실행에 실패하면 뒤의 명령어는 실행되지 않는다.

``

echo `cat test.txt`
=> test

명령어 치환 기능을 하는 메타 문자이다. 명령어 치환이란 (`명령어`)라는 문자 자체를 내부 명령어의 실행 결과로 치환해주는 것을 말한다. 즉, 위의 예시에서 `cat test.txt`의 결과인 test가 `cat test.txt`와 치환되어서 결과적으로 echo test가 된다.

$()

echo $(cat $(echo test.txt))
=> test

$()는 위의 ``와 같이 명령어 치환 기능을 하는 메타 문자이다. 다른 점이라면 $()는 중복해서 사용이 가능하다.

""

echo "echo 1"
=> echo 1

"""" 내부의 문자를 하나로 묶어주는 역할을 한다. 명령어의 인자는 띄어쓰기 단위로 나누기 때문에 ""를 사용하지 않으면 띄어쓰기가 있는 문자를 인자로 사용하는 것이 불가능하다 echo echo 1과 같이 사용하면 쉘은 두 번째 echo만 첫 번째 echo 명령어의 인자로 받아들이고 1은 완전히 새로운 명령어로 해석하면서 오류가 발생한다. 이런 일을 막기 위해서는 ""로 인자를 묶어 하나의 문자로 처리하도록 해야 한다.

>, >>

ls > ls.txt

Redirection은 어떤 명령어의 출력을 기존의 표준 출력(터미널 화면)이 아닌 새로운 파일로 리다이렉션시켜준다.

사실 위의 명령어는 1이 생략되어있다.

ls 1> ls.txt

> 기호 하나만 사용하면 > 기호 앞에 1이 생략되어있는 것이다.

ls > /dev/null 2>&1

&는 뒤의 숫자가 파일 디스크립터 번호임을 나타내는 키워드이다. 위의 shell 명령어는 ls 표준 출력(1)을 /dev/null로 보내고 ls 표준 에러(2)를 표준 출력(1)이 보내는 곳으로 보내라는 의미로 표준 에러도 /dev/null로 간다.

bash > /dev/null 0>&1

위의 shell 명령어는 표준 입력(0)을 표준 출력이 향하는 /dev/null로부터 받으라는 의미이다. 입력, 출력 방향이 다른 두 입출력이 2>&1, 0>&1 같은 화살표를 사용하는 점에서 햇갈릴 수 있지만 파일 디스크립터 번호에 붙는 >는 입출력을 어떤 파일과 이어준다고 이해하면 편하다.

ls &> /dev/null

&>를 사용하면 표준 출력(1)과 표준 에러(2)를 함께 리다렉션 시킨다는 표현이다.

echo hello >> note.txt

>> 기호를 사용하면 새로운 파일이 아니라 기존의 파일에 명령어의 출력을 추가한다.

|

ls | grep txt

Pipe는 어떤 명령어의 출력을 다음 명령어의 입력으로 보내준다.

;

echo Hello; echo World

원래 터미널 shell에서 명령어는 한 줄에 하나의 명령어만 사용할 수 있다. 하지만 ;를 사용하면 한 줄에 여러 명령어를 사용할 수 있다.

profile
HGU 20 김민석

0개의 댓글