본문 바로가기
IT Security/LINUX Basic

1. Linux Directory 이동 명령어

by Rosmary 2019. 7. 9.
728x90
반응형

*  본 포스팅은, 리눅스의 설치가 마무리 되었음을 가정한 상태로 시작한다. 많은 블로그나 사이트에서, 리눅스 설치에 대해 상세하게 다루고 있기도 하고, 리눅스를 구동하는데 필요한 가상머신 프로그램이나 리눅스 운영체제의 종류가 워낙 많아, 전부 다룰 수 없기 때문이다.

 

필자는 리눅스 CentOS7을 사용하며, 가상머신은 VMWare를 사용한다. 하지만 CentOS7은 이전 버전에 비해 명령어 체계도 많이 변화하여, 구 버전을 사용하는 분들에게 혼란이 있을 듯 해서, 이전 버전의 명령어도 함께 병기할 예정이다. 필자가 능력이 되는 한도에서...

 

 

 

1. LINUX의 구조를 살펴보자.

 

윈도우라는 그래픽 환경이 익숙한 요즘 사람들에게, 검은 화면에 흰 글씨가 가득한 UNIX 계열 운영체제를 운영해보라고 툭 던져놓는다면, 아마도 패닉에 빠질 것이다. 이 운영체제를 독학하는 초보자분들은, 단순히 화면을 보고 클릭하는 것을 넘어, 컴퓨터에게 내려야 하는 수많은 명령어를 어떻게 외우고 적용해야할지 막막하기만 할 것이다. 필자도 그랬고...

 

하지만, 우리가 현재 사용하고 있는 윈도우 역시, 그 파생은 UNIX다. UNIX에서 DOS라는 마이크로소프트 운영체제가 만들어졌고, 마이크로소프트 사에서 조금 더 사용자에게 편리한 인터페이스를 제공하기 위한 DOS가 바로 윈도우다. 따라서 윈도우의 구조를 파악하면, UNIX 계열 운영체제의 동작도 어느정도는 이해가 될 것이다.

 

윈도우 바탕화면에서 아무 폴더를 클릭하고 연 뒤, 해당 폴더의 주소창을 마우스로 클릭해보자. 대부분은 "C:\..."로 시작하는 문자열이 나타날 것이다. 이제, 그 문자열에서 오른쪽 가장 끝의 \부터 마지막까지의 문자들을 지우고 엔터를 쳐보자. 아마 원래 열었던 파일의 상위 폴더 내용이 눈앞에 나타날 것이다.

 

< 필자는 C드라이브 밑에 위치한 프로그램 파일을 열었다 >

이 과정을 반복하다보면, 여러분들은 "C:\"라는 문자열만 주소창에 남아있는 것을 보게 될텐데, 이 주소가 흔히 말하는 C드라이브의 주소다. 

 

위에서 확인한 것과 같이, 윈도우는 하나의 드라이브 밑으로, 여러 폴더가 존재하며, 이 폴더들은 각자 하위 폴더를 거느리는 형태를 보인다. 이 형태를 계층형 파일 시스템이라고 하는데, 윈도우의 먼 친척뻘 되는 리눅스도 이와 같은 형태의 파일 구조를 이루고 있다. 

 

그럼 리눅스에서 어떻게 이 파일 속을 여행할 수 있는지 알아보자. 

 

 

 

2. 리눅스 내 이동 명령어.

 

- pwd(present working directory) 명령어 -

 

리눅스가 설치되어 있다면, 바탕화면 우클릭 후, 리눅스 터미널 창을 열어보자. 그러면, 마치 윈도우의 cmd창과 비슷한 창이 뜨는데, 여기에 pwd라고 입력하고 엔터를 쳐보자. 만약, 여러분들이 일반 계정이 아니라 관리자(root)계정으로 리눅스를 로그인 했다면, /root 라는 문구를 보게 될 것이다.  

 

pwd 명령어는 현재 사용자가 위치한 폴더의 경로를 표시한다. 마치 윈도우의 폴더 주소창을 클릭하면 나타나는 문자열이 현재의 위치를 알려주듯이 말이다. pwd 명령어로 산출된 "/root"의 의미는, 최상위 폴더인 "/"(루트) 아래 위치한 root라는 폴더에 사용자가 위치하고 있음을 나타낸다. 

 

