shell prompt 상에서 사용되는 shell 메타문자를 shell이 먼저 해석 후 command에게 전달한다.
wildcard : 모든 것과 매칭!
종류 | 메타문자 | 의미 |
---|---|---|
file name expension | * | 문자열 wildcard |
? | 한 문자 wildcard | |
[ ] | 문자 집합 wildcard(그냥 붙여써도 된다) | |
{ } | 문자열 집합 (,로 분리한다) | |
Escape character | \ | single character escape |
' ' | String escape(String을 그대로 자식process에 전달) | |
" " | String escape($를 expand하고 자식process에 전달) | |
job control관련 | & | 후면 작업(backgroud job) |
입출력 관련 | \를 쉬프트 누른거..ㅋㅋ | 파이프(pipe) |
< << | 입력 재지정(redirection) | |
> >> | 출력 재지정(redirection) | |
기타 | # | 주석 |
$ | 쉘 변수 | |
디렉토리 관련 문자 | / | 경로명 디렉토리 분리자 |
(shell 메타문자 아님) | ~ | home directory |
. | 현재 디렉토리 | |
.. | 부모 디렉토리 |
?
: 한 문자와 매칭
$ls a.?
a.c a.cc a.ccc
a.()와 매칭되는 결과를 알려준다!
*
: 임의의 길이의 문자열과 매칭(널 문자 포함)
$ls he*
hello hell heil
he로 시작하는 모든 문자열과 매칭된다.
$ls *e*
dave(마지막은 널 문자라 끝이e라도 포함된다)
[set]
: set의 문자 중의 하나와 매칭
[!set]
or [^set]
: set에 없는 문자 중의 하나와 매칭
[abc] = [a-c]
[!0-9] : 숫자가 아닌 문자 // !는 앞에 매칭한다.
[0-9!] : 숫자와 느낌표
[a-zA-Z] : 모든 알파벳 문자
경우의 수를 다 따져서 모두 나와야 한다! 하나라도 없으면 에러뜬다 엔터 주의! 엔터 없으면 치지 말자
표현방식 | 결과 |
---|---|
b{ed, olt, ar}s | beds bolts bars |
b{ar{d,n,k},ed}s | bards barns barks beds |
standard output : 표준 출력(화면에 출력)
standard error : 에러 메세지
standard input : 표준 입력(키보드)
command > file1
: command의 표준 출력을 file1로 보낸다
command < file2
: file2의 내용을 표준 입력으로 사용하여 command 실행한다. (그니까 화면에는 file2의 내용이 출력된다. 입력이 file2의 내용이니까)
>>
: 이미 파일이 존재하는 경우 이어쓴다. (>는 덮어씌워짐)
>&
: 표준 출력뿐 아니라 standard error까지 파일로 보낸다(>>&) - 에러까지 표준출력에 포함!
! cat
: 표준 입력을 바로 표준 출력으로 / cat file은 file 내용을 표준출력으로 !
cat > rrrr : 표준 출력을 rrrr로 보낸다.
$cat < file1 > file2 //file1을 표준 입력으로 사용해서 file2의 내용으로 출력한다.
= $cat file1 > file2
$cat < file1 >> file2 //file2가 이미 존재하면, file2아래에 이어쓰니까 file2가 늘어난다.
$cat < file1 >& file2 //위의 예시랑 똑같은데 에러까지 file2에 출력한다.
오류 메세지까지 출력되는 것을 확인할 수 있다.
command1의 표준 출력을 command2의 표준 입력으로 사용한다.
파이프는 일종의 파일!
입출력을 받을 수 없는 명령어는 에러가 난다.
앞 command의 결과를 표준출력해 command2의 표준입력으로 받는다.
wc -w : 공백을 기준으로 단어수를 센다. (표준입력을 받을 수 있는 command)
shell은 자료형 변수밖에 없다.
$name=value
$echo $value
결과 : name출력
firstname = hyeran 이렇게 띄어서 쓰면 안된다. 붙여서 사용하자
echo
: echo다음 뭐가 나오든 string형식으로 출력한다. (명령어라도!) !!!질문!!!!
메타문자가 아니라 실제 문자를 사용하고 싶을 때!
shell변수($)(variable expansion) 제외하고 string으로 !
모두 다 string은 아니다!
무슨일이 있어도 다 string으로 받는다.
자신의 홈디렉토리!