[Tip] git bash shell 명령어


지난 포스팅

1. 마크다운 문법

2. github 가입 및 다운로드


지난 포스팅에서 우리는 간단한 Markdown 문법을 알아봤고 github 가입 및 설치까지 완료했습니다. 이번 포스팅에서는 git bash shell에서 사용할 수 있는 기본적인 Linux 명령어를 알아보도록 합시다. git을 직접 다루는 명령어는 따로 다룰 예정입니다. 이번에는 디렉토리 및 파일의 조회, 이동, 생성, 삭제 같은 기본적인 명령어에 대해 다루도록 하겠습니다.

먼저 git bash를 실행해봅시다. 윈도우 검색창에 git bash를 검색하면 바로 나옵니다.

shell

가장 먼저 우리는 git bash가 어디에서 실행되고 있는지를 알아야 합니다. 명령창 제목부분에서 git bash가 실행된 디렉토리의 경로를 확인할 수 있습니다. 저의 경우에는 c/Users/lhmlh 이 되겠네요.

그리고 바로 아래를 보시면 노란색 ~을 확인할 수 있습니다. 이것은 홈 디렉토리를 의미합니다. git bash 상에서의 경로 이동은 모두 홈 디렉토리에서 부터 시작됩니다. 저의 현재 경로가 c/Users/lhmlh이고 명령창에는 ~ 밖에 나와있지 않으니 즉 c/Users/lhmlh홈 디렉토리라는 의미입니다.

1. pwd

현재 디렉토리의 경로를 확인하는 명령어 입니다.

$ pwd
/c/Users/lhmlh

현재는 어떤 디렉토리로도 이동하지 않았으니 홈 디렉토리의 경로가 그대로 출력됩니다.

2. ls

현재 디렉토리 내부에 존재하는 폴더와 파일의 목록을 호출하는 명령어 입니다. (아이에스 아니고 엘에스입니다.)

$ ls
'3D Objects'/
 4IR/
 anaconda3/
 AppData/
'Application Data'@
 Contacts/
 Cookies@
 Desktop/
.
.
.

폴더의 경우 파란색으로 호출되는 것을 볼 수 있습니다. 저는 4IR 폴더로 이동해보도록 하겠습니다.

3. cd

현재 디렉토리에서 다른 디렉토리로 이동하는 명령어 입니다.

lhmlh@DESKTOP-99JLML6 MINGW64 ~
$ cd 4IR

lhmlh@DESKTOP-99JLML6 MINGW64 ~/4IR

명령어를 입력했더니 ~ 에서 ~/4IR로 바뀐 것을 확인할 수 있습니다. 이 상태에서 ls 명령어를 입력해봅시다.

lhmlh@DESKTOP-99JLML6 MINGW64 ~/4IR
$ ls
__pycache__/     employees2.xml  MySQL.ipynb  test6.py        수행평가제출.zip
AI/              employees3.xml  staff.py     test7.py        클래스.ipynb
Algorithm.ipynb  emps.txt        test.py      test8.py        회원관리.ipynb
API.ipynb        gugudan.py      Test2.py     tkinter.ipynb
calc.py          Hello.py        Test3.py     tkinter2.ipynb
calculator.py    mod2.py         test4.py     xml.ipynb
employees.xml    MyApp/          test5.py     노트북.ipynb

이전과는 다른 목록이 호출되는 것을 확인할 수 있습니다.


상위 디렉토리로 돌아가기 위해서는 cd ..을 입력해주시면 됩니다.

lhmlh@DESKTOP-99JLML6 MINGW64 ~/4IR
$ cd ..

lhmlh@DESKTOP-99JLML6 MINGW64 ~
$


당연히 한 칸 씩만 이동할 수 있는 것은 아닙니다. cd 해당 폴더의 절대 경로 혹은 cd 해당 폴더의 상대 경로 를 입력해 주시면 한 번에 멀리 있는 폴더로 이동하는 것이 가능합니다.

lhmlh@DESKTOP-99JLML6 MINGW64 ~
$ cd ./DSL/EDA_Project/housesalesprediction

lhmlh@DESKTOP-99JLML6 MINGW64 ~/DSL/EDA_Project/housesalesprediction
$ pwd
/c/Users/lhmlh/DSL/EDA_Project/housesalesprediction

위에서 배운 pwd를 입력하면 한 번에 멀리 있는 폴더로 이동했다는 것을 확인할 수 있습니다.


다시 홈 디렉토리로 돌아오고 싶다면 cd ~ 를 입력하시면 됩니다.

lhmlh@DESKTOP-99JLML6 MINGW64 ~/DSL/EDA_Project/housesalesprediction
$ cd ~

lhmlh@DESKTOP-99JLML6 MINGW64 ~
$

한 방에 집으로 돌아올 수 있습니다.

4. mkdir

현재 위치에 폴더를 생성하는 명령어 입니다. 비교를 위해 빈 폴더로 이동해서 보여드리겠습니다.

lhmlh@DESKTOP-99JLML6 MINGW64 ~
$ cd emptyfolder

lhmlh@DESKTOP-99JLML6 MINGW64 ~/emptyfolder
$ ls


emptyfolder 폴더에는 아무 것도 없기 때문에 ls 명령어를 입력했을 때 아무 것도 나오지 않습니다. mkdir 명령어를 이용해 폴더를 생성해보겠습니다.

lhmlh@DESKTOP-99JLML6 MINGW64 ~/emptyfolder
$ mkdir newfolder

