본문 바로가기
  • 노션에서 삽질한 내용을 정리하는 블로그
카테고리 없음

Linux Shell : 1

by iamlucia 2020. 8. 10.

Linux Shell 의 필요성 


🟢 시간 절약

🟢 클라우드, 가상화와 연계된 작업진행 (자동화)

🟢 리눅스 시스템과의 유연한 연계(shell, python, perl)

🚨 BUT: 다차원배열이나 GUI와의 연계시 사용이 어려움

✔️ 인터프리터 언어: 파일의 상단부터 하단으로 한줄씩 차례대로 처리 (=python) 
✔️ Shell Script: 한 종이에 사용자로부터 입력을 받기 위한 명령문이나 다양한 실행문 삽입 가능 

Shell script


🔴👌 스크립트 실행 전, chomod 777 권한 조정 필요
🔴👌 #!/bin/bash :쉘스크립트 파일 가장 첫번째 줄에 적기
🔴👌  ./test1 : /bin/bash를 현재 위치로 가져와 실행하라는 뜻 
#!/bin/bash 
date 
echo "-----------------------------------------------------" 
echo "" 
who 
echo "---------------------finished------------------------"

 

출력 결과 1 

다양한 옵션 


여러 명령 사용하기

; : 앞의 명령의 결과가 비정상적인 결과여도 계속 진행
&& : 앞의 명령이 정상적인 결과여야 뒤의 명령도 실행

명령줄 한 줄에 출력하기 -n

# echo -n "What is your name? " : 

-n 옵션 없음: 커서 위치 아래쪽

 

-n 옵션 있음: 커서 위치 옆 쪽 

Redirection 


간단히 말해 표준 출력, 입력, 에러의 방향을 다르게 하는 것

 

$ date
Sun Jun 21 21:14:30 EDT 2020   # 원래는 모니터로 출력되지만
$ date > date.txt      # 입력의 방향을 텍스트파일로 재설정: 리다이렉션
$ cat date.txt 
Sun Jun 21 21:15:02 EDT 2020

 

표준입력(stdin)키보드로 입력하는데, 파일 디스크립터 숫자 0으로 지정되어있다.

 

표준출력(stdout)모니터로 출력되는데, 파일 디스크립터 숫자 1로 지정되어있다.

 

표준에러(stderr)모니터로 출력되는데, 파일 디스크립터 숫자 2로 지정되어있다.

 

✔️ 파일 디스크립터 숫자 : 프로세스에서 열린 파일의 목록을 관리하는 테이블의 인덱스 

변수 선언


# 전역변수 확인#
$ env 
$ printenv 

# export 활용하여 전역변수 설정 & 대문자 사용 # 
$ export TEST="testing"

# A=B 형식으로 지역변수 설정 #
$ test=testing
----------------------
$ VAR="test"
$ echo $VAR
test
$ VAR = "test"
bash: VAR: command not found...     # 띄어쓰기 no 허용
-----------------------
$ unset VAR     
# 환경변수 취소 

 

배열


여러 값을 저장할 수 있는 변수

 

$ test=(ONE TWO THREE FOUR FIVE)
$ echo $test       # 배열의 주소값[0]에 있는 인수 출력
ONE 

$ echo ${test[2]}
THREE

$ test[2]=third     # 배열 값 변경
$ echo ${test[*]}   # 배열 모든 값 출력
ONE TWO THIRD FOUR FIVE

$ unset test[2]
$ echo ${test[*]}
ONE TWO FOUR FIVE
$ echo ${test[2]}   # 2번째 자리는 값 없이 비어있는 상태"  
$ echo ${test[3]}   # 중간 자리가 사라진다고해서 뒤에 있는 값이 당겨오지 않음
FOUR 
$ unset test 
"test라는 변수 아예 삭제" 
-------------------
$ set MON TUE WED 
$ echo $1 
MON

$ echo $2
TUE

$ shift        # 왼쪽으로 당겨당겨: 맨 왼쪽에 있는 데이터는 폐기
$ echo $1
TUE