Shell Script(2) if문 for문

YU YU·2021년 8월 31일
0

경일_Linux

목록 보기
4/4
post-thumbnail

1. if문


끝낼때는 fi로 끝낸다.
조건의 비교연산자는 숫자일때와 문자열일때가 다르다.
숫자일때는 '1=1'이지만
문자열일때는 'hello'.equels('hello')

보통 사용하는 목적
숫자비교
디렉토리
파일체크

if문에 비교연산자(불리언)형식이 아니어도 가능하다



결과는 다음과 같이 나온다.

1-1.숫자 비교


이렇게 입력하고 실행시켜보자.

그러면 위와 같은 결과가 나온다.

👉shell script에서의 비교연산자
-lt: less then(<)
-le: less equel(<=)
-gt: greater then(>)
-ge: greater equel(>=)
-eq: equel (==)
-ne: not equel(!=)


밑에 위와 같은 코드를 추가해준다. 그리고 결과를 보면 다음과 같이 나온다.

❗❗주의해야 할 점(띄어쓰기)
✅:띄어쓰기 🔽:엔터
if✅[✅1✅-gt✅2✅]🔽
then🔽
echo✅"1은 2보다 크다"🔽
fi
이런 식으로 띄어쓰기를 해야한다.

1-2. 디렉토리 확인

log라는 폴더가 있는지 없는지 확인해보자.


log폴더가 없음을 알 수 있다. if문으로 확인해서 없으면 만들어보자.



만들어졌음을 알 수 있다.
쉘스크립트 뿐만이 아니라 node.js로도 이러한 작업을 할 수 있다.

1-3.파일 찾기


없음을 알 수 있다.


다음과 같이 test.sh 파일을 scripts/log폴더 안에 만들어준다.

파일이 있다고 바뀌었음을 알 수 있다!

안되면 다음과 같이 만들어도 된다

?그 안에 'echo hello'를 어떻게 넣는지 모르겟다

1-4.매개변수 전달



2개의 변수를 받지 못하는 것을 알 수 있다.

2.for문

2-1.모양

javascript에서의 for문

for(i=0; i<10; i++){
내용
}

shellscript에서의 for문

구분값이 없다.


?숫자로 10번 반복하는거 처럼은 못하ㅏㄴ?


이렇게하면 자바스크립트처럼 쓸 수 있다.

bash
zsh

2-2.디렉토리리리

2-3.디렉토리리리리리리

3.파일 찾기

$ find ./test.txt

3-1 모든 디렉토리에서 찾기

파일을 깔긴 깔았는데 어디에 깔렸는지 모를 수 있다.
만약 디렉토리 전체에서 node라는 이름을 가진 파일을 싶다면
$ find / - name node
최상위부터 들어가면서 찾는다. 이렇게하면 파일이든 폴더든 다 찾는다.
파일만 찾고 싶을 때는 옵션을 달아준다.
$ find / -type f -name node
타입이 파일인것만 이름이 node인 것을 찾아준다.

$ find / -type f -name "*.js"
파일 검색범위 줄이기

홈 디렉토리에서 js파일들을 찾으려면
$ find ~/ -type f -name "*.js"
$ find ~/ -type f -name "server.js"

$find ~/ type f --exec -name "server.js"

예를 들어 nginx가 어디 깔렸는지 모를 때,
$find ~/ type f --exec -name nginx

-exec?

4.user 생성하기


$ vi /etc/passwd
를 터미널에 입력하면 다음과 같이 계정명들이 나온다. root 게정 및 맨 밑에 보면 내 계정도 나온다.

4-1 계정 생성하기

$ sudo useradd -m [계정명]
-m: 홈 디렉토리에 계정을 만들어준다. 이 때 기존 계정의 비밀번호를 입력해주어야 한다.


$ sudo passwd [생성한 계정명]
새로 만든 계정의 비밀번호를 설정할 수 있다.
나는 1234로 해주었다.(깜거을까봐....)


4-2. 계정 바꾸기

$ su [계정명]
입력해주면 내가 바꾸는 계정의 비밀번호를 입력하라고 뜬다.

그리고 홈 디렉토리로 가보자.

바꿈과 동시에 예전의 투박한 화면으로 돌아온 것을 알 수 있다.
zsh로 세팅하지 않아서 다시 이렇게 된 것이다. 즉, 계정별로 환경을 구축할 수 있다.

여기서 다른 계정의 디렉토리의 파일을 수정해보자. 나는 node2.txt를 수정해보도록 하겠다. 볼 수는 있지만 수정은 되지 않는다.


그러면 관리자 계정으로 들어가서 수정을 해보자.


이러한 오류가 뜨면서 되지 않는다. 왜냐하면 나는 seunghee가 아니라 SH2 계정의 관리자계정이기 때문이다.

그러면 다시 seunghee계정으로 들어가서 권한을 허용해주자.

4-3. 계정별로 권한 설정해주기

$su [원래의 계정명]
을 입력해 원래 계정의 비밀번호를 입력해준다.
그리고는 sudoers 파일을 열어본다.

그러면 다음과 같은 파일이 열어질것이다.

#User privilege specification 부분에 새로운 계정명을 추가해주자.

위의 root계정과 똑같이 모든 권한을 허용해준다.
그런 다음
$ su [새로운 계정명]
을 입력하여서 계정을 바꾼다.

그리고 node2.txt를 바꿔보자.
$sudo vi [변경할 파일]

이제 수정이 된다.

이렇게 계정별로 자신의 디렉토리의 파일의 접근과 수정 권한을 바꾸는 권한의 여부를 다르게 설정할 수 있다. 그래서 어떤 사람은 심지어 내 계정의 파일을 보지도 못하게 할 수 있다.

profile
코딩 재밌어요!

0개의 댓글