개발/Linux
Linux 명령어 정리
뚜루루또또
2021. 5. 11. 11:28
whoami ( 현재 사용자 확인 )
$ whoami
pwd ( 현재 디렉터리 확인 )
$ pwd
cd ( 디렉터리 이동 )
$ cd {경로}
$ cd /
# 루트 디렉터리
$ cd .
# 현재 디렉터리
$ cd ../
# 상위 디렉터리
$ cd ~
# 홈 디렉터리
# 리눅스 기준 사용자 홈 디렉터리는 /home/{user}
ls ( 디렉터리 확인 )
$ ls {옵션}
$ ls -a
# 숨겨진 파일도 확인
# 리눅스는 파일,디렉터리 이름 제일 앞글자가 .면 숨김파일이 됩니다
$ ls -l
# 권한, 소유자, 갱신일등 자세히 확인
mkdir ( 디렉터리 생성 )
$ mkdir {디렉터리}
touch ( 파일 생성 / 날짜 수정 )
$ touch {파일}
# 빈파일 생성
$ touch -c {파일}
# 현재시간으로 날짜정보 변경
$ touch -t 202105121200
# 날짜정보 YYYYMMDDhhmm 형식으로 변경
mv ( 파일,디렉터리 이동/변경 )
$ mv {옵션} {원본파일/디렉터리} {사본파일/디렉터리}
$ mv -i test1.txt text2.txt
# 사본파일이 이미 존재할경우 덮어쓸 것인지 물어봅니다
cp ( 파일,디렉터리 복사 )
$ cp {옵션} {원본파일/디렉터리} {사본파일/디렉터리}
$ cp -r test/ test2/
# 하위 파일,디렉터리 모두 복사합니다
$ cp -p test/ test2/
# 사본 파일이 원본파일과 동일한 모드, 소유자, 시간정보를 가지도록 합니다
rm ( 파일,디렉터리 삭제 )
$ rm {옵션} {파일/디렉터리}
$ rm -f test.txt
# 삭제할때 확인과정을 거치지 않습니다
$ rm -r test/
# 디렉터리를 삭제합니다
$ rm -ri test/
# 하나하나 확인하며 삭제합니다
cat ( 파일 읽기/만들기/합치기 )
$ cat {옵션} {파일}
$ cat test.txt
# 파일의 전체 내용을 화면에 출력합니다
$ cat -n test.txt
# 출력할때 줄번호를 왼쪽에 표시하며, 비어있는 행도 포함입니다
$ cat test1.txt test2.txt test3.txt > test4.txt
# 앞의 여러개의 파일을 합쳐 새로운 파일을 만들며, 앞의 파일은 유지됩니다
$ cat test1.txt >> test2.txt
# 뒤의 파일에 앞의 파일 내용을 이어 붙여 새로운 파일을 만들며, 앞의 파일은 유지됩니다
$ cat > test1.txt
# 명령어 이후 입력한 내용으로 새로운 파일을 만듭니다 ( ctrl + d 로 입력을 마무리 합니다 )
tail ( 파일 읽기 - 아래 부터 )
$ tail {옵션} {파일}
$ tail -n 5 test.txt
# 아래에서 부터 n줄을 출력합니다 ( 기본은 10줄 입니다 )
$ tail -f test.txt
# 파일내용의 변경을 실시간으로 감지하며 출력합니다 ( 보통 로그볼때 사용합니다 )
$ tail -n 5 test.txt > test5.txt
# 출력될 파일내용으로 새로운 파일을 만듭니다
head ( 파일 읽기 - 위에 부터 )
$ head {옵션} {파일}
$ head -n 5 test.txt
# 위에서 부터 n줄을 출력합니다 ( 기본은 10줄 입니다 )
$ head -n 5 test.txt > test5.txt
# 출력될 파일내용으로 새로운 파일을 만듭니다
jobs ( 현재 셸에서 정지, 백그라운드로 진행 중인 프로세스 확인 )
$ jobs {옵션}
$ jobs -l
# 프로세스 ID출력
bg ( 현재 셸에서 정지된 프로세스 백그라운드에서 실행 )
$ bg {jobs 번호}
# 번호 생략시 마지막 jobs
fg ( 현재 셸에서 정지된 프로세스 포그라운드에서 실행 )
$ fg {jobs 번호}
# 번호 생략시 마지막 jobs
kill ( 프로세스에 시그널 보내기 )
$ kill {옵션} {프로세스ID}
$ kill -l
# 시그널 번호 확인
$ kill -9 1000
# 프로세스ID 1000 강제종료
history ( 입력했던 명령어 찾기 )
$ history
$ history -10
# 최근에 입력한 명령어 10개 출력
$ !{history번호}
# history번호 명령어 실행
$ !999
# history번호 999 명령어 실행
ctrl + r 누르면 입력했던 명렁어 검색할 수 있음
# ctrl + r: 다시 누르면 다음으로 계속 검색
# enter: 바로실행
# →(화살표): 편집
# ctrl + c: 명령어 탐색 종료
env ( 환경변수 확인 )
$ env
export ( 환경변수 설정 )
$ export {환경변수}={값}
$ export NAME=tjddndk17
# 환경변수 NAME을 값 tjddndk17로 정의
unset ( 환경변수 삭제 )
$ unset {환경변수}
$ unset NAME
# 환경변수 NAME을 삭제
which ( 실행파일 경로 확인 )
$ which {명령어}
$ which ls
# ls명령어 실행파일이 있는 경로를 출력합니다
$? ( 프로세스 종료 상태코드 확인 )
$ echo $?
# 셸에서 실행된 프로세스 종료코드는 $? 변수에 저장이 됩니다
# 코드는 0 ~ 255 까지의 값이 사용될 수 있습니다
# 일반적으로 0은 성공, 이외의 값은 실패로 처리합니다
sort ( 내용 행단위 정렬 )
$ sort {옵션} {파일}
$ sort -r test.txt
# test.txt 파일의 내용을 내림차순으로 정렬
$ sort -k 3 test.txt
# test.txt 파일의 3번째 필드를 기준으로 정렬
$ sort -u test.txt
# test.txt 파일 정렬, 중복행 제거
uniq ( 중복된 내용의 행이 연속으로 있으면 하나만 남기고 삭제 )
$ uniq {옵션} {파일}
$ uniq -c text.txt
# test.txt 파일내용의 중복된 행을 제거하고 출력한다 ( 같은 라인이 몇번 나오는지도 표시)
$ sort test.txt | uniq -c
# uniq는 연속된 행만 찾을수 있음, 분산된 중복은 찾아내지 못하므로 sort와 같이 쓰기좋음
grep ( 파일에서 원하는 문자열 찾기 )
$ grep {옵션} {문자열} {파일}
# -i: 대/소문자 구분하지 않음
# -n: 줄번호도 같이 출력
# -w: 문자와 한 단어로 일치해야 출력
# -r: 하위 디렉토리에서도 탐색
# -R: 심볼릭 링크를 따라가며, 모든 하위 디렉토리 탐색
# -v: 문자가 포함되지 않는 행 출력
# -m: 최대 출력행수 제한
# -c: 문자와 일치하는 줄의 수 출력
# -h: 여러 파일찾기에서 파일이름 출력안되게
# -l: 문자가 들어간 파일 이름 출력
# -A: 특정문자 아래 추가로 n행 출력
# -B: 특정문자 위 추가로 n행 출력
$ grep -i 'hello' test.txt
# test.txt 파일에서 'hello'라는 문자열을 대/소문자 구분하지 않고 찾아서 출력
$ grep 'hello' *
# 현재 디렉터리의 모든 파일에서 'hello'라는 문자열을 찾아서 출력
$ grep 'hello' *.txt
# 현재 디렉터리의 확장자가 txt인 파일에서 'hello'라는 문자열을 찾아서 출력
$ grep -A 3 'hello' test.txt
# test.txt 파일에서 'hello'라는 문자열 아래로 3행을 추가로 출력
find ( 파일, 디렉터리 검색 )
$ find {옵션} {경로} {표현}
# 옵션
# -P: 심볼릭 링크를 따라가지 않고, 심볼릭 링크 자체 정보 상요
# -L: 심볼릭 링크에 연결된 파일 정보 사용
# -H: 심볼릭 링크를 따라가지 않으나, Command Line Argument를 처리할 땐 예외
# -D: 디버그 메시지 출력
# 표현
# -name: 지정된 문자열 패턴으로 검색
# -user: 특정 소유자로 검색
# -group: 특정 그룹으로 검색
# -type: 지정된 타입으로 검색
# -empty: 빈 디렉토리, 크기0 파일 검색
# -delete: 검색된 파일, 디렉터리 삭제
# -exec: 검색된 파일에 대해 지정된 명령 실행
# -mindepth: 검색을 시작할 하위 디렉터리 최소 깊이
# -maxdepth: 검색할 하위 디렉터리 최대 깊이
$ find
# 현재 디렉터리에 리스트 검색
$ find /home
# /home 디렉터리에 리스트 검색
$ find test.txt
# 현재 디렉터리에 test.txt파일 존재하는지 확인
$ find /home -name '*.html'
# /home 디렉터리에 있는 확장자가 html인 파일 검색
$ find /home -user test
# /home 디렉터리에 유저가 user인 리스트 검색
$ find /home -type f
# /home 디럭터리에 타입이 '파일인'인 리스트 검색
$ find /home -type d
# /home 디럭터리에 타입이 '디렉터리'인 리스트
$ find /home -group test
# /home 디럭터리에 그룹이 test인 리스트 검색
ps ( 현제 실행중인 프로세스 확인 )
$ ps {옵션}
# 옵션
# -A: 모든 프로세스 확인
# -e: 커널 프로세스를 제외한 모든 프로세스 확인
# -f: 프로세스 자세한 정보 확인
# -F: 프로세스 더욱 자세한 정보 확인
# -o: 출력 포맷 지정
# -C: 해당 프로세스의 정보 확인
# -u: 해당 유저가 실행중인 프로세스 확인
# 정보설명
# UID: 프로세스 실행 유저
# PID: 프로세스 아이디
# PPID: 부모 프로세스 아이디
# C: CPU사용량
# STIME: 프로세스 시작시간
# TTY: 프로세스 제어수단
# TIME: 프로세스에 사용된 CPU시간
# CMD: 프로세스 실행 명령어
$ ps -ef
# 현재 실행중인 커널 프로세스를 제외한 모든 프로세스의 자세한 정보 확인
# 가장 많이 사용하는 옵션
$ ps -eo uid,pid
# 현재 실행중인 커널 프로세스를 제외한 모든 프로세스의 uid,pid 확인
$ ps -fC nginx
# 실행중인 nginx 프로세스 자세한 정보 확인
$ ps -fu root
# root유저가 실행중인 프로세스 자세한 정보 확인
$ ps -ejH
# 현재 실행중인 커널 프로세스를 제외한 모든 프로세스를 계층구조로 확인
netstat ( 사용중인 포트 확인 )
$ netstat {옵션}
# 옵션
# -a: 모든 포트 확인
# -t: TCP 포트만 표시
# -u: UDP 포트만 표시
# -n: 호스트 이름을 숫자로 표시
# -l: 연결 대기 상태인 포트만 확인
# -p: 포트을 사용하고 있는 프로세스 확인
$ netstat -tnlp
# 연결 대기 상태인 TCP포트와 해당포트를 사용중인 프로세스 확인