02 - 쉘 스크립트 맛보기
Chapter 02 리눅스 쉘과 명령어 기초
문제풀이
1. 모든 쉘에서 사용 가능한 변수 만들기
환경 설정 파일인 /etc/profile 혹은 ~/.bashrc 이나 ~/.bash_profile 파일에 변수를 선언하고 source를 통해 쉘 환경설정 파일을 즉시 적용한다.
2. "ABC"라는 이름의 디렉토리를 만들고, 그 안에다가 User의 Home 디렉토리를 출력하는 쉘 스크립트 파일을 만들기
mkdir ABC
cd ABC
vi ABC.sh
chmod +x ABC.sh
./ABC.sh
3. 1을 입력받으면 disk 사용량을, 2를 입력받으면 오늘 날짜를 출력하는 명령어가 포함된 case-test.sh 파일을 만들어서 실행해보자.
#방법 1
#!/bin/sh
var=$1
case $var in
1)
echo `df`
;;
2)
echo `date`
;;
esac
#방법 2
#!/bin/sh
echo -n "num : "
read num
case $num in
1)
df
;;
2)
date +%Y-%m-%d
;;
esac
4. 현재 위치를 알려주는 명령어를 ped라고 잘못 입력했을때 본래의 의도대로 재실행하려면 어떤 명령어를 사용해야하는가?
^e^d
- 현재 위치를 알려주는 명령어 = pwd
- ^old^new : 최근 히스토리 명령어에서 old 문자열을 new 문자열로 치환한다.
5. 쉘에 linux study 를 출력해보고 linux만 출력해보자.
echo linux study
echo !^
- echo !$ : !$ 는 가장 최근 히스토리의 명령에서 가장 최근(마지막)의 아규먼트를 의미
- echo !^ : !^는 가장 최근 히스토리 명령에서 첫번째 아규먼트를 의미
6. 현재 위치를 알려주는 명령어를 p만 입력하여 현재 위치를 출력하도록 하자
alias p=pwd
- alias : 명령의 닉네임
7. 다음 조건을 만족하는 쉘스크립트 작성 및 실행
조건
~/what_is_your_name.sh
파일 생성- 스크립트 실행시, 파라미터로 자신의 이름을 준다.
- 예시 :
sh what_is_your_name.sh chaehee
- 스크립트에 myname 이라는 변수를 선언하고, 첫번째 파라미터 값을 myname에 대입- 스크립트 실행 결과
- myname 변수를 출력
- 만약 파라미터값이 없는 경우
sorry
출력
- 스크립트 실행 결과
#!/bin/sh
myname=${1:-sorry}
echo $myname
8. dir1, dir2, dir3, dir4, dir5 디렉토리를 명령어 하나로 생성하고 삭제해보기
mkdir dir{1,2,3,4,5}
rm -d dir{1,2,3,4,5}
9. 입력한 디렉토리의 모든 파일 목록을 211124.txt 파일에 저장하는 출력하는 쉘 스크립트(pre.sh)를 작성해보자
#/bin/sh
read dir
ls -al $dir | grep ^- > 211124.txt
cat 211124.txt
- ls -al : 모든 파일 목록을 보여줌
- ^- : -로 시작하는 목록을 보여줌 (파일의 경우 -로 시작하고 디렉토리는 d로 시작함)
10. 작업 디렉토리를 입력 받아 해당 디렉토리에 파일 수와 디렉토리 수를 출력하는 쉘 스크립트(pre2.sh)를 작성해보자
#/bin/sh
read dir
dir_cnt=`ls -al $dir | grep ^d | wc -l`
file_cnt=`ls -al $dir | grep ^- | wc -l`
echo "디렉토리 수 : $dir_cnt"
echo "파일 수 : $file_cnt"
- wc:해당 파일의 단어수를 알려주는 명령어
옵션 | 설명 |
---|---|
-c | 문자 개수만 보여준다 |
-m | 캐릭터 개수만 보여준다 |
-l | 라인수만 보여준다 |
-w | 단어 개수만 보여준다 |
-L | 가장 긴 문장의 길이를 보여준다 |
11. 두 수의 평균을 구하는 avg라는 함수를 만들어 보자. (쉘 스크립트를 사용하지 않고)
function avg() { echo "평균은 $[($1+$2)/2] 입니다." ;}
- 산술 표현식 = $[산술표현식] or $((산술표현식))
12. /etc/passwd 파일 중에서 root가 포함된 줄을 출력하는데 에러가 발생하면 grep.err파일에 저장하고 그렇지 않으면 오름차순으로 sort.out 파일에 저장하는 명령을 한줄에 실행하라
grep root </etc/passwd 2>grep.err | sort > sort.out
혹은
grep root /etc/passwd 2>grep.err | sort > sort.out
- sort : 파일 내용을 오름차순으로 정렬
Author And Source
이 문제에 관하여(02 - 쉘 스크립트 맛보기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@cherriverhee/02-쉘-스크립트-맛보기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)