lhmlh@DESKTOP-99JLML6 MINGW64 ~/emptyfolder
$ ls
newfolder/

mkdir 명령어로 newfolder라는 새로운 폴더를 생성하고 ls를 입력하니 목록에 등장하는 것을 확인할 수 있습니다.

주의하실 점은 폴더/파일 이름을 지을 때 git bash가 띄어쓰기를 잘 인지하지 못하므로 띄어쓰기를 넣고 싶다면 가급적 _를 이용하시는 것이 좋습니다.

5. touch

현재 폴더에 파일을 생성하는 명령어 입니다. 기존에 만들었던 emptyfolder에 파일을 생성해보도록 하겠습니다.

lhmlh@DESKTOP-99JLML6 MINGW64 ~/emptyfolder
$ touch a.txt

lhmlh@DESKTOP-99JLML6 MINGW64 ~/emptyfolder
$ ls
a.txt  newfolder/

a.txt 파일이 생성된 것을 확인할 수 있습니다. 파일을 생성할 때 확장자를 반드시 붙여주셔야 합니다

6. mv

파일을 이동시킬 때 사용하는 명령어 입니다. mv 파일 경로의 형태로 입력하시면 됩니다. 방금 생성한 a.txt 파일을 newfolder로 이동시켜 보겠습니다.

lhmlh@DESKTOP-99JLML6 MINGW64 ~/emptyfolder
$ mv a.txt newfolder

lhmlh@DESKTOP-99JLML6 MINGW64 ~/emptyfolder
$ ls
newfolder/

ls로 확인해보니 a.txt 파일이 사라진 것을 확인할 수 있습니다. newfolder로 이동해서 확인해보겠습니다.

lhmlh@DESKTOP-99JLML6 MINGW64 ~/emptyfolder
$ cd newfolder

lhmlh@DESKTOP-99JLML6 MINGW64 ~/emptyfolder/newfolder
$ ls
a.txt

newfoldera.txt가 이동한 것을 확인할 수 있습니다.


여담으로 mv 명령어는 파일의 이름을 바꾸는데도 사용할 수 있습니다.

lhmlh@DESKTOP-99JLML6 MINGW64 ~/emptyfolder/newfolder
$ mv a.txt b.txt

lhmlh@DESKTOP-99JLML6 MINGW64 ~/emptyfolder/newfolder
$ ls
b.txt

a.txt 파일이 b.txt로 바뀐 것을 확인할 수 있습니다.

7. echo & cat

echo는 입력된 값을 그대로 출력해주는 명령어 입니다. 파이썬의 print 같은 명령어라고 보시면 됩니다.

$ echo Hello world
Hello world

우리는 echo 문자열 > 파일 명령어를 이용해서 파일에 문자열을 입력하는 것이 가능합니다.

lhmlh@DESKTOP-99JLML6 MINGW64 ~/emptyfolder/newfolder
$ echo Hello world > b.txt

실제로 Hello worldb.txt 파일에 입력되었는지 확인해보려면 직접 해당 경로에 들어가 b.txt 파일을 열어보시면 됩니다. 하지만 cat 명령어를 사용하면 명령창에서도 확인이 가능합니다. cat은 파일의 내용을 출력해주는 명령어 입니다.

lhmlh@DESKTOP-99JLML6 MINGW64 ~/emptyfolder/newfolder
$ cat b.txt
Hello world

echo 문자열 > 파일 명령어는 기존 파일의 문자열을 모두 지우고 새로 입력을 하게 됩니다. 만약 기존 문자열을 유지하고 새로운 문자열을 추가하고 싶다면 echo 새로운 문자열 >> 파일를 사용하시면 됩니다.

lhmlh@DESKTOP-99JLML6 MINGW64 ~/emptyfolder/newfolder
$ echo Hello world >> b.txt

lhmlh@DESKTOP-99JLML6 MINGW64 ~/emptyfolder/newfolder
$ cat b.txt
Hello world
Hello world

8. rm

rm은 파일이나 폴더를 삭제하는 명령어 입니다. 파일을 삭제할 때는 rm 명령어를 그대로 사용하면 되지만 폴더를 삭제할 때는 rm -r이라는 옵션을 사용해야 합니다. 먼저 파일부터 삭제해보겠습니다.

lhmlh@DESKTOP-99JLML6 MINGW64 ~/emptyfolder/newfolder
$ rm b.txt

lhmlh@DESKTOP-99JLML6 MINGW64 ~/emptyfolder/newfolder
$ ls

ls를 통해 확인해보니 아무것도 남아있지 않은 것을 확인할 수 있습니다. 이번엔 폴더를 삭제해보도록 하겠습니다.

lhmlh@DESKTOP-99JLML6 MINGW64 ~/emptyfolder/newfolder
$ cd ..

lhmlh@DESKTOP-99JLML6 MINGW64 ~/emptyfolder
$ rm -r newfolder

lhmlh@DESKTOP-99JLML6 MINGW64 ~/emptyfolder
$ ls

역시 newfolder가 사라진 것을 확인해볼 수 있습니다.

물론 Linux 명령어는 이것보다 훨씬 많지만 적어도 github를 이용하는데 있어서는 이정도만 숙지해도 이용하는 것에 전혀 지장이 없습니다. 다음 포스팅에서는 본격적으로 git에 대한 내용을 다룰 예정입니다. 읽어주셔서 감사합니다~


다음 포스팅

git 사용법 - 코드관리(SCM) & 버전 관리(VCS)