[Back-end] 터미널 사용방법

Geun·2022년 3월 5일
0

Back-end

목록 보기
15/74

기초 터미널 명령어

Linux

ls [옵션][파일명]

현재 디렉토리 내의 파일과 디렉토리 정보를 출력한다.

옵션
-a : 디렉토리에 있는 모든 파일들(.으로 시작하는 파일 포함)을 출력한다.
-i : 파일의 아이노드(inode, 색인번호) 번호를 출력한다.
-h : 파일 크기를 사람이 보기 쉬운 단위로 출력한다.(k : 킬로바이트, m : 메가바이트)
-l : 파일의 다양한 정보(상세정보)를 함께 출력한다.(소유자, 권한, 크기, 날짜)
-m : 파일을 쉼표로 구분하여 가로로 출력한다.
-s : kb 단위의 파일 크기를 출력한다.
-t : 최근 생성된 시간 순으로 파일을 출력한다.
-F : 파일 종류 별로 파일 끝에 특수 문자 표시.(일반파일 : 표시없음, 실행파일 : *, 디렉토리 : /, 심볼링크 : @, FIFO파일 : |, 소켓파일 : =)
-R : 지정한 디렉토리 아래에 있는 하위 디렉토리와 파일들을 포함하여 출력한다.
-S : 파일 크키가 큰 순서대로 출력한다.
--help : 도움말을 출력한다.


cd [디렉토리명]

디렉토리를 이동할 때 사용한다.

옵션
cd [엔터], cd ~, cd ~/, cd $HOME : 사용자의 홈 디렉토리로 이동한다.
cd . : 현재 디렉토리로 이동한다.
cd / : 최상위 디렉토리로 이동한다.
cd $변수명 : 변수에 지정된 경로로 이동한다.
cd ~계정명 : 입력한 사용자의 홈디렉토리로 이동한다.
cd - : 이전 경로로 이동한다.


cp [옵션][대상파일명/디렉토리명]

하나 이상의 원본파일을 대상파일이나 디렉토리로 복사한다.

옵션
-i : 파일 복사 시, 동일한 파일명이 있을 경우 사용자에게 덮어 쓸 것인지 물어본다.
-f : 동일한 파일명이 있을 경우에도 강제로 지우고 복사한다.
-p : 원본 파일 소유주, 그룹, 권한, 시간 정보들이 그대로 보존되어 복사한다.
-r : 원본파일명이 경로일 경우, 그 경로에 있는 모든 하위 디렉토리들을 포함하여 모두 복사한다. 일반 파일일 경우는 그냥 복사한다.
-u : 복사 대상이 이미 존재하며 파일의 날짜가 같거나 더 최신이면 복사하지 않는다.


mkdir [옵션][파일명]

새로운 디렉토리를 생성한다.
읽기 권한이 허용되어야 디렉토리를 생성할 수 있다.

옵션
-m : 디렉토리의 권한을 지정한다.(기본값 : 755) ex) mkdir -m 700 dir -> dir 디렉토리의 권한을 700으로 설정하여 생성한다.
-p : 생성하려는 디렉토리의 상위 디렉토리가 없는 경우 상위 디렉토리까지 같이 만든다.


rmdir [옵션][파일명]

빈 디렉토리를 제거한다.
읽기 권한이 있어야 디렉토리를 제거할 수 있다.

옵션
-p : 상위 경로도 삭제한다.


rm [옵션][파일이름]

파일이나 디렉토리를 삭제할 때 사용한다.

옵션
-i : 파일이나 디렉토리가 삭제될 때마다 확인한다.(y : 삭제, n : 취소)
-f : 사용자에게 확인하지 않고 삭제한다.
-v : 각각의 파일 지우는 정보를 자세하게 모두 보여준다.
-r : 해당 디렉토리의 하위 디렉토리까지 모두 삭제

-r 을 제외하고는 디렉토리를 제외한 파일만 삭제가 가능하다.


mv [옵션][원본파일] [대상파일]

파일의 이름이나 위치를 변경할 때 사용한다.

옵션
-f : 이동할 위치에 파일 이름이 겹치면 강제로 이동한다.
-i : 이동할 위치에 파일 이름이 겹치면 사용자에게 물어본다.


