5 분 소요

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 지정 옵션

비밀번호 설정

passwd <username>

로그인

login <username>

로그아웃

logout
  • Content: 로그인 shell인 경우에만 동작함

shell 종료

exit

슈퍼 사용자로 전환

su [-]
  • Args
    • -: 슈퍼 사용자 shell로 전환

슈퍼 사용자 권한으로 실행

sudo <command>

날짜 및 시간

날짜 및 시간 출력

date

파일 및 디렉토리

현재 디렉토리 확인

pwd

현재 디렉토리 변경

cd <directory>
  • 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
    • file
      • 디렉토리 이름 지정 가능

파일 삭제

rm [options...] <file...>
  • Options
    • -r, -R, --recursive: 디렉토리 삭제
    • -i: 삭제 전 확인 질문 출력

빈 디렉토리 삭제

rmdir [options...] <directory...>
  • Options
    • -p, --parents: 중첩된 디렉토리(ex. /report/2024/09) 모두 삭제

파일 내용 출력

cat [options...] <file...>
  • Options
    • -n: 행 번호 출력

파일 내용 보기

less <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
    • directory: 파일을 검색할 위치
  • Conditions
    • -name: 이름으로 검색, 대소문자를 구분함
    • -iname: 이름으로 검색, 대소문자를 구분하지 않음
    • -type: 타입으로 검색
      • f: 보통 파일
      • d: 디렉토리
      • l: 심볼릭 링크
    • -a: 여러 조건 AND 연산

매뉴얼 보기

man [options...] <command>
  • Options
    • -k: 키워드로 명령어 검색
    • -wa: 해당 명령어의 섹션 번호 확인
  • Args
    • command: 검색할 명령어

명령어 위치 찾기

which [options...] <command>
  • Options
    • -a: 여러 위치 모두 표시

그 외 유용한 기능들

명령어에 별칭 지정

alias <별칭>='<명령어>'

별칭 삭제

unalias <name> [name...]

별칭 확인

type <name> [name...]

별칭이 아닌 순수 명령으로 실행

command <command>
\<command>

Vim

명령어

Vim 실행

vim [options...] [file]
vi [options...] [file]

Vim 튜토리얼

vimtutor

조작법

시스템 관련

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>

배시

옵션 관련

옵션 활성화/비활성화

set -o/+o <option>
  • option name
    • ignoreeof: ctrl + d로 인한 shell 종료 방지
    • noclobber: 이미 존재하는 파일을 리다이렉트(> 이용)로 덮어쓰지 않음
    • noglob: 경로 확장을 무효로 함. * 등을 shell에서 확장하지 않음
shopt -s/-u <option>
  • option name
    • autocd: 디렉토리 이름을 입력하면 해당 디렉토리로 이동함
    • dotglob: *, ?를 사용한 경로 확장의 결과에 .으로 시작하는 파일도 포함시킴
    • cdspell: cd 명령어 실행 시 디렉토리 이름의 오타를 자동으로 교정함
    • globstar: 경로 확장으로 ** 패턴을 사용하면 서브 디렉토리까지 포함한 모든 파일에 매치됨
    • histappend: 배시를 종료할 때 히스토리 파일에 명령어 이력을 덮어쓰지 않고 추가함

변수 관련

shell 변수 설정

<변수명>=<값>
  • Content
    • 값에 공백 포함 시 따옴표(', ")로 감싸주어야 함
    • = 양옆에 공백이 없어야 함. 공백이 있으면 명령으로 간주됨
    • 변수 확인은 $<변수명>으로 확인함

변수 삭제

unset <변수명>

특수한 변수들

  • 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: 현재 디렉토리

환경 변수 출력

printenv
env

환경 변수 설정

export <shell var>
export <shell var>=<value>

배시 설정 파일

  • /etc/profile: 전체 설정 파일
  • ~/.profile: 사용자별 설정 파일. 로그인 시 읽음
  • ~/.bashrc: 배시별 설정 파일. 배시 실행 시 읽음

[참고]
모두의 리눅스(길벗, 미야케 히데아키, 오스미 유스케, 이동규)

태그:

업데이트: