macOS 기본 명령어

(File, Folder 관련)

 

 

터미널 사용이 익숙하지 않다면 명령어들이 너무 많아 헷갈리곤 합니다. 시간이 지남에 따라 자연스럽게 알게 되겠지만, 터미널 환경이 어색하다면 정말 많이 사용하는 기본적인 명령어 몇가지는 메모장에 적어두고 사용하는 것이 마음에 편할 것입니다.

 

 

[ 터미널 기본 명령어 구분 ]

 

 

터미널 명령어는 위 그림처럼 크게 macOS에서 제공하는 기본 명령어들과 그외 나머지 명령어들로 두가지 영역으로 구분할 수 있습니다. 두 영역의 명령어들 중에 이 글에서는 macOS 에서 자주 사용하는 기본 명령어들 몇가지들에 대해서만 소개합니다. 참고로 만약, nodejs 개발자라면 node를 설치한 후 npm 혹은 node 명령어를 사용할 것이고, android 개발자라면 android-sdk를 설치한 후 adb 혹은 logcat 등의 명령어들을 사용하게 될 것인데, 이때 외부 프로그램, 라이브러리, 툴 등을 설치해야만 사용 가능한 명령어들은 macOS 기본 명령어가 아닌 영역의 명령어들로 구분됩니다.

 

  • macOS 기본 명령어 : mac PC를 구입한 이후 아무것도 설치하지 않아도 사용 가능한 명령어를 의미 (ex, pwd, cd, ls, cp, touch 등)
  • (macOS 기본 명령어가 아닌) 외부 프로그램 명렁어 : 외부 프로그램을 직접 설치한 후 사용 가능한 명령어를 의미 (ex, brew, apt-get, npm, adb, logcat 등)

 

[ 터미널 기본 명령어 영역별 구분 ]

 

 

그리고, macOS 기본명령어는 위 그림처럼 크게 영역을 몇가지로 구분해두고 사용하는 것이 이해하기 편할 것입니다. 기본 명령어의 대부분이 파일과 폴더를 제어하는 명령어들입니다. 따라서, 정말 많이 사용하는 명령어들은 파일과 폴더 관련된 명령어들이기 때문에, 이 명령어들이 익숙해지면, 그 이후에 사용자가 필요한 기능을 하는 명령어들을 하나씩 찾아서 사용해나가는 것이 좋습니다. 참고로, 이 글에서는 네트워크 명령어(ex, ifconfig)처럼 컴퓨터에 대해 깊이 있는 개념들이 필요한 상태에서 사용해야 명령어들은 설명에서 제외했습니다.

 

  • 파일 : 파일 추가, 삭제, 복사, 내용보기, 내용변경하기 등
  • 폴더 (디렉토리) : 폴더 추가, 삭제, 복사, 이동, 목록보기 등

자주 사용되는 파일과 폴더 관련 명령어들에 대해 설명하겠습니다. 아래 명령어들을 사용해서 직접 PC에 파일을 추가하고 삭제하고 새로운 폴더를 만들고 이동시키는 등의 작업들을 하면서 30분 정도 하나씩 테스트하다보면 금방 외워질 것입니다. 아래 명령어들이 몇가지 안되지만, 아래 명령어들은 모든 개발자들이 터미널을 사용할 때 실행하는 50%이상의 명령어들이라고 할 수 있을 정도로 자주 사용되는 명령어들입니다.

 

pwd (print working directory) : 현재위치보기

pwd 명령어는 터미널에서 현재 위치가 어디인지를 나타냅니다. 평소에 윈도우나 macOS에서도 마우스를 주로 사용했다면 충분히 헷갈릴 수 있는 부분입니다. 터미널에서는 PC 화면에서 보이는 모든 파일과 폴더들에 접근할 수 있습니다. PC는 처음에 마우스로 조작할 수 있는 형태가 아니었습니다. 명령어들을 치면서 조작해야하는 형태였고, 사람들이 사용하기가 어렵기 때문에 마우스라는 것을 만들었고 마우스로 클릭이 가능한 UI들이 개발된 것입니다. 따라서, "터미널"은 명령어로 컴퓨터를 조작하는 형태이고, "PC 화면"은 마우스로 화면을 조작하는 형태라고 말할 수 있습니다.

$ pwd
/Users/joker/Desktop/lec

 

ls (list) : 목록보기

