리눅스/Bash Script

[Bash Script] Bash shell의 Rule

jetblack1 2023. 11. 7. 15:06

https://youtu.be/UlQ-xu-koR0?si=RDY-uD3Ae7YeKuYd 해당 강의 참고하였습니다.

 

  • Metacharacters
    • Shell에서 특별히 의미를 정해 놓은 문자들
      \ ? ( ) $ ... * {} [] 등


1. Quoting Rule

  • 메타문자의 의미를 제거하고 단순 문자로 변경
  • Backslash (\) : \ 바로 뒤의 메타 문자는 특별한 의미를 제거한다
  • touch * : *은 와일드카드 문자로서 현재 디렉토리에 일치하는 파일을 나타낸다. 그러므로 * 이름의 파일 생성이 안된다touch \* : 메타 문자 의미를 제거하여 * 이름의 파일 생성
  • Double Quotes(" ") : " " 내의 모든 메타문자의 의미를 제거. 단 $, "은 제외한다  
  • Single Quotes(' ') : ' ' 내의 모든 메타문자의 의미를 제거한다

2. Nesting commands

  • command 안에 또 다른 command 를 사용하려고 할때 사용한다.
  • echo "Today is $(date)" : Double Quotes 룰 때문에 해당 내용 메타문자 의미가 제거 되지만 $() 문법 안에선 command가 실행된다.( ` ` : $(date) 대신 `date`도 같은 결과가 나온다)

3. Alias

  • alias 등록 : alias name='command'
  • alias c=clear : c 입력 시 clear 명령어 적용된다
  • alias 확인 : alias or alias name
  • alias 삭제 : unalias name

 

4. Redirection

  • STDIN (0<, 0<<): 입력을 키보드가 아닌 파일을 통해 받음
    mailx -s "SAMPLE MAIL" test.test@localhost 0< messages.txt
    SAMPLE MAIL이라는 제목을 통해 메일을 보낼 경우 messages.txt 안의 내용으로 메일을 전달한다.

  • STDOUT(1>, 1>>) : 표준 출력을 터미널이 아닌 파일로 출력
    ls -l > text.txt : ls -l 결과를 터미널 출력이 아닌 text.txt 파일에 저장한다.

  • STDERR(2>, 2>>) : 표준 에러 출력을 터미널이 아닌 파일로 출력
    date2 > text.txt : date2는 없는 명령어 여서 error 가 발생하는데 해당 error 메세지를 text.txt 로 저장한다.

5. Pipeline

  • 명령의 실행결과를 다음 명령의 입력으로 전달
  • 리눅스의 명령어를 조합하여 사용
  • command1 | command2 | command3
  • ls -l | wc -l : ls -l 파일 및 폴더 의 개수를 확인하는 조합