IT 프로그래밍/오픈소스소프트웨어

쉘 확장

기술1 2024. 9. 20. 20:35

쉘 확장

사용자가 입력한 명령행을 리눅스의 쉘이 해석하는 과정으로 사용자가 입력한 명령행은 쉘 확장 과정을 거쳐 쉘에 의해 실행됩니다.

 

$cd; touch test42 && echo it worked || echo it failed

이런 식으로 사용됩니다.

 

bash

리눅스에서 가장 널리 사용되는 셀로 기존의 sh에서 csh와 ksh의 장점을 추가한 것입니다. 

 

명령 인자(command argument)

$echo Hello world!

echo명령이 사용된 예시로 인자로 전달되는 텍스트를 화면에 출력해주는 역할을 합니다.

 

인자들의 공백문자는 모두 제거되며 따음표 또는 쌍따음표로 묶인 문자열은 단일한 인자로 처리되며 내부의 공백도 그대로 유지됩니다. 

 

이렇게 -e를 주고 하면 \n을 인식해서 처리해주는 모습을 볼 수 있습니다. 

 

 

리눅스 명령의 종류 

빌트인 명령

쉘이 자체적으로 해석하는 명령

 

외부 명령

/bin, /sbin과 같은 파일 시스템에 존재하는 바이너리 파일에 해당하는 명령으로 환경변수 PATH에 등록된 순서에 따라 외부 명령을 찾습니다. 

 

$type cd

$type cat 같은 명령이 있습니다. 

 

이름이 동일한 명령의 경우 내부 명령이 외부 명령에 우선하여 실행됩니다.

$type -a echo # echo 명령의 종류를 모두 나열

$/bin/echo "Hello World!" 는 외무 병령 /bin/echo를 실행

 

which 명령을 사용하면 입력된 외부 명령에 해당되는 바이너리 파일의 위치를 알려줍니다. 

 

앨리아스 (alias)

기존의 명령을 다른 이름으로 사용할 수 있게 하는 것입니다.

$cat/etc/passwd
$alias show=cat
$show /etc/passwd 
$unalias show
$show /etc

 

작업 제어 연산자

다수의 명령으로 이루어진 작업을 제어하는 연산자

 

semicolon(;)

왼편 오른편의 순서로 명령을 차례로 수행하는 것입니다.

$echo Hello; echo World

double vertical bar (||)

논리합 (logical or)로 해석, ||의 왼편 명령이 실패할 때만 오른편 명령을 실행합니다. 

 

$echo first || echo second; echo third

 

ampersand(&)

쉘은 명령을 background로 실행하고 그것이 종료할 때까지 기다리지 않습니다. 대신 쉘은 다음 명령의 입력을 대기합니다. $sleep 20 &

프로세스 아이디는 21603이 나왔습니다. 

dollar question mark($?)

이전 명령 종료 코드로 반환합니다. Linux명령은 성공적으로 종료하면 0을 반환하고 그렇지 않으면 0이 아닌 값을 반환합니다. 이것은 exit code 혹은 return code라고 불릴 수 있습니다. 

$touch file1

$echo $? 이런 식입니다.

 

double ampersand(&&)

논리곱(logical and)로 해석, &&의 경우 왼편 명령을 성공적으로 종료하면 오른편 명령을 계속해서 실행합니다.

$echo first && echo second

$echo first && echo second

 

double vertical bar (||)

논리합(logical OR)로 해석됩니다. ||의 왼편 명령이 실패할 때만 오른편 명령을 실행합니다.

 

 

작업 제어 연산자

pound sign (#)

쉘 주석을 나타내며 쉘이 해석하지 않습니다.

 

escape character(\)

escape 문자입니다.

이런식으로 ;을 문자로 인식해주는 것을 볼 수 있습니다. 

줄이 바뀌어도 명령이 계속 이루어지는 것을 볼 수 있습니다. \는 이런 기능을 합니다.