find [디렉토리][옵션]

파일을 이름, 수정 날짜, 소유주, 허가 같은 기준으로 검색하게 해준다.

옵션
-empty : 비어있는 파일을 찾는다.
-user [사용자명] : 지정한 사용자가 소유하고 있는 파일을 찾는다.
-group [그룹명] : 지정한 그룹이 소유하고 있는 파일을 찾는다.
-nouser : 소유주가 없는 파일을 찾는다(사용자 계정을 삭제했을 경우 사용자가 생성한 파일들을 남기는 경우가 있다).
-nogroup : 소유그룹이 없는 파일을 검색한다.
-name [파일명] : 지정한 패턴을 갖는 파일을 찾는다(파일명 또는 확장명을 기준으로 검색한다).
-newer [파일명] : 파일명보다 최근에 생성된 파일을 찾는다.
-anewer [파일명] : 파일명보다 최근에 읽기(접근)가 수행된 파일을 찾는다.
-cnewer [파일명] : 파일명보다 최근에 상태가 변경(수정)된 파일을 찾는다.
-perm [권한] : 권한과 일치하는 파일을 찾는다.
-type [파일타입] : 파일타입에 맞는 파일을 찾는다. 파일타입은 아래와 같다.
d : 디렉토리(Directory)
c : 캐릭터 특수 파일(Character Device)
f : 일반파일(File)
b : 블록 특수 파일(Block Device)
l : 심볼릭 링크(Link)
p : 파이프(Pipe)
s : 소켓(Socket)

-atime [+n/-n/n] : 최근 n일 이전에 access된 파일을 찾는다(Access Time).
+n : n일 전부터 접근하지 않은 파일
-n : n일 동안 접근한 파일
n : n일 전에 접근한 파일

-ctime [+n/-n/n] : 파일의 퍼미션(권한)을 마지막으로 변경한 파일을 찾는다(Changed Time).
+n : n일 전부터 퍼미션을 변경하지 않은 파일
-n : n일 동안 퍼미션을 변경한 파일
n : n일 전에 퍼미션을 변경한 파일

-mtime [+n/-n/n] : data를 마지막으로 수정한 파일을 찾는다.(Modified Time).
+n : n일 전부터 수정하지 않은 파일
-n : n일 동안 수정한 파일
n : n일 전에 수정한 파일

-size : 저장한 파일 크기로 파일을 찾는다.
-depth : 별도로 지정할 필요가 없으며 서브 디렉토리까지 찾는 옵션이다.
-mount : 다른 파일 시스템의 디렉토리는 검색하지 않는다.
-prune : 서브 디렉토리로 내려가지 않고 현재 디렉토리에서만 검색한다.
-samefile [파일명] : 링크된 파일을 찾는다(하드 링크).
-lname "*이름" : 링크된 파일을 찾는다(심볼릭 링크).
-inum [inode번호] : inode 번호로 파일을 찾는다.


head [-count][파일이름], tail [-count][파일이름]

  • head [-count][파일이름] : 첫 번째 라인부터 number 라인까지 출력한다. 설정하지 않을 경우 10번째 라인까지 출력한다.

  • tail [-count][파일이름] : 마지막 라인부터 number 라인까지 출력한다. 설정하지 않을 경우 10번째 라인까지 출력한다.

  • tail -f [파일이름] : 실시간으로 파일에 추가되는 내용을 확인한다. 보통 log파일을 관찰할 때 자주 사용한다.


cat [옵션][파일이름]

파일의 내용을 볼 수 있는 명령어이다.

  • cat > [파일이름] 형태로 명령어를 작성했을 경우, 파일 생성 및 데이터 입력도 가능하다.
  • 파일 저장 : Ctrl + d, 파일 종료 : Ctrl + z
  • cat [파일명] | more : 엔터키를 입력할 때마다 한 줄씩 내려가면서 확인이 가능하다.

  • cat [파일명] | less : 화살표 위, 아래키로 페이지 올림, 내림이 가능하다.

more과 less 상태에서 q를 누르면 종료가 된다.


tar [옵션][파일명]

여러 파일을 하나로 묶을 경우 사용되는 명령어이다. 확장자는 .tar

