LPIC level 1 102 공부 - 1장 정리 (쉘, 스크립트)
1-1 유저홈 디렉토리 내 파일에서 bash 쉘 환경의 커스터마이즈에 사용되는 것
: .bashrc 와 .bash_profile
1-2 bash를 로그인 쉘로 하는 모든 유저가 공통으로 사용 가능한 변수와 값을 설정
: /etc/profile
1-3 bash를 로그인 쉘로 하는 유저가 로그인할 때, 설정파일을 불러들이는 순서
: /etc/profile -> .bash_profile -> .bash_login -> .profile
1-4 ~/.bash_profile의 설명
: ~/.bash_profile 파일의 파미션에는 읽기 권한이 필요
이 홈디렉토리의 소유자인 유저는 읽기, 쓰기 권한을 가지고 있음
1-5 커맨드 cmd의 실행 결과를 쉘 변수 var에 격납
: var=$(cmd)
var=`cmd`
1-6 일련의 처리를 子쉘이 아닌 현재의 쉘에서 실행한 경우
: 쉘의 함수기능 function을 사용
1-7 실행하면 "Hello"라고 표시하는 함수 func1을 정의하고 있은 경우
: function func1 (){ echo Hello;}
-> function 함수명 (){실행하는 커맨드 리스트}
$ function func1 (){ echo Hello;}
$ func1
Hello
1-8 현재 실행 중의 쉘의 쉘변수 VAL을 서브프로세스로 부터 참조 가능하도록 하는 커맨드 : export VAL
1-9 쉘 내의 모든 쉘변수와 환경변수 또는 함수를 표시하기 위한 커맨드
: set, declare
1-10 alias의 목적
: 입력하는 커맨드라인를 짧게 하기 위해
-> alias는 임의의 별명을 부여 할 수 있다.
alias 삭제 : unalias
1-11 ls의 alias를 일시적으로 삭제
: \ls
1-12 bash의 프로젝트에서 echo $$ 실행
: bach 자신의 프로세스 ID
$$
|
쉘의 PID
|
$?
|
마지막에 실행 한 커맨드의 종료 값
|
$#
|
인수의 개수
|
$*
|
구별 문자에서 구별 되어진 모든 인수
|
$0
|
실행 파일명
|
$1, $2,,,
|
1번째의 인수, 2번째의 인수
|
1-13 커맨드가 정상 종료했을 때 값
: 0
1-14 표준적인 쉘 스크립트의 1번째행
: #!/bin/sh
-> 쉘 스크립트에서는 파일 1번째행은 #!으로 시작
1-15 쉘 스크립트의 1번째행에는 #!의 다음에 바이너리 커맨드의 파일 패스가 적혀 있다. 바이너리 커맨드의 역활
: 스크립트를 해석해서 실행
1-16 일반 유저가 자신의 홈 디렉토리 아래에 작성한 쉘 스크립트를 커맨드로서 실행하기 위한 최소한의 필요한 파미션
: r-x
1-17 아래의 쉘 스크립트 script-args.bash를 [./script-args.bash a b s]로 실행 했을 때 : ./script-args.bash a b
#!/bin/bash
ehco $0 $1 $2
-> $0에는 실행 파일명
$1에는 첫번째 인수
$2에는 두번째 인수
1-18 아래의 쉘 스크립트는 실행 유저의 홈디렉토리의 아래에 .bashrc가 있는지 알아본 후 존재한다면, ~/.bashrc exists! 라고 표시하는 프로그램
: fi
if [ -f ~/.bashrc ]; then
echo '~/.bashrc exists!'
_________________________
-> if문 : if 커맨드1
커맨드2
fi
-d 파일명
|
파일이 존재해, 디렉토리 파일이면 true
|
-e 파일명
|
파일이 존재하면 true
|
-f 파일명
|
파일이 존재해 통상 파일이면 true
|
-x 파일명
|
파일이 존재해 실행 가는 하면 true
|
-n 파일명
|
문자열의 길이가 0보다 크면 true
|
-z 파일명
|
문자열의 길이가 0이면 true
|
정수 1 -eq 정수 2
|
1=1 true
|
정수 1 -ge정수 2
|
1>=2 true
|
정수 1 -gt 정수 2
|
1>2 true
|
정수 1 -le 정수 2
|
1=<2 true
|
정수 1 -lt 정수 2
|
1<2 true
|
정수 1 -ne 정수 2
|
1<>2 true
|
1-19 test 커맨드에서 2개의 값을 비교하는데 사용되는 연산자
: -lt, -eq
1-20 아래와 같은 파일 /dev/sda1과 쉘스크립트 myprog가 존재하고 있으며 ./myprog /dev/sda1을 실행시
: -e is true라고 표시
// /dev/sda1
$ ls -l /dev/sda1
brw-rw---- 1 root disk 8, 1 6月 13 00:30 2019 /dev/sda1
// myprog
#!/bin/bash
if test -d $1; then
echo "-d is true";exit
elif test -f $1;then
echo "-f is true"exit
elif test -e $1;then
echo "-e is true"
fi
-> ./myprog /dev/sda1의 실행은 $1에는 /dev/sda1가 대입
test -d /dev/sda1, test -f /dev/sda1, test -e /dev/sda1순으로 체크
-d, -f는 false, -e true
1-21 아래의 빈칸 : do
#!/bin/sh
for i in 1 2 3 4 5
__________________
echo $1
done
-> for 쉘변수 in 값 리스트
do
커맨드
done
1-22 아래의 커맨드에 따른 처리 생성
: 12345
n=1
while [ $n -le 5]
do
echo -n $n // -n: 개행X
let "n=n+1"
done
1-23 아래의 쉘스크립트를 실행 했을때, 쉘 변수 a, b, c에는 어떤 값
: a에1, b에2, c에 3 4 5 6
read a b c <<END
1 2 3 4 5 6
END
1-24 seq 10을 실행하면?
: 1씩 증가하여 1부터 10까지 표시
-> seq 종료값
seq 초기값 종료값
seq 초기값 증가값 종료값
1-25 bash 스크립트중에서 커맨드가 정상 종료한것을 확인하고 싶은 경우
: 정상 종료값 0을 확인
-> true는 0, false는 1을 반환