Bash Shell Programming

Bash Shell Programming(3)

Joon0464 2021. 7. 21. 01:13

본 글은 아래 영상을 통해 공부하고 작성했습니다. 제 글보다 영상 시청이 더 도움 될 것입니다.

https://youtu.be/UlQ-xu-koR0

Bash Shell 과 Rules

1. Quoting Rule

- MetaCharacters

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

  • * 는 전체, 전부의 뜻이다.

  • ? 는 any single character의 의미이다. 즉, echo ??? 을 입력하면 3글자인 파일 혹은 디렉터리를 모두 출력한다.

  • {}는 집합의 의미이다. 즉 myfile1, myfile2, myfile3 세개가 생성된다.

- Quoting Rule : 메타 문자의 의미를 제거하고 단순 문자로 변경

  • Backslash(\) : \ 바로 뒤의 메타문자는 특별한 의미를 제거한다.

*를 이름으로 사용하기 위해 \를 *앞에 사용한 모습이다.

  • Double Quotes("") : "" 내의 모든 메타문자의 의미를 제거. 단 $ ``은 제외한다.

""를 사용하여 *를 파일 이름으로 사용하는 모습이다.

공백을 포함해서 이름지정이 가능하다.

  • Single Quotes('') : ''내의 모든 메타문자의 의미를 제거한다. 

""를 사용할 때와 ''를 사용할 때의 차이이다.

2. Nesting commands

- Command 치환

  • 명령어의 실행 결과를 치환하여 명령을 실행

- Nesting Command

  • 커맨드 안에 또 다른 커맨드를 집어 넣는것

사용법1: $(command)

사용법2: `commnad`

# echo "Today is $(date)"

# echo "Today is `date`"

date를 먼저 명령어로써 실행되게 하기 위해서는 $()를 사용하거나 ``를 사용한다.

date 함수를 응용한 활용방법이다.

이처럼 ""를 사용해야 $와 ``의 의미를 제거하지 않고 명령어가 실행된다.

3. Alias

-alias

  • Shell의 명령에 새로운 이름을 부여
  • 명령들을 조합하여 새로운 이름의 명령을 생성한다.
  • 리눅스 사용시 설정해두면 편리함

- alias 관리 명령

  • alias 등록 : alias name='command'

다음과 같이 alias 등록이 가능하다.

  • alias 확인 : alias or alias name

등록되어 있는 alias 목록 모두를 출력해준다.
보고 싶은 alias 설정만 지정해서 확인 가능

  • alias 삭제 : unalias name

unalais를 사용하여 등록했던 alias를 지울 수 있다. 

4. Prompt

- Shell의 Prompt란

  • PS1 변수를 사용하여 shell의 기본 프롬프트 모양을 설정한다.
  • Bash shell 에서만 Prompt 모양에 적용 가능한 특수 문자가 존재한다.

echo $PS1으로 확인할 수 있다.
프롬프트를 위와 같이 변경하면 바로 적용되는 것을 볼 수 있다.
하지만 접속을 끊었다가 다시 접속하면 원래대로 돌아간다.

alias나 PS1과 같은 환경 변수 설정은 로그인 하고있는 시점에만 적용되고 다시 로그인하면 설정이 풀리게된다.

- 영구 적용 방법

 

설정 적용을 원하는 사용자의 홈 디렉터리에서 ls -a 명령어를 입력하면 .bashrc 파일이 존재한다.

#vi .bashrc

PS1='\u@\h:\W\$ '
alias c=clear
alias h=history
alias rm='rm -i'

vi 편집기로 .bashrc를 열고 위 내용을 맨 마지막줄부터 작성하고 저장한다.

source ~/.bashrc

설정이 적용되기 위해서는 exit를 사용하여 연결을 종료하고 다시 접속한다.

또는 위 명령어처럼 source ~/.bashrc를 입력하면 설정이 바로 적용된다.

'Bash Shell Programming' 카테고리의 다른 글

Bash Shell Programming(6)  (0) 2021.07.23
Bash Shell Programming(5)  (0) 2021.07.22
Bash Shell Programming(4)  (0) 2021.07.21
Bash Shell Programming(2)  (0) 2021.07.19
Bash Shell Programming(1)  (0) 2021.07.18