Linux
개요
도커를 학습하면서 자연스럽게 리눅스를 사용해야 하는 상황이 많아졌다.
하지만, 리눅스 기초만 알고 있던 나는 ssh, shell script 등을 마주하게 되면 본 강의는 뒤로한 채 이거 해결하랴.. 저거 해결하랴…
결국, 리눅스를 기초부터 다시 공부하고자 다짐했다! 일단은 부트캠프 당시 나누어줬던 서적을 통해 리눅스를 학습해 보기로 했다.
리눅스에 대해 학습한 내용을 정리하고, 한 페이지에서 모든 내용을 한 번에 보기 위해 이 게시글을 작성하기로 했다.
- OS: macOS
- Last modified: 24.10.28
조작법
커서 이동
| Content |
Command |
| 커서 왼쪽 한 칸 |
ctrl + b |
| 커서 오른쪽 한 칸 |
ctrl + f |
| 커서 단어 왼쪽 끝 |
option + b |
| 커서 단어 오른쪽 끝 |
option + f |
| 커서 왼쪽 맨 끝 |
ctrl + a |
| 커서 오른쪽 맨 끝 |
ctrl + e |
문자 삭제
| Content |
Command |
| 문자 삭제 |
ctrl + h |
| 커서 위치에 있는 문자 삭제 |
ctrl + d |
| 단어 삭제 |
ctrl + w |
자르기와 붙여넣기
| Content |
Command |
| 커서 이전 문자열 자르기 |
ctrl + u |
| 커서 이후 문자열 자르기 |
ctrl + k |
| 붙여넣기 |
ctrl + y |
화면 잠금
| Content |
Command |
| 화면 잠금 |
ctrl + s |
| 화면 잠금 해제 |
ctrl + q |
강제 종료
| Content |
Command |
| 실행 중인 명령 종료, 새로운 커맨드 라인으로 넘어가기 |
ctrl + c |
화면 정리
| Content |
Command |
| 화면 정리(clear) |
ctrl + l |
자동 완성
| Content |
Command |
| 자동 완성 |
Tab |
명령 이력
| Content |
Command |
| 이전 명령어 |
ctrl + p |
| 다음 명령어 |
ctrl + n |
| 명령 이력 검색 |
ctrl + r |
명령어
명령어는 소문자로 작성되어 있으며 사용자가 입력하는 부분은 홑꺾쇠표(< >)로 표시했다.
유저
사용자 추가
useradd [options...] <username>
- Options
-m, --create-home: 유저 홈 디렉토리 생성(/home/<username> 디렉토리가 생성됨)
-s, --shell: shell 지정 옵션
비밀번호 설정
로그인
로그아웃
- Content: 로그인 shell인 경우에만 동작함
shell 종료
슈퍼 사용자로 전환
슈퍼 사용자 권한으로 실행
날짜 및 시간
날짜 및 시간 출력
파일 및 디렉토리
현재 디렉토리 확인
현재 디렉토리 변경
- Args
- directory: 생략 시 홈 디렉토리(=
cd ~)로 이동
디렉토리 내부 출력
ls [options...] <directory...>
- Options
-a, --all: 숨긴 파일, 디렉토리까지 모두 출력
-l: 리스트 형식으로 출력
-h: 용량을 단위로 표현
-d: 디렉토리 지정시 디렉토리 내부 리스트가 아닌 해당 디렉토리 자체 정보를 출력
-w <num>, --width <num>: width를 <num> 만큼 지정하여 출력
-Q, --quote-name: 파일, 디렉토리 이름에 큰따옴표(" ")로 묶음
- Args
- directory
- 파일 이름 지정 시 파일 존재 유무 확인
- 생략 시 현재 디렉토리 내부 출력
디렉토리 생성
mkdir [options...] <directory...>
- Options
-p, --parents: 중첩된 디렉토리(ex. /report/2024/09)를 생성할 때 중간에 해당하는 디렉토리가 없으면 자동으로 생성함
파일 타임스탬프 갱신
touch [options...] <file...>
- Content: 파일이 존재하지 않을 경우 빈 파일 생성
- Options
-c, --no-create: 빈 파일을 생성하지 않음
- Args
파일 삭제
rm [options...] <file...>
- Options
-r, -R, --recursive: 디렉토리 삭제
-i: 삭제 전 확인 질문 출력
빈 디렉토리 삭제
rmdir [options...] <directory...>
- Options
-p, --parents: 중첩된 디렉토리(ex. /report/2024/09) 모두 삭제
파일 내용 출력
cat [options...] <file...>
파일 내용 보기
파일 복사
cp [options...] <source file> <target file>
cp [options...] <source file...> <target directory>
- Options
-r, -R, --recursive: 디렉토리 복사
-i, --interactive: 복사 전 확인 질문 출력
파일, 디렉토리 이동
mv [options...] <source file> <target file>
mv [options...] <source file...> <target directory>
mv [options...] <source directory...> <target directory>
- Options
-i, --interactive: 복사 전 확인 질문 출력
링크 생성
ln [options...] <source file> <link name>
- Options
-s, --symbolic: 심볼릭 링크 생성
권한 설정
chmod [ugoa] [+-=] [rwx] <file>
- Args
u: 소유자
g: 소유 그룹
o: 기타 사용자
a(default): ugo 모두
+: 권한 추가
-: 권한 제거
=: 지정한 권한과 같게함
r: 읽기(내부 파일/디렉토리 목록 읽기)
w: 쓰기(내부에 파일/디렉토리 생성 및 삭제)
x: 실행(디렉토리 이동)
파일 검색 및 명령어 사용법
파일 or 디렉토리 검색
find <directory> <condition> <action>
- Args
- Conditions
-name: 이름으로 검색, 대소문자를 구분함
-iname: 이름으로 검색, 대소문자를 구분하지 않음
-type: 타입으로 검색
f: 보통 파일
d: 디렉토리
l: 심볼릭 링크
-a: 여러 조건 AND 연산
매뉴얼 보기
man [options...] <command>
- Options
-k: 키워드로 명령어 검색
-wa: 해당 명령어의 섹션 번호 확인
- Args
명령어 위치 찾기
which [options...] <command>
그 외 유용한 기능들
명령어에 별칭 지정
별칭 삭제
별칭 확인
별칭이 아닌 순수 명령으로 실행
command <command>
\<command>
Vim
명령어
Vim 실행
vim [options...] [file]
vi [options...] [file]
Vim 튜토리얼
조작법
시스템 관련
| Content |
Command |
| Vim 종료 |
:q |
| Vim 강제종료 |
:q! |
| 도움말 |
:help |
커서 관련
| Content |
Command |
| 왼쪽으로 이동 |
h |
| 오른쪽으로 이동 |
l |
| 위로 이동 |
k |
| 아래로 이동 |
j |
| 다음 단어로 이동 |
w |
| 공백을 기준으로 다음 단어로 이동 |
W |
| 이전 단어로 이동 |
b |
| 공백을 기준으로 이전 단어로 이동 |
B |
| 행의 시작으로 이동 |
0 |
| 행의 끝으로 이동 |
$ |
| 첫 행으로 이동 |
gg |
| n 행으로 이동 |
<n>G |
| 마지막 행으로 이동 |
G |
문자 관련
| Content |
Command |
| Undo |
u |
| Redo |
ctrl + r |
| 현재 위치 문자 삭제 |
x |
| 문자 입력 모드(커서 왼쪽부터 입력) |
i |
| 문자 입력 모드(커서 오른쪽부터 입력) |
a |
| 문자 삭제 |
d<range> |
| - 행 끝까지 삭제 |
d$ |
| - 행 처음까지 삭제 |
d0 |
| - 문자 한 개 삭제 |
dl, dh |
| - 단어 한 개 삭제 |
dw, db |
| - 문서 끝까지 삭제 |
dG |
| - 문서 처음까지 삭제 |
dgg |
| - 현재 행 삭제 |
dd |
| 문자 복사 |
y<range> |
| 붙여넣기 |
p |
| 행 합치기 |
J |
| 아래 방향으로 검색 |
/ |
| 위 방향으로 검색 |
? |
| - 다음 검색 결과 |
n |
| - 이전 검색 결과 |
N |
| 문자열 치환 |
:%s/<이전 문자열>/<치환할 문자열>/g |
파일 관련
| Content |
Command |
| 저장 |
:w |
| 다른 이름으로 저장 |
:w <file> |
배시
옵션 관련
옵션 활성화/비활성화
- option name
- ignoreeof:
ctrl + d로 인한 shell 종료 방지
- noclobber: 이미 존재하는 파일을 리다이렉트(
> 이용)로 덮어쓰지 않음
- noglob: 경로 확장을 무효로 함.
* 등을 shell에서 확장하지 않음
- option name
- autocd: 디렉토리 이름을 입력하면 해당 디렉토리로 이동함
- dotglob:
*, ?를 사용한 경로 확장의 결과에 .으로 시작하는 파일도 포함시킴
- cdspell: cd 명령어 실행 시 디렉토리 이름의 오타를 자동으로 교정함
- globstar: 경로 확장으로
** 패턴을 사용하면 서브 디렉토리까지 포함한 모든 파일에 매치됨
- histappend: 배시를 종료할 때 히스토리 파일에 명령어 이력을 덮어쓰지 않고 추가함
변수 관련
shell 변수 설정
- Content
- 값에 공백 포함 시 따옴표(
', ")로 감싸주어야 함
= 양옆에 공백이 없어야 함. 공백이 있으면 명령으로 간주됨
- 변수 확인은
$<변수명>으로 확인함
변수 삭제
특수한 변수들
- PS1: shell 프롬프트 설정
- 값에 사용되는 특수 문자
\u: 현재 사용자 이름
\h: 호스트 이름
\H: 도메인 이름
\w: 현재 디렉토리 이름
\W: 현재 디렉토리 중 마지막 디렉토리만 표시
\d: 현재 날짜
\n: 개행문자
\t: HH:MM:SS 형식으로 시각 표시
\$: 현재 사용자가 root 사용자면 #, 그외에는 $로 표시
- PATH: 명령어를 찾을 디렉토리
- LANG: locale 설정
locale -a 명령으로 가능한 locale 확인 가능
- HISTFILE: 명령이력을 저장할 파일 이름
- HISTSIZE: 메모리에 저장할 명령 이력의 최대 개수
- HISTFILESIZE: 파일에 저장할 명령 이력의 최대 개수
- HOME: 홈 디렉토리
- SHELL: 로그인 셸 경로
- PWD: 현재 디렉토리
환경 변수 출력
환경 변수 설정
export <shell var>
export <shell var>=<value>
배시 설정 파일
/etc/profile: 전체 설정 파일
~/.profile: 사용자별 설정 파일. 로그인 시 읽음
~/.bashrc: 배시별 설정 파일. 배시 실행 시 읽음
[참고]
모두의 리눅스(길벗, 미야케 히데아키, 오스미 유스케, 이동규)