일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 다익스트라
- SQL
- Hash
- Trie
- 그래프
- DP
- Brute Force
- binary search
- 스토어드 프로시저
- 이진탐색
- MYSQL
- Stored Procedure
- two pointer
- String
- Dijkstra
- union find
- Two Points
Archives
- Today
- Total
codingfarm
특수문자들 본문
- 셸은 사용자가 편리하게 명령을 입력하고 실행할 수 있도록 다양한 특수문자를 제공한다.
- 여기서는 bash shell을 기준으로 설명한다.
- 주요 특수문자들 : *, ?, |, ;, [ ], ~, '', "", `` 등...
특수문자 *
- 임의의 문자열을 나타낸다.
- 0개 이상의 문자로 대체된다.
- 명령 실행시 파일명을 넣을 자리에 *을 사용하면 모든 파일을 나타낸다.
사용 예 | 의미 |
ls * | 현재 디렉터리의 모든 파일과 서브 디렉터리를 나열한다. 서브 디렉터리의 내용도 출력한다. |
cp * /tmp | 현재 디렉터리의 모든 파일을 /tmp 디렉터리 아래로 복사한다. |
ls -F t* | 파일명이 t로 시작하는 모든 파일의 이름과 파일 종류를 출력한다. |
cp *.txt ../ch3 | 확장자가 .txt인 ㅍ모든 파일을 상위 디렉터리 아래의 ch3 디렉터리로 복사한다. |
ls -l h*d | 파일명이 h로 시작하고 d로 끝나는 모든 파일의 상세 정보를 출력한다. |
특수문자 ?와 [ ]
- 하나의 문자를 나타내는데 사용한다.
- ?는 길이가 1인 임의의 한 문자를 나타낸다.
- [ ]는 괄호안에 포함된 문자 중 하나를 나타낸다.
- [ ]는 사용가능한 여러 문자를 나열하거나 범위를 지정할 수 있다.
- 다른 특수문자와 혼합하여 사용할 수도 있다.
사용 예 | 의미 |
ls t?.txt | $\bullet$ t 다음에 임의의 한 문자가 오고 파일의 확장자가 txt인 모든 파일의 이름을 출력한다. $\bullet$ t1.txt, t2.txt등이 해당된다. 단, t.txt는 제외한다. |
ls -l tmp[135].txt | $\bullet$ tmp 다음에 1, 3, 5 중 하나가 오고 파일의 확장자가 txt인 모든 파일의 이름을 출력한다. $\bullet$ tmp1.txt, tmp3.tx, tmp5.txt 파일이 잇으면 해당 파일의 상세정보를 출력한다. 단, tmp.txt는 제외한다. |
ls -l tmp[1-3].txt | $\bullet$ [1-3] 은 1부터 3사이의 모든 정수를 의미한다. $\bullet$ ls -l tmp[123].txt 과 결과가 같다. |
ls [0-9]* | $\bullet$ 파일명이 숫자로 시작하는 모든 파일의 목록을 출력한다. |
ls [A-Za-z]*[0-9] | $\bullet$ 파일명이 영문자 2개로 시작하고 숫자로 끝나는 모든 파일의 목록을 출력한다. |
특수문자 ~와 -
- ~와 -는 디렉터리를 나타내는 특수문자이다.
- ~만 사용하면 현재 작업중인 사용자의 홈 디렉터리를 나타낸다.
- 다른 사용자의 로그인 ID와 함께 사용하면(~로그인 ID) 해당 사용자의 홈 디렉터리를 나타낸다.
- -는 cd 명령으로 디렉터리를 이전하기 직전의 작업 디렉터리를 나타낸다.
사용 예 | 의미 |
cp *.txt ~/ch3 | 확장자가 txt인 모든 파일을 현재 작업 중인 사용자의 홈 디렉터리 아래 ch3 디렉터리로 복사한다. |
cp ~user2/linux.txt | user2라는 사용자의 홈 디렉터리 아래에서 linux.txt 파일을 찾아 현재 디렉터리로 복사한다. |
cd ~ | 이전 작업 디렉터리로 이동한다. |
특수문자 ;과 |
- 명령과 명령을 연결한다.
- ;은 연결된 명령을 왼쪽부터 차례로 실행한다
- |은 왼쪽 명령의 실행결과를 오른쪽 명령의 입력으로 전달한다.
사용 예 | 의미 |
data; ls; pwd | $\bullet$ 왼쪽부터 차례대로 명령을 실행한다. $\bullet$ 날짜를 출력한 후, 현재 디렉터리의 파일 목록을 출력하고, 현재 디렉터리의 절대 경로를 보여준다. |
ls -al / | more | $\bullet$ 루트 디렉터리에 있는 모든 파일의 상세 정보를 한 화면씩 출력한다. $\bullet$ ls -al / 명령의 결과가 more 명령의 입력으로 전달되어 페이지 단위로 출력된다. |
특수문자 ' '와 " "
- 문자를 감싸서 문자열로 만들고, 문자열 안에 사용된 특수문자의 기능을 없앤다.
- *이나 ?, ; 등을 파일명에 사용하거나 메시지로 출력하려고 할때 셸이 이 문자를 특수문자로 간주하지 않게끔 한다.
- ' '는 모든 특수문자에 적용한다.
- " "는 $, `, \를 제외한 모든 특수문자를 일반 문자로 간주하여 처리한다.
사용 예 | 의미 |
echo '$SHELL' | $SHELL 문자열이 화면에 출력된다. |
echo "$SHELL" | $\bullet$ 셸 환경 변수인 SHELL에 저장된 값인 현재 셸의 종류가 화면에 출력된다. $\bullet$ /bin/bash를 예로 들 수 있다. |
특수문자 ` `
- 키보드 상단 1키 왼쪽에 있는 특수문자다.
- ` `로 감싸인 문자열을 명령으로 해삭하여 명령의 실행 결과로 바뀐다.
사용 예 | 의미 |
echo "Today is `date`" | $\bullet$ `date`가 명령으로 해석되어 date명령의 실행결과로 바뀐다. $\bullet$ 결과적으로 아래처럼 출력된다 Today is 2018.01.20. (토) 18:32:45 KST |
ls /usr/bin/`uname -m` | $\bullet$ uname -m 명령의 ㅣㄹ행결과를 문자열로 바꾸어 파일명으로 사용한다. |
특수문자 \
- 특수문자 바로 앞에 사용한다.
- 해당 특수문자의 효과를 없애고 일반 문자처럼 처리한다
사용 예 | 의미 |
ls -l t\* | $\bullet$ t* 이라는 이름을 가진 파일의 상세정보를 출력한다. $\bullet$ \ 없이 t*를 사용하면 t로 시작하는 모든 파일의 상세 정보를 출력한다. |
echo \$SHELL | $\bullet$ $SHELL을 화면에 출력한다. $\bullet$ echo '$SHELL'과 결과가 같다. |
특수문자 >, <, >>
- 입출력의 방향을 바꾸는 특수문자
사용 예 | 의미 |
ls -l >res | ls -l 명령의 실행결과를 화면이 아닌 res 파일에 저장한다. |
Comments