사용자 도구

사이트 도구


linux:bash

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
다음 판 양쪽 다음 판
linux:bash [2015/10/05 00:29]
kwon37xi
linux:bash [2019/11/22 14:37]
kwon37xi
줄 1: 줄 1:
 ====== Bash ====== ====== Bash ======
 +===== Oh My Bash =====
 +  * [[https://github.com/ohmybash/oh-my-bash|oh-my-bash]] bash 확장. 2018현재 성능 저하가 심했음.
 +  * [[https://github.com/Bash-it/bash-it|bash-it]] bash framework
 +
 ===== Redirect ===== ===== Redirect =====
   * http://www.cyberciti.biz/faq/redirecting-stderr-to-stdout/   * http://www.cyberciti.biz/faq/redirecting-stderr-to-stdout/
줄 12: 줄 16:
   * ''$?'' : 직전 명령 exit code. ''0''이면 정상 종료.   * ''$?'' : 직전 명령 exit code. ''0''이면 정상 종료.
  
 +===== 실행 결과 변수에 저장 =====
 +<code sh>
 +# $(명령어) 문법
 +test=$(basename "$file")
  
 +# backquote `명령어` 문법
 +test=`basename "$file"`
 +</code>
 ===== 16진수/10진수(hex/dec)간 변환 ===== ===== 16진수/10진수(hex/dec)간 변환 =====
 <code sh> <code sh>
줄 27: 줄 38:
 </code> </code>
 [[http://www.unixcl.com/2007/12/hex-to-decimal-conversion-bash-newbie.html|Hex to decimal conversion bash newbie]] [[http://www.unixcl.com/2007/12/hex-to-decimal-conversion-bash-newbie.html|Hex to decimal conversion bash newbie]]
 +
 +===== for loop 숫자 =====
 +[[http://stackoverflow.com/questions/8789729/how-to-zero-pad-a-sequence-of-integers-in-bash-so-that-all-have-the-same-width|numbers - How to zero pad a sequence of integers in bash so that all have the same width?]] 포맷팅된 숫자로 for loop 돌기
 +<code sh>
 +for i in $(seq -f "%05g" 10 15)
 +do
 +  echo $i
 +done
 +
 +# 결과
 +00010
 +00011
 +00012
 +00013
 +00014
 +00015
 +</code>
 +
 +<code sh>
 +# printf 사용
 +i=99
 +printf "%05d\n" $i
 +# 결과
 +00099
 +
 +# 결과를 변수에 저장하기 -v
 +i=99
 +printf -v j "%05d" $i
 +echo $j
 +#결과
 +00099
 +</code>
 +
 +bash 4.x 에서는
 +<code sh>
 +for i in {00..10}; do
 +  echo $i
 +done
 +# 결과
 +00
 +01
 +02
 +03
 +04...
 +</code>
 +
 ===== 변수에 값 입력 받기 ===== ===== 변수에 값 입력 받기 =====
 <code sh> <code sh>
줄 78: 줄 135:
 </code> </code>
   * ''read -s 환경변수명'' : 비밀번호 등의 입력을 받을 때 처럼 입력 값을 숨겨줌.   * ''read -s 환경변수명'' : 비밀번호 등의 입력을 받을 때 처럼 입력 값을 숨겨줌.
 +
 +===== File Path dir/filename 분리 =====
 +<code sh>
 +dirname "/path/to/filename.ext" # /path/to
 +basename "/path/to/filename.ext" # filename.ext
 +</code>
  
 ===== Filename name / extension 분리 ===== ===== Filename name / extension 분리 =====
줄 84: 줄 147:
 extension="${filename##*.}" # 파일 이름 중 확장자만 추출 extension="${filename##*.}" # 파일 이름 중 확장자만 추출
 filename="${filename%.*}" # 파일 이름 중 확장자 빼고 추출 filename="${filename%.*}" # 파일 이름 중 확장자 빼고 추출
 +</code>
 +
 +===== User Input 사용자 입력 =====
 +  * http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_08_02.html
 +  * ''read'' 명령 사용<code sh>
 +read varname # varname 으로 입력값 저장
 +read -p 'press enter' varname # prompt
 +</code>
 +
 +===== shell script 파라미터 갯수 검사 =====
 +[[http://stackoverflow.com/questions/6482377/check-existence-of-input-argument-in-a-bash-shell-script|Check existence of input argument in a Bash shell script]]
 +<code sh>
 +if [ $# -eq 0 ]
 +  then
 +    echo "No arguments supplied"
 +    exit
 +fi
 +
 +# 혹은 특정 파라미터가 "" empty 인지 검사
 +if [ -z "$1" ]
 +  then
 +    echo "No argument supplied"
 +    exit
 +fi
 +</code>
 +
 +===== Editor로 명령 편집하기 =====
 +  * ''Ctrl-X Ctrl-E''를 누르면 ''$EDITOR'' 혹은 ''$VISUAL''에 지정된 에디터로 명령행을 편집할 수 있다.
 +  * ''set -o vi'' 모드일 때는 ''~/.inputrc''에 아래 내용을 넣고 ''Ctrl-X Ctrl-E''를 누른다<code sh>
 +bind -m vi-insert '"\C-x\C-e": edit-and-execute-command'
 +</code>
 +  * 위 명령 실행후 ''b'' 등 몇몇 글자가 안쳐지는 현상이 있었음.
 +
 +===== echo 로 환경변수 내용을 파일로 저장하기 =====
 +  * ''echo'' 명령으로 환경변수 내용을 파일로 저장할 때 환경변수를 따옴표로 감싸지 않으면 환경변수 내의 새줄 기호나 ''echo'' 관련 플래그 등이 해석이 돼 버린다.
 +  * 환경변수 내용을 그대로 파일로 만들고 싶다면 환경변수를 따옴표로 감싸야한다.
 +
 +<code sh>
 +echo "${MY_ENV}" > myfile.txt
 </code> </code>
  
줄 97: 줄 199:
   * [[https://github.com/alebcay/awesome-shell|Awesome Shell]]   * [[https://github.com/alebcay/awesome-shell|Awesome Shell]]
   * [[http://redsymbol.net/articles/unofficial-bash-strict-mode/|Bash Strict mode]]   * [[http://redsymbol.net/articles/unofficial-bash-strict-mode/|Bash Strict mode]]
 +  * [[https://www.gitbook.com/book/mug896/shell-script/details|Bash Shell Script]] 한국어
 +  * [[http://coffeenix.net/doc/shell/introbashscript.htm|Bash Script intro]]
 +  * [[https://zwischenzugs.com/2018/01/06/ten-things-i-wish-id-known-about-bash/|Ten Things I Wish I’d Known About bash – zwischenzugs]]
 +  * [[https://devhints.io/bash.html|Bash scripting cheatsheet]]
 +
  
linux/bash.txt · 마지막으로 수정됨: 2024/02/07 08:41 저자 kwon37xi