일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- tar
- CodeEngn
- crack
- swing
- ZIP
- John the ripper
- ctf-d
- 포렌식
- 파일해시생성
- 안티디버깅
- 디스크
- 리버싱핵심원리
- Frida
- K-shield Jr 10기
- shadow
- K-sheild Jr
- 모바일프로그래밍
- upx
- 써니나타스
- Interceptor
- 케쉴주
- Mobile
- 침해사고대응
- Reversing
- disk
- Autoware
- SW에듀서포터즈
- Multimedia
- Android
- Today
- Total
물먹는산세베리아
[Linux] 4_1. 명령어 정리 및 실습 본문
1. 쉘 스크립트
- 만들기
vi 편집기로 hello.sh라는 파일을 만들었다.
편집기로 다음과 같은 내용을 입력한 후 저장하고 빠져나왔다.
#! 매직 넘버, 스크립트를 처리할 프로그램(인터프리터)이다.
# 주석
echo 화면에 문자열 출력하도록 한다.
exit 10 종료상태
chmod 명령어로 hello.sh 파일에 실행권한을 부여하였다.(+x)
두 가지 방법으로 실행할 수 있다.
- ./hello.sh
- bash hello.sh
실행권한이 부여되면, 쉘이 스크립트 언어로 인식하여 실행한다.
종료 exit
exit [종료상태]
그림2 참고
- 종료 값을 지정하며 스크립트를 종료한다.
- 종료 상태의 범위: 0~255, 0은 성공, 나머지는 오류코드이다.
- $?에 저장 상태가 저장된다. 즉, echo $?를 입력하면 가장 최근 명령어의 종료 상태를 보여준다.
2. 변수 사용과 매개변수
변수 선언 ( 변수명=값 ) *= 양옆에 공백 X
변수 사용하려면 선언을 꼭 해주어야 한다.
- 변수명 name에 swing이라는 값을 넣어주는 방식으로 변수 선언을 하였다.
- $name에 swing이 들어가 출력되었다.
- &( )은 실행 결과를 보여준다.
- &(( ))은 계산 결과를 보여 준다.
- x, y에 선언된 값을 보이기 전에 echo를 먼저 입력한 후 echo와 변수값을 같이 가져온다.
- " " 주의하기
" " vs ' ' vs 그냥 echo
- " "는 선언된 값을 출력
- ' '는 $의 의미를 없앤다. ' '없애고 그대로 출력
- 따옴표 없는 그냥 echo는 화이트 스페이`스를 보존한다.(띄어 쓰기를 아무리 길게 해도 한칸으로 출력한다.)
역따옴표 ` `
= $( )
실습1.
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.
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의 내용을 약간 수정하였다.
'첫번째 매개변수를 컴파일 하고 컴파일에 성공하면 실행 파일을 실행시킨다.'
컴파일에 성공하였기 때문에 실행파일도 실행되었다.
||
명령어1 || 명령어2 논리합
- 명령어1의 실행 결과가 실패(종료 상태 !=0)이면 명령어2를 실행한다.
'swing 이라는 빈 파일을 생성하는데 실패하면 failed라는 파일을 만들어라.'
결과적으로 swing이라는 파일만 생성되었다.
왜냐하면 swing 파일을 만드는 데 성공했기 때문에 failed이라는 파일을 만들라는 명령이 실행되지 않았다.
3. 입력, if
사용자 입력 read
read는 사용자를 입력받을 수 있는 명령어 이다.
따라서 read1.sh 파일을 실행할 경우 name에 내가 원하는 말을 입력할 수 있다.
출력 결과에는 $name에 내가 쓴 단어가 출력된다.
사용자 입력 read + if~else
출력과 입력을 한 행에서 처리할 때는 옵션 -p를 쓴다.
1) if [조건]; then
2) if [조건]
then
fi는 c언어의 }와 같은 역할
*if문 에서는 띄어쓰기 주의!
같을 때는 same, 다를 때는 Not same이 출력되었다.
문자를 통한 입력
명령 << TERMINATOR
입력내용:
TERMINATOR
FF 자리는 입력 종료 문자를 받는 곳이다. FF가 또 입력될 때 까지 키보드 입력을 받는다.
'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 |