리눅스에서는 시스템 내의 모든 정적인 요소를 파일로 취급한다. 리눅스에서 다루는 디렉토리와 파일의 개념과 shell을 통해 리눅스 터미널 환경을 활용하자. 그리고 가장 기본이되는 "소유권과 권한"에 대해 알아보자.
tree
- 이와 같은 명령어로 확인이 가능하다root
: 최상위, 모든 디렉토리의 시작점bin
: 기존의 명령어가 저장되어 있다. boot
: 리눅스의 부트 -> 시작될때 설정과 세팅에 대한 값 존재etc-
: 리눅스의 여타 모든 설정파일이 존재하는 디렉토리home
: 사용자의 홈 디렉토리. 리눅스의 계정 추가하면 home하위에 그 계정에 맞는 디렉토리가 생성된다.lib
: 리눅스에 사용되는 라이브러리를 저장하는 디렉토리 usr/bin/tree가 설치되어 있지 않다면 tree 명령어를 사용할 수 없다.
tree 패키지를 설치하기 위해서는 권한을 획득하는 sudo와 패키지 설치를 위한 apt 명령어를 활용하여 sudo apt install tree
명령어를 사용한다.
/var
: /var/log나 /var/adm과 같이 자주 변경되는 시스템 파일들을 가지고 있다./etc
: 시스템이나 사용자 관리를 위한 자료 파일이나 관리자용 명령파일들을 가지고 있다./bin
: 기본적으로 명령파일들이 있다. (cli 명령파일들 이라고 생각하자)/sbin
: 시스템 운영 및 관리를 위한 명령 파일들이 있다.부팅과정에 필요한 명령들은 여기에 있고 정상 동작 상태에서 필요한 크기가 큰 명령파일/boot
: 리눅스 커널의 메모리 이미지와 부팅 과정에서 필요한 정보 파일들이 있다./home
: 각 사용자들의 홈 디렉토리는 이 아래에 존재한다. 명시적으로 ~
위치로 표현한다. /lib
: 시스템 라이브러리나 각종 언어를 위한 라이브러리들을 가진다. /proc
: 커널과 프로세스 정보를 얻을 수 있는 가상 파일 시스템이 마운트되어 있는데 실제로는 커널내의 테이블과 연결되어 있다. /root
: 시스템 superuser, 관리자인 root의 홈디렉토리다./tmp
: 잠시 사용되는 임시 파일들을 위한 디렉터리이다. 주로 캐싱 파일들이 저장된다. /usr
: 두 번째 파일 시스템으로 루트 파일 시스템과 구조가 유사하다. 용량이 크고 자주 사용되지 않는 파일들이 있다. 렉토리 | 용도 | 사용권한 |
---|---|---|
/bin | 기본적인 명령어 | 일반 사용자 |
/sbin | 시스템 관리를 위한 명령어 | 슈퍼유저(root) |
/usr/bin | /bin에 있는 명령을 제외한 기본적인 명령어 | 일반 사용자 |
/usr/sbin | /sbin에 있는 명령을 제외한 시스템 관리를 위한 명령어 | 슈퍼유저(root) |
-
: 자료나 프로그램을 저장하는 파일, 일반적인 파일을 의미한다.d
: 디렉토리를 의미한다. 파일 이름의 계층 구조 형성을 위해 존재한다.b
: 블록장치 파일을 의미한다. 일정 크기의 블록 단위로 입출력을 하는 장치로 커널 내에 이들을 위한 "버퍼 캐쉬 기능"이 있다.c
: 문자장치 파일을 의미한다. 블록장치가 아닌 모든 입출력 장치를 문자 장치로 정의한다. P
: FIFO 파일. 보통 "파이프" 라고 불리는 프로세스간 통신을 위한 특수 파일이다.S
: 보통 유닉스 도메인 소켓이라고 하는데, 컴퓨터 내에 있는 프로세스간 통신을 위한 특수 파일이다.I
: 다른 파일에 대해 부여한 새로운 이름으로 ms의 '바로가기' 파일 개념과 유사한 파일이다. chmod: 뒤에 어떤 권한으로 변경할 것인지. 777은 3가지 모든 그룹에 대해 모든 권한을 준다는 의미!
chown: 소유권도 변경이 가능하다. 해당 명령어는 root권한이 있어야 실행가능하다.
예시
# myidea.txt파일의 권한을 소유자는 읽고, 쓰고, 실행할 수 있게
# 내가 포함되어 있는 그룹은 읽고 실행만 할 수 있게 그리고 다른 사용자는 실행만 가능하게 만들어주세요.
# 관리자를 elice 에서 queen으로 바꿔주세요 queen은 우리와 같은 그룹이 아닌 kingdom에 속해있습니다.
# 따라서 그룹도 옮겨줘야 겠죠?
chmod 751 && chown queen:kingdom myidea.txt
mkdir: 디렉토리 생성
rmdir: 디렉토리 삭제 / 지정한 디렉토리 비어있지 않으면 삭제 불가능
touch: 빈 파일 생성
rm: 파일 및 디렉토리 삭제 / rmdir로 삭제 못하니까 rm -r 가능
cp: 파일 및 디렉토리 복사 / cp A to B
mv: 파일 및 디렉토리 이동 / mv A to B
cat: 파일 내용 출력
cat answer.txt >> hello.py
와 같은 명령어로 answer.txt내용을 hello.py 파일에 >(덮어씌우기), >>(추가하기) 와 같은 작업이 가능하다. find: 파일 검색 / 타입 d는 폴더(디렉토리), f는 파일(file)
나노는 1999년에 TIP(This isn't Pico, "이것은 피코가 아니다"라는 뜻)라는 이름으로 크리스 알레그레타가 처음 만든 것이다. 본래 그는 자유 소프트웨어 사용권으로 배포되지 않는 피코에 대한 자유 소프트웨어 대체물로 만드는 것이 목적이었다. 이 이름은 2000년 1월 10일에 나노(nano)로 변경되었는데, 이는 유닉스 유틸리티 tip과의 이름 혼동을 피하기 위해서였다. 이 이름은 피코보다 1,000배 크다는 의미에서 SI 접두어 나노에서 비롯되었다. 2001년 2월에 나노는 GNU 프로젝트의 일부가 되었다. 나노는 색 문자, 정규 표현식 검색 및 치환, 부드러운 스크롤링, 다중 버퍼, 재결합 가능한 키 지원, (실험적) 실행 취소 및 편집 변경 다시 시도와 같은, 피코에게 부족한 일부 기능들을 갖추고 있다.
리눅스 터미널 환경인 콘솔에서 직관적인 사용자 인터페이스를 제공하는 emacs처럼 나노(nano)는 vi와 함께 리눅스배포판에서 기본 프로그램으로 사용하고있다. / 리눅스에서는 nano뿐만 아니라 여러 종류의 에디터를 지원한다. gedit, vim, emacs, pico의 대표적인 에디터들이 있다. / apt 패키지로 설치도 가능하다.
CLI로 접근하여 텍스트 편집까지! 왜?
기본적인 단축키 명령어!