생활코딩 – 리눅스
https://www.youtube.com/watch?v=DsG-JWrFJTc&list=PLuHgQVnccGMBT57a9dvEtd6OuWpugF9SH
https://opentutorials.org/module/2538/14160
- 파일 & 디렉토리 1
- 파일 & 디렉토리 2
- –help 와 man
- 필요한 명령을 검색으로 찾는 법
- 파일 편집 (nano)
- 패키지 매니저 (apt-get 또는 yum)
- 파일 다운로드 : wget
- 소스 다운로드 : git
- CLI 사용 이유 – 연속 실행 (세미콜론)
- CLI 사용 이유 – 파이프라인
- IO Redirection1 : output
- IO Redirection2 : input
- IO Redirection2 : append
- Shell 1 intro
- Shell 2 : bash vs zsh
- Shell script
1. 파일 & 디렉토리 1
ls
현재 디렉토리의 파일 목록을 출력하는 명령어.
‘ls -al’ : -a 는 숨김 파일 표시, -l 은 자세히 표시
pwd
현재 위치하고 있는 디렉토리를 알려주는 명령어
mkdir
mkdir 새로 생성할 디렉토리명
2. 파일 & 디렉토리 2
cd
cd 이동할 디렉토리의 경로명
상대경로
현재 디렉토리의 위치를 기준으로 다른 디렉토리의 위치를 표현
..
부모 디렉토리를 의미합니다.
cd ..
현재 디렉토리의 부모 디렉토리로 이동하는 명령입니다.
.
현재 디렉토리를 의미
절대경로
최상위 디렉토리를 기준으로 경로를 표현하는 것을 의미합니다.
최상위 디렉토리는 루트(root) 디렉토리라고 하고 ‘/’ 입니다.
‘cd /’는 최상위 디렉토리로 이동한다는 뜻입니다.
‘cd /home/egoing’은 현재 디렉토리가 무엇이건 언제나 ‘/home/egoing’을 의미하는데 이런 식의 경로 표현을 절대경로라고 합니다.
rm
rm 파일명
rm -r 디렉토리명 // -r은 디렉토리 및 서브 디렉토리를 재귀적으로 지움
–help
명령어 뒤에 –help를 붙이면 명령의 사용설명서가 출력됩니다.
예)
ls –help
rm –help
mkdir –help
pwd –help
3. –help 와 man
명령어의 도움말을 보려면
방법1
–help 를 붙인다.
방법2
man 을 이용. 예) man ls
1) sort 검색 하려면 => /sort
2) /sort 검색 후에 n 키를 누루면 검색한 sort 를 하나씩 스크롤해준다.
3) 종료는 q
mkdir -p dir1/dir2/dir3/dir // -p 옵션은 상위 디렉토리가 없다면 만들어준다.
4. 필요한 명령을 검색으로 찾는 법
mkdir 폴더명
디렉토리 생성
cp 원본파일 대상파일
파일 복사
mv 원본파일 대상파일
파일 이동과 파일 이름 변경
5. 파일 편집 (nano)
6. 패키지 매니저 (apt-get 또는 yum)
sudo apt-get update (패키지 목록 다운로드)
sudo apt-cache search htop (패키지 목록에서 htop 프로그램 찾기)
top (작업관리자) q는 빠져나가기
htop (작업관리자 더 그래픽하게)
sudo apt-get (도움말)
sudo apt-get install htop (htop 설치)
sudo apt-get upgrade htop (최신 버전으로 업그레이드)
sudo apt-get upgrade (설치된 프로그램을 모두 최신 버전으로 업그레이드)
sudo apt-get remove htop (htop 삭제)
sudo htop (더 정확하게 실행, 모두 표시)
Ubuntu의 apt-get 명령어 정리
https://blog.outsider.ne.kr/346
apt-get
커맨드라인 패키지 매니저
apt-get은 패키지에 대한 인덱스 정보를 가지고 있는데 이 인덱스 정보는 /etc/apt/sources.list에 있습니다.
sudo apt-get update
최신 패키지 목록을 다운로드 합니다.
sudo apt-get upgrade
설치된 패키지 업그래이드 : 설치되어 있는 패키지를 모두 새버전으로 업그래이드 합니다.
sudo apt-get dist-upgrade
의존성 검사하며 설치하기
sudo apt-get install 패키지이름
패키지 설치
apt-get –reinstall install 패키지이름
패키지 재설치
sudo apt-get remove 패키지이름
패키지 삭제 : 설정파일은 지우지 않음
sudo apt-get –purge remove 패키지이름
설정파일까지 모두 지움
sudo apt-get source 패키지이름
패키지 소스코드 다운로드
sudo apt-get build-dep 패키지이름
위에서 받은 소스코드를 의존성있게 빌드
sudo apt-cache search 패키지이름
패키지 검사
sudo apt-cache show 패키지이름
패키지 정보 보기
apt를 이용해서 설치된 deb패키지는 /var/cache/apt/archive/ 에 설치가 됩니다.
7. 파일 다운로드 : wget
wget https://www.youtube.com/download (파일 다운로드)
mv download hello.jpeg (이름 변경)
wget -O paris.jpeg 주소 (파일명을 지정)
ls -l
wget –help
8. Source download : git
Source download : git (버전 관리 프로그램)
sudo apt-get install git (없다면 다운로드하라)
사용법) git clone git주소 폴더 (github 의 소스 코드들을 폴더에 복제한다)
예) git clone https://github.com/facebook/react.git react_src
9. CLI 사용 이유 – 연속 실행 (세미콜론)
세미콜론으로 한 번에 두 개 이상의 명령어 실행 가능
mkdir why;cd why;pwd
10. CLI 사용 이유 – 파이프라인
| : 파이프 앞의 출력을 파이프 뒤의 입력으로 보냄
nano linux.txt
cat linux.txt (화면에 출력)
grep linux linux.txt (linux가 포함된 행만을 출력)
ls –help | grep sort (앞의 출력을 뒤 grep 의 입력으로 줌)
ls –help | grep sort | grep file (sort가 포함된 줄을 찾겨 그 결과에서 file이 포함된 줄을 찾음)
ps aux (현재 실행되고 있는 프로그램의 리스트 표시)
ps aux | grep apache (apach 가 들어있는 줄만 표시)
11. IO Redirection1 : output
파일에 저장하는 방법
– nano 를 이용
nano ls_result.txt (텍스트를 복사해서 붙여넣는다.)
– 리다이렉션 기호 ‘>’ 를 이용
ls -l > result.txt (Standard Output) stdout
cat result.txt
모니터로 출력이 기본인데 다른 곳으로 돌린다. 리다이렉션
rm rename2.txt (파일이 없으면 에러가 뜬다.)
rm rename2.txt > result.txt (1이 생략되어 있음)
rm rename2.txt 1> result.txt (1을 써도 됨, 위와 같음)
rm rename2.txt 2> error.log (Error에 대한 Standard Error) stderr
rm rename2.txt 1> result.txt 2> error.log (두개를 결합, 정상 실행은 result.txt 에 저장, 에러가 나면 error.log에 저장)
12. IO Redirection2 : input
cat hello.txt
hello
cat (기본적으로 사용자가 키보드로 입력하는 정보를 받음) Standard Input
hi
hi (위의 입력을 모니터에 출력함)
컨트롤 + D 종료
cat hello.txt (커맨드 라인 인자)
cat < hello.txt (hello.txt를 입력으로 받음) Standard Input
head linux.txt (앞부분 일부만을 출력 10줄)
head -n1 linux.txt (1줄만을 출력, 커맨드 라인 인자)
head -n1 < linux.txt (standard input)
head -n1 < linux.txt > one.txt (표준 입력 리다이렉션, 표준 출력 리다이렉션 이용
13. IO Redirection2 : append
ls -al > result.txt (덮어씀)
ls -al >> result.txt (리다이렉션 결과를 뒤에 추가한다.)
– mail 앱을 이용해서 표준입력 append 예제
mail egoing@gmail.com << hi
> my
> name
> is
> egoing
> eot
mail egoing@gmail.com << hello
> It’s
> me
> hahahoho
ls -al > /dev/null (화면에도 출력하지 않고 파일에도 저장하지 않고 싶을 때, 휴지통 개념)
14. Shell 1 intro
Hardware – Kernel – Shell – Applications
사용자가 명령어를 입력하면 Shell 이 명령어를 해석해서 -> Kernel이 이해할 수 있는 방식으로 전달 -> 하드웨어에 전달
다시 하드웨어 -> 커널 -> 쉘로 전달하여 처리결과를 보여줌
15. Shell 2 : bash vs zsh
echo “hello” (뒤에 문자열을 출력)
echo $0 (shell 카테고리에서 사용하고 있는 프로그램)
-bash
sudo apt-get install zsh
echo $0 (현재 동작하고 있는 shell을 출력)
zsh (지셀이 동작하고 있는 상태, 입력하는 명령은 zsh을 이용해서 커널로 전달)
(커널에서 만들어진 결과는 zsh를 통해서 화면에 출력되고 있음)
bash vs zsh
cd탭 을 눌렀을때 약간의 차이 (숨겨진 항목도 보여주는가 bash)
bash) cd /home/ubuntu
zsh) cd /h/u 탭키를 누루면 자동완성
bash) cd /home/ubuntu/why/
zsh) cd /h/u/w (자동완성됨)
zsh) cd why dir1 (why 디렉토리에서 dir1 디렉토리로 이동)
자기가 선호하는 shell을 설치하면 자기에 맞는 shell을 선택할 수 있음
각각의 사용자들이 shell을 선택해서 사용할 수 있음
User – Shell (built-in commands) – UNIX Kernel and Device Drivers
Unix Shell user -> Standard input -> Shell -> Kernel -> Unix OS environment -> Hardware
-> Unix OS environment -> Kernel -> Shell -> Standard output -> Unix Shell user
16. Shell script
Shell script 1 : intro
mkdir script
cd script/
touch a.log b.log c.log
ls -l
mkdir bak
cp *.log bak
ls -l bak
Shell script 2 : example
echo $0
-bash (Shell 카테고리의 프로그램)
ls /bin (기본 프로그램들이 있음)
nano backup
—————————————-
#!/bin/bash // bash 해석기를 사용하겠다.
if ! [ -d bak ]; then // 현재 디렉토리에 bak 디렉토리가 존재하지 않는다면
mkdir bak
fi // if의 끝
cp *.log bak
—————————————-
backup 파일에 실행가능의 권한을 줘야 한다.
chmod +x backup // x는 executable 약자로 실행가능한
rm -rf bak
ls -l
./backup // 현재디렉토리라는 걸 알려줘야함 앞에 ./ 를 붙임
ls -l bak