리눅스 특수 문자 정리(Linux Shell)
리눅스로 개발할 때 초기 시절 각종 명령어와 쉘스크립트 속에서 허우적거렸던 적이 있었다. 그중에서도 날 멘붕하게 만든것은 다름 아닌 “특수문자” 들이었는데, 이 특수문자라는 녀석들은 각자 고유의 명령이 존재하니 지금 한번 정리해 두고자 한다.
1. 표준 출력
표준 출력을 뜻하는 특수 문자는 “>”이다. 이 특수문자를 사용하면 다음과 같은 명령이 가능해진다.
# '>' 표준 출력 (new)$ ls > test.txt # 표준 출력을 파일에 기록한다.
ls 명령어를 통해 출력된 내용을 test.txt 파일에 기록한다. 다만 test.txt 파일은 업데이트가 아닌 새로 작성을 하게 되므로 주의하자. 그 외에도 표준 출력을 두번 연속으로 사용하게 되면 다음처럼 쓰겠다는 이야기다.
# '>>' 표준 출력 (append)$ ls >> test.txt # 표준 출력을 파일 끝에 덧붙인다.
ls 명령어를 통해 출력된 내용을 test.txt 파일에 덧붙여 기록한다.
2. 표준 입력
표준 입력을 뜻하는 특수 문자는 “<“이다. 이 특수 문자를 사용하면 다음과 같은 명령이 가능하다.
# '<' 표준 입력$ cat < test.txt # 파일에서 표준 입력으로 읽어들인다.
test.txt의 내용을 cat 명령어로 읽어 들인 뒤 화면에 노출한다.
3. 와일드 카드
명령어 중 여러가지로 조합할 수 있는 특수문자들이다. *, ? 가 있다. 두가지의 차이점은 일치하는 문자의 개수다. * 특수 문자는 모든 문자와 일치하는 와일드 카드 특수 문자이며, ? 문자는 하나의 문자와 일치하는 특수 문자다. 명령어로는 다음처럼 나타낼 수 있다.
# '*' 모든 문자와 일치하는 와일드 카드 문자$ ls tes* # test.txt, tes/123.txt 등 일치하는 모든 파일/디렉토리(내부)가 출력된다.# '?' 하나의 문자와 일치하는 와일드 카드 문자$ ls test.tx? # test.txt, test.txx 등 하나 일치한 파일을 출력한다.
4. 파이프 문자
어떠한 프로세스의 표준 출력을 다른 프로세스의 표준 입력으로 보내는 문자|. 주로 파이프 문자라고 불린다.
# 파이프 문자 예제# ps 명령어를 통한 표준 출력을 프로세스 정보 중 "tomcat"이 들어간 프로세스를 찾기 위해 표준 입력으로 삽입한다.$ ps -ef | grep tomcat
5. 명령 문자
해당 부분은 주로 명령(Command)에 관련된 문자로 다음과 같다.
; # 명령의 끝을 나타낸다.|| # 이전의 명령이 실패하면 실행하는 조건문 문자&& # 이전의 명령이 성공하면 실행하는 조건문 문자& # 명령을 백그라운드에서 실행한다.$ # 변수에 접근할 수 있는 문자
이 외에도 “#” 문자를 쓰게 되면 주석 처리가 가능하다.
6. 변수 접근 기호
위의 특수 문자들을 이용하면 조금 더 응용 가능한 쉘 커맨드가 가능해진다. 그 전에 변수에 접근 할 수 있는 특수 문자가 있는데 다음과 같다.
0 # stdin (표준 입력)1 # stdout (표준 출력)2 # stderr (에러 출력)
위와 같은 문자와 변수 접근 문자를 합치면 &1, &2 같은 명령도 가능해진다. 다음과 같은 커맨드도 가능하다.
# 표준 에러 리다이렉션 ( stderr 만 출력 )$ ./test.sh >> ./test.log 2>&1
위처럼 test.sh을 실행하면서 나온 표준 에러를 test.log 파일에 덧붙여 쓸 수도 있다. 그러나 log 파일이 필요 없을 경우 다음처럼 쓸 수도 있다.
# 표준 출력이 필요 없다.$ ./test.sh >> /dev/null 2>&1
댓글 없음:
참고: 블로그의 회원만 댓글을 작성할 수 있습니다.