사용자 도구

사이트 도구


linux:bash

차이

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

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
linux:bash [2015/10/05 00:29]
kwon37xi
linux:bash [2020/02/12 09:55] (현재)
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''​이면 정상 종료.
  
 +==== 직전 명령의 argument 대체 ====
 +  * [[https://​stackoverflow.com/​questions/​41385015/​what-is-bang-dollar-in-bash|syntax - What is bang dollar (!$) in Bash? - Stack Overflow]]
 +  * ''​!$''​ : 직전 명령의 마지막 인자. history로 보면 대체된 결과가 나옴.
 +  * ''​$_''​ : 직전 명령의 마지막 인자. history 로 보면 그냥 ''​$_''​가 나옴.
 +  * ''​!^''​ : 첫번째 인자
 +  * ''​!:​2''​ : 두번째 인자
 +  * ''​!:​2-$'',​ ''​!:​2*''​ : 두번째부터 마지막 인자까지
 +  * ''​!:​2-''​ : 두번째 부터 마지막에서 바로 앞 인자까지
 +  * ''​!:​2-3''​ : 두번째~세번째 인자까지
 +  * ''​!*''​ : 모든 인자들
 +===== 실행 결과 변수에 저장 =====
 +<code sh>
 +# $(명령어) 문법
 +test=$(basename "​$file"​)
  
 +# backquote `명령어` 문법
 +test=`basename "​$file"​`
 +</​code>​
 ===== 16진수/​10진수(hex/​dec)간 변환 ===== ===== 16진수/​10진수(hex/​dec)간 변환 =====
 <code sh> <code sh>
줄 27: 줄 48:
 </​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: 줄 145:
 </​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: 줄 157:
 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: 줄 209:
   * [[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.1443974369.txt.gz · 마지막으로 수정됨: 2015/10/05 00:29 저자 kwon37xi