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
: 배시별 설정 파일. 배시 실행 시 읽음
[참고]
모두의 리눅스(길벗, 미야케 히데아키, 오스미 유스케, 이동규)