본 포스팅은 레드햇(RedHat) 계열인 Linux, RHEL, Fedora, CentOS 등 환경에서 기본적인 명령어(help, ls, pwd)의 개념과 사용법을 다룬다.


현재 위치한 디렉토리의 절대 경로를 보여주는 pwd 명령어, 디렉토리 및 파일 목록을 보여주는 ls 명령어를 눈으로 실습 예제 화면을 보고, 손으로 명령어를 입력해 숙지하는 시간을 갖는다.

 

리눅스 명령어 형식

리눅스 명령어는 단독으로 사용하는 명령어, 하나의 옵션을 지정해서 사용하는 명령어, 두개 이상의 옵션을 조합해서 사용하는 명령어가 존재한다.


명령어의 기본적인 형식은 명령어 옵션 인자이며, 옵션과 인자는 생략이 가능한 명령어가 존재한다. 명령어와 옵션은 공백으로 구분해야 되며, 옵션 앞에 -를 붙이는데, -를 생략 가능한 명령어가 존재한다.


○ ls : 명령어만 사용

○ ls -l : 명령어, 옵션을 사용

○ ls -a -l : 명령어, 두개 이상의 옵션 사용 (ls -al, ls -la : 공백 없이 사용 가능하며 앞뒤 순서 변경 가능)

○ ls -l /root : 명령어, 옵션, 인자 사용

○ ls -l /root; ls -l /home : 하나의 라인에 여러개의 명령어를 사용 (세미콜론으로 구분)


pwd 명령어 : 현재 디렉토리 위치

VMware Workstation 프로그램으로 리눅스 가상 머신을 구동하고 일반 사용자로 로그인을 한다. 바탕화면에 존재하는 터미널 아이콘을 더블 클릭하면 검은색 화면이 나타는데, 이 화면이 커맨드 라인 인터페이스 환경이다. 즉, 모든 작업이 명령어를 입력해서 처리한다.


일반 사용자로 로그인을 하면 UID(사용자의 아이디)가 1000 이상의 값을 부여받고, 관리자(root)로 로그인을 하면 UID가 0의 값을 부여받는다.

 

현재 자신이 어떤 사용자로 로그인을 했는지 확인하려면 id 명령어를 입력하면 된다. id 명령어는 현재 로그인 중인 사용자의 UID, GID, GROUP 정보를 보여주는 명령어이다.


일반 사용자는 일부 명령어, 파일 목록 보기, 파일 편집 등 제한된 권한을 가지고 있으므로 관리자로 로그인을 해야 한다. 관리자로 전환하려면 su - 명령어를 입력하면 된다.


su - 명령어는 일반 사용자, 관리자로 전환할 때 사용하는 명령어이다. 특히, su - 사용자명 형식으로 입력하는데, 사용자명을 생략하면 관리자로 전환한다. su - 명령어를 입력하고 관리자의 패스워드를 입력해서 id 명령어를 입력하면 UID가 0이다. UID가 0인 것은 관리자를 의미한다.


[root@10 ~]#은 프롬프트를 의미하는데, 프롬프트의 구조를 보면 [사용자@호스트명 현재위치]로 분류된다. 관리자로 로그인을 하면 [root@10 ~]#으로 표기되는데,


앞 부분부터 보면 관리자는 root이므로 사용자는 root로 표기되고, 호스트명은 서버의 호스트 이름이 표기되고, 현재 위치는 현재 자신이 위치한 디렉토리가 표기되는데, ~는 홈 디렉토리를 의미한다.


그렇다면 su - daze 명령어를 입력하면 [daze@10 ~]$로 표기된다. daze 사요자로 로그인을 했으니 앞 부분은 daze로 표기되고, ~는 daze 사용자의 홈디렉토리이고, $는 daze가 일반 사용자이니 $로 표기된다.



su - daze 명령어를 입력해 daze 사용자로 전환해서 pwd 명령어를 입력한다. pwd 명령어는 현재 자신이 위치한 곳의 절대 경로를 보여주는 명령어이다.


현재 위치를 보면 /home/일반사용자로 나오는데 이것이 일반 사용자의 홈디렉토리이다. 반대로 관리자로 전환해서 pwd 명령어를 입력하면 /root로 나오는데 이것이 관리자의 홈디렉토리이다.

