문서의 이전 판입니다!
command-name &>file
: 명령의 표준 출력과 표준 에러를 모두 file로 지정cat textfile.txt > somefile 2>&1
: 표준 출력은 somefile로 지정되고 표준에러도 표준출력(핸재 somefile)로 함께 보낸다.$1
, $2
, … : 셸 스크립트 인자 순서대로$#
: 셸 스크립트 인자의 총 갯수$*
$@
$?
: 직전 명령 exit code. 0
이면 정상 종료.# $(명령어) 문법 test=$(basename "$file") # backquote `명령어` 문법 test=`basename "$file"`
# 10진수를 16진수로 출력 printf "%x" 365 #==> 16d # 16진수를 10진수로 printf "%d" 0x16d # 16진수 앞에 0x를 붙여야함. #==> 365 # bc 이용하여 10진수를 16진수로 echo "ibase=10; obase=16; 숫자" | bc
numbers - How to zero pad a sequence of integers in bash so that all have the same width? 포맷팅된 숫자로 for loop 돌기
for i in $(seq -f "%05g" 10 15) do echo $i done # 결과 00010 00011 00012 00013 00014 00015
# printf 사용 i=99 printf "%05d\n" $i # 결과 00099 # 결과를 변수에 저장하기 -v i=99 printf -v j "%05d" $i echo $j #결과 00099
bash 4.x 에서는
for i in {00..10}; do echo $i done # 결과 00 01 02 03 04...
# MYVAR 변수에 값을 입력 받아 출력 read MYVAR echo $MYVAR # 비밀번호 형태로 입력 받기 : -s 옵션, -p는 프롬프트 read -s -p "Type new password: " MYPASSWD echo $MYPASSWD
set -o emacs
bind -P
ESC
눌러 명령행 모드 진입v
: VI 에디터로 명령 편집하기. $VISUAL
이나 $EDITOR
환경 변수에 지정된 편집기 사용.#
: 현재 입력중인 명령을 주석처리해서 히스토리에 남긴다. 나중에 히스토리에서 불러내에 주석을 풀고 실행하면 된다.cc
| 'S' : 현재 줄 전체 변경<Ctrl-w>
: 앞 단어 지우기<Ctrl-u>
: 현재 위치부터 줄 처음까지 삭제<Ctrl-r>
: 명령 히스토리 역방향 검색<Ctrl-s>
: 명령 히스토리 전방 검색. 대부분의 터미널이 <Ctrl-s>를 터미널 출력 멈춤으로 사용하고 있기 때문에 stty 명령으로 변경해 둬야함.n
/N
: 검색 반복.TAB
/ <Ctrl-i>, 명령모드 : =
: 자동 완성*
: 모든 자동완성 대상을 입력하기<Ctrl-t>
: 문자 두 개 교체export HISTTIMEFORMAT='%F %T '
read 환경변수명
echo -n "Enter your name and press [ENTER]: " read name
read -s 환경변수명
: 비밀번호 등의 입력을 받을 때 처럼 입력 값을 숨겨줌.dirname "/path/to/filename.ext" # /path/to basename "/path/to/filename.ext" # filename.ext
filename=$(basename "$fullfile") # 경로에서 파일 이름만 추출 extension="${filename##*.}" # 파일 이름 중 확장자만 추출 filename="${filename%.*}" # 파일 이름 중 확장자 빼고 추출
read
명령 사용read varname # varname 으로 입력값 저장 read -p 'press enter' varname # prompt
Check existence of input argument in a Bash shell script
if [ $# -eq 0 ] then echo "No arguments supplied" exit fi # 혹은 특정 파라미터가 "" empty 인지 검사 if [ -z "$1" ] then echo "No argument supplied" exit fi
Ctrl-X Ctrl-E
를 누르면 $EDITOR
혹은 $VISUAL
에 지정된 에디터로 명령행을 편집할 수 있다.set -o vi
모드일 때는 ~/.inputrc
에 아래 내용을 넣고 Ctrl-X Ctrl-E
를 누른다bind -m vi-insert '"\C-x\C-e": edit-and-execute-command'
b
등 몇몇 글자가 안쳐지는 현상이 있었음.