echo: python에서의 print에 준하는 명령어이다.인용부를 사용해야, 공백문자를 인식하여 출력 가능하다.인용부를 사용할때는, 인용부 안의 모든 문자를 문자열로 인식하게 된다.따라서 문자열이 아닌, 특수문자로 인식하게 하고자 한다면, -e 옵션을 주어야 한다.l
shell에서의 인용부호는 공백 문자의 사용을 가능하게 한다. 예시는 다음과 같다.
사용자가 지정한 파일의 행, 단어, 문자 수를 세는 명령어이다. 단어의 수를 세는 옵션이다.행의 수를 세는 옵션이다.지정한 파일의, 가장 긴 행의 문자수를 세는 옵션이다.해당 파일의, 전체 문자수를 세는 옵션이다.
tail 특정 파일의 후반부를 볼 수 있게 하는 명령어이다. 기본적으로, 후바분 10개의 행을 출력하여 보여준다. tail -n n옵션뒤에 지정하는 숫자만큼, 파일의 후반부에서 내림차순 만큼의 행을 출력하여 보여준다. 숫자 지정시, + 또는 - 부호를 입력하여 숫
특정 명령어에 대한 별칭을 붙여줄 수 있는 명령어이다.별칭을 만들때는 해당 명령어에 대한 옵션 값도 포함시킬 수 있다.다만 alias는 스크립트 레벨에서 사용이 불가능하다.
다음과 같이, 숫자의 형식을 지정할 수 있다.v옵션을 이용하여, 변수의 할당이 가능하다.
입력을 받을 수 있는 명령어이다.p옵션을 통해, 출력을 함과 동시에 입력을 받을 수 있다.
반복문의 대표적인 문법이다. while ~ do : 비교문을 위한 명령어나 키워드가 사용되는 곳이다. do ~ done : 반복될 부문에 해당한다.
shell은, user가 OS와 대화할때 사용하는, Command interpreter이다.즉, 사용자가 시스템과 대화하는 방법이라고 생각하면 된다.Core of the OSOuter layer of the OS= Interacts with user
보통의 스크립트에, 가장 첫번재 줄로 들어가는 것으로 "- 현재 편집중인 스크립트 파일을, 실힝해주는 것을 지정하는 부분다음과 같은 방식으로 쉬뱅을 작성하기도 한다.ps라는 명령어를 통해, 현재 실행되고 있는 program을 확인해보면 항상 bash가 실행되고 있음을
우리는 다음과 같이 "\\n"을 사용하여 줄바꿈을 출력할 수 있다.이러한 줄바꿈은 윈도우 운영체제에서는 다른 hex값으로 나타난다.따라서 쉘 스크립트 관련 작업시에는, 윈도우 운영체제의 메모장 대신 linux와 호환이 되는 편집기에 대한 사용이 필요하다.
carraige return 또는 white space라고 불린다.Bash는 공백을 사용하여, 단어의 시작과 끝을 결정한다.보통의 경우, 사용자가 명령어 입력시, 첫번째 단어는 명령 이름이고, 추가 단어는 해당 명령어에 대한 인수가 된다.흔히 변수 참조를 위해 사용한다
다음과 같이 공백이 없도록 쉘 변수를 할당해야 한다.변수 참조시에는, $를 붙여주면 된다.
쉘 변수에 띄어쓰기가 있는 경우, 해당 변수를 참조할때 인용부호와 함께 써야 한다.위의 예시를 통해, rm $target은 적용이 안되고, rm "$target"은 적용된 것을 확인할 수 있다.쉘 변수명의 확장을 위해서는, 참조시에 중괄호를 사용해야 한다.
특수 매개변수는 $0, $1, $2 ... 로 이어질수 있다.$0 : 명령어 실행 directory$1 : 첫번째 매개 변수$2 : 두번째 매개 변수...\`으로 둘러쌓인 경우, 해당 부분이 먼저 실행되고 다음으로 쉘 스크립트가 실행되는 부분을 특징지어주는 것이다.$1
다음과 같이, 명령어 실행의 user id를 반환해준다.랜덤한 값을 반환해준다.
declare 명령어를 사용하면, 변수를 다양한 방법으로 선언할 수 있다.
echo ${testString:0}echo ${testString:1}echo ${testString:3}echo ${testString:3:3}echo ${testString- 잘라낼 부분에서, T가 시작하는 문자열, is가 끝부분 문자열(처음으로 만나면 종료)이다
다음과 같이 ?를 사용하여 패턴 매칭이 가능하다.다음과 같이 \[]를 사용하여 패턴매칭이 가능하다.
지정한 문자를 바꾸어주거나 삭제하기 위한 명령어이다.첫번재 인수에 해당하는 부분이, 두번째 인수에 같은 차례에 해당하는 부분으로 치환된다.소문자를 대문자로 치환공백문자를 탭문자로 치환여러개의 공백문자는 -s 옵션을 통해 squeeze될 수 있다.여러개의 공백문자는 -d
이를 이용하여 원하는 번째의 문자를 출력가능하다.다음과 같이 범위로 지정하여 사용할 수도 있다.구분자를 두어 원하는 field의 값을 출력할 수 있다.다음과 같이 2개의 filed값을 출력할 수도 있다.
기본 연습https://regexr.com/38bd56문자열을 검색하거나, 치환할 목적으로 고안된 특수한 문자열\[] : Character set. Match any character in the set.다음과 같이 범위로 지정할 수도 있다.set안에 쓰이면,
웹사이트 주소 패턴매칭 연습https://regexr.com/39p0t기본적으로 url에는 /가 들어가기 때문에, 이에 대해 이것을 메타문자가 아닌, 일반 문자로 인식하게 하는 방법으로서 백슬래시를 앞에 추가시켜줘야 한다.이에 대한 작업은 .에 대해서도 똑같이
HTML5 CSShttps://regexr.com/45e2v\[] : Character set. Match any chracter in the set.0-9a-fA-F : 숫자와 모든 알파벳을 포함하는 표현식0-9 : Range. Matches a charac
IP 주소 - 정규 표현식 연습 사이트https://regexr.com/38odc\[] : Character set. Match any character in the set{1,3} : Quantifier. Match between 1 and 3 of the
패턴 매칭 - 정규 표현식 연습 사이트https://regexr.com/3bd56^ : Beginning. Matches the beginning of the string. or the beginning of a line if the multiline flag
READ 명령에서 사용하는 default 변수명이다.^ : Beginning. Matches the beginning of the string, or the beginning of aline if the multiline flag (m) is enabled.\[] :
^ : Beginning. Mtaches the beginning of the string, or the beginning of a line if the multiline flag (m) is enabled.\[] : character set. Match any cha
다음과 같은, 이름이 쭉적힌 president.txt가 잇다.. : Dot. Matches any character excpet line breaks.: Quantifier. Match 0 or more of the preceding token.count 하는 옵션이다
원하는 line의 줄만 출력하게 할 수 있다.특정 단어를, 특정 단어로 변경할 수 있다.다만 이경우에는, 한 line에 해당 이전 단어가 두번 이상 나오는 경우, 앞의 경우만 바뀐다.\-g옵션 : 이 경우에는, 한 line에 해당 이전 단어가 두번 이상 나오더라도, 모
중괄호{} 확장의 이용은 다음과 같다.eval을 사용하면, 입력 라인의 구문 분석이 두번된다. 코드를 동적으로 평가하는 데 사용된다.다음의 예에서 $length를 사용가능하게 하는 기능을 한다. -> 중괄호 확장에서는 원래, 변수 확장이 일어나지 않기 때문이다.다음과
다음과 같이 두 가지 방법으로 명령 대체가 가능하다.명령 대체를 사용할 경우, 해당 명령어가 먼저 실행되고 이후, 다른 명령어들이 실행되는 순서로 진행된다.다음과 같은 형태로, 논리 연산자와 함께 사용하여 일정 프로그램 실행의 흐름을 만들어볼 수도 있다.
산술 연산을 위해 다음과 같이 $(())안에, 수행하고자 하는 산술 연산을 적용시키는 것을 말한다.산술확장 내부에서는, 변수명에 달러기호$를 생략할 수 있다.다음과 같이 증감 연산자도 사용이 가능하다.linux에서 true는 숫자 0으로 해석이 된다.
$? : 가장 최근 시간의 실행 명령어에 error가 발생했는지 여부를 0과 1로 저장한다.쉘 스크립트 종료를 의미한다.0이 아닌 숫자라면, 같은 의미로 사용이 가능하다.
command1이 성공적으로 실행되지 않은 경우에, command2를 실행한다.command1과 command2를 실행한다.
말그대로 명령을 분리해주는 역할을 하는 것으로, 한줄에 여러개의 라인을 입력할 수 있게 해준다.원래는 다음과 같은 형태를 갖는다.
일정 부분을 묶어서 처리할때 쓰는 방법이다.중괄호로 묶어주면 된다.사용시 주의사항은, 끝의 중괄호 앞에 세미콜론;을 붙여줘야 한다는 것이다.
다음과 같이, if .. else .. fi 와 같은 구조로 이루져 있다.
\[..]]를 사용하면 다음과 같이, '>'를 redirection 문자가 아닌, 비교 문자로서 인식하도록 한다.\[..]]를 사용하면 다음과 같이, 변수안에 공백이 있어도 비교 변수로서의 사용을 가능하게 한다.
다음과 같이 인용부호를 사용한다면, 공백문자를 비교구문에 사용할 수 있다.인용부호를 사용하지 않고, 다음과 같이 \[..]를 사용할 수도 있다.
-f file의 존재유무를 비교할 수 있게 한다. 이외에도 다음과 같은 비교 메타 문자열이 존재한다. -e FILE : 파일이 있는 경우 True -f FILE : 파일이 일반 파일인 경우 True -d FILE : 파일이 디렉토리인 경우 True -h FILE :
while ~ do ~ donefor ~ do ~ done위의 구문은 다음과 같은 구문으로 해석될 수 있다.ex) 1부터 100까지 더하는 함수를 만들어보자.
여러가지 형식으로 다음과 같이 출력 가능하다.다음과 같이 중간에 개행도 가능하다.
shell script에서는 인용부호를 사용해야 할 때와, 사용하지 않아야 할 때를 구분할 줄 알아야한다.(1)(2)
일련의 숫자 생성시 유용한 명령어이다.일련의 감소 숫자 생성도 가능하다.다음과 같이 몇배수로 만들지도 설정이 가능하다.seperator 지정이 가능하다.
case ~ in ~ ;; ~ esac
PS3 : select옵션을 처리할 때, 나타나는 문자열이다.case문과 같이 사용하자고 한다면, 다음과 같은 shell script를 작성할 수 있다.
배열의 원소 구분은 쉼표 가 아닌, 공백for i in "${!array@}": 반복문을 활용할때 많이 사용되는 구문${!array@}: 배열의 index number를 갖는다.다음과 같이 key:value 형태의 배열 활용도 가능하다.
find . -iname "\*.jpg" -print0 | xargs -0 rm -rf\-iname: 대소문자 허용\-print0: find한 문자끝에 null문자 삽입| xargs: 앞의 실행 명령어의 결과를 뒤의 명령어의 인수로서 사용\-0: null문자를 기준으로
$1, $2, $3 ... ${10}, ${11}과 같은 것으로, 매개변수 입력을 받을 때 사용 가능특정 확장자 파일을, 다른 확장자 파일로 바꾸는 스크립트는 다음과 같다.
하지만 위와같이 환경변수를 할당하는 경우, 세션에 재접속을 하게 되면 해당 환경변수는 이전의 값으로 돌아와있다. == 영구적인 반영이 아님해당 세션이하의 범위에서는 환경변수값이 유지된다. == 다른 세션으로의 이동 or shell script 작성등 \- 그러나, 정
mydate.sh은 다음과같다.sandbox형태로 처리하기 하는지 확인을 위한 작업은 다음과 같다.쉘스크립트 안과 밖의 할당 범위가 다르다.
표준 입력(stdin): 파일 디스크립터 0표준 출력(stdout): 파일 디스크립터 1표준 오류(stderr): 파일 디스크립터 2위의 구문은 다음과 같이 표현할 수도 있다.즉, 리다이렉션은 표준 출력을 기본값으로 한다.">": Overwrite">>": append