ls는 현재 위치에 존재하는 파일의 목록을 보여주는 명령어입니다. 현재 위치를 pwd 명령어로 확인했다면 그 위치가 현재 위치이고, 바로 그 위치에서 ls 명령을 실행하면 그 위치에 존재하는 파일 목록들이 모두 출력됩니다. 대부분의 명령어들은 명령어 옆에 옵션(option)을 사용해서 실행하려는 명령어를 조금 다르게 사용할 수 있습니다. 옵션(option)은 말그대로 명령어를 실행할 때 사용해도 되고 사용하지 않아도 됩니다. 대부분의 명령어 옵션들은 "-"가 붙습니다. ls 명령어의 경우 자주 사용하는 옵션으로는 -l 과 -al 이 있습니다. 이 둘의 차이는 파일을 출력할 때, 숨김파일까지 보여줄 것인지에 대한 여부 차이뿐입니다. "ls -l"은 숨김파일을 제외한 목록을 보여주고, "ls -al"은 숨김파일을 포함한 목록을 보여줍니다.

 

참고로, 출력된 파일들 중에 파일과 디렉토리를 구분하는 방법이 있습니다. ls -l 혹은 ls -al 명령을 실행했을 때, 가장 앞에 "d"라는 문자가 붙어 있는 경우 폴더(Directory)를 의미합니다. 만약에, "-"가 붙어 있다면 파일임을 의미합니다.

$ ls
abc aaa bbb ccc test.txt


$ ls -l
drwxr-xr-x@ 3 joker  staff     96  5 18  2020 abc
drwxr-xr-x@ 3 joker  staff     96  5 18  2020 aaa
drwxr-xr-x@ 3 joker  staff     96  5 18  2020 bbb
drwxr-xr-x@ 3 joker  staff     96  5 18  2020 ccc
-rw-r--r--  1 joker  staff    215 11  9 17:17 test.txt

$ ls -al
drwxr-xr-x@ 11 joker  staff    352 11  9 17:17 . <-- 현재 디렉토리
drwx------@ 24 joker  staff    768 11 18 23:06 .. <-- 상위 디렉토리
drwxr-xr-x@ 3 joker  staff     96  5 18  2020 abc <-- 현재 디렉토리의 abc 디렉토리
drwxr-xr-x@ 3 joker  staff     96  5 18  2020 aaa <-- 현재 디렉토리의 aaa 디렉토리
drwxr-xr-x@ 3 joker  staff     96  5 18  2020 bbb <-- 현재 디렉토리의 bbb 디렉토리
drwxr-xr-x@ 3 joker  staff     96  5 18  2020 ccc <-- 현재 디렉토리의 ccc 디렉토리
-rw-r--r--  1 joker  staff    215 11  9 17:17 test.txt <-- 현재 디렉토리의 test.txt 파일

 

cd (change directory) : 위치변경하기

cd는 터미널의 현재 위치에서 다른 위치로 이동하는 명령어입니다. cd 뒤에 현재 위치에 있는 폴더들 중에 하나를 입력하면 그 폴더 안으로 이동됩니다. 참고로, 터미널의 어느 위치에서든 자주 사용되는 위치가 있는데, 바로 상위 디렉토리로 이동하는 경우와 홈(Home)으로 이동하는 경우입니다. 

 

상위 디렉토리로 갈 때는 "cd .."(점점) 를 입력하면 되고, 홈으로 이동할 때는 "cd ~"(물결) 을 입력하면 됩니다. 개발자가 아니라면, 홈(Home)이라는 키워드가 익숙하지 않을 수 있습니다. 홈은 현재 PC의 사용자 계정의 위치를 의미합니다. 현재 PC를 나말고 누군가와 같이 사용하고 있다면 계정이 여러개 존재할 수 있습니다. 예를 들어, 제 PC는 joker라는 계정과 batman이라는 계정을 만들어두었습니다. joker라는 계정으로 접속한 후 터미널에 cd ~ 를 입력하면 "/Users/joker" 의 위치로 이동하게 되고, batman이라는 계정으로 접속한 후 터미널에 cd ~ 를 입력하면 "/Users/batman" 의 위치로 이동하게 됩니다. 그리고 그 위치부터가 내가 맘대로 사용할 수 있는 공간입니다. 참고로, 바탕화면은 터미널에서 "Desktop"이라는 디렉토리 이름으로 접근이 가능하고, 이 Desktop 디렉토리는 홈(Home) 위치 안에 존재하므로, 만약 터미널 안에서 다른 어떤 위치에서 작업 중이었는데 바탕화면으로 이동시키고 싶다면 "cd ~/Desktop" 명령을 실행하면 됩니다.

