리눅스 기초인 bash 명령에 대한 내용을 간단히 요약하였다. 보다 자세한 내용은 가장 빨리 만나는 Docker, 4.2장을 참고하시길.
단순 명령
<: 표준입력 다이렉션,cat < ./hello.txt>: 표준출력 다이렉션,echo "hello" > ./hello.txt>>: 표준출력 다이렉션을 기존 파일에 추가,echo "hello" >> ./hello.txt2>: 표준에러를 파일로 저장2>>: 표준에러를 파일에 추가&>: 표준출력과 표준에러를 파일로 저장1>&2: 표준출력을 표준에러로 저장2>&1: 표준에러를 표준출력으로 보냄,abcd > result.txt 2>$1|: 표준출력을 다음 명령의 표준입력으로 보냄=: 변수 설정,hello="Hello World"$: 설정 변수 사용시,echo $hello$(): 명령 실행 결과를 변수화,echo $(date)` `: 명령 실행 결과를 변수화$()와 동일&&: 명령어 실행후 성공하면 다음 명령 실행,make && make install;: 한줄에서 여러개 명령 실행,false; echo "hello"' ': 문자열로 그대로 표현,echo '$USER'" ": 문자열내 변수를 변환후 표현,echo "$USER"" ' ' ": 문자열 내에 다시 문자열 이용,bash -c "/bin/echo Hello 'World'"\": ' 안에서 “를 사용\$: " 안에서 $ 사용${}: 변수 치환HELLO=${HELLO-"abcd"}: HELLO가 없을경우 “abcd” 대입HELLO=${HELLO:-"abcd"}: HELLO가 있으나 NULL이면 “abcd” 대입<<<: 문자열을 명령의 표준 입력으로 보냄<<EOF ... EOF: 여러줄의 명령을 표준입력으로 보냄export: 설정한 값을 환경 변수로 만듬export HELLO=world#: 주석
고급 명령
if 조건문
if [ $a -eq $b ]; then
echo $a
fi
- 숫자 비교: -eq 같다, -ne 같지않다, -gt 초과, -ge 이상, -lt 미만, -le 이하
- 문자열 비교: == 같다, != 같지않다, -z 문자열이 NULL일때, -n 문자열이 NULL아닐때
for 반복문
for i in $(ls)
do
echo $i
done
NUM=(1 2 3)
for i in ${NUM[@]}
do
echo $i
done
for ((i=0; i<10; i++))
do
echo $i
done
while 반복문
while:
do
echo "Hello World";
sleep 1;
done
printf 출력문
printf 80\\nexampleuser\\ny | example-config
example-config의 입력으로 80 \n exampleuser \n y 를 차례로 입력으로 전달 (\n enter)
sed 스트림 에디터
sed -i "s/hello/world/g" hello.txt
s치환/<찾을 문자열>/<바꿀 문자열>/g전역
이정도가 docker를 빌드하기 위한 최소한의 명령이라 할 수 있다.