CLI 환경 공부하기

Heejin Ryu·2021년 4월 20일
0

CLI

목록 보기
1/1
post-thumbnail

1. 기본 단축키


$ : 준비완료. Command 대기중!

$ 

echo 이 줄을 표준 출력하겠다.

$ echo

man: man은 manual의 약자.

뒤에 있는 mkdir 명령어에 대한 description. version, note 등이 있음.

$ man mkdir
  • hello world 출력
$ echo 'hello world'

방향키 단축키

$ ^c # 끄기
$ ^d # 끄기
$ ^l # 창 깨끗하게 하기
$ ^a # 커서 맨 앞으로
$ ^e # 커서 맨 뒤로
$ ^b # 커서 하나씩 왼쪽으로
$ ^f # 커서 하나씩 오른쪽으로
$ ^p # 방향키 위로
$ ^n # 방향키 아래로
$ ^w # 단어 단위로 지우기
$ ^r # 이전 bash 히스토리 검색 가능

2. 파일 조작

> : redirect

$ echo 'hello' > greetings.txt
  • 아무것도 출력은 안되지만, greetings.txt파일이 만들어진다.
  • 그대로 이 결과 값을 잡아서 파일에 쓴다. 파일이 없으면 쓴다.
  • stdout > file 에 쓴다.
$ echo 'bye' > greetings.txt
  • redirect는 덮어쓰기 때문에 greetings.txt에 bye가 씌워진다.

cat: concatnation

$ cat greetings.txt
  • cat 파일 내용을 빠르게 프린트 해볼 수 있다.
$ echo 'word' >> greetings.txt
$ cat greetings.txt

# hello
# world

>> : append

$ echo "# new_repository" >> README.md
  • github에서 새로운 레포를 만들었을 때 맨 첫번째 예시 command line에 위에 명령어가 나오는데, README.md파일을 만들어주는 것.(이미 있으면 뒤에 붙여준다.)

ls: list

$ ls

touch <file>: 파일 만들기

.<filename> : 숨긴파일

$ touch not_hidden.txt .hidden.txt
  • 파일을 생성했을 때 .으로 시작하는 파일은 숨긴 파일이다.

ls -a : 숨겨진 파일까지 모두 보여주기.

$ ls -a

ls -l : 파일 상세 정보

$ ls -l
  • GPU 상에서 자세히보기 정도 정보가 나옴.
  • d로 시작하는 애는 derectory
  • 아니면 file

ls -t : 파일 정렬 by time

$ ls -t
$ ls -alt
  • alt라는 옵션이 아니라 , a, l t 세 개를 합친 거다. 모든 파일 자세히 보는데 시간순으로 정렬해서 보겠다는 뜻

3. 파일 제어

폴더 만들기

mkdir <dirname> : make directory

~/$ mkdir original copy
~/$ cd original/
# 방법 1. 폴더 들어가서 파일 조작하고 폴더 나와.
~/original/ $ touch a.txt
~/original/ $ cd ..
# 방법 2. 폴더 안들어가도, 원래 그 자리에서 폴더명까지 포함해서 파일 만들어.
~/$ touch original/b.txt

mkdir -p <dirname>: 부모가 없으면 부모도 만들어

$ python manage.py startapp my_app

# -p Parents. 만약에 부모가 없으면 부모 폴더로 만들어라.
$ mkdir -p my_app/templates/my_app

복사

cp <prev> <next>: copy

첫번째 인자 : 복사할 파일(원본) / 두번째 인자: 위치

# 폴더 들어가서 카피하기
~/original/ $ cp a.txt ../copy
~/original/ $ cd ..

# 폴더 안들어가고 카피하기.
~/ $ cp original/b.txt copy/
$ mkdir original
$ cp greetings.txt ./copy_greeting.py
$ cat copy_greeting.py

# hello
# world

이동 / 이름 바꾸기

mv <old> <new>: 이동하기 / 이름바꾸기

# README.md 파일을 original폴더로 옮기기
$ mv README.md original/
$ ls original