관리자의 홈디렉토리는 /root, 일반 사용자의 홈디렉토리는 /home/사용자명이라고 생각하면 된다. 프롬프트에서 현재 위치를 확인하는 곳에 ~(틸드)라고 표기되는 것은 홈디렉토리를 줄여서 표기하는 것이다.


리눅스 시스템은 최상위 디렉토리인 /로 시작해서 여러 개의 자식 디렉토리로 구분된다.


관리자는 최상위 디렉토리가 /이고, 일반 사용자의 최상위 디렉토리는 /home이므로 관리자의 홈디렉토리가 /root이고, 일반 사용자의 홈디렉토리가 /home/사용자명인 것이다.



cd 명령어는 특정 위치로 이동하는 명령어인데, cd /usr/local을 입력하면 현재 홈디렉토리에서 /usr/local 디렉토리로 이동하게 된다. /usr/local 디렉토리로 이동했는지 확인하려면 pwd 명령어를 입력하면 된다.


리눅스는 절대경로와 상대경로가 있는데, 절대경로는 최상위디렉토리인 /로 시작해서 모든 것을 표현한 경로이고, 상대경로는 현재 위치한 곳의 디렉토리 이름만 표현한다.


상대경로의 약어로 현재 디렉토리를 의미하는 .(점)이 있고, 상위 디렉토리를 의미하는 ..(점점)이 있다.


현재 /usr/local 디렉토리에 위치하고 있는데, cd .. 명령어를 입력하면 바로 전의 디렉토리인 /usr 디렉토리로 이동하게 된다. 이것이 상대경로의 약어로 디렉토리를 이동하는 것이고, 절대경로로 이동하려면 cd /usr을 입력하면 된다.


현재 /usr 디렉토리에 위치하고 있는데, 상대경로로 local 디렉토리로 이동하고 싶다면 cd ./local 명령어를 입력하면 된다. 보통 ./는 생략 가능하므로 cd local 명령어만 입력한다.


그렇다면 절대경로로 root 홈디렉토리로 이동하고 싶다면 cd 명령어만 입력하면 된다. 보통 cd 명령어만 입력하면 로그인 중인 사용자의 홈디렉토리로 이동하게 되므로 cd /root를 입력하지 않아도 된다.



명령어 요약
id 로그인 중인 사용자의 UID, GID, GROUP
su - 관리자 전환
su - 사용자명 지정한 사용자 전환
pwd 현재 위치한 곳을 절대경로 확인
cd 로그인 중인 사용자의 홈디렉토리로 이동
cd /usr/local /usr/local 디렉토리로 이동
cd ./ 현재 디렉토리로 이동
cd ../ 상위 디렉토리로 이동

ls 명령어 : 디렉토리 목록 보기

ls 명령어는 특정 디렉토리의 목록(파일, 디렉토리)을 보여주는 명령어이다. ls 명령어는 보통 옵션을 지정해서 사용하는데, 도움말을 검색해보면 수 많은 옵션이 존재한다.


실질적으로 수 많은 옵션을 사용할 일은 없고, 자주 사용하는 옵션만 확인하자.


구분 설명
ls 디렉토리 목록을 이름만 보여주기
ls -a 숨김 파일을 포함해서 이름만 보여주기
ls -l 디렉토리 목록을 상세히 보여주기
ls -t 디렉토리 목록을 시간 순서로 정렬해서 보여주기
ls -r 디렉토리 목록을 역순 정렬해서 보여주기
ls -d 특정 디렉토리를 지정해서 보여주기
ls -R 디렉토리 안의 모든 하위 디렉토리의 목록을 보여주기

root 홈디렉토리에서 ls 명령어를 입력하면 현재 위치한 디렉토리에 존재하는 디렉토리와 파일 이름을 보여준다. ls -l 옵션을 지정하면 현재 위치한 디렉토리에 존재하는 디렉토리와 파일을 구체적으로 보여준다.


-l 옵션을 지정하면 총 9개의 열로 구분되며, 각 열에 대한 설명은 하기 표를 참고하면 된다.


구분 설명
dr-xr-xr-x. 디렉토리 및 파일 권한
d : 디렉토리 , - : 파일
r-xr-xr-x. : r-x(소유주 권한), r-x(그룹 권한), r-x(타사용자 권한)
3 링크 수
root 소유주 이름
root 그룹 이름
183 파일 크기
11월 13 02:49 최근에 수정된 시간
Modify : 수정 및 변경 시간
change : 저장 시간
Access : 접근 시간
Vmware 파일 및 디렉토리 이름


