리눅스 기본 명령어(02_1. 디렉토리 및 파일)
디렉토리 및 파일
위치 확인 명령어
현재 작업 디렉토리 위치 확인 : pwd
pwd는 "Print Working Directory"의 약어로서 현재 작업 디렉토리의 위치를 확인하는 명령어이다.작업 디렉토리의 이동 : cd
cd는 "Change Directory"의 약어로서 작업 디렉토리의 위치를 변경하는 쉘 내부 명령어이다. 즉, 현재 위치한 디렉토리에서 지정된 디렉토리로 이동할 때 사용하는 명령어이다.그냥 "cd"라고만 하면 서버 로그인 시에 처음 위치했던 자신의 홈디렉토리로 이동한다. "cd ~"라고 명령을 내려도 홈디렉토리로 이동하는데, "~" 표시는 홈디렉토리를 의미하여 "~/bin"과 같이 뒤에 하위 디렉토리를 입력해도 된다.
cd / : 루트 디렉토리(/)로 이동
cd . : 현재 디렉토리(현위치)로 이동. ./bin과 같이 하위 디렉토리 입력
cd .. : 한 단계 상위 디렉토리로 이동. ../bin과 같이 하위 디렉토리 입력
cd ~ : 자신의 홈디렉토리로 이동. ~/bin과 같이 하위 디렉토리 입력
cd /var : /var 디렉토리로 이동
cd /etc/rc.d : /etc/rc.d 디렉토리로 이동
현재 로그인되어 있는 터미널의 장치 이름 보기 : tty
tty는 현재 시스템의 표준입력장치(standard input device)에 연결되어 있는 터미널의 파일명(장치 이름)을 출력하는 명령어이다. 즉, 현재 표준입력장치로 사용되고 있는 터미널의 파일명이 어떤 것인가를 확인하고자 할 때 사용하는 명령어이다.
-a
-a 옵션을 이용하면 현재 나타나지 않는 숨김 파일(Hidden File)을 포함한 모든 파일의 리스트를 볼 수 있다. 유닉스 시스템에서 숨김 파일이란 일반적으로 ls 로는 보이지 않는 감춰진 파일를 말하는 것으로, 파일의 이름 앞에 .(피리어드)가 붙으면 숨김 파일로 간주된다.
-d
-d 옵션을 이용하면 디렉토리의 이름이 있는 경우 디렉토리의 내용을 보이지 않고, 이름을 보인다.
-l
-l 옵션을 이용하면 파일의 사이즈, 사용 권한과 같은 상세한 정보를 얻을 수 있다.
-F
-F 옵션을 붙이면 파일의 속성을 파악할 수 있다. 일반 파일은 아무런 변화 없이 출력되고, 디렉토리는 /가 붙고 실행 파일인 경우 *가 붙어서 출력된다.
그 외의 옵션들
ls 명령에서의 옵션들은 하나만 쓰일 수도, 여러 개가 같이 쓰일 수도 있다. 즉 ls -lF * 와 같은 형식으로 쓸 수 있다. 이와 같이 옵션을 지정하는 방식은 유닉스 상의 다른 유틸리티에도 공통적으로 사용된다.
디렉토리의 파일 목록 보기
ls
ls 명령을 사용하여 파일과 디렉토리의 리스트를 볼 수 있다. 이 명령어를 사용해서 파일의 종류, 파일의 링크 상태, 파일의 크기, 파일이 만들어진 시기 등을 체크할 수 있어서 관리자가 파일에 대한 정보를 알아보는데 도움이 된다.-a
-a 옵션을 이용하면 현재 나타나지 않는 숨김 파일(Hidden File)을 포함한 모든 파일의 리스트를 볼 수 있다. 유닉스 시스템에서 숨김 파일이란 일반적으로 ls 로는 보이지 않는 감춰진 파일를 말하는 것으로, 파일의 이름 앞에 .(피리어드)가 붙으면 숨김 파일로 간주된다.
-d
-d 옵션을 이용하면 디렉토리의 이름이 있는 경우 디렉토리의 내용을 보이지 않고, 이름을 보인다.
-l
-l 옵션을 이용하면 파일의 사이즈, 사용 권한과 같은 상세한 정보를 얻을 수 있다.
-F
-F 옵션을 붙이면 파일의 속성을 파악할 수 있다. 일반 파일은 아무런 변화 없이 출력되고, 디렉토리는 /가 붙고 실행 파일인 경우 *가 붙어서 출력된다.
그 외의 옵션들
-c : 변경시간 표시와 이에 따른 정렬
-C : 다중 column으로 표시
-r : 역순으로 표시
옵션의 복합ls 명령에서의 옵션들은 하나만 쓰일 수도, 여러 개가 같이 쓰일 수도 있다. 즉 ls -lF * 와 같은 형식으로 쓸 수 있다. 이와 같이 옵션을 지정하는 방식은 유닉스 상의 다른 유틸리티에도 공통적으로 사용된다.
dir와 vdir
dir과 vdir 명령은 ls 명령의 심볼릭 파일로 그 출력 양식을 다르게 보여주는 프로그램들이다. 안자로 파일 이름이나 경로 이름이 사용된다. 경로의 내용은 초기값으로 알파뱃 순으로 나열된다. ls의 경우에 출력이 표준출력(터미널 화면)이면 세로로 정렬된 것이 가로로 나열되고, 다른 방식의 출력이면 한 줄에 하나씩 나열된다. dir의 경우는 초기값은 ls와 같지만, 모든 출력에서 세로로 정렬해서 가로로 나열한다.(다른 방식의 출력에서도 항상 같다._ vdir의 경우는 추기값으로 상세 내용의 목록을 나열한다.파일 내용 출력
cat
cat은 특정 파일의 내용을 확인하거나 간단한 파일을 생성하고자 할 경우에 사용되는 명령어이다. 텍스트로 된 파일일 경우에는 그 내용을 읽거나 알아 볼 수 있지만, 바이너리 파일의 경우에는 내용을 출력은 하지만 알아볼 수는 없다.
-b : 비어있는 줄이 아닐 경우 줄 번호를 붙여 표시한다.
-n : 모든 라인에 줄 번호를 붙여 표시한다.
-E : 각 줄의 끝에 $를 붙여서 줄의 끝을 표시해 준다.
-s : 빈 줄이 연속적으로 여러 줄이 있는 경우, 하나의 빈 줄만 표시한다.
-T : TAB 문자를 ^I로 표시한다.
-v : LFD(쪽 바꿈 : LineFeed)와 TAB을 제외한 문자를 출력한다.
-a : -vET와 동일하다. 모든 문자를 출력한다.
① 표준 출력의 변경
표준 출력을 변경할 때는 > 또는 >>를 사용한다. "cat > test"라는 명령을 예로 들어 알아보자. 이것은 임의의 파일을 작성할 때 사용할 수 있다. 원래 cat 명령은 표준 입력인 키보드로부터 입력받은 내용을 표준 출력인 터미널로 보내는 명령인데, 이 경우는 표준 출력을 터미널이 아닌 test라는 파일로 변경한 경우이다. 입력한 내용이 터미널(화면)에는 표시되지 않고 test 파일 속으로 입력되어 저장된다.
그런데 "cat > test" 명령에서 만약 test라는 파일에 어떤 내용이 들어 있었다면 그 내용은 지워지고 새로운 내용이 들어가게 된다. 이런 경우를 방지하려면 기존 내용는 그래도 두고 기존 내용의 다음에 새롭게 추가되는 형식으로 명령을 주어야 하는데, 이때에는 > 가 아닌 >>를 사용햐면 된다.
② 표준 입력의 변경
표준 입력을 바꿀 때는 <를 사용한다. "cat < test"라는 명령을 예로 알아보자. 이 경우 표준 출력은 그대로 터미널이며 표준 입력은 키보드가 아닌 test라는 파일이다. 즉, 위의 예와는 반대로 표준 출력은 그대로 터미널로 하고 표준 입력을 키보드가 아닌 파일로 하는 경우이다. 이에 따라 그 결과로서 test 파일의 내용이 터미널에 표시된다.
③ 표준 에러
"command not found"와 같은 에러 메시지를 표준 에러(Standard error)라고 한다. 이런 에러 메시지를 화면상에는 보이지 않고 error라는 파일로 저장하려고 할 경우 아래와 같이 하면 된다.
$ soon 2> error
$ cat error
-bash: soon: command not found
위 예에서 2가 표준 에러를 의미하는 파일 기술자(File descriptor)이다. '0'은 표준 입력, '1'은 표준 출력을 의미한다. 따라서 위의 예에서 2>와 같이 기술하지 않는다면, 에러 메시지가 파일로 입력되지 않고 터미널상에 출력되고 생성된 파일에는 정보가 없는 상태가 된다. 그리고 2>로 기술한 상태에서 정상적인 명령을 내리면, 표준 에러가 출력되지 않고 명령의 결과가 터미널상에 출력되고, 2>는 표준 에러의 입력을 받아서 파일로 입력하므로 생성되는 파일에는 정보가 없는 상태가 된다.
-n : 모든 라인에 줄 번호를 붙여 표시한다.
-E : 각 줄의 끝에 $를 붙여서 줄의 끝을 표시해 준다.
-s : 빈 줄이 연속적으로 여러 줄이 있는 경우, 하나의 빈 줄만 표시한다.
-T : TAB 문자를 ^I로 표시한다.
-v : LFD(쪽 바꿈 : LineFeed)와 TAB을 제외한 문자를 출력한다.
-a : -vET와 동일하다. 모든 문자를 출력한다.
리다이렉션(redirection)
방향 재지정(Redirection : 리다이렉션)이란 표준 입력이나 표준 출력을 꼭 키보드나 터미널로 하는 것이 아니라 임의로 방향을 바꿔 키보드가 아닌 파일로부터 입력을 받거나, 터미널로 출력하는 것이 아니라 파일로 출력하는 것을 말한다. 이러한 방향 재지정에는 표준 입력, 표준 출력 및 표준 에러의 3가지의 파일 서술자가 있다.① 표준 출력의 변경
표준 출력을 변경할 때는 > 또는 >>를 사용한다. "cat > test"라는 명령을 예로 들어 알아보자. 이것은 임의의 파일을 작성할 때 사용할 수 있다. 원래 cat 명령은 표준 입력인 키보드로부터 입력받은 내용을 표준 출력인 터미널로 보내는 명령인데, 이 경우는 표준 출력을 터미널이 아닌 test라는 파일로 변경한 경우이다. 입력한 내용이 터미널(화면)에는 표시되지 않고 test 파일 속으로 입력되어 저장된다.
그런데 "cat > test" 명령에서 만약 test라는 파일에 어떤 내용이 들어 있었다면 그 내용은 지워지고 새로운 내용이 들어가게 된다. 이런 경우를 방지하려면 기존 내용는 그래도 두고 기존 내용의 다음에 새롭게 추가되는 형식으로 명령을 주어야 하는데, 이때에는 > 가 아닌 >>를 사용햐면 된다.
② 표준 입력의 변경
표준 입력을 바꿀 때는 <를 사용한다. "cat < test"라는 명령을 예로 알아보자. 이 경우 표준 출력은 그대로 터미널이며 표준 입력은 키보드가 아닌 test라는 파일이다. 즉, 위의 예와는 반대로 표준 출력은 그대로 터미널로 하고 표준 입력을 키보드가 아닌 파일로 하는 경우이다. 이에 따라 그 결과로서 test 파일의 내용이 터미널에 표시된다.
③ 표준 에러
"command not found"와 같은 에러 메시지를 표준 에러(Standard error)라고 한다. 이런 에러 메시지를 화면상에는 보이지 않고 error라는 파일로 저장하려고 할 경우 아래와 같이 하면 된다.
$ soon 2> error
$ cat error
-bash: soon: command not found
위 예에서 2가 표준 에러를 의미하는 파일 기술자(File descriptor)이다. '0'은 표준 입력, '1'은 표준 출력을 의미한다. 따라서 위의 예에서 2>와 같이 기술하지 않는다면, 에러 메시지가 파일로 입력되지 않고 터미널상에 출력되고 생성된 파일에는 정보가 없는 상태가 된다. 그리고 2>로 기술한 상태에서 정상적인 명령을 내리면, 표준 에러가 출력되지 않고 명령의 결과가 터미널상에 출력되고, 2>는 표준 에러의 입력을 받아서 파일로 입력하므로 생성되는 파일에는 정보가 없는 상태가 된다.
파이프 라인
쉘의 강력한 특징 중 하나가 파이프라인을 사용하는 것이다. 우선, 파이프는 한 명령이 출력을 다른 입력으로 보내는 툴이며, 파이프를 만드는 심볼은 |(Vertical bar)이다. 그리고 파이프라인이란 '|' 문자로 구분된 한 개 이상의 명령이 연속되어 나오는 것을 말한다.
파이프라인의 일반적인 형식은 다음과 같다. command1의 결과 출력이 command2의 입력이 되며 또 command2의 결과가 command3의 표준 입력이 되고 3개뿐만 아니라 여러 개의 명령어가 가능하다. command1의 표준 출력은 command2의 표준 입력으로 연결된다. 이후도 마찬가지이다.
&command1 | command2 | command3
&command1 | command2 | command3
그리고 파이프라인 연결은 명령에서 명시한 리다이렉션보다 먼저 수행된다. 예약어인 '!'가 파이프라인 앞에 나오면 파이프라인의 종료 상태 값을 마지막 명령의 종료 상태에 대한 논리적인 NOT으로 설정한다. 그렇지 않은 일반적인 경우에는 마지막 명령의 종료 상태 값이 파이프라인의 종료 상태 값으로 된다.
다음 예는 우선 현재 시스템을 사용중인 사용자들을 찾고 그 다음으로 그것들을 정렬시켜서 출력하는 것이다.
$ who | sort
만약 cat을 사용하여 파일의 내용을 출력하는데 그 양이 너무 많을 때에는 파이프라인과 more 명령어를 활용하여 내용을 한 화면씩 끊어서 읽을 수 있다.
$ cat long_text.txt | more
만약 특정 문자가 포함된 행만 출력하거나 해당 문자가 포함된 행을 제외하고 출력하고자 한다면 grep 명령을 사용한다. grep 명령에 -v 옵션을 사용하면 이 옵션 뒤에 지정된 문자가 포함되지 않는 줄만 출력한다.
$ cat long_text.txt | grep 행운
행운을 빕니다.
: K줄 만큼 앞으로(순방향, 아래로) 이동. 초기값은 한 화면.
z : K줄 만큼 앞으로 이동. 초기값은 현재 화면 크기
또는 1 : K줄 만큼 앞으로 이동. 초기값은 한 줄. 라인 스크롤
다음 예는 우선 현재 시스템을 사용중인 사용자들을 찾고 그 다음으로 그것들을 정렬시켜서 출력하는 것이다.
$ who | sort
만약 cat을 사용하여 파일의 내용을 출력하는데 그 양이 너무 많을 때에는 파이프라인과 more 명령어를 활용하여 내용을 한 화면씩 끊어서 읽을 수 있다.
$ cat long_text.txt | more
만약 특정 문자가 포함된 행만 출력하거나 해당 문자가 포함된 행을 제외하고 출력하고자 한다면 grep 명령을 사용한다. grep 명령에 -v 옵션을 사용하면 이 옵션 뒤에 지정된 문자가 포함되지 않는 줄만 출력한다.
$ cat long_text.txt | grep 행운
행운을 빕니다.
more
만약 파일의 내용이 한 화면에 출력될 분량을 넘는다면 more를 사용할 수 있다. more는 입력을 화면 단위로 볼 수 있게 해 준다. more를 이용하면 한 화면의 내용이 다 채워졌을 경우 -More-(10%) 와 같은 문구가 나타나고, space(페이지 단위) 키나 enter(행단위) 키를 이용해 다음 내용을 볼 수 있다. 그 외에도 F(orward)나 B(ackward) 키를 이용해 페이지의 앞/뒤로 이동할 수 있다.
-숫자 : 한 화면을 몇 라인으로 설정할 것인지 지정한다.
-d : 한 화면이 끝났을 때 [Press space to continue, q to quit] 메시지를 출력한다.
-p : 화면을 스크롤하지 않고 새로 그리면서 보여 준다.
-s : 빈 줄이 연속적으로 여러 줄이 있는 경우, 하나의 빈 줄만 표시한다.
more 실행 중에 사용되는 명령은 다음과 같다(^는).
h 또는 ? : 도움말
-d : 한 화면이 끝났을 때 [Press space to continue, q to quit] 메시지를 출력한다.
-p : 화면을 스크롤하지 않고 새로 그리면서 보여 준다.
-s : 빈 줄이 연속적으로 여러 줄이 있는 경우, 하나의 빈 줄만 표시한다.
more 실행 중에 사용되는 명령은 다음과 같다(^는
h 또는 ? : 도움말
z : K줄 만큼 앞으로 이동. 초기값은 현재 화면 크기
d 또는 ^D : K줄 만큼 앞으로 이동. 초기값은 현재 스크롤 크기. 내정치는 11줄
q 또는 Q 또는 인터럽트 : 종료
s : k줄 만큼 앞으로 이동. 초기값은 한 줄.
s : k줄 만큼 앞으로 이동. 초기값은 한 줄.
f : 한 화면씩 앞으로 이동. 초기값은 한 화면.
b 또는 ^B : 한 화면씩 뒤로(역방향, 위로) 이동. 초기값은 첫 번째.
/표현식 : k번째 발견되는 정규표현식의 내용을 찾음. 초기값은 첫 번째.
' : 이전에 찾았던 문자열이 있는 곳으로 이동.
' : 이전에 찾았던 문자열이 있는 곳으로 이동.
= : 현재 줄번호 출력
n : k번째 다음 발견되는 문자열이 있는 곳으로 이동. 초기값은 첫 번째.
n : k번째 다음 발견되는 문자열이 있는 곳으로 이동. 초기값은 첫 번째.
!<명령> 또는 : !<명령> : 쉘 <명령>을 실행
^L : 화면 갱신
:n : k 번째 다음 파일을 연다. 초기값은 첫 번째.
:p : k 번째 이전 파일을 연다. 초기값은 첫 번째.
:f : 현재 보고 있는 파일의 이름과 현재 줄번호를 보여준다.
. : 이전에 실행한 명령을 반복한다.
:p : k 번째 이전 파일을 연다. 초기값은 첫 번째.
:f : 현재 보고 있는 파일의 이름과 현재 줄번호를 보여준다.
. : 이전에 실행한 명령을 반복한다.
less
less는 주로 텍스트 파일을 한 화면씩 확인할 때 사용하는 명령어이다. more 명령어와 거의 비슷한 기능을 하는 명령어이다. 명령 방식도 more와 동일하다.
-? : less에서 사용할 수 있는 명령들에 대한 도움말을 제공한다.
-a : 마지막 라인이 화면에 출력되고 나면 검색을 시작한다.
-c : 필요할 때 전체 화며는 다시 갱신한다.
-C : -c 옵션과 같지만 화면 전체를 지우고 시작한다.
-e : 두 번쩨로 파일의 끝에 도달하면 자동적으로 종료한다.
-E : 파일의 끝에 도달하기만 하면 자동적으로 종료한다.
-i : 대소문자를 구분하여 검색한다.
-n : 행 번호를 추가한다.
-q : 특정 에러가 발생하지 않으면 소리없이 작동한다.
-Q : 결코 아무 소리도 내지 않는다.
-s : 연속되는 공백 라인은 하나의 행으로 처리한다.
-x : 숫자 : 수치를 지정하여 탭 간격을 조정한다. 기본값은 8이다.
less 실행 중에 사용되는 명령은 다음과 같다(^는).
또는 f : 한 화면 이후로 이동.
d 또는 ^D : K줄 만큼 이후로 이동. 초기값은 현재 스크린의 절반
b : 한 화면 이전으로 이동.
: 한 행씩 이후로 이동.
숫자+n : 원하는 페이지만큼 이후로 이동. 첫 번째 이후는 n만 눌러도 숫자 페이지만큼 이동.
/<패턴> : 이후에서 찾기
/<패턴> : 이전에서 찾기
q : less 종료
아무런 옵션 없이 "head 파일명"이라고 하면 지정한 파일의 앞에서부터 10행까지만 보여준다. 또한 "head -n 20 파일명" 이라고 하면 앞에서부터 20행까지를 보여준다.
tail 명령어에 아무런 옵션을 주지 않았을 때 에는 파일 마지막줄부터 10줄의 내용을 출력한다.
-n 옵션으로 출력되는 줄의 수를 지정할 수 있다.
more, less 보다 좀더 방대한 양의 파일 내용을 볼 때 유리하다.
less 실행 중에 사용되는 명령은 다음과 같다(^는
또는 f : 한 화면 이후로 이동.
d 또는 ^D : K줄 만큼 이후로 이동. 초기값은 현재 스크린의 절반
b : 한 화면 이전으로 이동.
: 한 행씩 이후로 이동.
숫자+n : 원하는 페이지만큼 이후로 이동. 첫 번째 이후는 n만 눌러도 숫자 페이지만큼 이동.
/<패턴> : 이후에서 찾기
/<패턴> : 이전에서 찾기
q : less 종료
head
head는 텍스트로 된 파일의 앞부분을 지정한 행의 수만큼 출력하는 명령어이다. 바이너리 파일에 대해서도 실행은 되지만 알아볼 수 없는 문자로 출력이 되므로 바이너리로 된 파일에 대해서는 거의 사용하지 않는다.아무런 옵션 없이 "head 파일명"이라고 하면 지정한 파일의 앞에서부터 10행까지만 보여준다. 또한 "head -n 20 파일명" 이라고 하면 앞에서부터 20행까지를 보여준다.
tail
tail은 텍스트로 된 파일의 뒷부분을 지정된 행의 수만큼 보여주는 명령어이다. 바이너리(binary) 파일에도 사용할 수 있으나 출력 결과를 알아 볼 수 없으므로 바이너리로 된 파일에는 거의 사용하지 않는다.tail 명령어에 아무런 옵션을 주지 않았을 때 에는 파일 마지막줄부터 10줄의 내용을 출력한다.
-n 옵션으로 출력되는 줄의 수를 지정할 수 있다.
댓글
댓글 쓰기