물먹는산세베리아

[Linux] 4_1. 명령어 정리 및 실습 본문

Linux

[Linux] 4_1. 명령어 정리 및 실습

suntall 2020. 6. 2. 10:04

1. 쉘 스크립트

- 만들기

vi 편집기로 hello.sh라는 파일을 만들었다.

그림 2

편집기로 다음과 같은 내용을 입력한 후 저장하고 빠져나왔다.

#! 매직 넘버, 스크립트를 처리할 프로그램(인터프리터)이다.

# 주석

echo 화면에 문자열 출력하도록 한다.

exit 10 종료상태

chmod 명령어로 hello.sh 파일에 실행권한을 부여하였다.(+x)

두 가지 방법으로 실행할 수 있다.

- ./hello.sh

- bash hello.sh

실행권한이 부여되면, 쉘이 스크립트 언어로 인식하여 실행한다.

 

종료 exit

exit [종료상태]

그림2 참고

- 종료 값을 지정하며 스크립트를 종료한다.

- 종료 상태의 범위: 0~255, 0은 성공, 나머지는 오류코드이다.

- $?에 저장 상태가 저장된다. 즉, echo $?를 입력하면 가장 최근 명령어의 종료 상태를 보여준다.

 

2. 변수 사용과 매개변수

변수 선언 ( 변수명=값 ) *= 양옆에 공백 X

변수 사용하려면 선언을 꼭 해주어야 한다.

name.sh (vi 편집기)
name.sh 실행결과

- 변수명 name에 swing이라는 값을 넣어주는 방식으로 변수 선언을 하였다.

- $name에 swing이 들어가 출력되었다.

- &( )은 실행 결과를 보여준다.

- &(( ))은 계산 결과를 보여 준다.

- x, y에 선언된 값을 보이기 전에 echo를 먼저 입력한 후 echo와 변수값을 같이 가져온다.

- " "  주의하기

 

" " vs ' ' vs 그냥 echo

- " "는 선언된 값을 출력

- ' '는 $의 의미를 없앤다. ' '없애고 그대로 출력

- 따옴표 없는 그냥 echo는 화이트 스페이`스를 보존한다.(띄어 쓰기를 아무리 길게 해도 한칸으로 출력한다.)

 

역따옴표 ` `

= $( )

 

실습1.

prac1.sh

prac1.sh 파일을 위와 같은 내용으로 만든 후 실행시켰다.

(사전에 chmod +x prac1.sh 를 입력하여 실행권한을 주었다.)

 

prac1.sh의 내용은 다음과 같다.

1. 홈 디렉토리로 이동한다.

2. password 디렉토리를 만든다.

3. password 디렉토리로 이동한다.

4. /etc/passwd 파일을 password 디렉토리로 복사한다.

 

실행화면

매개변수

$0 쉘 스크립트 이름

$* 입력된 매개변수 목록

$1 첫번째 매개변수

$2 두번째 매개변수

$# 입력된 매개변수 수

* 매개변수 a b c 를 "a b" c로 묶으면 a b를 하나의 매개변수로 인식한다.

* \(역슬래시) = ' ' ($의 의미를 잃는다. ' '빼고 $와 함께 그대로 출력)

 

실습2.

hello.c
param2.sh

gcc $1은 첫번째 매개변수를  컴파일해준다는 뜻이다.

' ./a.out'는 컴파일 후 생성된 a.out 실행파일을 실행해준다는 뜻이다.

먼저, hello.c 파일을 만들었고

그 후 param2.sh 파일을 만들었다.

param2.sh 파일을 실행하는 데 첫번째 매개변수로 hello.c가 들어왔으므로 이 파일을 컴파일 하고 실행시켜

Hello Linux가 출력되었다.

 

 

date

date + ([포맷])

 

명령어 조건 실행

&&

명령어1 && 명령어2 논리곱

- 명령어1의 실행결과가 성공(종료 상태 0)이면 명령어2를 실행한다.

param2.sh 수정

param2.sh의 내용을 약간 수정하였다.

'첫번째 매개변수를 컴파일 하고 컴파일에 성공하면 실행 파일을 실행시킨다.'

컴파일에 성공하였기 때문에 실행파일도 실행되었다.

 

||

명령어1 || 명령어2 논리합

- 명령어1의 실행 결과가 실패(종료 상태 !=0)이면 명령어2를 실행한다.

'swing 이라는 빈 파일을 생성하는데 실패하면 failed라는 파일을 만들어라.'

결과적으로 swing이라는 파일만 생성되었다.

왜냐하면 swing 파일을 만드는 데 성공했기 때문에 failed이라는 파일을 만들라는 명령이 실행되지 않았다.

 

 

3. 입력, if

사용자 입력 read

read1.sh

read는 사용자를 입력받을 수 있는 명령어 이다.

따라서 read1.sh 파일을 실행할 경우 name에 내가 원하는 말을 입력할 수 있다.

출력 결과에는 $name에 내가 쓴 단어가 출력된다.

 

사용자 입력 read + if~else

출력과 입력을 한 행에서 처리할 때는 옵션 -p를 쓴다.

1) if [조건]; then 

2) if [조건]

   then

fi는 c언어의 }와 같은 역할

*if문 에서는 띄어쓰기 주의!

 

 

실행화면

같을 때는 same, 다를 때는 Not same이 출력되었다.

 

 

문자를 통한 입력

명령 << TERMINATOR

      입력내용:

TERMINATOR

 

terminator1 파일 내용 FF 자리에는 뭐가 오든 상관 없다. cat은 파일 출력 명령어

FF 자리는 입력 종료 문자를 받는 곳이다. FF가 또 입력될 때 까지 키보드 입력을 받는다.

실행 권한은 이미 준 상태이다. (chmod +x)

'Linux' 카테고리의 다른 글

[Linux]4_3. if-else  (0) 2020.06.02
[Linux]4_2. read, 매개변수  (0) 2020.06.02
[Linux] 3_3. vi 편집기  (0) 2020.05.26
[Linux] 3_2. 파일 시스템 논리적 구조  (0) 2020.05.26
[Linux] 3_1. stat, 하드링크&소프트링크  (0) 2020.05.26