여러분들이 만약 일반 계정으로 리눅스를 시작했다면(CentOS7을 제외한 나머지는 Root계정으로 대부분 로그인이 되었을 것이다), pwd를 입력했을 때,  /home/[각자 계정명] 이 출력될 것인데, 이것이 의미하는 것도 마찬가지다. 최상위 폴더 밑에 home, 그리고 home 폴더 밑에 위치한 [계정명]폴더에 현재 사용자가 위치하고 있다는 의미다.

 

< 필자는 일반계정을 이용했다 >

이 pwd 명령어를 이용하면, 현재 내가 위치한 폴더의 상위 폴더가 무엇이 있는지 확인할 수 있다. 그럼, 상위폴더로 이동은 어떻게 하면 될까?

 

 

cd(change directory) 명령어

 

현재 화면에서, cd ..을 입력해보자(cd 스페이스 온점 2개다). 입력과 동시에, 입력란 왼쪽의 문구가 변화될 것이다. 그리고 그 상태에서 pwd 명령어를 입력해보자. 아마 다음과 같은 화면이 나타날 것이다.

 

< 좌측은 일반 계정, 우측은 root 계정으로 실행한 화면이다. >

여기서 온점 2개의 의미는, "현재 폴더의 상위 폴더를 의미한다." 루트(/)폴더를 제외한 리눅스의 모든 파일과 폴더는, 윈도우와 마찬가지로, 모두 예외없이 상위 폴더를 가진다.

 

현재의 폴더 위치에서 상위 폴더의 상위 폴더로 가고 싶다면 어떻게 해야할까? "cd .." 명령어를 두 번 써서 이동하는 방법도 있지만, "cd ../.."명령어를 입력해도 같은 결과가 나타난다. 이 명령어를 풀어보면, cd ..(상위폴더의)/..(상위폴더)로 이동하라는 의미다.

 

"cd .." 명령어를 반복하면, 나중에는 최상위 폴더인 루트(/)가 나타난다(위의 사진 오른쪽을 자세히 보자). 최상위 폴더인 루트에서는 아무리 "cd .."명령어를 입력해도 루트 폴더의 위치를 벗어나지 못한다. 피라미드의 정점에서 더 올라갈 곳이 없으니...

 

만약 루트에서 상당히 깊숙한 폴더에 위치해 있다면, cd .. 명령어로 루트까지 되돌아 오기에는 너무나 많은 시간이 걸린다. 그래서 루트 폴더는 cd /라는 명령어로 한번에 루트로 돌아올 수 있게 만들어 놨다. 마치 윈도우의 C:\(C드라이브)와 같다. 

 

지금까지는 아주 간단한 cd 명령어로, 자신이 위치한 폴더에서 상위 폴더로의 이동 방법만 배웠다. 그럼, 하위 폴더로 이동할 수 있는, cd 뒤에 붙는 문장 기호는 무엇일까? 아쉽게도, 하위 폴더로 이동하도록 만드는 문장 기호는 따로 존재하지 않는다. 왜냐하면, 하나의 폴더에는 하위폴더가 없거나, 1개 이상이 존재할 수 있기 때문이다. 마치 C드라이브 밑에 여러 파일이 존재하는 것처럼 말이다. 하위 폴더로 이동하기 위해서는 현재 폴더에 어떤 폴더와 파일이 들어있는지 우선 알아내는 방법을 배워야한다.

 

 

- ls(list) 명령어

 

최상위인 루트 폴더로 이동해서, 현재의 폴더에서 ls 라고 명령어를 입력해보자. 이때까지의 실습과 달리, 명령어를 입력하는 순간, 출력물이 나타나는 것을 볼 수 있다. 

 

출력물은 최상위의 루트 폴더가 가지고 있는 하위 폴더를 나타낸 것이다. 이 출력물 사이에 home이라는 결과도 함께 보인다. 이제 cd 명령어를 이용해서 home 폴더로 이동해보자.

 

들어간 홈 디렉토리에서 다시 ls를 입력하면, 이전과 다른 결과물이 출력되는데, 일반계정으로 본 포스팅을 따라하시는 분들이라면 자신의 일반 계정 이름의 폴더가 나타날 것이다. 

 

< 개인 정보 보호를 위해 일부 항목을 지웠다 >

이렇게, ls 명령어를 사용하면, 자신이 현재 위치한 폴더에서 이동할 수 있는 하위 폴더, 또는 실행할 수 있는 파일 목록을 보여준다. 그리고 이들 하위 폴더로의 이동은 cd 명령어 뒤에 폴더명을 적어주면 된다.

 

