SHELL 2장

문학적인유사성·2022년 3월 1일
0

misc.

목록 보기
7/32

aws로 만들어도 되는데, 계정 지금 정지당했어서.... ㅠㅠ 다음부터 root로 사용하지말자...IAM 무조건 만들자...

  • 참고 aws 리눅스 2 ami는 apt-get지원X, yum을 지원하더라...

vmware로 하는중...

-- $0 실행된 스크립트 이름
-- $1 파라미터 순서대로 번호 부여 10부터는 {}필요
-- $* 전체 인자값 ("$*"이렇게 사용시 param1 param2"param1 param2" 전부를 하나의 문자열로 인식 )
-- $@ 전체 인자값("$@" 매개변수를 문자열 별로 인식)
-- $# 매개변수의 총개수 
  • 특수 매개변수
    -- 프로세스ID 확인, 정상여부 확인
-- $$ 현재 스크립트 또는 명령어 PID
-- $? 최근에 실행된 명령어, 함수, 스크립트의 종료 상태
-- $! 최근에 실행한 백그라운드(비동기) 명령의 PID
-- $- 현재 옵션 플래그
  • ${param}
  • 변수를 초기화(할당, 치환)하기 위한 확장 변경자
-- ${param-string} 설정되지않은 경우 변수 치환
-- ${param:-string} null인경우 추가
-- ${param=string} 설정되지않은 경우 변수 저장 변수 치환
-- ${param:=string} null인경우 추가 
-- ${param+string} 설정된 경우 문자열로 변수 치환
-- ${param:+string} 설정X, null 이외 설정시 변수 치환
-- ${param?errormsg} 변수 설정시 변수긔 앖으로 사용, 설정X 표준오류 출력
-- ${param:?errormsg} 변수 null 이외의 값 변수값 사용, 변수 설정되지 않았거나 null인경우 에러 출력 종료
-- ${param:placetostart} 문자열인경우 시작 끝까지
-- ${param:placetostart:length} 길이까지만
  • unset 변수 해제
  • 변수 문자열 값을 변경하기 위한 매개변수 확장자 (경로, 파일이름 빼낼때 유용)
-- ${param#pattern} 앞에서부터 처음 찾은 패턴과 일치하는 패턴 앞의 모든 문자열 제거, *패턴앞필수
-- ${param##pattern} 앞에서부터 마지막으로 찾은 패턴과 일치하는 패턴 앞의 모든 문자열 제거, *패턴앞필수
-- ${param%pattern} 뒤에서부터 처음 찾은 패턴과 일치하는 패턴 뒤의 모든 문자열 제거, *패턴뒤필수
-- ${param%%pattern} 마지막으로 찾은 패턴과 일치하는 패턴 뒤의 모든 문자열 제거 , *패턴뒤필수
-- ${#param} 변수길이
-- ${param/find/change} 첫 번째 패턴에 해당하는 부분을 문자열로 변경, 문자열 지정 없는 경우 해당 문자열 제거
전체는 ${param//find/change}
-- ${param/#find/change} 시작 문자열이 패턴과 맞는 경우 문자열로 변경 
-- ${param/%find/change} 마지막 문자열이 패턴과 맞는 경우 문자열로 변경
  • if
if [ first condition ]
then
	~~~
elif [ second condition ]
then 
	~~~
else
	~~~
fi
if [ first condition] && [ second codition ] 이것도 가능!
  • switch-case 문
case $param in
	condition1)
    ~~~ ;;
    condition2)
    ~~~ ;;
    *)
    ~~~
esac
  • for문
for param in [range(list, array etc)]
do
	~~~
done

디렉토리도 가능 ex) $HOME/*
범위 설정 {first..last}, {fisrt..last..value}, ${array[@]}

for ((param=initparam;condition;value))
do
	~~~
done
  • while문
while [$param1 operator $param2]
do
	~~~
done
  • 문자열 연산자 (문자열 변수 null 체크, 저장 체크)
-z 문자열길이 0 true
-n 문자열길이 0이 아니면 true
  • 비교 연산자
-eq
-ne
-gt
-ge
-lt
-le

리다이렉션인지 비교연산자인지 구분이 힘들기 때문에 if문에서 (( )) 사용하자! 
>
>=
<
<=
  • 문자열 비교 연산자
=, ==
!=
> [[ ]]사용, 구분을 위해서
< [[ ]]사용, 구분을 위해서
  • 논리 연산자
-a and
-o or
&& 
|| 
  • 디렉터리 연산자
-d 디렉토리 이면 참
-e 디렉터리이거나 파일이면 참
  • 파일 연산자
-f file
-L link
-r directory, read
-w directory, write
-x 
-s size 0 over
-O equal script owner
-G equal script group
  • 파일 비교
-nt newer than
-ot older than
-ef equal file

정규 표현식 (이거 진짜 어려워, 헛갈려 ㅠㅠ)

예제 깃허브 보면서 연습해야게따... 정규 표현식만 나오면 자신감 박살...

. 뉴라인을 제외한 한개의 문자와 일치
? 자신 앞에 나오는 정규 표현식이 없거나 하나가 일치, 대부분 한개의 문자와 매치할때 사용
* 바로 앞 문자열, 정규 표현식에서 한번 이상 반복되는 문자
+ 자신 앞에 나오는 하나 이상의 정규 표현식과 일치, *과 비슷하지만 반드시 하나 이상
{N} 정확히 N번
{N.} N번 or 이상
{N.M} N부터 M번까지, 넘으면 안됨
- 범위
^ 라인 시작에서 공백 문자열, 목록의 버위에 없는 문자열 의미
$ 라인 마지막 공백 문자열
^$ 빈 줄
[...] 단일 정규 표현식에서 문자들을 집합으로 묶음
\ 특수 문자를 원래의 문자 의미대로 해석
\b 단어끝의 공백 문자열
\B 라인 끝의 공백 문자열
\< 단어 시작에서 공백 문자열
\> 단어 끝에서 공백 문자열


[:alnum:] 알파벳이나 숫자로 이루어진 문자열 [A-Za-z0-9]
[:alpha:] 알파벳 문자 [A-Za-z]
[:blank:] 스페이스, 탭
[:cntrl:] 제어 문자
[:digit:] [0-9]
[:graph:] 출력 가능한 그래픽 문자, ASCII 33 ~ 126 사이 문자열과 일치, 스페이스 제어문자 제외 [:print]
[:lower:] [a-z]
[:print:] 스페이스 문자 포함
[:punct:] 문장부호
[:space:]
[:upper:] [A-Z]
[:xdigit:] 16진수, [0-9a-fA-F]
  • 메타 문자* 문자와 문자 사이 또는 문자 뒤에 어던 문자열이 와도 상관이 없는 경우
  • \ 특수문자를 원래 의미대로 해석
profile
유사 IT 항해

0개의 댓글