profile
pllpokko@alumni.kaist.ac.kr
post-thumbnail

read: bash 한 줄씩 읽어서 처리

한 줄씩 읽어 처리 bash의 read를 사용한다. read는 STDIN을 읽는다. 보통 redirect, pipe를 사용해 stdin으로 보내 전달한다. 명령어 결과를 한줄 씩 처리 Pipeline을 이용한다. 파일을 한줄 씩 처리 Redirection 이용 Pipeline 이용 awk 를 이용해 많은 양 처리하자 | while read line 주의사항!! | pipe 로 연결된 명령들은 subshell에서 실행된다!!! 따라서 |

2021년 9월 9일
·
0개의 댓글
·
post-thumbnail

quotes "" '', !, &

quotes "" quotes ""는 한번 사용 시, 적용되는 것임 다음 사용 때도 적용되지 않음 VAR="/home///cache" 'Hello "World"' "Hello 'World'" "Hello \"World\"": " 안에 " Quote " ... "는 내부에 \" 방식을 사용하면 된다. 'Hello '\''World'\': ' 안에 ' Quote ' ... ' 는 내부에 \' 방식으로 사용할 수 없다. 따라서, ' ... '\' 처럼 ' ... ' 문장을 끝내고 뒤에 \'를 사용하는 방식을 쓴다. ssh cmd --

2021년 9월 5일
·
0개의 댓글
·
post-thumbnail

wait, shift, select

