8 minute read

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 : 읽거나 실행할 수는 있지만 수정은 불가능

쉘 스크립트

쉘 스크립트 예제, 유용한 정보

Comments