linux 디렉터리 파일과 경로
안녕하세요. 이번엔 저번에 말씀드린 디렉터리에 대해 포스트 하도록 하겠습니다.
디렉터리 (Directory) 파일
디렉터리 파일은 쉽게 말하자면 윈도우에서 '폴더' 역할을 한다고 보시면 됩니다.
여러가지의 파일을 모아주는 역할을 해주죠.
질문! 폴더 역할인데 파일 인가요??
넵 디렉터리도 하나의 파일입니다.
파일의 종류에 대해 잠시 말씀드리면 크게 4가지의 종류가 있는데요
1. 일반 파일
2. 디렉터리 파일
3. 링크 파일
4. 장치 파일
이렇게 크게 4가지로 분류할 수 있습니다.
위에 링크 파일과 장치 파일은 조금 생소하시죠?? 다음 포스트에서 이것들에 대해 다룰테니까 파일의 종류에는 이정도가 있구나~ 라고만 생각하시면 될 것 같습니다.
! 그리고 저번 포스트에서 파일마다 색깔이 다른게 궁금하셨던 분들~
그 사진 다시 한번 볼까요?
이게 뭔 차인고 하니 사실 그것은 파일의 종류였으니!!!
1. 일반 파일 : 하얀색(?)
2. 디렉터리 파일 : 파란색
3. 링크 파일 : 하늘색
4. 실행 파일 : 녹색
5. 압축 파일 : 빨간색
알록달록 하니 차암 이쁘죵..?
디렉터리 구조
일반적인 리눅스의 디렉터리의 구조를 설명해 드릴게요.
일단 디렉터리 중에서도 탑급인 최상위 디렉터리 / 이 있습니다. 모든 디렉터리는 전부 이 / 에 속하는 디렉터리 파일들 입니다. 저번 포스트에서 기본명령어들 익힐때 /etc 나 /mnt 등 디렉터리들이 많이 나왔죠? 여기서 / 이 바로 최상위 디렉터리를 뜻하는데 /etc 는 최상위디렉터리 안의 etc라는 디렉터리 라는 뜻입니다.
※ / 가 최상위 디렉터리지만 경로와 경로 사이에 사용되는 / 는 경로 구분자로 사용이 되니 혼동되지 않게 주의하세요!
이제 왜 /을 붙이는지 아시겠죠? ㅎㅎ
최상위 디렉터리 / 밑에는 기본적으로 여러가지의 디렉터리 파일들이 있는데요
어떤 디렉터리들이 있는지 한번 볼까요?
아니 ㅡㅡ 이게다 뭐시당가?
하나하나 설명해 드리겠습니다!
bin : binary, 실행파일
dev : device, 장치
home : 사용자 디렉터리
lib : 행파일, 32 and 64bit
mnt : mount, 임시디렉터리
proc : process, 가상파일시스템
run : 실행중인파일
tmp : (임시디렉터리
var : variable, 가변적데이터[log]
bote : 부팅관련파일
etc : 설정파일
root : root 사용자=슈퍼유저
크게 이렇게 분류할 수가 있답니다. 근데 사실 저도 저기서 몇개 빼고는 써본적이 없습니다. 하핳
경로(PATH)에 대한 개념
(path) 어디서 많이 보던 단어 아닌가요? 이것 또한 저번 포스트에서 많이 썻던 표현인데 이것은 바로 디렉터리 파일 및 일반 파일등 파일등의 경로를 표현해 줄 때 쓰는.. 그냥 저희끼리의 약속입니다 ㅋㅋㅋ 리눅스 내에서 쓰는 명령어는 아닙니다 !
앞으로도 (path)란 단어가 보이면 '아~ 파일의 경로구나~' 라고 생각하시면 됩니다.
명령어 하나 배우고 갑시다 !
pwd (print working diretory) : 현재위치경로를 표현
디렉터리간의 이동은 cd 명령어를 사용해서 하는데요. 디렉터리간 이동하려면 cd 명령어는 필수죠! 자주 쓰는 간편한 디렉터리간 이동 명령어 알려드릴게요.
리눅스가 경로(path)말고 인식하는 경로 문자가 총 5가지가 있습니다.
최상위 디렉터리 : /
현재 디렉터리 : .
상위 디렉터리 : ..
홈 디렉터리(root) : ~
이전 작업 디렉터리 : -
잘 보이시나요?..
예를 들어.. 내가 최상위 디렉터리 /로 이동하고 싶다하면
cd /
홈(root)디렉터리로 이동하고 싶다하면
cd ~
이전에 작업하던 디렉터리로 이동하고 싶다하면
cd -
잘 이해가 안가시죠? 함께 실습을 해볼까요?
처음에 pwd 명령어를 이용하여 현재 위치가 /root (/최상위 디렉터리 안의 root 디렉터리) 인것을 알아냈습니다. 그리고 cd 명령어를 통해 home 디렉터리로 이동을 했고요. 여기서 cd ~ 명령어를 입력하니 다시 root디렉터리로 이동한것이 보이시죠??
이렇게 사용하시면 됩니다. 여기서 홈디렉터리(root) 는 home 디렉터리와는 전혀 다른 별개의 디렉터리 입니다. 왜 홈디렉터리라고 하냐면.. root 디렉터리가 root 사용자의 디렉터리이고 root 사용자가 계정 본인이기 때문에 홈디렉터리라고 표현하는 것 같은데 자세한건 저도 잘 모르겠습니다. 그냥 'root디렉터리랑 home디렉터리는 다른거구나~' 라고 생각하시면 될 것 같아요!
경로 구분자 /
제가 위에서 / 는 최상위 디렉터리 라고 했지만 디렉터리 사이에서는 경로 구분자로도 쓴다고 말씀드렸었는데요.
파일 이름뒤에 / 가 붙는다면 그것은 이 파일이 디렉터리임을 의미합니다.
반대로 파일 맨 앞에 / 가 붙는다면 그것은 최상위 디렉터리임을 의미합니다.
예를 들어 설명해 드릴게요.
ex) 현재 root 디렉터리의 하위에 있는 log 디렉터리로 이동할테야
cd log
cd ./log
cd log/
cd ./log/
cd /root/log
이것들이 다 같다는게 보이시나요? 하위에있는 디렉터리 앞에는 /를 붙이지 않습니다. 왜냐하면 cd /log 라고 써버리면 최상위 디렉터리 / 밑에있는 log 디렉터리로 이동하자 라고 인식해버립니다. 그래서 현재 자신의 위치에 디렉터리보다 하위 즉 현재디렉터리안에 있는 디렉터리로 이동할때는 앞에 /를 붙이지 않습니다.
그리고 cd ./log 의 의미는 아까 ' . ' 이 점이 현재디렉터리를 의미한다고 한거 기억하시나요?? 문자뜻그대로 현재디렉터리 안의 /(구분) log 디렉터리로 이동하겠다라는 뜻입니다. 이제 이해가 가시나욤??
마지막으로 log/ 는 log파일이 디렉터리를 의미한다는 뜻입니다. 마지막 /은 써도 되고 안써도 됩니다만.. 결국은 저게 다 같다는 것은 알아야 하기에 한번 쭉 나열해봤습니다.
경로를 지정하고 이동 및 작업을 할때 제일 중요한 것은 '내가 어떠한 디렉터리 파일에서 명령을 사용하고 있는지' 가 제일 중요하겠죠?
디렉터리 생성
이 디렉터리는 어떻게 만드는 것인가요? 파일이 touch 인데 똑같나요????
ㄴㄴㄴㄴ 아니죠
디렉터리 파일 생성하는 명령어가 따로 있습니다요
mkdir
사용방법
mkdir <디렉터리 파일 이름>
한번 만들어 볼까요?
mkdir 명령어를 이용해 dir01 이라는 이름의 디렉터리 파일을 만들었고 ls을 통해 보니 파란색으로 만들어져 있는게 보이네요!
여러가지 디렉터리를 한번에 만들 수도 있어요!
mkdir dir02 dir03 dir04
명령어를 통해 한번에 만들어져 있는 모습을 확인할 수가 있습니다.
(전 포스트에서 말씀못드렸는데 파일 만드는것도 똑같습니다. touch file1 file2 이런식으로 만드시면 됩니다.)
그런데 디렉터리 안에 디렉터리를 또 만드려면 어떻게 해야 하지? 라는 의문이 들 수 있는데..
mkdir dir01 로 만들고 cd dir01 로 이동한 후에 또 mkdir dir02 로 만들면 되나?
너무 번거롭지 않습니까? ㅎㅎ 한번에 만드는 명령어가 있죠
바로 mkdir 의 -p 옵션!
mkdir -p dir01/dir02
이렇게 입력해주시면 dir01디렉터리 안에 dir02 디렉터리까지 같이 생성이 되겠습니다. 사진으로 보여드릴게요.
-p 옵션을 통해 dir01 안에 dir02 디렉터리 파일이 들어간걸 확인할 수 있습니다.
디렉터리 삭제
디렉터리를 만들었으니 삭제도 해봐야죠~
rmdir
rm -r
사용방법
rmdir <삭제할 디렉터리 이름>
rm -r <삭제할 디렉터리 이름>
역시 한꺼번에 삭제가 되겠죠? 아까 만든 디렉터리 파일들을 rmdir 을 사용해 삭제해보겠습니다.
이렇게 성공적으로 디렉터리파일들이 삭제된 모습을 볼 수 있습니다.
rm -r 명령어를 써도 같습니다.
그리고 mkdir -p 옵션과 똑같이 rmdir -p 옵션을 쓰시면 디렉터리 안의 디렉터리 까지 삭제할 수 있답니다. 단, 디렉터리안에 파일이 있을경우 삭제가 안되니 디렉터리 안의 파일을 모두 다 삭제후 삭제해주셔야 되요 ㅠ_ㅠ
(하지만 rm -rf 를 쓰면 묻지도 따지지도 않고 바로 삭제해버린다는 점 ㅋ...)
rm -rf 명령어는 조심히 씁시다!!
디렉터리 복사
마지막으로 디렉터리 복사하는 법은 파일 복사하는 법과 비슷합니다.
파일 복사가 cp 명령어를 이용한 거 기억하시나욤??
디렉터리는 cp 옆에 -r 옵션만 살짝 같다 붙이면 됩니다.
사용방법
cp -r (복사할 디렉터리 경로) (붙여넣을 디렉터리 경로)
ex) /etc 의 디렉터리를 /mnt 디렉터리 안에 복사하겠다.
cp -r /etc /mnt
디렉터리에 대해서 설명을 했는데요. 제 설명이 미숙해서 이해가 되셨을지 모르겠습니다. ㅠㅠ 혹 틀린부분이 있다면 언제든지 댓글로 지적 부탁드립니다!
이것으로 디렉터리 파일에 대한 포스트를 마치겠습니다. 감사합니다~
'OS > linux' 카테고리의 다른 글
linux 링크파일 (0) | 2016.09.26 |
---|---|
linux VI Editor (0) | 2016.09.26 |
linux 기본 명령어 익히기 (1) | 2016.09.22 |
[런레벨 변경] linux 그래픽모드 사용하기 (0) | 2016.09.22 |
VMWARE 가상머신 만들기 PART2 (0) | 2016.09.21 |