wait wait 명령은 child process가 실행 종료 후, 자원 반납까지 기다린다. 기본적인 wait 사용 wait -n wait 에 -n 옵션을 붙이면, child process 1개 기다리고 그 process의 return 값을 return 한다. thread run, join과 비슷 $! 사용 시 주의 $!는 항시 제일 늦게 '실행한' child pid만을 가지고 있음 `| while read

2021년 9월 3일
·
0개의 댓글
·
post-thumbnail

shell別 start-up file

로그인 shell, 비-로그인 shell 로그인 shell 로그인 shell /bin/login과 같은 프로그램을 사용하여, 터미널과 함께 시스템에 맨 처음 로그인할 때 받게되는 것 ssh 또한 로그인 shell을 받게된다. bash가 로그인 shell로 실행할 경우 비-로그인 셸 로그인을 한 후, 추가로 실행하는 추가 셸이다. 이는 로그인 셸이 아닌 'interactive Shell'이다. Windowing system terminal program, xterm, GNOME terminal은 구체적으로 로그인 shell을 요구 하지 않는 한 '비-로그인' she

2021년 7월 13일
·
0개의 댓글
·
post-thumbnail

Brace {} 확장 / scope

{}: string expansion Brace 확장은 여러 확장과 치환 중 제일 먼저 일어난다. quote를 하면 brace 확장이 일어나지 않는다. sh에서는 brace확장을 사용할 수 없다. , 가 없는 단일 항목은 확장되지 않는다. , 전 후에 공백이 있으면 확장되지 않는다. 스트링 내에 공백이 있을 경우 quote 한다. prefix, suffix가 없으면 단지 공백으로 분리 시킴 변수와 같이 사용한 예 scope 쉘스크립트는 순서대로 실행되기 때문에, 뒤 늦게 셋팅한다고 위에 것이 실행되지 않음

2021년 7월 6일
·
0개의 댓글
·
post-thumbnail

ssh 원격 명령 실행

한줄 명령 실행 local의 script에서 실행 PREFIX 지정해 명령어 전송 function 이용 방법 1. local script에서 한줄 한줄 $(ssh User@HostName "cmd1; cmd2")를 사용하기 힘들다. 함수를 이용해 이를 해결하자! 방법 2. 별도의 쉘 스크립트 원격에 스크립트파일을 전송 별도의 쉘 스크립트를 만들어 두고 원격에 스크립트 해석기를 실행시키고 파이프나 리다이렉션으로 보내는 방법 Host의 bash(스크립트 해석기) local의 test.sh를 전달해 실행 시킴 원격에 여러개 보내기 각 ssh 명령이 fork되어 백그라운드로 돌고 각 서버에 대한 결과는 ${m}.log로 파일 확인

2021년 6월 18일
·
0개의 댓글
·
post-thumbnail

path를 다루는 shell 2: globbing

glob 문자는 *, ?, [ ] 이 있는데, 이는 shell에서 쓰는 pattern matching과 동일 동작 globbing은 꼭 파일이름을 다룰 때만 적용되는 것은 아니며 어떤 스트링이나 변수 값에라도 glob 문자가 있으면 주의 파일 이름 앞에 .가 붙으면 숨은 파일. 기본적으로 매칭되지 않는다. dotglob 옵션, 직접 . 붙여 검색 주의사항 1. Quote를 사용 하면 단어 분리, globbing 둘 다 일어나지 않는다. Quote를 사용

2021년 6월 17일
·
0개의 댓글
·
post-thumbnail

bash 쉘 특수문자: 공백,{} 하나의 명령,[], exit, return, ${} 확장, (( )) let 산술연산, $()

파일명 shell에서 파일명은 명령을 실행할 때 사용되는 이름과 같다. 리눅스에서 사용하고 있는 파일 시스템에서는 파일 이름으로 NUL, / 두 문자를 제외하고 전부 허용 한다. >[ { [10 {echo if{ {AA=10} . : 전부 명령이름이 될 수 있다. 공백 shell에서 공백을 매우 신경 써야한다. 위와 같이 띄어 쓰기로 인해 wk에 command가 먹히지 않는다. wk=cd만 적용된다. 뒤

2021년 6월 15일
·
0개의 댓글
·
post-thumbnail

bash 디버그

bash -x $ bash -x 옵션은 디버깅을 위해 사용하는 옵션 전체 디버깅!! test_script.sh를 디버깅하고 싶다면 bash -x 옵션으로 실행하자 test_script.sh에서 스크립트 지정문에서 -x 옵션 예시 test_script.sh 2-1. ./test_script.sh "그냥 실행" 2-2. $ bash -x test_script.sh set [-/+]x: 특정 부분 디버그 set -x: 디버깅

2021년 6월 6일
·
0개의 댓글
·
post-thumbnail

export / set / unset / declare / typeset

Variable 변수 이름은 알파벳(대,소 구분), 숫자, _로 만들 수 있다. 첫 문자로 숫자가 올 수 없다. 생성한 변수는 서브 쉘, source한 쉘 스크립트 내에선 별다른 설정 없이 사용할 수 있다. child process 에서 사용하려면 export 해야한다. 선언 및 사용 처음에 선언으로는 커맨드가 사용되지 않는다. export: for child-

2021년 5월 31일
·
0개의 댓글
·
post-thumbnail

path를 다루는 shell 1: dirs, pushd, popd, dirname, basename, pwd

dirs: 디렉토리 스택 출력 홈디렉토리를 ~(틸트) 처리 디렉토리 스택을(dirs stack) 출력 디렉토리 스택: 거쳐갔거나 pushd, popd로 제어한 stack dirs -l 현재 디렉토리 스택(dirs stack)을 출력(/home도 자세히) dirs -v: 레벨 보여줌 dirs 스택 <span

2021년 5월 26일
·
0개의 댓글
·
post-thumbnail

./ ,bash ,bash -c "", source, subshell vs childprocess

subshell vs childprocess -|subshell|childprocess|비고 :---|:---|:---|:--- 자동 inherit| O|X (부모가 export 해줘야함) 부모에게 영향|X|X|부모에게 영향을 끼칠 수 있는 유일한 명령은현재 쉘에서 source 'file' 뿐임 실행 명령|bash -c "cmd"|./ 'file'bash 'file

2021년 5월 26일
·
0개의 댓글
·
post-thumbnail

redirect, PIPE

redirection > >& >> 파일 명령 > 파일 > : STDOUT 명령의 출력으로 나오는 STDOUT 을 파일로 '밀어'넣는다. (파일 입장에서는 입력) 명령>& 파일 명령 >& 파일 > : <span styl

2021년 5월 23일
·
0개의 댓글
·
post-thumbnail

if / case / for / while / 조건문

if else elif case 기본 case문은 여러번 사용 가능 ![](https://images.velog.io/images/markyang92/post/35eb350f-73a5-442c-90f2-faf32f7

2021년 5월 7일
·
0개의 댓글
·
post-thumbnail

배열 / 함수

배열 배열은 POSIX에 정의되어 있지 않음 본 쉘에서는 사용할 수 없음 배열 변수는 export 할 수 없음 생성 1. indexed array idx로 숫자를 사용함 declare -A 없이 사용할 수 있음 2. associative array idx로 string을 사용할 수 있음 declare -A 로 선언해야함 associative arrary는 추가할 때 꼭 아래와 같이 해야함 Array 값 조회 현재 쉘이 정의된 모든 array 변수명 보기 Array 값 사용 반드시!! { }를 사용해야함 아래와 같이 { } 없으면, $ARR[2] 와 같이하면 $ARR 변수가 먼저 확장되어 DST3[0]으로 확장됨 `@,

2021년 4월 26일
·
0개의 댓글
·
post-thumbnail

regex, ex-regex, $ grep, pattern matching

다음 글의 Pattern matching 이랑 헷갈리면 안됨!! 정규표현식 식     |효과|예제 :---|:---|:--- .|임의의 한 문자 있어야함없는건 X|grep "exercise.." -> 'exericse<span style="c

2021년 4월 25일
·
0개의 댓글
·