쉘 메타문자 (Shell metacharacter)
리눅스 쉘은 다양한 특수문자를 이용하여 명령어를 처리하며,
메타문자를 적절히 사용하면 반복되는 작업이나, 인자를 다양하게 확장 할 수 있습니다.
☞ ~ 홈디렉토리를 나타냄
' 작은따옴표는 모든 문자나 특수문자들을 일반문자로 취급
" 큰따옴표는 $,`(Backquotes), \(Backslash)를 제외한 모든 문자들을 일반문자로 취급
` 명령 대체(command substitution), Back quote라고 부름
큰따옴표안에서 명령어들이 문자열이 아닌 명령어의 역할을 하도록 해줌
# 주석(comment)
$ Shell변수
& 후면 작업(background job)
* wildcard라고 부르며, 모든 문자를 뜻한다. 아무것도 없는 경우도 포함
? 한 문자를 대체할 때 사용하는 wildcard로 사용하고 특정명령에 대한 결과를 갖는 Return 변수로도 쓰임
쉘상에서 내린 명령의 에러유무를 확인할 수 있음
( ) 부속shell(subshell)
\ escape문자. 바로 다음에 오는 특수문자의 기능을 없앰
| 파이프 (pipe)
[ ] bracket이라고 부르며 [ 과 ]사이에 선택할 수 있는 문자를 나열하여 '~중의 하나'라고 표현됨
범위를 지정할 때는 -를 사용하며, 문자집합을 뜻함
와일드 카드 문자
* → 모든 문자와 일치하는 와일드 카드 문자
< 예제 >
? → 하나의 문자와 일치하는 와일드 카드 문자
< 예제 >
다중 명령 문자
; → 명령어의 끝을 나타내는 문자
< 예제 >
$ → 쉘 변수 문자
< 예제 >
&& → 이전 명령이 에러 없이 정상 종료했을 때 0의 값을 반환
이럴 경우에만 다음 명령 실행
즉, 둘 다 참이여야 실행
|| → 이전 명령이 에러 나며 비정상 종료했을 때 1의 값을 반환
이럴 경우에 각각의 명령을 실행
즉, 둘 다 참이 아니어도 참을 실행
기타
[ ] → 문자의 범위를 지정
#touch
- 기존 파일의 시간 정보 변경
- 파일이 존재하지 않을 경우 0Byte 크기의 빈 파일 생성
→ 옵션 (명령의 세부 기능)
-t (timestamp) CCYY년 MM월 DD일 hh시 mm분 ss초
※ 파일에 적용되는 시간
ls -lu [file] 접근 시간 : 파일을 열거나 접근한 시간
ls -l [file] 수정 시간 : 파일의 내용이 변경된 시간
ls -lc [file] 변경 시간 : 파일의 정보가 변경된 시간
3가지 시간정보기록
- atime
- mtime
- ctime
※ touch로 빈 파일 생성
#date
시스템 시간 확인 및 수정
#date -s "CCYY-MM-DD hh:mm:ss"
#cal
달력 출력
ex) #cal
#cal [year]
#cal [month] [year]
#file [file]
파일 형식 확인
ex) #file /bin/ls
#file /etc/passwd
#file /root
#which [file]
명령어(실행파일)경로 및 alias 확인
ex) #which ls
#which cp
#which shutdown
#cat (conCATenate)
파일안에 있는 내용을 화면에 다 출력할수있음 (텍스트로되어있는경우)
→ 옵션 (명령의 세부 기능)
-b 공백 라인을 제외한 글자가 있는 모든 라인에 번호를 붙여 출력
-n 공백 라인을 포함하여 모든 라인에 번호를 붙여 출력
※ cat을 거꾸로 tac로 입력하면 내용을 거꾸로 출력해준다.
※ 리눅스에서는 #으로 주석 처리를 한다.
#nl
파일에 행 번호를 붙여 출력
< 예제 >
#more
화면 단위로 파일 내용 출력
space bar 다음 화면 출력
enter 한 줄씩 스크롤
b 이전 화면
f 다음 화면
/[pattern] 문자열 검색
q 종료
#head
파일의 내용 중 첫 10줄 출력
# head -[숫자] [file]
ex) #head /etc/passwd //파일의 처음 10줄 출력(기본 값)
#head -1 /etc/passwd // 파일의 처음 1줄 출력
#head -3 /etc/passwd //파일의 처음 3줄 출력
#tail**유용한 명령어임
파일 내용의 마지막 10줄 출력
#tail -[숫자] [file]
→ 옵션 (명령의 세부 기능)
-f 실시간으로 파일의 내용을 확인
ex) #tail /etc/passwd
#tail -15 /var/log/messages
#tail -f /var/log/secure //접속 정보 관련 로그 파일 실시간 확인
#sort
파일 내의 내용을 알파벳 순서대로 정렬
#sort [옵션] [파일]
→ 옵션 (명령의 세부 기능)
-n 숫자를 기준으로 정렬
-r 역순으로 정렬
-u 중복행 제거(#uniq)
-o 출력 결과를 파일로 저장
※ 아래의 명령어들의 예시를 보여주기 위해 준비된 txt파일을 HostOS에서 가져와야 합니다.
1) 먼저 파일 전송 패키지를 설치해줍니다.
#yum -y install lrzsz //파일 전송패키지 설치
...........
설치완료
2) 파일을 전송해줍니다.
파일 전송하는 방법은 두 가지 방법이 있습니다.
HostOS(Windows7) → GeustOS(Server-A)
① 파일 선택 후 Drag해서 Xshell 화면에 Drop해주면
현재 위치한 경로에 파일이 전송됩니다.
② #rz
탐색기 → 전송할 파일 선택해서 보내기
HostOS(Windows7) → GeustOS(Server-A)
1.#sz [파일명]
#sz /root/install.log
탐색기 -> 저장할 경로 선택
**파일을 전송해도 원본 파일은 없어지지 않습니다.
3) 두 개의 텍스트 파일 내용 확인해봅니다.
ex) sort sort_test2.txt //영어를 기준으로 정렬하고 출력
sort -u sort_test2.txt //중복되는 문자는 제외하고 출력
sort -n sort_test1.txt //숫자를 기준으로 정렬하고 출력
sort -nr sort_test1.txt //숫자를 기준 역순으로 정렬하여 출력
sort -n sort_test1.txt -o test //숫자를 기준으로 정렬하여 "test"라는 이름을 가진 파일로 저장
**원본 파일은 없어지지 않습니다.
#wc (Word Count)
단어, 라인, 문자 바이트 계산
#wc [option] [file]
→ 옵션 (명령의 세부 기능)
-l 라인 수 출력
-w 단어 수 출력
-m 문자 수 출력 *공백도 문자로 인식해서 맨 뒤에 null값도 문자로 인식
-c 몇 byte인지 계산해줌
< 예제 >
#cut
필드 잘라내기
→ 옵션 (명령의 세부 기능)
-c 잘라낼 글자 위치를 지정
-f 잘라낼 필드를 지정
-d 필드와 필드로 구분하는 문자를 지정 (기본은 tap(공백))
< 예제 >
#tty (TeleTYpewriter)
현재 사용 중인(표준입력에 연결되어있는) 터미널의 이름을 출력
vmware <---/dev/tty ---> server <---/dev/pts---> xshell
콘솔 서버 원격 클라이언트
▶
콘솔(console)
- 직접 서버와 연결되어 있는 디스플레이 모니터와 키보드가 조합된 장치
- 터미널이라고 부르며, 기본적으로 6개의 가상 터미널을 제공
pts (Pseudo-Terminal Slave)
- 원격지에서 서버에 접속 시 사용하는 가상 터미널, Telnet, SSH 등 연결 시 사용
#grep (Globally find Regular-Expression and Print) **아주아주 중요함
파일 내용 중 정규식 패턴에 일치하는 문자열을 찾아 화면에 출력 (원하는 결과만 뽑는 것)
#grep [Pattern] [file]
→ 옵션 (명령의 세부 기능)
-i (ignore-case) 대소문자를 구별하지 않는다.
-n (--line-number) 행 번호를 함께 보여준다.
-v (--revert-match) 정규식에 일치하지 않는 행만 보여준다.
-r (--recursive) 하위 디렉토리에 위치한 파일도 검색한다.
< 예제 >
※ grep 명령어 하이라이트 옵션 사용하기
alias grep="grep --color=auto"
grep 명령어 사용 시 패턴과 일치하는 부분은 하이라이트 처리하여 가동성을 높여준다.
※ 시스템 종료 명령어 ※
#shutdown
옵션
-h (halt) 시스템 종료
-r (reboot) 시스템재부팅
-c (cancel) 예약 취소
시간
+N N분후 명령어 실행(예약)
now 지금 즉시
ex) shutdown -h now //지금 즉시 시스템 종료
ex) shutdown -r now //지금 즉시 시스템 재부팅
시스템
재부팅 명령어 : #shutdown -r now, #reboot, #init 6
종료 명령어 : #shutdown -h now, #halt, #init 0, #poweroff
'서버 > Linux' 카테고리의 다른 글
[Linux] (기본명령어) grep / watch (0) | 2017.09.19 |
---|---|
[Linux] Xshell 기능 (0) | 2017.09.14 |
[Linux] 기본 명령어 (1) (0) | 2017.09.14 |
[Linux] 파일의 종류 / 절대경로와 상대경로 (0) | 2017.09.13 |
[Linux] Bash Shell 명령어 기능 (0) | 2017.09.13 |