홈 › 리눅스 명령어 › 08 / 10

셸 활용 (히스토리·별칭·단축키)

섹션 7진행 0 / 10

3. 코드 예제

예제 1: 확장 — 01_shell_tips.sh 발췌

bash
echo file{1..3}.txt
echo {a,b}{1,2}
mkdir -p app/{conf,logs,bin}; ls app
touch app/logs/app.{1..5}.log
ls app/logs/app.[1-3].log
cp app/conf/a.yml app/conf/a.yml.bak && ls app/conf/a.yml{,.bak}
text
file1.txt file2.txt file3.txt
a1 a2 b1 b2
bin
conf
logs
app/logs/app.1.log
app/logs/app.2.log
app/logs/app.3.log
app/conf/a.yml
app/conf/a.yml.bak

중괄호로 폴더 세 개와 파일 다섯 개를 한 줄씩에 만들었습니다. [1-3] 글로브가 있는 파일 중 셋만 골랐습니다.

예제 2: 변수와 치환 — 01_shell_tips.sh 발췌

bash
NAME=world; echo "hello $NAME"; echo 'hello $NAME'
COUNT=$(ls app/logs | wc -l); echo "logs: $COUNT, 두 배: $((COUNT * 2))"
echo "${NAME^^} ${NAME:0:3} ${#NAME}"
echo "${UNSET:-기본값}"
text
hello world
hello $NAME
logs: 5, 두 배: 10
WORLD wor 5
기본값

작은따옴표 안의 $NAME 이 그대로 남은 것이 따옴표 규칙의 핵심입니다.

예제 3: tee·xargs·종료 코드 — 01_shell_tips.sh 발췌

bash
ls app | tee copy.txt | wc -l
ls app/logs | xargs -n 2 echo
true; echo "true=$?"; false; echo "false=$?"
ls 없음 2>/dev/null || echo "실패하면 실행"
(cd app && pwd); pwd | xargs basename
text
3
app.1.log app.2.log
app.3.log app.4.log
app.5.log
true=0
false=1
실패하면 실행
/tmp/tmp.YKvv4VuZA8/app
tmp.YKvv4VuZA8

서브셸 안에서 cd 했지만 밖의 pwd 는 원래 폴더입니다.

예제 4: 함수와 .bashrc — 01_shell_tips.sh 발췌

bash
mkcd() { mkdir -p "$1" && cd "$1"; }
mkcd app/new && pwd | xargs basename
text
# ~/.bashrc 에 넣는 예
export HISTSIZE=5000 HISTTIMEFORMAT='%F %T '
alias ll='ls -la' la='ls -A' ..='cd ..'
PS1='[\u@\h \W]\$ '
export EDITOR=vi
mkcd() { mkdir -p "$1" && cd "$1"; }

mkcd 는 만들고 들어가는 두 명령을 하나로 만든 함수입니다. .bashrc 조각 다섯 줄이 새 서버에서 첫날 넣는 설정입니다.