리눅스 명령어와 옵션 알아보기

-: 일반 파일
d: 디렉토리
l: 심볼릭 링크

표준 디렉터리
/ : 최상위 디렉터리
/bin: 기본적인 실행 명령어
/sbin: 관리자용 명령어
/boot: 부팅할 때 필요한 파일 (부트 로더의 설정 파일)
/dev: 디바이스 드라이버 관련 파일
/etc: 시스템 환경 설정 파일 (passwd, fstab 등)
/home: 사용자 계정의 홈 (사용자 파일 저장)
/lib: 공유 라이브러리
/proc: 시스템 정보
/var: 가변 정보
/mnt: 마운트 포인터
/usr: 시스템 위한 명령, 라이브러리, 매뉴얼 페이지
 
/etc/fstab: 부팅 시 자동으로 마운트되는 파일 시스템 정보
/etc/skel: 사용자 기본 환경 설정 파일 (.bashrc, .bash_profile 등)

!: 명령 히스토리 기능
!!: 직전에 수행했던 명령
!n: 히스토리 명령에서 번호 n에 해당
!-n: n번째로 전에 수행한 명령

/etc/profile: 로그인할 때 가장 먼저 수행
~/.bash_profile: 로그인할 때 수행
~./bashrc: 로그인 후 셸 시작할 때 수행 (내부에서 /etc/bashrc)
/etc/bashrc: 로그인 후 셸 시작할 때 모든 사용자에게 적용
 
ls
-t: 수정 시간 기준으로 최근 파일부터
-s: KB 단위로 파일 크기 출력
-a: 디렉터리 내 모든 파일 출력
 
cd
 그냥 cd만 실행하면 홈 디렉터리로 이동
cd - : 직전 작업 디렉터리로 이동
cd ~: 홈 디렉터리로 이동
 
more
+num: num 행부터 보여준다
-num: num개 행 단위로 보여준다
 
rmdir
-p: 부모 디렉터리가 비면 함께 삭제
 
ln: 파일의 별명(새로운 이름) 만듦 (하드, 심벌릭 링크)
mv: 파일 이동하거나 이름 바꿈
 
systemd
- 커널이 가장 처음 실행시키는 사용자 프로세스
- 파일 시스템 마운트
- 부팅 시 구동되어야 할 서비스 시작
- 로그인 서비스 시작
- 의존성 해결
- 시스템 상태 모니터링
- 데몬 관리
 
부트 로더
- 커널 이미지 로드
 
/etc/passwd: 사용자 계정에 관한 정보 가짐 (id, pw, uid, gid, 설명, 홈디렉터리, 기본셸)

env, printenv: 환경 변수 출력

fcsk: 파일 시스템 검사 (consistency check)

vi
esc + esc: 명령 모드로 돌아온다
. : 이전 명령 반복
u: 이전 명령 취소 (undo)

텍스트 입력 명령키
a: 현재 커서 오른쪽부터 add
A: 현재 라인 끝에 추가
i: 현재 커서 위치부터 insert
I: 현재 라인 처음에 insert
o: 현재 라인 위에 새 라인
O: 현재 라인 아래에 새 라인

커서 이동
h j k l : 왼 아 위 오
w: 다음 단어의 첫 자 (word)
b: 앞 단어의 첫 자 (back)
0: 현재 라인의 첫 칸
$: 현재 라인의 마지막 칸
ctrl f: 한 페이지 위
ctrl b: 한 페이지 아래
ctrl d: 반 페이지 아래
ctrl u: 반 페이지 위
1G / gg: 첫 라인
20G: 20째 라인
G: 마지막 라인
 
dd: 한 라인 삭제
10dw: 10개 단어 삭제
10x: 10개 문자 삭제
d10G: 현재 라인부터 10번 라인까지 삭제
d): 커서 위치부터 문장 끝까지 삭제
yy: 현재 라인 복사
cw: 커서가 위치한 단어 치환 (change word)
 
find
-perm: 접근권한을 조건으로 지정
 
물리 익스텐트: 물리 볼륨은 물리 익스텐트로 나뉜다
 
fdisk: 하드디스크 파티션 생성
 
df: 디스크 남은 공간 보기
-h: 읽기 편하게
-T: 파일 시스템 유형도
-a: 파일 시스템 크기가 0인 것도
 
du: 파일에 사용되는 블록 수 보여줌 (disk usage)
-a: 일반 파일까지 포함해서
-s: 주어진 파일 또는 디렉터리 총사용량 요약해서

gzip -c: 결과를 표준 출력으로
gzip -d: 압축 해제
gzip -t: 무결성 검사

tar c: 파일 또는 디렉토리부터 아카이브 만들기
tar t: 아카이브에 포함된 파일 목록 출력
tar x: 아카이브에서 파일 추출
tar v: 명령 실행 시 대상 파일 화면상에 보여줌
tar f: 아카이브 파일 지정
tar z: gzip 이용하여 압축 
 
(-rwsrwsrwt) 사용자/그룹/기타사용자
SetUID(4, s): 누가 실행시켜도 파일 소유자가 실행한것처럼
SetGID(2, s): 파일 소유자의 그룹 권한으로 실행됨
StickyBit(1, t): 해당 파일의 소유자만 삭제 가능 (기타 사용자 실행권한에 t)
 
 
crontab
-l: 작업 리스트 출력
-e: 작업 등록, 수정
-r: crontab 파일 삭제
-u user: 지정된 사용자의 crontab 파일 사용

at: crontab 사용하지 않고 특정 시간에 일회성 작업 예약

셸 실행 방법
1) bash file  (서브셸 만듦)
  +) bash -x file: 각 명령 실행 전에 화면에 표시
2) ./script.sh  (서브셸 만듦)
3) source file  (현재 셸 환경에서 실행)
4) . script(.sh)  (현재 셸 환경에서 실행)

셸 스크립트 작성 시
$0: 스크립트 파일의 이름
$1: 첫번째 인수

$*: "$1c$2c.."
S@: 여러 개별 큰따옴표로 확장
$#: 위치 매개변수의 개수
$?: 직전 명령의 상탯값
$! 최근 실행 백그라운드 명령의 PID

read -p: 다음에 나오는 문자열을 프롬프트로 사용

test expression = [ expression ]

file1 -nt file2: 1이 2보다 새로운가
file -ot file2: 1이 2보다 오래되었는가
-f file: 정규 파일인가
-z string: 문자열의 길이가 0인가

-eq: 같은지
-ne: 다른지
-le: 1이 작거나 같은지
-lt: 1이 작은지
-ge: 1이 크거나 같은지
-gt: 1이 큰지

수식 계산: $[expression] 또는 $((expression))
 
git clean: 추적되지 않는 파일 모두 찾아 삭제
 
git stash save message
git stash push -m messgae
git stash -u: 추적되지 않는 파일 포함 (untracked)
git stash apply: 기본적으로 작업 영역만 복원
 
git reset
- 이전의 특정 커밋으로 완전히 되돌아간다
- 해당 커밋 이후 이력 모두 사라짐
--hard: 작업 폴더와 스테이지 영역도 바꿈
--mixed: 기본 옵션, 깃 저장소와 스테이지 영역 바꿈
--soft: 깃 저장소만 재설정
 
git revert
- 커밋 취소를 의미하는 새 커밋이 생긴다
- 작업 영역이 clean 상태여야 리버트 가능하다