# 결과
# README.md

# original 폴더에 있는 README.md파일을 현재 폴더로 옮겨라.
$ mv original/README.md .

# 현재위치의 README.md가 copy폴더에 hello.md로 바뀌어서 들어감
$ mv README.md copy/hello.md

# copy 폴더에 hello.md를 현재위치 README.md로 바꿔라
$ mv copy/hello.md ./README.md

# README.md를 hello.md로 이름을 바꿔라.
$ mv README.md hello.md

삭제

rm <file>: 파일 지우기

rm -f <file>: 파일 강제 지우기. -f : force

$ rm
# rm: remove reqular file 'copy_greeting.py'? y
$ rm -f greetings.txt .hidden.txt not_hidden.txt

4. 파일 조작 응용

crul <url> : 주소창에 친 결과를 가져온다. 요청 보낼 수 있는 프로그램.

$ curl https://eduyu.github.io/files/sonnets.txt > sonnets.txt

curl -I: header만 가져온다.

$ curl -I https://www.naver.com/

head, tail : 처음과 끝만 가져온다.

$ head sonnets.txt
$ tail sonnets.txt

wc: word count

$ wc sonnets.txt

# 2619 17670 95634 sonnets.txt

응용

sonnets.txt에서 앞에만 따와서 새로운 파일을 만들고 워드 카운팅 해.

$ head sonnets.txt > 10_sonnets.txt
$ wc 10_sonnets.txt

# 10 46 294 10_sonnets.txt

<prev> | <next> : pipe. 앞 명령어의 표준 출력을 들고, 이 뒤에있는 명령어 뒤에 붙인다.

바로 위 명령을 간단하게하면?

$ head sonnets.txt | wc

# 10 46 294

less <file>: 파일을 열어서 읽음.

$ less sonnets.txt

# less라는 프로그램은 q로 종료합니다.

<less 내부 사용 명령어>

u : up 하면 반페이지 up.

d : down하면 반페이지 down.

q : 종료

/<pattern> : 모든 검색합니다. 검색 가능

n: next. 다음 rose로 갑니다.

shift + n: 이전 rose로 갑니다.

alias

# 폴더에서 .bash 파일 다 가져오기
$ ls ~/.bash

# bashrc 에 지정해놓은 alias 다 적혀있는거 확인.
$ cat .bashrc

# alias c='clear'
# alias sol='~/sol.sh'

파일 검사 - grep

= global regular expression and print
파일에서 문자열 찾기.

grep <word> <file> : file에서 word 찾기

$ grep rose sonnets.txt

# sonnets에서 rose 단어 찾아서 카운트하기
$ grep rose sonnets.txt | wc

# sonnets에서 rose 단어 찾아서 case 상관없이 카운트하기
# -i -> case insensitive
$ grep -i rose sonntes.txt | wc
  • pip list에서 django 찾기.
$ pip list | grep -i 'django'
  • grep 응용

# 현재 실행중인 모든 프로세스 출력
$ ps aux  
# 실행중인 프로세스들 중에서 <pattern> 이 포함된 프로세스 정보만 출력 => pid 확인 가능
$ ps aux | grep '<pattern>'  
 # 해당 pid 를 가진 프로세스 종료
$ kill -9 <pid> 

5. 폴더에서 검색

find <dir> <option> <pattern>: dir에서 옵션을 가지고 pattern으로 된 애들을 찾는다.

# 패턴, 파일명 등을 가져온다.
# 현재 폴더에서 .txt 파일이 있는 애를 다 가져온다.

$ find . -name '*.txt'

; &&: 둘 다 명령어 잇는 것. 차이점 있음

# 앞에가 에러나도 뒤에꺼 진행 됌.
$ python manage.py makemigrations ; python manage.py migrate

# 앞에꺼가 에러나면 뒤에꺼는 안 함. 
$ python manage.py makemigrations && python manage.py migrate
profile
Chocolate lover🍫 & Junior Android developer🤖

0개의 댓글