리눅스는 기본적으로 유닉스 계열의 운영체제이므로 유닉스의 많은 부분을 그대로 이어받아 유지하고 있습니다.
유닉스에서는 시스템과 관련된 정보, 하드웨어 장치 등등 모두 파일로 관리합니다.
리눅스도 유닉스처럼 시스템 관련 정보와 장치를 관리하기 위해 '파일'을 사용합니다.
이 때, 파일의 효과적 관리를 위해 '디렉터리'를 사용하며 이는 계층 구조를 가집니다.
원래 유닉스에서는 '디렉터리'라는 용어를 사용했으나 윈도에서 '폴더'라는 용어가 사용됩니다.
윈도우가 도스에서 gui 로 변환하면서 시각적이미지가 느껴지는 폴더(=서류철)의 용어 개념을 도입하였습니다.
이름은 다르지만 용도는 같습니다.
1.1 파일의 종류
일반 파일 - 데이터를 저장하는 데 주로 사용됩니다. 각종 텍스트 파일, 실행 파일, 이미지 파일 등 리눅스에서 사용하는 대부분의 파일은 일반 파일입니다. 실행 파일이나 이미지 파일의 경우 데이터가 바이너리 형태로 저장되어 있기에 특정 응용 프로그램이 있어야 내용을 확인할 수 있습니다. 이미지 파일은 이미지 편집기가 있어야 파일의 내용을 확인할 수 있습니다.
심벌릭 링크 - 원본 파일을 대신하도록 원본 파일을 다른 파일명으로 저장한 것. 윈도우의 바로가기 파일과 유사합니다.
장치 파일
:리눅스에서는 각종 장치도 파일로 취급됩니다. device file 은 리눅스 시스템에 부착된 장치를 관리하기 위한 특수 파일입니다.
file 명령어로 .profile 과 '다운로드' 파일의 종류를 호가인해보겠습니다.
ASCII text 는 텍스트 파일을 의미합니다. '다운로드'는 디렉터리 임을 알 수 있습니다.
/bin/bash 파일의 종류는 executable 실행파일입니다.
디렉토리
: 리눅스에서는 파일을 효율적으로 관리하기 위해 디렉터리를 계층적으로 구성하는데 이를 트리tree 구조라고 합니다.
리눅스에서 모든 디렉터리의 출발점은 루트 root 디렉터리 입니다. 루트 디렉터리는 /(빗금) 으로 표시합니다.
루트 디렉터리를 제외하고는 모든 디렉터리는 부모 디렉터리가 있습니다. 루트 디렉터리는 유일하게 부모 디렉터리가 없는 디렉터리입니다.
# 루트 디렉터리의 서브 디렉터리
디렉터리명의 끝에 붙은 / 은 해당 파일이 데릭터리임을 , @ 은 심벌릭 링크임을 뜻합니다. vmlinuz, initrd.img 는 심벌릭 링크입니다. 우분투는 유닉스의 전통에 따라 명령을 /bin 과 /usr/bin 으로 나누어 관리합니다.
# 작업 디렉터리
현재 사용 중인 디렉터리를 작업 디렉터리 또는 현재 디렉터리라고 한다. .(마침표)로 표시하며, 작업 디렉터리의 위치는 pwd 명령으로 확인할 수 있다.
1.3 절대 경로명과 상대 경로명
리눅스 파일 시스템에서는 디렉터리 계층 구조에 있는 특정 파일이나 디렉터리의 위치를 나타내는 것을 경로명(path name)이라고 합니다.
절대 경로명은 항상 루트 디렉터리(/) 부터 시작합니다. 루트 디렉터리부터 시작하여 특정 파일이나 디렉터리까지 이동하면서 거치게 되는 모든 중간 디렉터리의 이름을 표시합니다.
특정 위치를 가리키는 절대 경로명은 항상 동일합니다.
상대 경로명은 현재 디렉터리를 기준으로 시작합니다. 상대 경로명은 / 이외의 문자로 시작합니다. 상대 경로명은 현재 디렉터리가 어디냐에 따라 달라집니다.
1.4 파일과 디렉터리 이름의 규칙
- 파일과 디렉터리 이름에는 / 을 사용할 수 없다. / 은 경로명에서 구분자로 사용하기 때문이다.
- 파일과 디렉터리 이름에는 알파벳, 숫자, 붙임표(-), 밑줄(_), 마침표(.)만 사용합니다.
- 파일과 디렉터리 이름에는 공백문자, *, |, ", ', @, #,, $, %, ^, & 등을 사용하면 안된다.
- 파일과 디렉터리 이름의 영문은 대문자와 소문자를 구별하여 다른 글자로 취급합니다.
- 파일과 디렉터리의 이름이 .(마침표)로 시작하면 숨김파일로 간주합니다.
예시
좋은 이름: apple, hello.c, pre_test, sample
나쁜 이름: &apple, *directory, my home, test\
사용할 수 없는 이름: myhome/ , /test, local/server
2. 디렉터리 사용 명령
2.1 현재 디렉터리 확인 - pwd(print working directory)
현재 위치를 확인한다. 즉 현재 디렉터리의 절대 경로명을 출력한다.
/home/user 가 출력되는데 이는 현재 디렉터리의 절대 경로명이면서 동시에 user 계정의 홈 디렉터리에 대한 절대 경로명이 된다.
프롬프트에서 ~는 현재 user 계정의 홈 디렉터리에 있음을 나타낸다.
2.2 디렉터리 이동하기 - cd
이전 포스팅에서 다룬 바 있으니 그쪽을 참고해주세요 :)
2.3 디렉터리 내용 보기 - ls
디렉터리에 있는 파일이나 서브 디렉터리 등 디렉터리의 내용을 보는 명령은 ls(list) 입니다.
2.3.1 -a 옵션
숨김 파일 확인할 때는 -a 옵션을 사용합니다.
리눅스에서는 파일명이나 디렉터리명이 .(마침표)로 시작하면 숨김 파일이 됩니다. 이 숨김 파일은 ls 명령만으로는 보이지 않으며 -a 옵션을 통해서 봐야합니다.
.bashrc 를 비롯해 숨김 파일이 많다는 것을 알 수 있는데 대부분이 사용자 계정의 환경 설정이나 응용 프로그램의 환경 설정 파일입니다. 현재 디렉터리를 나타내는 .(마침표)와 상위 디렉터리를 나타내는 ..(마침표 2개)도 확인할 수 있습니다. 이 숨김 파일들은 디렉터리가 생성될 때 자동으로 만들어지는 것입니다.
2.3.2 -F 옵션
ls -a 명령의 결과를 보면 어느 것이 파일이고 어느 것이 디렉터리인지 구분하기가 어렵습니다.
ls -F 옵션을 사용하면 파일의 종류를 구분하는 기호가 표시됩니다.
파일명 뒤에 / 이 붙으면 디렉터리, @은 심벌릭 링크, * 은 실행 파일, 아무 표시도 없으면 일반 파일입니다.
홈 화면에서의 명령어를 처보면
홈 디렉터리에 있는 파일이 모두 디렉터리 임을 / 표시를 통해 알 수 있다. 그중 examples.desktop 은 우분투 환경의 '파일'에서 특정 디렉터리를 나타내는 런처 아이콘을 표시하기 위해 사용하는 파일이다.
옵션을 여러 개 연결하여 사용할 수 있는데 위 스샷처럼 '-' 뒤에 옵션만 나열하면 된다.
-a 와 할 떄의 차이점은 .(마침표) 와 ..(마침표 2개) 에도 / 이 붙는 것을 볼 수 있다.
# 지정한 디렉터리의 내용 출력하기
ls 명령은 옵션 외에 인자로 다른 디렉터리를 지정할 수 있습니다. 이 경우 해당 디렉터리로 이동하지 않고도 디렉터리의 내용을 확인할 수 있습니다.
# 상세 정보 출력하기: -l 옵션
위 상세정보는 8가지 필드 번호로 구성이 되어 있다. 1번 필드는 rwxr-xr-x 와 붙어있는데 위에서는 d 와 - 2가지다.
d는 디렉터리 파일 - 는 일반 파일을을 의미한다.
그 외에도 | - 심벌릭 링크 파일 , b - 블록 장치 파일, p - 파이프 파일 등등이 있다.
# 디렉터리 자체의 정보 확인 : -d 옵션
$ ls -ld \
명령어를 통해 디렉터리 자체의 정보를 알 수 있다.
# 파일 존재 여부 확인
ls 명령의 인자로 지정한 파일이 있으면 해당 파일의 정보를 출력하고, 파일이 없는 경우 파일이 없다는 메시지를 출력합니다.
### ls 명령과 비슷한 명령: dir, vdir 명령
윈도우 cmd 창에서 사용하는 도스 명령어인 dir, vdir 은 리눅스의 ls 명령어와 비슷한 기능을 합니다.
아래 예를 통해서 확인해보세요.
2.4 디렉터리 만들기
# 중간 디렉터리 자동으로 만들기: -p
아래 실습에서 -p 옵션을 보면 중간경로에 없는 디렉터리들을 자동 생성해줍니다.
ls -R temp 명령어를 통해 temp 디렉터리 내용을 확인할 수 있습니다.
2.5 디렉터리 삭제하기
$ rmdir
-디렉터리를 삭제한다. 해당 디렉터리가 비어 있어야만 삭제가 가능하다. 빈 디렉터리가 아닐 때는 rm 명령어에 -r 옵션을 줘서 삭제한다.
'CS+ > 리눅스' 카테고리의 다른 글
리눅스 파일 링크 - 하드 링크, 심벌릭 링크 (0) | 2020.08.22 |
---|---|
리눅스 파일 다루기 - cat, more, less, tail,cp,mv, rm (1) | 2020.08.22 |
리눅스 우분투 기초명령어 4. 명령행 편집, man, passwd, 터미널 종료 (0) | 2020.08.15 |
리눅스 conky 설치 (2020.08.15) (0) | 2020.08.15 |
깃&깃허브 입문 3일차 - branch, checkout, status, merge, stash (0) | 2020.03.15 |