옵션
-c : 파일을 tar로 묶어 생성한다.
-x : 기존의 tar파일의 압축을 해제할 경우 사용한다.
-v : 압축할 때나 압축을 해제할 때, 과정을 화면으로 출력한다.
-f : 파일 이름을 지정한다.
-C : 파일 경로를 지정한다.
-z : gzip으로 압축하거나 해제한다.


kill [시그널 번호/시그널 이름][프로세스]

실행중인 프로세스를 종료시킬 때 사용한다.

옵션
-i : 프로세스 종료 전 사용자에게 물어본다.
-v : 진행 현황을 확인 할 수 있다.
-w : 지정한 프로세스들이 모두 종료 될 때까지 종료 시도를 한다.


shutdown [옵션][시간] [메시지]

시스템을 종료하는 명령어 중 하나이다.

옵션
-r : 시스템 종료 후 재 부팅한다.
-h : shutdown이 완료된 후 시스템을 종료한다.
-c : 진행 중인 shutdown 명령어를 취소한다.
-k : 경고 메시지만 출력하고 실제로는 shutdown 하지 않는다.


git bash

디렉토리 이동

  • 홈 디렉토리로 이동
    cd~

  • 새 디렉토리에 디렉토리명을 생성
    mkdir [디렉토리명]

  • [디렉토리명]으로 이동
    cd [디렉토리명]

  • 부모 디렉토리로 이동
    cd ..

  • 현재 경로를 출력
    pwd

  • 디렉토리의 내용을 출력
    ls

  • 디렉토리의 폴더 상세 정보까지 출력
    ls - l

  • 디렉토리의 숨김파일과 디렉토리까지 출력
    ls -a

ls-al 처럼 합쳐서 사용할 수도 있다.

  • 파일이 있는 디렉토리를 내용물과 함께 삭제
    rm -r [디렉토리명]

  • vi 편집기로 [파일명.확장자명] 파일을 작성
    vim [파일명.확장자명]

  • 터미널 창의 내용을 지우기
    clear

  • 터미널 창을 종료
    exit


git 유저/업로드 설정

  • 현재 위치에서 지역 저장소를 생성
    git init

  • 깃 환경에서 사용자 이름을 [사용자명]으로 지정
    git config --global user.name "[사용자명]"

  • 깃 환경에서 사용자 이메일을 [사용자 이메일명]으로 지정
    git config --global user.email "[사용자 이메일명]"

  • 깃의 상태를 확인
    git status


commit 명령어

  • [파일명.확장자명]을 스테이지에 올리기
    git add [파일명.확장자명]

  • 커밋 메시지 [메시지명]을 붙여서 커밋하기
    git commit -m "[메시지명]"

  • 메시지[메시지명]을 붙여서 스테이징과 커밋을 동시에 진행하기
    git commit -a -m "[메시지명]"

  • 커밋 내역 확인
    git log
    git log --pretty=oneline # 이 명령어는 한줄로 표시해줌
    git show [커밋 id] # 특정 커밋 내역을 확인

  • 최근 버전과 작업폴더의 수정파일 사이 차이를 출력하기
    git diff
    git diff [이전커밋 id] [이후커밋 id]

  • 지정한 커밋 해시로 이동
    git checkout [커밋 해시]

  • 가장 최근 커밋을 취소
    git reset HEAD^ # 현재 HEAD의 이전 커밋으로 되돌리기
    git reset HEAD~n # 현재로부터 n번째 이전 커밋으로 되돌리기

  • 지정한 커밋 해시로 이동하고 커밋을 취소
    git reset [커밋 해시]
    - reset의 3가지 옵션
    git reset --soft [커밋 id] # head만 바뀐다
    git reset --mixed [커밋 id] # staging도 그 때로 바뀐다
    git reset --hard [커밋 id] # working 디렉토리/staging 모두 그 때로 바꾼다

  • 지정한 커밋 해시의 변경이력을 취소
    git revert [커밋 해시]

  • 커밋 수정하는 법
    파일을 수정한 뒤
    git add .
    git commit --amend # 최신 커밋 수정


