$
: 준비완료. Command 대기중!
$
echo
이 줄을 표준 출력하겠다.
$ echo
man
: man은 manual
의 약자.
뒤에 있는 mkdir
명령어에 대한 description. version, note 등이 있음.
$ man mkdir
$ echo 'hello world'
$ ^c # 끄기
$ ^d # 끄기
$ ^l # 창 깨끗하게 하기
$ ^a # 커서 맨 앞으로
$ ^e # 커서 맨 뒤로
$ ^b # 커서 하나씩 왼쪽으로
$ ^f # 커서 하나씩 오른쪽으로
$ ^p # 방향키 위로
$ ^n # 방향키 아래로
$ ^w # 단어 단위로 지우기
$ ^r # 이전 bash 히스토리 검색 가능
>
: redirect
$ echo 'hello' > greetings.txt
greetings.txt
파일이 만들어진다.stdout > file
에 쓴다.$ echo 'bye' > greetings.txt
cat
: concatnation
$ cat greetings.txt
cat
파일 내용을 빠르게 프린트 해볼 수 있다.$ echo 'word' >> greetings.txt
$ cat greetings.txt
# hello
# world
>>
: append
$ echo "# new_repository" >> README.md
ls
: list
$ ls
touch <file>
: 파일 만들기
.<filename>
: 숨긴파일
$ touch not_hidden.txt .hidden.txt
ls -a
: 숨겨진 파일까지 모두 보여주기.
$ ls -a
ls -l
: 파일 상세 정보
$ ls -l
d
로 시작하는 애는 derectory
file
ls -t
: 파일 정렬 by time
$ ls -t
$ ls -alt
alt
라는 옵션이 아니라 , a
, l
t
세 개를 합친 거다. 모든 파일 자세히 보는데 시간순으로 정렬해서 보겠다는 뜻
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
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로 갑니다.
# 폴더에서 .bash 파일 다 가져오기
$ ls ~/.bash
# bashrc 에 지정해놓은 alias 다 적혀있는거 확인.
$ cat .bashrc
# alias c='clear'
# alias sol='~/sol.sh'
= 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 | grep -i 'django'
# 현재 실행중인 모든 프로세스 출력
$ ps aux
# 실행중인 프로세스들 중에서 <pattern> 이 포함된 프로세스 정보만 출력 => pid 확인 가능
$ ps aux | grep '<pattern>'
# 해당 pid 를 가진 프로세스 종료
$ kill -9 <pid>
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