나만의 Shell command
Shell command 보관소
man
manual 확인
- ex) man python
mkdir
폴더 만들기
ls
현재 디렉토리의 파일, 폴더 list
- 옵션
- -a : .으로 시작하는 파일, 폴더를 포함해 전체 파일 출력
- -l : 퍼미션, 소유자, 만든 날짜, 용량까지 출력
- -h : 용량을 사람이 읽기 쉽도록 GM, MB 등 표현
- ex) ls -lh, ls -al
pwd
현재 폴더 경로를 절대경로로 보여줌 Print Working Directory
cd
폴더 변경 하기
echo
터미널에 text 출력
- ex) echo
pwd
: 해당 명령어 실행
vi
vim 편집기로 파일 생성, 수정
편집 모드
- dd : 현재 위치한 한 줄 삭제
- i : INSERT 모드로 변경
- x : 커서가 위치한 곳의 글자 1개 삭제(5x : 문자 5개 삭제)
- yy : 현재 줄을 복사(1줄을 ctrl + c)
- p : 현재 커서가 있는 줄 바로 아래에 붙여넣기
- k : 커서 위로
- j : 커서 아래로
- l : 커서 오른쪽으로
- h : 커서 왼쪽으로
ESC를 누른 후 콜론(:)을 누르면 나오는 Mode
- w : 현재 파일명으로 저장
- q : vi 종료(저장되지 않음)
- q! : vi 강제 종료(!는 강제를 의미)
- wq : 저장한 후 종료
- /문자 : 문자 탐색 - 탐색한 후 n을 누르면 계속 탐색 실행 set nu : vi 라인 번호 출력
bash
bash test.sh 쉘 스크립트 실행
sudo
관리자 권한으로 실행하고 싶은 경우 커맨드 앞에 sudo를 붙임
- sudo 명령어 : 최고 권한을 가진 슈퍼 유저로 프로그램을 실행
- “superuser do”에서 유래하고, 최근엔 “substitute user do”
cp
파일 또는 폴더 복사
- 옵션
- -r : 디렉토리를 복사할 때 디렉토리 안에 파일이 있으면 recursive(재귀적)으로 모두 복사
- -f : 복사할 때 강제로 실행
mv
파일, 폴더 이동
cat
특정 파일 내용 출력: concatenate
ex)
- 여러 파일을 인자로 주면 합쳐서(CONCAT) 출력 cat vi-test2.sh vi-test3.sh
- 파일에 저장하고(OVERWRITE) 싶은 경우 cat vi-test2.sh vi-test3.sh > new_test.sh
- 파일에 추가(APPEND) 싶은 경우 cat vi-test2.sh vi-test3.sh » new_test.sh
clear
터미널창을 clear한다
history
최근에 입력한 쉘 커맨드 history 출력
- !30 을 이용하여 30번째 명령어를 수행가능.
find
파일 및 디렉토리를 검색할 때 사용
- find . -name “File” : 현재 폴더에서 File이란 이름을 가지는 파일 및 디렉토리 검색
export
export로 환경 변수 설정
- ex) export water=”물”
- echo $water
export로 환경 변수 설정한 경우, 터미널이 꺼지면 사라지게 됨
매번 쉘을 실행할 때마다 환경변수를 저장하고 싶으면 .bashrc, .zshrc에 저장하면 됨
(Linux) vi ~/.bashrc 또는 vi ~/.zshrc (자신이 사용하는 쉘에 따라 다름)
제일 하단에 export water=”물"을 저장하고 나옴(ESC :wq)
그 후 source ~/.bashrc 또는 source ~/.zshrc
Linux 환경 설정을 재로그인하지 않고 즉시 적용하고 싶은 경우 source 사용
alias
명령어를 별칭으로 변경 가능
- alias ll2 = ‘ls -l’
- ll2로 입력하면 ls -l명령이 실행됨.
head, tail
파일의 앞/뒤 n행 출력 head -n 3 vi-test.sh
sort
행단위 정렬
- -r : 정렬을 내림차순으로 정렬(default : 오름차순)
- -n : Numeric Sort
uniq
중복된 행이 연속으로 있는 경우 중복 제거
- c : 중복 행의 개수 출력
- sql 의 distinct와 유사
grep
파일에 주어진 패턴 목록과 매칭되는 라인 검색
-
grep 옵션 패턴 파일명
- 옵션
- -i : Insensitively하게, 대소문자 구분 없이 찾기 -w : 정확히 그 단어만 찾기
- -v: 특정 패턴 제외한 결과 출력
- -E : 정규 표현식 사용
- 정규 표현식 패턴
- ^단어 : 단어로 시작하는 것 찾기
- 단어$ : 단어로 끝나는 것 찾기
- . : 하나의 문자 매칭
cut
파일에서 특정 필드 추출
- -f : 잘라낸 필드 지정
- -d : 필드를 구분하는 구분자 default 는 \t
표준 스트림(Stream)
Unix에서 동작하는 프로그램은 커맨드 실행시 3개의 Stream이 생성
- stdin : 0으로 표현, 입력(비밀번호, 커맨드 등)
- stdout : 1로 표현, 출력 값(터미널에 나오는 값)
- stderr : 2로 표현, 디버깅 정보나 에러 출력
Redirection & Pipe
Redirection : 프로그램의 출력(stdout)을 다른 파일이나 스트림으로 전달
- > : 덮어쓰기(Overwrite) 파일이 없으면 생성하고 저장
- >> : 맨 아래에 추가하기(Append)
Pipe : 프로그램의 출력(stdout)을 다른 프로그램의 입력으로 사용하고 싶은 경우
- A의 Output을 B의 Input으로 사용(다양한 커맨드를 조합)
-
현재 폴더에 있는 파일명 중 vi가 들어간 단어를 찾고 싶은 경우
-
ls grep “vi” > output.txt
ps
현재 실행되고 있는 프로세스 출력 : Process Status
- -e : 모든 프로세스
- -f : Full Format으로 자세히 보여줌
curl
Command Line기반의 Data Transfer 커맨드 : Client URL
Request를 테스트 할 수 있는 명령어
- 웹 서버를 작성한 후 요청이 제대로 실행되는지 확인할 수 있음
- curl -X localhost:5000/ {data}
- curl 외에 httpie 등도 있음(더 가독성있게 출력)
df
현재 사용 중인 디스크 용량 확인 : Disk Free
- -h : 사람이 읽기 쉬운 형태로 출력
scp
SSH을 이용해 네트워크로 연결된 호스트 간 파일을 주고 받는 명령어 : Secure Copy(Remote file copy program)
- -r : 재귀적으로 복사
- -P : ssh 포트 지정
- -i : SSH 설정을 활용해 실행
- local => remote
- scp local_path user@ip:remote_directory
nohup
터미널 종류 후에도 계속 작업이 유지하도록 실행(백그라운드 실행)
- nohup python3 app.py &
- nohup으로 실행될 파일은 Permission이 755여야 함
-
종료는 ps ef grep app.py 한 후, pid(Process ID) 찾은 후 kill -9 pid 로 프로세스를 Kill 로그는 nohup.out에 저장됨 - nohup 외에도 screen이란 도구도 있음
chmod
파일의 권한을 변경하는 경우 : Change Mode
- r = Read(읽기), 4
- w = Write(쓰기), 2
- x = eXecute(실행하기), 1
- -: Denied
- r-x : 읽거나 실행할 수는 있지만 수정은 불가능
쉘 스크립트
쉘 스크립트 예제, 유용한 정보
- https://github.com/zzsza/shell-scripts
- https://github.com/denysdovhan/bash-handbook
- (https://github.com/epety/100-shell-script-examples
Comments