[Linux] Commands
- Linux
- 2020. 9. 15.
이번 글에서는 Linux의 Commands에 대해 알아보겠습니다.
1. Commands
Commands는 사용자가 termnial에 입력하는 text를 의미합니다.
Commands의 특징은 다음과 같습니다.
1-1) Commands는 CommandsName -options inputs 으로 구성되며, case sensitive 합니다.
모든 commands가 -options 과 inputs이 필요한 것은 아닙니다.
CommandsName만 입력한 경우 해당 Commands의 default behavior로 동작하게 됩니다.
예를 들어 위와 같이 -A 1 옵션과 12 2020라는 inputs을 cal CommandsName과 함께 사용할 수 도 있지만
단순히 cal 이라는 CommandsName 만 입력해 사용할 수도 있습니다.
1-2) -options vs --options
date -u
options을 short term으로 작성할 때는 '-' 하나의 대시를 앞에 붙여 옵션을 나타냅니다.
date --universal
동일한 옵션을 가독성 있게 작성하기 위해 '--' 두개의 대시를 앞에 붙여 사용할 수도 있습니다. (동일하게 동작)
date -abcd
short term으로 작성한 여러 옵션을 같이 사용하고 싶을 경우 -a -b -c -d 와 같은 옵션을 -abcd로 입력할 수 있습니다. 이때 입력한 옵션의 순서는 중요하지 않습니다.
date --apple --banana --melon
반면 long term으로 작성한 여러 옵션을 같이 사용하고 싶을 경우에도 --apple --banana -melon 와 같은 옵션을 붙여서 작성할 수 는 없습니다.
1-3) Commands는 shell의 $PATH에 존재해야 합니다
모든 linux의 commands 들은 각각의 프로그램이라고 이해할 수 있습니다.
사용자가 commands를 입력하는 순간 shell은 $PATH에서 사용자가 입력한 commands가 설치되어 있는지를 확인 한 뒤, 설치 되어 있을 경우 왼쪽에서부터 가장 먼저 찾은 commands를 실행합니다.
예를 들어 현재 shell에 등록된 $PATH가 다음과 같을 경우에
- /usr/local/bin
- /usr/bin
- /usr/sbin
- /sbin
동일한 commands가 /usr/bin에도 존재하고 /sbin에도 존재할 경우, shell은 먼저 찾은 commands를 실행합니다.
만약 위와 같이 commands를 $PATH 에서 찾지 못할 경우에는 'command not found' 라는 output을 출력하게 됩니다.
1-4) which commands를 사용해 commands의 path를 확인할 수 있습니다.
예를 들어 cal commands의 path를 확인하고자 할 경우 다음과 같이 입력하면 됩니다.
현재 제 컴퓨터의 shell은 /usr/bin 폴더에 cal commands가 설치되어 있는 것을 확인할 수 있습니다.
2. Shell
Shell은 terminal에 입력된 commands를 해석합니다.
commands가 terminal에 사용자가 입력하는 text 라고 한다면, shell은 사용자가 enter를 누르는 순간 해당 text의 의미를 해석합니다.
예를 들어 위와 같이 'RASPBERRIES' 라는 text 가 있을 때 'RASPBERRIES'라는 text의 실제 의미는 shell이 해석합니다.
이러한 shell은 한가지가 아닌 여러 종류가 있으며, 각 shell은 동일한 text에 대해 의미를 다르게 해석하게 됩니다.
gift가 영어권에서는 '선물' 이라는 의미로 해석되지만
독어권에서는 '독극물' 이라는 의미로 해석 되는 것을 예로 들 수 있습니다.
3. Bash Shell
Linux에도 여러가지 shell 이 존재하지만, 대부분의 Linux System은 'bash shell'을 표준으로 사용하고 있습니다.
bash shell에서 작성한 commands를 다른 shell에 입력 할 경우 의도하지 않은 동작이 실행될 수 있음에 주의해야 합니다.
참고 자료 : https://www.udemy.com/course/linux-mastery/learn/lecture/8207006
'Linux' 카테고리의 다른 글
[Linux] Listing Files (0) | 2021.02.06 |
---|---|
[Linux] Shell (0) | 2021.02.06 |
[Linux] Directory Structure (0) | 2021.02.06 |
[Linux] Manual (0) | 2020.09.17 |
[Linux] Vi (0) | 2020.09.14 |