배운것/LINUX
리눅스 쉘 마스터 - 기초 명령어
SangPedia
2021. 9. 14. 13:42
1. echo의 사용법
- 인용부호 " " ,' '를 사용해 공백 문자 1개 이상일 때 사용할 수 있다.
echo hello world hello world echo "hello world" hello world echo hello world hello world
- -e 옵션은 특수문자를 사용할 때 제어문자를 사용할 때 유용하고 줄 바꿈 \n의 개수만큼 가능하다.
echo -e "hello world \n\n\n" hello world echo "hello world \n\n\n" hello world \n\n\n
- -n은 줄바꿈 처리가 되지 않는다
- echo $`\a`
- echo * 명령어로 파일 목록을 볼 수 있다. (=ls -ld)
- 화면 출력으로 사용 print와 동일하다.
2. 명령의 구조
- ls -l 자세한 목록 보기 명령어이다.
- ls -l /usr 명령어, 옵션, 전달 인자 순으로 나타나며 구분자 스페이스로 구분한다.
- ls —l /usr 하이픈 2개를 이용할 수 있는데 기능상으로는 차이점이 없다.
3. glob과 공백
- touch : 파일이 없으면 빈파일로 생성해주고 파일이 존재한다면 현재 시간으로 파일의 수정 시각을 업데이트 해준다.
mkdir mydir
cd mydir
ls
touch orange apple banana
ls
apple banana orange
ll
total 0
-rw-r--r-- 1 testwork UsersGrp 0 Sep 13 11:31 apple
-rw-r--r-- 1 testwork UsersGrp 0 Sep 13 11:31 banana
-rw-r--r-- 1 testwork UsersGrp 0 Sep 13 11:31 orange
- rm * (globe)를 활용하여 현재 디렉터리의 모든 파일을 제거한다.
rm apple rm * ls
4. 인용문
- 공백 문자에 ' '를 이용하지 않으면 공백 기준으로 파일이 생성된다. 따라서, 인용문(' ')을 이용한다.
- ' ' or " " 사용 가능하다.
rm 'Gone With the wind.mp3'
rm: can't remove 'Gone With the wind.mp3': No such file or directory
touch 'Gone With the wind.mp3'
ls
Gone With the wind.mp3
touch Gone With the wind.mp3
ls
Gone Gone With the wind.mp3 With the
wind.mp3
5. [..]와 테스트
- test 명령어 [ ] 대괄호는 테스트하는 개념으로 사용되며 현재 해당 디렉터리에 파일이 있는지 확인한다.
- 리눅스에서 공백 문자를 사용해야 하는 때를 잘 아는 것은 매우 중요하다.
cd/ ~/desktop
ls
cd mydir: [ -f "Gone With the wind.mp3" ]
cd mydir; [-f 'Gone With the wind.mp3']
bash: cd: mydir: No such file or directory
bash: [-f: command not found
# 대괄호를 내용에 붙어서 사용하면 error를 발생 함
6. 명령어(wc)
- http://github.com/guileschool/shell_cmd 실습 파일 다운로드
- 쉘 스크립트 작성에 있어 유용하게 사용할 수 있다.
# 지정한 파일의 단어 갯수
wc -w fruits.txt
# 라인 의 갯수
wc -l fruits.txt
# 해당 파일의 가장 긴 단어의 글자수
wc -L fruits.txt
# 해당 파일에 몇개의 글자수가 있는지 확인
wc -c fruits.txt
7. 명령어(tail)
- + 연산자를 이용해서 해당 라인부터 맨 마지막까지 출력하도록 한다.
pwd
seq 1 200 > num200
cat num200
# 뒤에 3개 출력
tail -n 3 num200
198
199
200
# 10번째 부터 출력
tail -n +10 num200
10
11
12
...
200
8. 별칭(alias)
- 단축 명령어로 사용, h 만 입력하면 history를 입력한 것과 동일하며 작동하며 편리합니다.
- alias는 전달 인자(argument)를 넘겨주지 못합니다. 함수(function)가 이에 대한 대안입니다.
- minicom은 Unix와 유사한 운영체제를 위한 텍스트 기반 모뎀 제어 및 터미널 에뮬레이터 프로그램입니다.
(CTRL+A을 누르고 X 입력으로 종료)
# sudo apt-get install minicom 명령어로 설치 - 스크립트 파일 내부에서 사용이 불가능하다.
# history h로 단축하기
alias h='history'
# -p를 제외하고 mkdir 사용하기 (하위폴더까지 생성)
alias mkdir='mkdir -p'
mkdir dir123/dir1/dir2/dir3
# minicom 사용을 alias로 단축하기
alias m='minicom -w -D/dev/ttyS0'
m
alias m='minicom -w -D/dev/ttyS0'
alias m1='minicom -w -D/dev/ttyS1'
alias m2='minicom -w -D/dev/ttyS2'
# 함수 사용의 예
function mm() { minicom -w -D/dev/ttyS${1}; }
mm 1
mm 2
9. 명령어(pushd/popd)
- pushd 명령어는 해당 경로를 stack에 저장하며 중첩하여 사용할 수 있다.
- popd 명령어를 이용해 이전 경로로 돌아가며 원래 경로로 복귀하는 방법으로 사용 가능하다.
- cd - : 명령어로 두 개의 경로를 왔다 갔다 할 수 있다.
pwd
/home/user/Desktop
pushd .
/home/testworks /home/testworks
cd /etc/
pushd .
/etc /etc /home/testworks
popd
/home/testworks
cd /var/log
popd
10. 명령어(printf)
- 화면에 형식화된 출력이 가능하다. ex) "%02d"
- 다음과 같은 용도로 사용 가능하며, -v legend 변수의 출력 결과가 변수에 저장됩니다.
- 변수의 선언 : 대입 연산자 앞과 뒤에 공백 문자가 없는 것이 특히 중요합니다. ex) name=michael
- 변수의 참조 : 선언한 변수를 참조할 때는 꼭 달러 싸인($)을 적어준다.
printf "%02d" 1
01
printf "%05d\n" 1
00001
name=michael; printf -v legend "%s jackson" $name; echo $legend
michael jackson
11. 명령어(read)
- 사용자로부터 입력을 받는다.
- 입력값이 v 라는 변수에 저장된다.
- -n 1 1 문자만 입력 받음 입력 후 엔터키를 누르지 않아도 되는 장점이 있다.
- -s silent 사용자의 입력을 화면에 에코 하지 않는다.
- -t 3 3초 동안 입력이 가능하다.
pwd
/home/user/Desktop
read num
12345
echo $num
12345
read -p "what is your phone number" v
what is your phone number010-123-1234
echo $v
010-123-1234
read -n 1 -p "Are you over 16?" v
Are you over 16?
read -s -n 1 -p "Are you ove 16?" v
read -s -n 1 -p -t 3 "Are you ove 16?" v
12. while.. do.. done
- while과 do 사이에는 참과 거짓을 나누는 TEST (비교를 위한 명령어나 키워드가 사용되는 곳)
평가가 참이 됐을 때 do와 done 사이에 결과를 실행한다.
no=1; while (( no < 10 )); do printf "%02d\n" $no; ((no++)); done
01
02
03
..
09
13. 실행파일을 사용하는 방법 4가지
- 첫 번째, 기존 실행 파일들이 존재한 경로에 복사하여 사용하기 (./ 없이 스크립트 이름만으로 실행이 가능)
ex) cp (파일명) /usr/bin - 두 번째, pwd 입력 후 실행 파일의 전체 경로를 표현하기
- 세 번째, 실행 파일의 경로를 환경 변수 PATH에 추가하기 ex) PATH=$PATH:경로
- 네 번째, 현재 경로에서 실행하기 ex) ./helloworld.sh
ehco 'echo hello world' > helloworld.sh
chmod +x hellowworld.sh
1)
sudo cp helloworld.sh /usr/bin
[sudo] password for user: root
# sudo 루트권한 부여 : 루트권한을 필요로 하는 명령을 실행할 때 사용
helloworld.sh
hello world
sudo rm /usr/bin/helloworld.sh
helloworld.sh
helloworld
#지우고 나서도 되는 이유는 PATH 안에 넣어 놓았기 때문임
2)
pwd
/home/user/Desktop/shell_cmd
/home/user/Desktop/sehll_cmd/helloworld.sh
hello world
3)
echo $PATH
/usr/local/sbin:/usr/local/bin: /usr/sbin: /usr/bin:/sbin:/bin:/usr/games:/usr/local/games
PATH=$PATH:~/Desktop/shell_cmd
echo $PATH
/usr/local/sbin:/usr/local/bin: /usr/sbin: /usr/bin:/sbin:/bin:/usr/games:/usr/local/games: /home/user/Desktop/shell_cmd
4)
./helloworld.sh
hello world
반응형