개요
리눅스에는 무수히 많은 명령어들이 존재하며, 또한 명령어들을 만들어낼수도 있다. 그중에서 ls 명령어는 서버관리 및 리눅스 사용자라면 가장많이 사용하는 명령어가 아닐까 생각 된다.
ls 명령어란 디렉토리 안에 어떤 파일이 있나를 알아보는 명령이다. 그럼 아래 예시를 보면서 차근차근 기본부터 배워보도록 하자.
내용 및 예시
ls 옵션을 표현하는 방법은 아래와 같이 되어 있다.
[형식]
ls [옵션] [옵션]… [경로명1] [경로명2] …
[옵션]
-a 디렉토리 안에 있는 모든 파일과 디렉토리를 보여준다. all.
-l 파일에 대한 정보를 자세하게 보여주고, 파일의 사용권한, 소유자, 그룹, 크기, 날짜 등을 자세하게 보여준다. list.
–help ls 명령어에 대한 도움말을 출력한다

아래는 일반적으로 자주 사용하는 명령어이다.
ls -al
옵션 내용은 모든 파일을 보여주는 것이다.
ls -alh
이 옵션은 모든파일을 k 단위로 정확하게 보여주는 의미이다.
[세부옵션]
사용법: ls [OPTION]… [FILE]…
FILE에 대한 정보를 출력합니다(기본값은 현재디렉토리).
-cftuSUX이나 –sort옵션이 지정되지 않으면 기본적으로 알파벳 순으로 정렬한다.
-a, –all .으로 시작하는 목록까지 모두 출력한다
-A, –almost-all -a와 같지만 .과 ..은 출력하지 않는다
-b, –escape 출력할 수 없는 문자는 8진수로 표기한다
–block-size=SIZE SIZE 바이트 크기의 블럭을 사용한다.
-B, –ignore-backups ~으로 끝나는 목록은 출력하지 않는다.
-c 생성시간단위로 정렬한다. -l옵션과 같이 쓰면 생성시간을 출력한다
-C 열단위로 목록을 출력한다.
–color[=WHEN] 파일을 구분하기 위해 색을 쓸 것인지 조정한다. WHEN은 never',
always’, 또는 `auto’ 이다.
-d, –directory 디렉토리의 내용 대신 디렉토리를 출력한다.
-D, –dired Emacs의 dired모드에 알맞는 출력을 한다.
-f 정렬하지 않는다(-aU를 주고 -lst를 뺀다).
-F, –classify 각 목록을 구분하기 위한 문자를 뒤에 붙인다
–format=WORD across -x, comma -m, horizontal -x, long -l, single-column -1, verbose -l, vertical -C
–full-time 날짜와 시각을 자세히 출력한다
-g (무시하는거)
-G, –no-group 그룹정보 출력을 하지 않는다.
-h, –human-readable 크기를 사람이 알기 쉽게(1K, 234M, 2G등)표시한다.
-H, –si 비슷하지만 1024배 대신 1000배를 사용한다.
–indicator-style=WORD WORD 스타일로 파일 구분을 해 준다. 가능한 값은: none (기본값), 종류 (-F), 파일형식 (-p)
-i, –inode 각 파일의 i-node번호를 출력한다
-I, –ignore=PATTERN 셸 PATTERN와 일치하는 목록은 출력하지 않는다.
-k, –kilobytes –block-size=1024와 같다.
-l 긴 출력 포맷을 사용한다.
-L, –dereference 심볼릭 링크를 따라가 링크된 목록을 출력한다.
-m 행구분 없이 쉼표로 구분되는 목록 출력을 한다.
-n, –numeric-uid-gid 이름 대신 숫자로 된 UID와 GID를 출력한다.
-N, –literal 목록 이름을 그대로 출력한다.
(콘트롤 문자도 특별히 처리하지 않는다.)
-o 그룹정보 없이 긴 출력 포맷을 사용한다.
-p, –file-type 각 목록을 구분하기 위한 문자(/=@|)를 뒤에 붙인다.
-q, –hide-control-chars 출력할 수 없는 문자 대신 ?을 출력한다.
–show-control-chars 출력할 수 없는 문자를 그대로 보여준다(기본값)
-Q, –quote-name 목록 이름을 큰따옴표 안에 넣는다
–quoting-style=WORD WORD의 인용 스타일을 사용한다. 가능한 값은: literal, locale, shell, shell-always, c, escape
-r, –reverse 정렬순서를 반대로 출력한다.
-R, –recursive 서브디렉토리까지 출력한다
-s, –size 각 파일의 블록 크기를 출력한다
-S 파일크기단위로 정렬한다
–sort=WORD extension -X, none -U, size -S, time -t, version -v
–time=WORD 변경시간 대신 시간을 WORD로 표시한다: atime, access, use, ctime, status
–sort=time이면 지정된 값이 정렬 기준이다.
-t 변경시간단위로 정렬한다.
-T, –tabsize=COLS 8대신 탭 크기를 COLS로 가정한다.
-u 최후접근시간에 따라 정렬한다.
-l과 함께 사용하면 접근시간을 보여준다.
-U 정렬하지 않고 디렉토리의 순서대로 출력한다.
-v 버전에 따라 정렬한다.
-w, –width=COLS 현재 값 대신 화면폭을 정해준 값으로 가정한다.
-x 열단위보다는 행순으로 목록을 정렬한다
-X 목록 확장에 의해 알파벳순으로 정렬한다
-1 한 줄에 한 파일씩 출력한다.
–help 이 도움말을 표시하고 종료한다
–version 버전 정보를 표시하고 종료한다.
기본적으로, 파일을 구분하기 위해 색상은 사용하지 않는다. 이것은 –color=none을 사용하는 것과 같다. –color옵션을 부가적인 WHEN인수와 같이 사용하지 않으면 –color=always와 같다.
–color=auto에서는 색상 코드는 표준 출력이 터미널(tty)에 연결되었을 때만 출력된다.
그리고 리눅스는 시간에 대한 개념이 3가지가 존재한다. 이부분은 find 명령어를 배울때 조금더 자세히 알아보도록 하고, 이번에는 간단히 살펴보도록 하겠다.
*atime : access time을 의미함. 파일이라면 vi 등으로 열어본 시간. 디렉토리라면 cd로 접근하여 ls로 디렉토리의 내용을 확인해본 시간.
*mtime : modification time을 의미함. 파일이라면 파일 내용이 변경된 시간. 디렉토리라면 디렉 토리의 내용(파일삭제, 생성 등)이 변경된 시간. ‘ls -l’에서 출력되는 시간
*ctime : creation time. 파일의 속성이 변경된 시간. chmod나 chown등으로 파일의 속성이 변 경된 시간.

명령어 응용
ls 명령어를 조금 더 응용하게 되면 다양한 방법으로 리눅스 파일 시스템을 조회해볼 수 있다.
현재 파일개수 알아내기
ls -al |grep ^- | wc -l
현재 디렉토리 개수 알아내기
ls -al |grep ^d | wc -l
ls 명령어에 대해서 살펴보았다. 항상 사용하는 명령어지만 늘 손에 익은 옵션만 사용하는게 일반적이다. 하지만 다양한 리눅스 명령어 기법들을 응용하여 전혀 새로운 결과 값을 얻을수있는데 그 시작은 항상 ls 로 시작되는거 같다.
오늘은 기본적인 사용법과 옵션을 알아보았다.