Unix, Linux 명령어와 디렉토리의 관계에 대해 간단히 살펴보겠습니다.
Unix, Linux 운영체제에서 사용하는 명령어들은 각각 독립적인 프로그램(파일)으로 이루어져 있고 이 파일들은 bin 과 같은 디렉토리들에 들어있습니다. 이는 Unix 의 철학인 'Everything is a file.' 과 관련이 있습니다. 즉, 모든 것이 파일로 이루어져 있는 것입니다.
특히, 앞서 언급한 bin 디렉토리는 Binary 의 약자로 Linux, Unix 운영체제의 정상적인 구동을 위한 다양한 파일들이 저장되어 있는 장소입니다. 우리가 앞으로 알아보게 될 cat, chown, echo, ls, mkdir 과 같은 단순하면서 필수적인 명령어들 또한 모두 bin 디렉토리 안에 파일로 준비되어 있습니다.
위 사진은 Linux 의 디렉토리 구조입니다. 최상위 디렉토리인 root('/')부터 시작해서 bin, opt, boot와 같은 하위 디렉토리, 그 안에도 또 다른 하위 디렉토리가 존재하는 계층 파일 시스템 구조(tree)로 이루어진 모습을 확인할 수 있습니다.
즉, 우리는 이렇게 디렉토리 안에 파일로 준비되어 있는 다양한 명령어들을 조합하여 마치 블록을 조립하는 것과 같이 다양한 작업들을 수행할 수 있게 되는 것입니다.
물론, 디렉토리의 수도 많고 수행하게 될 작업들이 다양하므로 그 명령어의 개수도 무척 많고 복잡합니다. 하지만 주로 쓰이는 명령어는 그렇게 많지 않기 때문에 기본적인 명령어를 익혀두고 필요할 때 마다 검색하여 사용하는 방법을 채택하는 것이 좋습니다.
기본 명령어를 알아보기 전에 앞으로 자주 쓰일 $ 와 # 에 대해 알아보겠습니다.
앞으로 Unix 와 Linux 의 명령어들을 소개할 때, $
과 #
에 대해 자주 접하시게 되실 겁니다. 이는 제 포스트 뿐만 아니라 다른 포스트들을 접할 때도 명령어 앞에 꼭 붙어있는 기호들입니다.
간단히 정리하면 $
는 '일반 사용자' 일 때, #
은 'root' 일 때 터미널에 표시되는 기호입니다.
아래는 ubuntu 터미널에 사용자 명령어가 입력된 상태입니다. '일반 사용자'라는 의미에서 $
가 붙어있는 모습을 확인할 수 있습니다.
그렇다면, 명령어들을 소개할 때까지도 앞에 $
#
을 붙여 표기하는 이유는 무엇일까요?
사실, 명령어를 한 줄만 입력하게 될 때는 $
나 #
이 필요하지 않습니다. 하지만 연속으로 여러 개의 명령어를 몇 줄에 걸쳐 작성해야 하는 경우에는 각 줄에 대한 구분이 필요합니다. 그렇지 않으면 명령어의 가독성이 떨어지고, 해당 명령어의 시작과 끝을 알아보기 힘들기 때문입니다.
따라서, 아래 그림처럼 명령어의 시작점에 $
#
를 명시하여 각 명령어의 시작과 끝을 알아보기 쉽게 나타냅니다.
sudo 는 명령어 앞에 자주 붙는 접두사입니다.
$
#
이외에도 터미널 명령어들을 소개하는 많은 글을 보면 sudo
라는 단어가 명령어 앞에 붙어있는 모습을 자주 보셨을겁니다.
sudo
는 'substitute user do' 의 약어로서, 일반 사용자 상태에서 root 권한이 필요한 명령어를 입력해야 할 때 사용하게 됩니다.
즉, 정리하면 $
가 #
권한이 필요한 명령어를 입력하여 작업을 수행하여야 할 때, 굳이 #
계정으로 전환하지 않더라도 일회성으로 권한을 빌려와 명령을 수행할 수 있도록 추가하는 명령어인 것입니다.
따라서, 현재 자신이 $
인 일반사용자 권한으로 터미널을 사용하고 있을 때, #
root 권한이 필요한 명령어를 입력하고 싶다면, 명령어의 앞에 sudo
를 추가하여 작성할 수 있습니다.
반대로 자신이 #
인 root 권한으로 터미널을 사용하고 있을 때, #
root 권한이 필요한 명령어를 입력하고자 한다면, 굳이 sudo
명령어를 붙일 필요가 없는 것입니다.
이제 터미널 기본 명령어들을 익힐 준비는 끝났습니다. 다음 포스트부터는 터미널의 기본 명령어들을 디렉토리 관련 명령어와 파일 관련 명령어로 나누어 살펴보도록 하겠습니다.
https://tourbiz.tistory.com/109
https://swiftcoding.org/remind-of-cli-commands
I like penguin.