ls — 유닉스 사용자와 시스템 관리자라면 이 두 글자짜리 명령어 없이는 하루도 보낼 수 없습니다. 하루에 10번을 쓰든 100번을 쓰든, ls 명령어의 강력한 기능을 제대로 알면 커맨드 라인 작업이 한층 즐거워집니다.
이 글에서는 강력한 ls 명령어의 실전 예제 15가지를 살펴보겠습니다.
1. ls -t로 가장 최근에 편집한 파일 열기
현재 디렉토리에서 마지막으로 편집한 파일을 열려면 ls, head, vi 명령어를 아래와 같이 조합하면 됩니다.
ls -t는 파일을 수정 시간 기준으로 정렬하여 가장 최근에 편집한 파일을 맨 앞에 표시하고, head -1은 그 첫 번째 파일을 가져옵니다.
$ vi first-long-file.txt $ vi second-long-file.txt $ vi `ls -t | head -1` [참고: 마지막에 편집한 파일(즉, second-long-file.txt)이 열립니다]
2. ls -1로 한 줄에 하나씩 표시하기
파일 목록을 한 줄에 하나씩 표시하려면 -1 옵션을 사용합니다.
$ ls -1 bin boot cdrom dev etc home initrd initrd.img lib
3. ls -l로 파일/디렉토리 상세 정보 확인하기
파일과 디렉토리의 자세한 정보(long listing)를 확인할 때 사용합니다.
$ ls -l -rw-r----- 1 ramesh team-dev 9275204 Jun 13 15:27 mthesaur.txt.gz
- 첫 번째 문자 – 파일 타입: 첫 문자는 파일의 종류를 나타냅니다. 위 예제에서 첫 문자가 하이픈(-)이면 일반 파일을 의미합니다. ls -l 출력에서 첫 문자에 올 수 있는 값은 다음과 같습니다.
- - : 일반 파일
- d : 디렉토리
- s : 소켓 파일
- l : 링크 파일
- 필드 1 – 파일 권한: 이후 9개 문자는 파일 권한을 나타냅니다. 각 3문자씩 사용자(user), 그룹(group), 기타(other)의 읽기·쓰기·실행 권한을 의미합니다. 위 예제의 -rw-r-----는 사용자에게 읽기·쓰기, 그룹에게 읽기, 나머지에게는 아무 권한도 없음을 뜻합니다.
- 필드 2 – 링크 수: 해당 파일의 링크 개수입니다. 예제에서는 1이므로 링크가 하나뿐입니다.
- 필드 3 – 소유자: 파일 소유자입니다. 예제에서는 사용자 'ramesh'가 소유하고 있습니다.
- 필드 4 – 그룹: 파일이 속한 그룹입니다. 예제에서는 'team-dev' 그룹에 속해 있습니다.
- 필드 5 – 크기: 파일 크기입니다. 예제에서 '9275204'가 파일 크기(바이트)입니다.
- 필드 6 – 마지막 수정 날짜 및 시간: 파일이 마지막으로 수정된 날짜와 시간입니다. 예제에서 'Jun 13 15:27'이 마지막 수정 시각입니다.
- 필드 7 – 파일 이름: 마지막 필드는 파일 이름입니다. 예제에서는 mthesaur.txt.gz입니다.
4. ls -lh로 사람이 읽기 쉬운 단위로 크기 표시하기
ls -lh(h는 human readable의 약자)를 사용하면 파일 크기를 읽기 쉬운 형태로 표시합니다. M은 MB, K는 KB, G는 GB를 의미합니다.
$ ls -l -rw-r----- 1 ramesh team-dev 9275204 Jun 12 15:27 arch-linux.txt.gz* $ ls -lh -rw-r----- 1 ramesh team-dev 8.9M Jun 12 15:27 arch-linux.txt.gz
5. ls -ld로 디렉토리 자체 정보 표시하기
'ls -l'을 실행하면 디렉토리 내부 내용의 상세 정보가 출력됩니다. 하지만 디렉토리 자체의 정보를 보고 싶다면 -d 옵션을 사용하세요. 예를 들어 ls -l /etc는 etc 디렉토리 아래의 모든 파일을 보여주지만, /etc/ 디렉토리 자체의 정보를 보려면 다음처럼 -ld 옵션을 사용합니다.
$ ls -l /etc total 3344 -rw-r--r-- 1 root root 15276 Oct 5 2004 a2ps.cfg -rw-r--r-- 1 root root 2562 Oct 5 2004 a2ps-site.cfg drwxr-xr-x 4 root root 4096 Feb 2 2007 acpi -rw-r--r-- 1 root root 48 Feb 8 2008 adjtime drwxr-xr-x 4 root root 4096 Feb 2 2007 alchemist $ ls -ld /etc drwxr-xr-x 21 root root 4096 Jun 15 07:02 /etc
6. ls -lt로 수정 시간순 정렬하기
파일 이름을 마지막 수정 시간 순서대로 정렬하려면 -t 옵션을 사용합니다. -l 옵션과 함께 쓰면 특히 유용합니다.
$ ls -lt total 76 drwxrwxrwt 14 root root 4096 Jun 22 07:36 tmp drwxr-xr-x 121 root root 4096 Jun 22 07:05 etc drwxr-xr-x 13 root root 13780 Jun 22 07:04 dev drwxr-xr-x 13 root root 4096 Jun 20 23:12 root drwxr-xr-x 12 root root 4096 Jun 18 08:31 home drwxr-xr-x 2 root root 4096 May 17 21:21 sbin lrwxrwxrwx 1 root root 11 May 17 20:29 cdrom -> media/cdrom drwx------ 2 root root 16384 May 17 20:29 lost+found drwxr-xr-x 15 root root 4096 Jul 2 2008 var
7. ls -ltr로 수정 시간 역순 정렬하기
파일을 마지막 수정 시간의 역순으로 정렬합니다. 이렇게 하면 가장 최근에 편집한 파일이 목록 맨 아래에 표시되어, 목록이 여러 페이지에 걸쳐질 때 매우 편리합니다. 저(ls 명령어를 다룬 원저자)는 항상 ls 대신 ls -ltr을 기본으로 사용하는데, 정말 편리하기 때문입니다.
$ ls -ltr total 76 drwxr-xr-x 15 root root 4096 Jul 2 2008 var drwx------ 2 root root 16384 May 17 20:29 lost+found lrwxrwxrwx 1 root root 11 May 17 20:29 cdrom -> media/cdrom drwxr-xr-x 2 root root 4096 May 17 21:21 sbin drwxr-xr-x 12 root root 4096 Jun 18 08:31 home drwxr-xr-x 13 root root 4096 Jun 20 23:12 root drwxr-xr-x 13 root root 13780 Jun 22 07:04 dev drwxr-xr-x 121 root root 4096 Jun 22 07:05 etc drwxrwxrwt 14 root root 4096 Jun 22 07:36 tmp
8. ls -a 또는 ls -A로 숨김 파일 표시하기
디렉토리의 모든 숨김 파일을 보려면 '-a' 옵션을 사용합니다. 유닉스에서 숨김 파일은 파일 이름이 '.'으로 시작합니다.
$ ls -a [rnatarajan@asp-dev ~]$ ls -a . Debian-Info.txt .. CentOS-Info.txt .bash_history Fedora-Info.txt .bash_logout .lftp .bash_profile libiconv-1.11.tar.tar .bashrc libssh2-0.12-1.2.el4.rf.i386.rpm
이 옵션은 '.'(현재 디렉토리)과 '..'(상위 디렉토리)까지 모두 표시합니다. 숨김 파일만 보고 싶고 '.'과 '..'은 제외하려면 -A 옵션을 사용하세요.
$ ls -A Debian-Info.txt Fedora-Info.txt CentOS-Info.txt Red-Hat-Info.txt .bash_history SUSE-Info.txt .bash_logout .lftp .bash_profile libiconv-1.11.tar.tar .bashrc libssh2-0.12-1.2.el4.rf.i386.rpm [참고: . 과 .. 는 표시되지 않습니다]
9. ls -R로 하위 디렉토리까지 재귀적으로 표시하기
$ ls /etc/sysconfig/networking devices profiles $ ls -R /etc/sysconfig/networking /etc/sysconfig/networking: devices profiles /etc/sysconfig/networking/devices: /etc/sysconfig/networking/profiles: default /etc/sysconfig/networking/profiles/default:
모든 파일을 재귀적으로 표시하려면 -R 옵션을 사용합니다. 루트(/)에서 실행하면 전체 파일 시스템의 숨김 파일을 제외한 모든 파일이 재귀적으로 출력됩니다.
10. ls -i로 파일의 inode 번호 확인하기
내부 관리 작업 중 파일의 inode 번호가 필요할 때가 있습니다. 아래와 같이 -i 옵션을 사용하면 inode 번호를 표시할 수 있습니다. inode 번호를 이용하면 find 명령어 활용 예제 #6에서 설명했듯이, 파일 이름에 특수 문자가 포함된 파일도 삭제할 수 있습니다.
$ ls -i /etc/xinetd.d/ 279694 chargen 279724 cups-lpd 279697 daytime-udp 279695 chargen-udp 279696 daytime 279698 echo
11. ls -q로 제어 문자 숨기기
그래픽으로 표현할 수 없는 비출력(non-graphic) 제어 문자를 물음표(?)로 대체하여 출력하려면 -q 옵션을 사용합니다.
ls -q
12. ls -n으로 UID와 GID 표시하기
-l과 동일한 형식으로 출력하지만, 사용자·그룹 이름 대신 숫자 형태의 UID와 GID를 보여줍니다.
$ ls -l ~/.bash_profile -rw-r--r-- 1 ramesh ramesh 909 Feb 8 11:48 /home/ramesh/.bash_profile $ ls -n ~/.bash_profile -rw-r--r-- 1 511 511 909 Feb 8 11:48 /home/ramesh/.bash_profile [참고: uid가 511, gid가 511로 표시됩니다]
13. ls -F로 특수 문자를 이용한 시각적 파일 분류하기
'ls -l'을 실행한 뒤 첫 문자를 일일이 확인해 파일 종류를 파악하는 대신, -F 옵션을 사용하면 파일 종류별로 서로 다른 특수 문자가 붙어 한눈에 구분됩니다.
$ ls -F Desktop/ Documents/ Ubuntu-App@ firstfile Music/ Public/ Templates/
위 출력에서 각 기호의 의미는 다음과 같습니다.
- / – 디렉토리
- 기호 없음 – 일반 파일
- @ – 링크 파일
- * – 실행 파일
14. 색상을 이용한 시각적 파일 분류하기
파일이 표시되는 색상으로 종류를 구분하는 것도 또 하나의 분류 방법입니다. 위 출력에서 디렉토리는 파란색, 심볼릭 링크는 초록색, 일반 파일은 기본 색상으로 표시됩니다.
$ ls --color=auto Desktop Documents Examples firstfile Music Pictures Public Templates Videos
15. 유용하게 쓸 수 있는 ls 명령어 별칭(Alias)
위에서 소개한 필요한 옵션들을 조합해 별칭(alias)으로 만들어두면 편리합니다. 다음 설정을 추천합니다.
- 사람이 읽기 쉬운 크기 형식으로 파일을 상세히 나열:
alias ll="ls -lh"
- 특수 문자를 붙여 파일 종류를 시각적으로 구분:
alias lv="ls -F"
- 색상과 특수 문자를 함께 사용해 파일 종류를 구분:
alias ls="ls -F --color=auto"
함께 읽으면 좋은 리눅스 관련 글
아래의 '15가지 예제' 시리즈 글들도 도움이 될 것입니다.
- Grep 완전 정복! – grep 명령어 실전 예제 15가지
- Linux Crontab: cron 잡 실전 예제 15가지
- 엄마, 찾았어요! – Linux find 명령어 실전 예제 15가지
- 리눅스 커맨드 라인 히스토리 마스터하기 – 15가지 예제