Command Line - 리다이렉션
[cmd_test@btjeon-naver ~]$ ls -l /usr/bin >> ls-output.txt
>> 연산자를 사용하면 파일에 이어 쓰기가 가능해진다.
[cmd_test@btjeon-naver ~]$ ls -l /bin/usr 2> ls-error.txt
쉘은 내부적으로 표준 입출력과 표준 오류를 각각 0,1,2번 파일 디스크립터로 표현한다. 표준 오류는 파일 디스크립터 2와 같기 때문에 표준 오류를 재지정할 때 이 표기법을 사용할 수 있다.
[cmd_test@btjeon-naver ~]$ ls -l /bin/usr > ls-output.txt 2>&1
동시에 표준 출력과 표준 오류를 재지정하는 방법 첫번째. 2>&1의 입력으로 파일 디스크립터 2(표준 오류)가 파일 디스크립터 1(표준 출력)로 재지정되도록 한다.
[cmd_test@btjeon-naver ~]$ ls -l /bin/usr &> ls-output.txt
동시에 표준 출력과 표준 오류를 재지정하는 방법 두번째. 단일표기법 &>를 사용한다.
[cmd_test@btjeon-naver ~]$ ls -l /bin/usr 2> /dev/null
오류 메시지를 숨기고 싶을 때 /dev/null이라는 특수한 파일(이 파일은 비트 버킷(bit bucket)이라 불리는 시스템 장치이다.)로 출력 방향을 지정할 수 있다.
[cmd_test@btjeon-naver ~]$ cat movie.mpg.0* > movie.mpeg
다음과 같이 cat 명령어를 통해 작은 여러 파일을 한 파일로 연결할 수 있다. (와일드카드는 항상 정렬된 순서로 확장되기 때문에 명령 인자는 올바른 순서로 나열될 것이다.)
[cmd_test@btjeon-naver ~]$ ls -l /usr/bin | less
less 명령어로 연결하면 어떠한 명령어든 그 출력 내용을 페이지 단위로 표준 출력에 표시할 수 있다.
[cmd_test@btjeon-naver ~]$ ls /bin /usr/bin | sort | less
sort 명령어로 연결하면 2개 이상의 디렉토리의 파일들을 하나로 정렬된 데이터 목록으로 볼 수 있다.
[cmd_test@btjeon-naver ~]$ ls /bin /usr/bin | sort | uniq | less
uniq 명령어로 연결하면 중복된 내용을 제거할 수 있다.
ls /bin /usr/bin | sort | uniq -d | less
-d 옵션을 사용하면 반대로 중복된 내용을 볼 수 있다.
[cmd_test@btjeon-naver ~]$ wc ls-output.txt
1 9 54 ls-output.txt
wc 명령어를 통해 라인 수(1), 단어 개수(9) 그리고 파일 크기(54)를 확인할 수 있다.
[cmd_test@btjeon-naver ~]$ ls /bin /usr/bin | sort | uniq | wc -l
1075
다음과 같이 항목 개수를 확인할 수 있다. (-l 옵션은 라인 수만 보여줌.)
[cmd_test@btjeon-naver ~]$ ls /bin /usr/bin | sort | uniq | grep zip
bunzip2
bzip2
bzip2recover
funzip
gpg-zip
gunzip
gzip
unzip
unzipsfx
zip
zipcloak
zipgrep
zipinfo
zipnote
zipsplit
grep 명령어를 통해 파일의 텍스트 패턴을 찾을 수 있다.
-i 옵션은 검색을 수행할 때 대소문자를 구분하지 않도록 하고, -v 옵션은 패턴과 일치하지 않는 라인만 출력하도록 한다.
[cmd_test@btjeon-naver ~]$ ls /usr/bin | tee ls.txt | grep zip
bunzip2
bzip2
bzip2recover
funzip
gpg-zip
gunzip
gzip
unzip
unzipsfx
zip
zipcloak
zipgrep
zipinfo
zipnote
zipsplit
tee 명령어는 표준 입력으로부터 데이터를 읽어와서 표준 출력과 하나 이상의 다른 파일에 동시에 출력한다. (위 예제에서는 grep 필터가 적용되기 전 디렉토리의 목록 전부를 ls.txt 파일에 저장한다.)
출처 : 리눅스 커맨드라인 완벽 입문서