# shell
shell : Borune, C, Tcsh, Bash shell 이 있습니다. Linux에서의 디폴트 쉘은 Bash쉘입니다. 대부분의 Linux 머신에서의 오픈소스
소프트웨어는 Bash 쉘로 짜여져 있습니다.
일반사용자 Bourne, Bash,. Korn에서는 $, 관리자는 모두 #으로 쉘 프롬프트(prompt)가 표시됩니다.
Bash 쉘은 대부분 /bin/bash에 자리잡고 있습니다.
<shell 관련 명령어>
ps -p $$ 현재 사용자의 쉘을 나타냄
bash : bash쉘로 바뀜
chsh -s /bin/tcsh : tcsh로 쉘 바꾸기
...

변수명은 영문자나 _(언더바)로 시작합니다. 대소문자를 구분합니다. ?, *와 같은 예약어는 사용할 수 없습니다. 값을 대입할 때 =을 사용하는데
= 전후에는 빈칸이 있어서는 안됩니다. == equal, != not equal, =은 우측의 값을 좌측 변수명에 대입한다는 의미입니다.
변수명의 값에 ''와 ""를 붙였을 때 의미가 달라질 수도 있고, 변수명에 ''와 ""를 붙였을 때에도 달라질 수 있으므로 주의해야 합니다.

변수는 메모리상의 저장공간에 저장되는 특정 이름이고 값을 가지고 있습니다. 그러므로 이 이름으로 다른 여러 값을 대입해도 되기 때문에 변수라고 합니다
var1=10, var1='Hello World!' 해도 된다.
이 변수가 저장된 메모리 공간의 주소(16:hexadecimal)를 지시해서도 값을 얻어낼 수 있는데 이런 경우를 포인터(pointer)를 사용한다고 합니다.
변수에는 시스템변수 , 사용자정의변수, 환경변수 등이 있습니다.
시스템변수는 보통 대문자로($USER, $PS1, $HOSTNAME...) 되어 있고 별다른 일이 없으면 변경하지 않는 것이 좋습니다.
echo와 printenv 명령어로 확인할 수 있습니다.
일반적으로는 사용자정의 변수를 사용해서 쉘 스크립트를 생성합니다.
환경변수는 export 변수_명=값 의 형태입니다. 콘솔에서 export PATH=$PATH:$HOME/bin 해주면 현재 세션에서
일시적으로 사용하는 것이 되고, /home/centos/.bash_profile 파일에 넣어주면 늘 사용하게 됩니다.
/a , \a, \t, \n, \#(갯수)......
상수 : constant 라고 표시하는데 메모리에 저장된 값이 변경되지 않는 경우입니다.
readonly var=100, 혹은 declare -r var=100식으로 표시합니다. 이 경우에 var=200식으로 변경이 불가합니다.
배열 : array라고 표시하는데 같은 종류의 변수를 일일이 선언하지 않고 일괄적으로 하나의 변수명으로 묶어서 요소를 표시하는 방법입니다.
${배열_명[@]} 해서 모든 배열을 보입니다.
${배열_명[*]} 해서 포인터 개념으로 메모리 주소로 가서 값을 가져올 수도 있는데 잘 사용하지 않습니다.
${배열_명[1]} 해서 두번째 요소를 가져올 수 있습니다.
*** 사용자의 로그온 정보를 볼 때에는 last, lastb가 있고, 해당 사용자의 정보는 w, who를 주로 사용합니다.
btmp, wtmp, utmp 세 파일이 있는데 wtmp는 /var/log/wtmp에 있고 last 명령어에 대한 로그기록입니다. 시간별 이벤트, 로그온한 호스트,
IP... 등의 정보를 보입니다. utmp는 /var/run/utmp 에 있는데 w, who 명령어에 대한 로그기록입니다. 성공적으로 로그온한 사용자에 대한 정보를
가지고 있습니다. btmp는 /var/log/btmp에 있는데 lastb 명령어에 대한 로그기록을 가지고 있는데 주로 실패한 로그온 기록을 가지고 있습니다.
w, who -> utmp
last -> wtmp
lastb -> btmp
if 조건문
<형태>
if [ 조건 ] ; then
조건이 참일 때의 실행문
fi
if [ 조건1 ] ; then
조건1이 참일 때 실행문
elif [ 조건2 ] ; then
조건2가 참일 때 실행문
else
조건1,조건2가 참이 아닐 때 실행문
fi
조건연산자 : -d directory, -e file(exist), -f file(file), -x file(executable), -w file(writable), ...
비교연산자 : -eq(==), -ne(!=), -gt(>), -ge(>=), -lt(<), -le(<=), ...
관계연산자 : -a(&& : AND), -o(|| : OR)
<case 의 형태>
case 조건 in
조건1)
실행문 ;;
조건2)
실행문 ;;
...
*)
실행문
반복문 : 반복적인 작업을 수행시키는 문장
<반복문의 형태>
for 변수 in 인자1 인자2 인자3 ...
do
실행할 문장
done
=> for (( 최초_값;마지막_값;증감_연산자(++,--) ))
while [ 조건 ] <= [ 1 ], [ true ], [ 1 > 0 ], [ : ]
do
실행할 문장
done

'Linux' 카테고리의 다른 글
| Linux_18Day (0) | 2019.06.16 |
|---|---|
| Linux_17Day (0) | 2019.06.09 |
| Linux_16Day (0) | 2019.06.04 |
| Linux_15Day (0) | 2019.06.03 |
| Linux_14Day (0) | 2019.06.02 |