$ cd aaa
$ pwd
/Users/joker/Desktop/lec/aaa

$ cd ..
$ pwd
/Users/joker/Desktop/lec

$ cd ~
$ pwd
/Users/joker/Desktop

 

touch : 파일 생성하기

touch는 파일을 생성하는 명령어입니다. touch를 사용해서 파일을 생성할 때는 확장자를 입력하는 것이 필수가 아니기 때문에 입력하지 않아도 파일이 생성됩니다. 만약, 생성하려는 파일 이름이 "test.txt" 혹은 "test.html" 처럼 확장자가 포함된 이름이었는데 실수로 이름을 "test"로 만들었다면, 다른 명령어(ex, mv)를 통해 이름을 변경할 수 있습니다. 

$ touch test.txt
$ ls
abc.txt aaa bbb ccc test.txt

 

cp (copy) : 복사하기

cp는 파일을 복사하는 명령어입니다. cp를 사용해서 파일을 복사할 때는 복사되어 새로 생성될 파일의 이름을 직접 작성해야합니다.

$ cp test.txt test2.txt
$ ls
abc.txt aaa bbb ccc test.txt test2.txt

 

mkdir (make directory) : 폴더 생성하기

mkdir은 폴더를 생성하는 명령입니다. 파일을 생성할 때는 touch 명령을 사용하고 폴더를 생성할 때는 mkdir 명령을 사용하면됩니다.

$ mkdir ddd
$ ls
abc.txt aaa bbb ccc ddd test.txt test2.txt

 

 

mv (move) : 이동하기

mv는 파일을 이동시키는 명령어업니다. 이 명령도 cp 명령과 마찬가지로 복사되어 새로 생성될 파일의 이름을 직접 작성해야 합니다. 파일을 이동시키는 기능외에 이름을 변경시키는 기능도 겸해서 사용할 수 있어 유용하게 사용할 수 있습니다. 주의할 점은 이동시킬 때 정의한 이름과 동일한 이름의 파일이 존재한다면 기존 파일을 덮어씌워서 기존 파일이 없어져버리니 조심해서 사용해야 합니다. 

$ mv test.txt test2.txt
$ ls
abc.txt aaa bbb ccc ddd test2.txt <-- test.txt 파일은 test2.txt 파일로 덮어씌우기 되었습니다.

$ mv test2.txt ddd/d.txt
$ ls
abc.txt aaa bbb ccc ddd <-- test2.txt 파일은 ddd 폴더로 이동되었고, 이름은 d.txt 파일로 변경되었습니다.

 

rm : 파일/폴더 삭제하기

rm은 파일 혹은 폴더를 삭제하는 명령어입니다. rm 명령어만 사용한다면 파일만 삭제할 수 있습니다. 만약, 폴더를 삭제하고 싶다면 "rm -rf" 명령어를 실행해서 옵션을 추가로 작성해주어야 합니다. "-rf" 라는 옵션을 추가해주어야 하고, -r 과 -f 옵션 두가지를 적용시키겠다는 의미로, -r 은 recursive 라는 의미로 해당 폴더 안에 있는 내용들을 모두 재귀적으로 탐색해서 싹다 지워버리겠다는 의미이고, -f 는 force 라는 의미로 읽기 권한이 없는 파일이 없는 등의 이유로 삭제가 애매한 파일들이 있더라도 싹다 지워버리겠다는 의미입니다. 주의할 점은 "rm -rf"로 삭제를 할 때 바로 해당 파일이나 폴더가 삭제되어 버리니 조심해서 사용해야 합니다. 예를 들어, 명령어 한번 실행으로 PC의 절반이 삭제되어버릴 수도 있으니 주의해야 합니다.

$ rm abc.txt
$ ls
aaa bbb ccc ddd <-- abc.txt 파일이 삭제되었습니다.

$ rm ddd <-- 빈 폴더가 아니기 때문에 삭제되지 않습니다.
$ rm -rf ddd <-- 폴더 삭제에 대한 옵션을 추가해서 삭제했습니다.
$ ls
aaa bbb ccc