[Linux] Commands

반응형

이번 글에서는 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

댓글

Designed by JB FACTORY