명령어마다 다르겠지만 옵션이 없는 명령어, 하나의 옵션이 지정한 명령어, 두개 이상의 옵션을 조합해서 사용하는 명령어가 존재한다.


단, 두개 이상의 옵션을 조합해서 사용할 경우 비슷한 기능을 수행하는 역할을 가진 옵션만 조합이 가능하다.


ls -al 명령어를 입력하면 디렉토리의 목록을 보여주는데, 숨김 파일을 포함한 모든 디렉토리 및 파일을 자세히 보여준다. 리눅스에서 숨김 파일은 파일 이름 앞에 .(점)이 붙는다.


숨김 파일을 보면 .bash_history, .bash_profile, .bashrc 등의 파일은 현재 로그인 중인 사용자의 환경 설정한 파일로 모든 사용자의 홈디렉토리에 존재한다.


개별적인 환경 설정을 하려면 홈디렉토리에 존재하는 파일을 이용하고, 모든 사용자에게 적용하려면 /etc/profile, /etc/bashrc 파일을 이용한다.



ls -altr 명령어를 입력하면 디렉토리의 목록을 최근 작업 파일을 기준으로 정렬해서 보여준다.


-t 옵션은 시간 순더로 정렬하는 옵션이고, -r은 역순으로 정렬하는 옵션이므로 하단을 기준점으로 가장 최근에 수정한 파일이 나오게 된다.



ls -l 명령어 뒤에 디렉토리를 지정하지 않으면 현재 위치하고 있는 디렉토리의 목록을 보여준다. 현재 root 홈디렉토리가 위치하고 있으므로 root 홈디렉토리의 목록을 보여준다.


만약, root 홈디렉토리에 위치하고 있는데, 다른 디렉토리의 목록을 보고 싶다면 ls -l 뒤에 디렉토리를 지정하면 된다.



ls 명령어는 특정 디렉토리 하위에 존재하는 디렉토리 및 파일의 목록을 보여준다. 그렇다면, 하위에 존재하는 목록이 아닌 지정한 디렉토리 자체의 권한을 확인하는 방법은 없을까?


ls -ld 디렉토리명을 입력하면 지정한 디렉토리의 상세한 정보를 확인할 수 있다. ls 명령어에서 d 옵션을 제외한 모든 옵션은 현재 디렉토리 내부에 존재하는 정보를 보여주고, 유일하게 d 옵션만 디렉토리 자체의 정보를 보여준다.


하지만, 예외로 ls -al 명령어를 입력하면 현재경로, 상위경로 정보를 확인할 수 있는데 이 정보로 디렉토리 자체의 정보를 확인할 수 있다.


ls -ld /root, ls -ld / 명령어를 입력하면 각 root 홈디렉토리의 정보, 최상위디렉토리의 정보를 보여준다.


ls -al /root 명령어를 입력하면 현재 디렉토리를 의미하는 .(점), 현재 디렉토리 기준으로 상위 디렉토리를 의미하는 ..(점점)의 정보가 디렉토리 정보이다. .(점)은 /root 디렉토리의 정보이고, ..(점점)은 최상위디렉토리의 정보이다.


디렉토리 목록을 보면 다양한 종류의 디렉토리 및 파일이 나오는데, 과거에는 흰색 화면으로 구성되어 있어 ls -F 명령어를 주로 사용해 구분했다.


하지만, 시간이 흘러 특정 유형에 따라 디렉토리 및 파일을 색깔로 지정해 -F 옵션을 사용하는 일은 없다. 리눅스에서 디렉토리 및 파일의 유형별 색깔은 하기 표를 참고하면 된다.


디렉토리/파일 유형 색상
일반 파일 흰색 또는 검정색
실행 파일 녹색
심볼릭 링크 파일 하늘색
파이프 파일 주황색
소캣 파일 자주색
압축 파일 빨간색
디렉토리 파란색

▶ Linux 쉘스크립트 팁 공유

▶ expect 스크립트 자동화

▶ Linux 쉘스크립트 문법 및 예제

▶ 스크립트 난독화 및 암호화 (bash obfuscate)

▶ OpenSSL 파일 암호화/복호화

  • 카카오톡-공유
  • 네이버-블로그-공유
  • 네이버-밴드-공유
  • 페이스북-공유
  • 트위터-공유
  • 카카오스토리-공유