리눅스에서 사용하는 각종 단축키들을 정리해둔 문서
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 [유저]vivi [파일명]iq : 그냥 종료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 - vips
-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-updatesearchremovelistinfo`tar [옵션][아카이브 파일] [파일명]
c : 새로운 tar 파일 만들기t : tar 파일 보기x : 압축 풀기v : 상세 정보f : 결과 파일의 이름 지정z : .gz로 압축j : .bz2으로 압축