브랜치 명령어

  • 새로운 브랜치 [브랜치명]을 생성
    git branch [브랜치명]
    git branch # 브랜치 조회하기

  • [브랜치명]으로 체크아웃(이동)
    git checkout [브랜치명]
    git checkout -b [브랜치명] # 브랜치만들고 바로 이동
    git branch -d 브랜치명 # 브랜치 삭제

  • 커밋 로그에서 한 줄에 한 커밋씩 출력
    git log --oneline

  • 수정한 전체 파일을 스페이지에 올린다.
    git add .

  • 커밋 로그에 각 브랜치의 커밋을 그래프로 표시
    git log --branches --graph

  • [브랜치명]을 master 브랜치와 병합
    git merge [브랜치명]
    git merge [브랜치명] --edit # 병합 후 바로 vi 편집기가 나오면서 커밋 메시지 수정 가능
    git merge [브랜치명] --no-edit # 커밋 메시지 수정없이 바로 병합

  • merge 취소하기
    git merge --abort


git hub 원격 저장소

  • 원격 저장소에 연결
    git remote add origin [github 레포지 주소]
    git remote add origin [branch 이름] # 없으면 생성됨

  • 원격 저장소에 연결됐는지 확인
    git remote -v

  • 지역 저장소의 커밋을 맨 처음 원격 저장소에 올리는 경우
    git push -u origin master

  • 맨처음 이후 지역 저장소의 커밋을 원격 저장소에 올리는 경우(업로드)
    git push
    git push origin master

  • 원격 저장소의 커밋을 지역 저장소로 가져옴
    git pull
    git pull origin master

  • SSH 키를 생성함
    ssh-keygen

  • 원격 저장소 복제하기
    첫번째 커밋이 아니라면 풀 먼저하기
    git remote remove origin
    git clone [원격 저장소 주소] # 원격 저장소를 [지역저장소명]에 복제하기

  • 원격 저장소의 커밋을 가져오기만 하고 merge하지 않는다
    가져온 branch 내용은 origin/[브랜치] 로 저장됨
    git fetch
    이후엔 diff 로 비교
    git diff test origin/test # 브랜치 이름이 test일 경우 예시

  • 패치로 가져온 정보가 있는 브랜치[FETCH_HEAD]로 이동
    ```git
    git checkout FETCH_HEAD

  • 패치로 가져온 정보가 있는 브랜치[FETCH_HEAD]를 master 브랜치에 병합한다
    git merge FETCH_HEAD

  • [브랜치명]을 만드는 것과 동시에 체크아웃한다
    git checkout -b [브랜치명]

  • 원격 저장소에 [브랜치명]의 브랜치의 커밋을 올린다
    git push origin [브랜치명]

  • 원격저장소 삭제
    git remote remove origin


파일/보관 명령어 (stash)

  • 파일 내용 출력
    cat [파일명.확장자명]

  • 디렉토리를 만드는 동시에 지역저장소 생성
    cd init [디렉토리명]

  • 현재 커밋을 다른 브랜치에 있는 [커밋메시지] 커밋으로 되돌림
    git reset [커밋메시지] [커밋해시]

  • 병합이 끝난 [브랜치명]을 삭제
    git branch [브랜치명] -d

  • 작업 트리의 수정 내용 stash에 따로 보관하기
    git stash
    git stash save

  • 보관한 내용을 목록을 출력
    git stash list

  • 보관한 내용을 적용
    git stash apply
    git stash apply stash@{1}

  • 보관한 내용 중 가장 최근 항목을 삭제
    git stash drop
    git stash drop stash@{1}

  • stash를 apply하고 제거(drop) 하기
    git stash pop


기타 명령어

  • 긴 명령어 짧게 이름 붙여 사용하기
    ex) git log --pretty=oneline을
    ->git history 라는 별명으로 바꾸기.
    git config alias.[별명] '원하는 명령어'
    git config alias.history 'log --pretty=oneline'

  • tag 설정 하기
    git tag [태그이름][커밋 ID]
    git tag Version_2 86a99 # tag 달기
    git tag #tag 조회하기
    git show Version_2


참고자료

https://www.youtube.com/watch?v=jDINUSK7rXE
https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing/Understanding_client-side_tools/Command_line
https://sdevstudy.tistory.com/29
https://gorokke.tistory.com/22

0개의 댓글