리눅스에서 사용하는 각종 단축키들을 정리해둔 문서
bashrc를 기준으로 작성하였다.
dev
: 장치 파일home
: 사용자 홈 디렉토리root
: root 계정의 홈 디렉토리tmp
: 임시 파일usr
: 기본 실행 파일, 라이브러리 등pwd
: 현재 작업중 위치cd
: 지정한 디렉토리로 이동.
: 현재 디렉토리..
: 상위 디렉토리(뒤로가기)ls
: 디렉토리의 내용 출력-a
: 숨김 파일 포함(all)-l
: 파일의 상세 정보 출력-F
: 파일의 종류 표시 (* 실행 / 디렉 @ 심볼릭)-R
: 하위 디렉터리 목록 표시mkdir
[절대경로/상대경로] : 디렉터리 생성-p
: 중간에 없는 디렉토리가 있으면 자동 생성rmdir
[절대경로/상대경로] : 디렉터리 삭제-p
: 중간에cat
: 파일 내용 전부 출력more
: 파일 내용을 일부 출력 (space : 다음화면 enter : 다음행 q : 종료)less
: 파일 내용을 일부 출력 (스크롤로 이동 등)cp [src] [dest]
: 파일 복사-r
: 디렉토리 복사mv [src] [dest]
: 파일 이동rm
: 파일 삭제(복구 불가)-r
: 디렉토리까지 통으로 삭제ln
: 바로가기 만들기(하드 링크, 어떤 파일의 다른 이름)-s
: 심볼릭 링크(윈도우의 바로가기 느낌)grep [옵션] [패턴] [파일]
: 파일 내용 검색-n
행번호 출력-i
대소문자 구분 없이find [경로] [조건] [동작]
: 파일 검색name [파일이름]
type [파일종류]
user [유저]
vi
vi [파일명]
i
q
: 그냥 종료q!
: 강제 종료 (고친 사항이 있어도 강제종료)w [파일명]
: 파일 저장wq
: 파일 저장하고 종료i
: 현재 커서 위치a
: 커서 뒤o
: 커서 기준 다음행I
: 커서 기준 행의 시작A
: 커서 기준 행의 끝O
: 커서 기준 이전 행G
or :$
: 파일의 마지막 행으로 이동행번호 + G
or :행번호
: 특정 행 번호 이동set nu[mber]
: 행 번호 표시set nonu
: 행 번호 숨김r
: 커서의 글자를 다른 글자로 수정s
: 커서의 글자 삭제 이후 ESC를 입력할 때까지 내용 입력#cw
: 단어를 삭제하고 해당 위치에 입력 모드#cc
: 행을 삭제하고 해당 위치에 입력 모드C
: 커서 위치부터 행의 끝까지 수정#x
: 커서 위치 글자 삭제#dw
: 커서 위치 단어 삭제#dd
: 커서 위치 행 삭제D
: 커서 위치부터 행 끝까지 삭제Ctrl + Z
: fg로 돌아간다u
: 명령 취소U
: 행에서 한 모든 명령 취소:e!
: 마지막 저장 내용 이후의 모든 변경 내용 취소#yy
: 커서 위치 행 복사p
: 커서 위치한 행 아래에 붙임P
: 커서 위치한 행 위에 붙임cc
: dd 상태에서 p 잘라 붙이기/[단어]
: 단어 검색(아래 방향으로)?[단어]
: 단어 검색(위 방향으로)n
: 다음 단어 검색N
: 이전 단어 검색:[범위]s/[단어1]/[단어2]
: 범위 내 첫 번째 단어1->단어2
:[범위]s/[단어1]/[단어2]/g
: 범위 내 모든 단어1->단어2
:s/[단어1]/[단어2]
: 커서 행에서 나오는 첫 번째 단어1->단어2
:s/[단어1]/[단어2]/g
: 커서 행에서 나오는 모든 단어1->단어2
:%s/[단어1]/[단어2]/g
: 파일 전체의 단어1->단어2
:5,10s/[단어1]/[단어2]/g
: 5~10줄 단어1->단어2
.
: 이전 명령 번복~
: 커서 위치의 글자 대/소문자 변경/bin/sh
: 본쉘(구형쉘)/bin/bash
: 베시쉘, 주로 사용echo [문자열]
*
: 모든 길이의 아무 문자열로 대체 가능?
: 하나의 문자[]
: 괄호 안의 하나의 문자만' '
: 문자열 안의 특수문자 모두 없앰" "
: 문자열 안의 특수문자 모두 없앰($ ' \ 제외)\
: 특수문자 효과를 없애고 일반문자 처리~
: (틸트) 작업자의 홈 디렉토리-
: (하이픈) 이전 작업 디렉토리;
: (세미콜론) 왼쪽 명령부터 차례로 실행|
: (파이프) 왼쪽 명령의 결과를 오른쪽으로 전달결과를 모니터 출력이 아니라 파일로 저장하고 싶다면?
리눅스는 키보드, 모니터 장치도 파일로 관리를 한다.
파일 구분을 위해 일련번호가 붙는데, 이를 파일 디스크립터라고 한다
표준 입출력 장치
>
: 표준 출력 파일을 바꿈 (redirection)
1> [파일 이름]
: 해당 파일 이름에 출력 결과 저장2> [파일 이름]
: 해당 파일 이름에 발생 오류 저장1> [파일 이름1] 2> [파일 이름2]
2> dev/null
: 특수 파일(버려지는 곳)으로 리디렉션하여 오류 무시
1> [파일 이름] 2>&1
: 2>&1
을 이용해 error를 out으로 리디렉션
<
: 파일 내용을 표준 입력 장치로
env
환경 변수 목록 보기alias [별칭]='[명령어]'
: 명령어에 별칭 붙이기HISTORY
: 명령 히스토리 목록을 보여줌![번호]
: 해당 번호의 명령어를 재실행![문자열]
: 히스토리에서 해당 문자열로 시작하는 마지막 명령 재실행ls -l
로 파일 권환과 관련된 부분을 확인할 수 있다.
앞에서부터 다음과 같은 정보를 가진다.
-
파일의 종류 (-일반파일 d디렉토리)rw-rw-r--.
: 파일 권한1
: 하드 링크 개수 (동일한 파일, 여러 개의 이름)user1
: 파일 소유자user1
: 파일이 속한 그룹93
: 파일의 크기10월 1 22:49
: 마지막 수정 날짜err.txt
.: 파일groups [이름]
: 모든 계정은 그룹을 가진다, 그룹별로 파일 권한을 부여할 수 있다
소유자 그룹 나머지(소유자도 그룹도 아닌 계정)
rw- rw- r--
r
: 읽기 권한w
: 쓰기 권한x
: 실행 권한-
: 권한 없음파일의 소유자 / root(관리자) 계정만 변경 가능
chmod
: 접근 권한 변경 명령어
위에서 설명한 일반적인 접근 권한 외에 다음과 같은 특수 권한을 설정할 수 있다.
SetUID
: (4) 실행 도중에는 실행한 사용자가 아닌 파일 소유자의 권한 적용SetGID
: (2) 실행 도중에는 실행한 사용자가 아닌 파일 그룹 권한 적용StickyBit
: (1)프로세스는 실행중인 프로그램을 뜻한다.
ex)bash shell - vi
ps
-e
: 실행중인 모든 프로세스 정보 출력-f
: 자세한 정보 출력-u
: 지정한 사용자에 대한 모든 프로세스 출력-p
: 지정한 pid의 프로세스 정보 출력응답이 없거나 좀비가 된 프로세스를 종료하는 방법
kill
혹은 pkill
을 사용한다이 때 강제종료가 아닌 해당 프로세스에 종료 시그널을 보내는 형식이다.
시그널 신호는 kill -l
을 이용해 확인 가능
SIGHUP(1)
: 터미널과 연결이 끊어졌을 때SIGINT(2)
: Ctrl + C로 사용자가 강제 종료했을 때SIGKILL(9)
: 강제 종료kill을 이용하는 방법
kill [-시그널번호(옵션] [PID]
pkill [프로세스 이름]
프로세스 관리창을 이용하는 방법
top
명령어를 이용해 프로세스 관리창(윈도우의 작업 관리자)에 진입할 수 있다.h
: 도움말k
: 프로세스 종료u
: 특정 유저M
: 사용 메모리에 따라 정렬P
: CPU 사용량에 따라 정렬기본적으로 사용자가 수행하는 작업은 foreground 작업
Ctrl+C
로 포그라운드 작업 종료 가능대기하는 동안 다른 작업을 시키고 싶으면
&
를 붙이면 백그라운드에서 실행됨다만 백그라운드에서 입출력 작업도 같이 수행시 입력창이 뒤섞일 수 있는 문제가 있다.
(sleep 2; echo 일어님)&
수행 시 입력창에 '일어남'이 적혀있게 된다jobs
로 확인 가능fg [%작업번호]
로 백그라운드 작업을 포그라운드로 전환 가능bg [%작업번호]
로 포그라운드 작업을 백그라운드로 전환 가능at [옵션] [시간]
명령어로 특정 시간에 작업이 수행되게 예약할 수 있다.
l
: 예약된 작업 확인d
: 예약된 작업 삭제at
으로 예약할 작업들을 다 설정했으면 ctrl + d
로 예약 작업을 종료한다.
crontab [-u 사용자][옵션][파일명]
로 특정 시간마다 파일이 실행되게 할 수 있다.
e
: 사용자의 crontab 파일 편집l
: 파일 목록 출력r
: 파일 삭제crontab
폴더에는 다음과 같은 규격을 통해 작업을 예약할 수 있다.
분(0~59) 시(0~23) 일(1~31) 월(1~12) 요일(0~6) 작업내용
// 매 54분마다 echo hello를 실행한다
54 * * * * echo hello
etc/passwd
: 사용자 계정 정보 확인 가능
hoya
: 로그인 id(사용자 계정)x
: 초창기 유닉스에서는 암호 표시, 보안 때문에 /etc/shadow로 암호 이동1000
: UID(사용자 id), 0~999는 시스템 예약, 사용자 계정은 1000부터 시작1000
: GID(그룹 id), 지정하지 않으면 로그인 ID, /etc/group 파일 정보,
: 유저에 대한 설명, 코멘트 등/home/hoya
: 홈 디렉토리(로그인 시 홈 디렉토리 시작)/bin/bash
: 로그인 셸(로그인 시 기본적으로 사용하는 셸)etc/shaodw
: 사용자 비밀번호 정보 확인 가능
다만 root계정으로만 확인 가능
앞에서부터 다음과 같은 정보를 지니고 있음
etc/login.defs
: 파일에 사용자가 만들어질 때의 기본 환경감 확인 가능
etc/group
: 그룹 정보 확인 가능
hoya
: 그룹 이름x
: 암호 (etc/gshadow로 이전됨)2000
: GID 그룹 식별 번호etc/gshadow
: 그룹 비밀번호 확인 가능
hoya
: 그룹 이름!
: 그룹의 비밀번호useradd [옵션] [로그인ID]
: 유저 추가
u
: uido
: uid 중복 허용(거의 사용하지 않음)g
: gid 기본 그룹s
: 기본 쉘c
: tjfaude
: 유효기간D
: 기본값 설정 확인passwd [사용자id]
: 해당 사용자의 비밀번호 설정
usermod [옵션] [로그인ID]
: 유저정보 수정
l [새id] [기존id]
: 계정 이름 바꾸기userdel [옵션] [로그인id]
: 사용자 계정 삭제
r
: 홈 디렉토리도 삭제f
: 사용자가 로그인 중이어도 강제 삭제groupadd [옵션] [그룹명]
g
: gid 설정o
: 그룹명 중복 허용groupmod [옵션] [그룹명]
g
: gid 설정o
: 그룹명 중복 허용n [이름]
: name 그룹명을 다른 이름으로 교체groupdel [그룹명]
gpasswd [옵션] [그룹명]
a [사용자]
: 사용자 계정을 그룹에 추가d [사용자]
: 사용자 계정을 그룹에서 제거r
: 그룹 암호 제거id
: 소속 그룹 확인newgrp
: 소속 그룹 변경who
: 시스템에 로그인한 사용자 목록
q
: 사용자 이름만 출력H
: 헤더도 출력r
: 현재 실행 레벨 출력w [사용자명]
: 사용자가 현재 무엇을 하고있는지 확인 가능
last
: pc 접속 히스토리를 확인
sudo
를 이용해 루트 권한을 빌려올 수 있다.
이 때 루트 권한을 사용하기 위해서 루트 계정이 허락을 해야 한다.
/etc/sudoers
파일에 다음과 같이 허락을 한다.// user2가 localhost로 접속했을 때 useradd를 사용할 수 있게 허가
user2 localhost=sbin/useradd
chown [옵션] [사용자] [대상 파일]
: 소유자 변경chgrp
: 변경된 소유자가 속한 그룹으로 변경rpm (Redhat Package Manager)
rpm의 버전체크는 --version
으로
rpm
명령어로 패키지를 설치
-i
: 패키지 설치-U
: 새로운 패키지는 설치, 기존 패키지는 업그레이드-h
: #를 이용해 설치 진척도 표시-v
: 자세한 사항 표시rpm -q
로 설치된 패키지 목록 출력
a
: 전체 패키지 목록 출력f [절대경로]
: 파일명을 포함하고 있는 패키지p
: 패키지 지정R
: 의존성 있는 패키지 목록 추천l
: 패키지 내 파일 목록rpm -e
를 이용해 패킺지 삭제
CentOS에서 사용하는 것으로 yum의 업그레이드 버전
의존성을 자동으로 해결해주고, 설치 가능한 패키지 저장소도 이미 알고 있음
dnf [옵션] [명령] [패키지명]
install [패키지명]
upgrade [패키지명]
: 명칭 없을시 전채 패키지 업데이트check-update
search
remove
list
info
`tar [옵션][아카이브 파일] [파일명]
c
: 새로운 tar 파일 만들기t
: tar 파일 보기x
: 압축 풀기v
: 상세 정보f
: 결과 파일의 이름 지정z
: .gz로 압축j
: .bz2으로 압축