[Bash란?]
본 어게인 셸은 유닉스에서 사용하는 커맨스 셀의 일종으로 줄여서 bash라 부른다. bash는 다양한 리눅스 시스템, 맥 OS의 기본 셸이며 수많은 유닉스 계열 운영체제에서 동작한다.
[설정 파일]
~/.bashrc (bash run control) : bash를 사용할 때, bash가 참고할 사항을 정의해 놓는 파일
/etc/bashrc : 전체용 환경 설정
[기본 문법]
> : 출력 리다이렉션. 명령 실행의 표준 출력(stdout)을 파일로 저장
$ echo "hello" > ./hello.txt
< : 입력 리다이렉션. 명령 실행의 표준 입력(stdin)을 파일로 저장
$ cat < ./hello.txt
>> : 명령 실행의 표준 출력(stdout)을 파일에 추가함
$ echo "world" >> ./hello.txt
2> : 명령 실행의 표준 에러(stderr)를 파일로 저장
2>> : 명령 실행의 표준 에러(stderr)를 파일에 추가
&> : 표준 출력과 표준 에러를 모두 파일로 저장
1>&2 : 표준 출력을 표준 에러로 보냄
$ hello = $(echo 'Hello World" 1>&2) # 표준 출력으로 출력했지만 표준 에러로 보냄
$ echo $hello # 미출력
2>&1 : 표준 에러를 표준 출력으로 보냄
$ abcd > /dev/null 2>&1
| : 파이프, 명령 실행의 표준 출력을 다른 명령의 표준 입력으로 보냄
$ ls -al | grep .txt
$ : Bash의 변수
$ hello="Hello World"
$ echo $hello
$() : 명령 실행 결과를 변수화함 (`` 와 같음)
$ sudo docker rm (docker ps -aq)
$ echo $(date)
&& : 한 줄에서 명령을 여러개 실행합니다. (단 앞에 명령어가 오류가 없어야함)
$ make && make install
; : 한 줄에서 명령을 여러개 실행 (앞에 명령어 오류가 있어도 실행함)
$ false; echo "Hello"
' ' : 문자열 처리 (안에 변수 처리안함)
" " : 문자열 처리 (안에 변수, 명령 처리함)
" ' ' " : 명령 안에서 다시 명령을 실행하고, 매개변수 지정할 때 사용
$ bash -c "/bin/echo Hello 'World'"
\" , \$hello : ' ' 안에서 "를 사용하거나 특수문자를 사용할 때 붙임
${} : 변수 치환, " " 문자열 안에서 변수를 출력할 때 사용
\ : 한 줄로된 명령을 여러 줄로 표현할 때 사용
$ sudo docker run \
-d \
--name hello \
busybox:latest
{1..10} : 연속된 숫자를 표현
{문자열,문자열} : {}안에 문자열을 여러 개 지정하여 명령 실행 횟수를 줄임
$cp ./ {hello.txt,world.txt} hello-dir/