[공부] 프로그래밍/Linux

LPIC level 1 102 공부 - 1장 정리 (쉘, 스크립트)

woodisco 2023. 9. 10. 13:41

 

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을 반환