cd 명령어는 change directory의 약자다. directory는 필자가 지금까지 폴더라고 일컫어왔던 것이다. 따라서 ls 명령어를 통해 얻은 결과가 모두 파일일 경우, cd 명령어는 실행되지 않고, 다음과 같이 디렉터리가 아니라는 경고 문구가 뜬다.

 

 그럼, ls 명령어로 나타난 결과물이, 이동할 수 있는 폴더인지, 아니면 실행파일인지를 알 수 있는 방법은 없을까? 

 

ls 명령어는 명령어의 결과를 변형하여 출력할 수 있는 옵션을 몇 가지 가지고 있다. 그 중에는 -l(long)이라는 옵션이 있는데, 이 옵션을 ls에서 함께  사용하면, 파일에 대한 정보를 상세하게 출력해준다. 루트 폴더로 이동해서 확인해보자.

 

< 폴더에 대한 알 수 없는 이런저런 정보가 출력된다. 나중에 다 알려주니 겁먹지 말자 >

출력된 화면의 가장 앞의 문자, 즉 빨간 박스로 표시한 부분은 현재 폴더에 위치하는 파일의 형태를 나타낸다. 여러 종류가 있는데, 그 중 d는 directory, 폴더를 의미하며, 하이폰(-) 표시가 되어 있는 것은 일반 파일이다.

 

이제 ls 명령어를 이용해서, 이동할 수 있는 하위 폴더를 찾아 이동해보자. 

 

 

 

- 절대경로와 상대경로

 

이 포스팅의 마지막 내용이다. 우리가 편지나 택배를 해외로 보낼 때 쓰는 주소를 생각해보자. 아마 대한민국, 경기도, 오산시.... 이런 식으로 주소를 작성할 것이다. 하지만 일반 동네 마트에서 할인행사한다고 가입해달라는 요청을 받았을 때, 쓰는 주소는 위의 주소보다 간단히 쓰더라도 큰 문제가 되지 않는다. 가령, 중앙동(필자가 오산시에 만든 가상의 동네다) 오산로 71, 102-102 라고 쓰더라도, 가게에서 큰 문제 없이 해당 고객의 주소를 이해할 수 있다.

 

리눅스에서도 이와 비슷한 메커니즘으로 경로를 지정한다. 리눅스 내에서 cd 명령어로 이동할 수 있는 방법은 크게 2가지가 있다. 최상위 루트 폴더에서 목적지 폴더까지의 경로를 전부 작성하는 절대경로 방법과, 현재 폴더의 위치에서 목적지 폴더까지의 경로만 작성하는 상대경로 방법이다. 절대 경로 방법은, 위의 예에서 설명한 "대한민국 어쩌구 저쩌구" 주소와, 상대경로 방법은 후자의 예와 비슷하다.

 

루트 폴더 아래의 etc 폴더로 이동하자.(cd /etc)

 

etc폴더에서 ls 명령어를 치면 수많은 파일이 나타난다. 그 중에서 필자는 sysconfig라는 폴더, 그리고 그 폴더의 하위폴더로 존재하는 network-scripts 라는 폴더로 이동을 하려 한다. 이 폴더의 절대 경로는 /etc/sysconfig/network-scripts이며, 필자가 위치한 /etc 폴더에서의 상대 위치는 sysconfig/network-scripts로 나타낼 수 있다. 아래의 화면을 보자.

 

분명 cd 명령어 뒤에 다른 문구를 입력했음에도, 최종적으로 위치한 폴더의 이름은 /etc/sysconfig/network-scripts로 동일하다. 이렇게, cd 명령어는 루트 폴더로부터의 절대경로와, 현재 폴더로부터의 상대 경로를 지정함으로써 폴더 간 이동이 가능도록 만들어준다. 

 

지금까지 배운 명령어를 바탕으로, 리눅스의 파일 구성이 어떻게 이루어져있는지 한 번 살펴보기를 바란다.

 

 

 

< 정리 >

 

리눅스 폴더(디렉토리) 이동 명령어
명령어 옵션 의미
pwd  

present working directory

현재 위치한 폴더

cd  

change directory

폴더 변경(이동)

ls -a

all:  모든 파일(숨김 파일 포함) 보이기

-l

long: 

파일 상세 내용 출력

-h

human readable

파일 크기를 사람이 쉽게 읽을 수 있는 형태로 변환

-d

directory

현재 폴더의 정보를 표현

보통 -ld로 사용함.

옵션은 '-' 뒤에 조합하여 사용 가능(ex, ls -alh)

 

반응형

댓글