코딩하는 문과생
[리눅스] 생활코딩, CLI와 쉘 본문
[GUI vs CLI]
왜 CLI를 사용하는가?
- 적은 cpu사용, 에너지로 돌아간다.
- 순차적으로 진행되는 일을 자동화하기 쉽다.
# 1. 디렉토리로 만든다.
# 2. 디렉토리로 들어간다.
$ mkdir why
$ cd why
# 순차적으로 실행
$ mkdir why; cd why
# pipeline
하나 프로세스의 결과값을 다른 프로세스의 입력으로 준다.
$ nano linux.txt
# 리눅스 설명 붙여넣기
$ cat linux.txt
# CLI에서 확인가능
$ grep linux linux.txt
# linux가 포함된 행만 출력
$ ls --help | grep sort | grep file
# ls 사용 설명서 중 sort가 포함된 행을 찾는다. 그 중 file이 포함된 행을 찾는다.
$ ps aux | grep apache
# 프로세스 중 apache를 포함된 행을 찾는다.
[IO Redirection]
Input, Output
Redirection : 방향을 바꾼다.
-Output
$ ls -l > result.txt
# ls -l 결과값을 파일로 저장하고 싶다.
# 이를 ***Redirection***이라 한다.
$ rm hello.txt
# 없는 값을 지운다. - 에러 발생
$ rm hello.txt 1> result.txt
# 1: 표준 출력
$ rm hello.txt 2> error.log
# 2: 에러 출력
$ rm hello.txt 1> result.txt 2> error.log
# 1: 표준 출력, 2: 에러 출력
-Input
$ ls -l
$ cat hello.txt
# hello
# 여기서 hello.txt는 파라미터
$ cat
# hi(input)
# hi(output)
# cat은 기본적으로 키보드를 표준입력으로 받는다.
$ cat < hello.txt
# 여기서 hello.txt는 ***Redirection***
$ cd why
$ head -n1 linux.txt
# 1줄만 출력
# 여기서 linux.txt는 파라미터
$ head -n1 < linux.txt
# 1줄만 출력
# 파일로 입력을 한다.
# 여기서 linux.txt는 ***Redirection***
$ head -n1 < linux.txt > one.txt
# IORedirection
- 추가적으로
$ ls -al > result.txt
$ ls -al > result.txt
cat result.txt
# 덮어쓰기
$ ls -al >> result.txt
cat result.txt
# 더하기
$ mail sijune@naver.com << eot
>hi
>my
>name
>is
>sijune
>eot
# 여러 입력값을 하나로 받기
$ ls -al > result.txt
$ ls -al > /dev/null
# 유닉스 계열의 휴지통
[쉘과 커널]
- 명령어를 해석하는 "쉘"
- 실제로 일을 하는 "커널"
- 왜 분리했을까?
아마 여러개의 쉘을 띄워서 작업이 가능
# ***bash***
$ echo "hello"
# hello
$ echo $0
# bash
# bash와 커널이 통신
$ zsh
# No such file
$ sudo apt-get install zsh
$ zsh
# ***zsh***
$ echo $0
# zsh
# zsh 쉘과 커널이 통신
# ***bash***
$ cd (tab)
# 숨김파일 O
# ***zsh***
$ cd (tab)
# 숨김파일 X
[쉘 스크립트]
- 여러 개의 명령을 순차적으로 해야할 필요가 있다.
- 필요할 때마다 작성하는 것보다 저장해놓았다가 사용하는게 편하다.
$ mkdir script
$ cd script
$ touch a.log b.log c.log
$ ls -l
$ mkdir bak
$ cp *.log bak
$ ls -l bak
# ***우리는 정기적으로 백업하고 싶다.***
$ ls /bin
# bin: 기본 프로그램이 위치
# script 도메인에서 작성
$ nano backup
# #!/bin/bash
# if ! [ -d bak ]; then
# mkdir bak
# fi
# cp *.log bak
$ ls -l
$ ./backup
# Permission denied
$ chmod +x backup
# 이 프로그램이 실행 가능하다는 것을 알려줘야 한다.
$ ls -l
$ rm -rf bak
$ ./backup
$ ls -l bak
'개발 관련 지식 > 리눅스' 카테고리의 다른 글
[리눅스] 생활코딩, 리눅스를 서버로 활용하기 (0) | 2019.12.20 |
---|---|
[리눅스] 생활코딩, 다중 사용자 (0) | 2019.12.19 |
[리눅스] 생활코딩, 실행 (0) | 2019.12.19 |
[리눅스] 생활코딩, 디렉토리, 파일, 프로세스 (0) | 2019.12.18 |
[리눅스] 생활코딩, 기본 명령어 (0) | 2019.12.16 |