골방잡담

실무에 많이 사용하는 리눅스 명령어 본문

PC방에서/리눅스

실무에 많이 사용하는 리눅스 명령어

sisu_ 2020. 9. 26. 20:31

리눅스 책을 보면서 공부를 하고 있는데, 실무에서 자주 쓰는 것들은 업무효율을 위해서 한번쯤 날을 잡고 외워봐야겠다는 생각으로 정리를 해보았다. 

 

 

디스크/디렉토리 현황 확인 

 

디렉토리 확인

  • tree -L 2

 

디스크 용량 확인

  • df -h : disk 현황 확인 , df -ah 편하게 + 메모리 현황까지 보기. (파일 시스템 단위)

  • du -sh : 디렉토리별 용량 확인. -s는 지정 디렉토리 하위의 파일/디렉토리의 용량을 모두 합친 것을 출력하는 것이고, h는 human

 

할당된 용량 확인 

  • sudo lvs : logical volumes 로 외우면 됨

전체 메모리,cpu 현황

  • Glances

심볼릭 링크로 연결된 링크 경로까지 보기

  • realpath

file {파일명} 

  • 파일 종류 확인 가능 (디렉토리인지, jpg인지, 등등) 

stat {파일명} 

  • 접근시간이랑 변경시간 등 파일에 대한 정보 확인 가능 (!!) 

압축된 파일 보기  (압축을 따로 풀지 않고 볼 수 있음)

  • zcat

  • zamore

  • zless

 

디렉토리/파일 관리

 

cp

  • cp -p : 기존 파일의 생성일/소유자/날짜 정보등을 모두 가져옴

  • cp -R : 하위 폴더/파일까지 복사 

ln -s 

  • 심볼릭링크 생성

 

다른 서버로 파일 보내기

  • scp ./파일 stgefss01://경로~~/폴더

 

파일압축

  • gzip

  • gzip -r (하위 디렉토리까지) 

  • gunzip {파일명} : 압축 해제

 

권한 변경 

  • chmod

    • chmod -R : 하위 디렉토리/파일 모두 변경 

    • rwx : 4, 2, 1

    • 자주 쓰는 권한 :

      • 755 (소유자는 모두, 나머지는 읽기+실행) => (실행해야만하는) 디렉토리에 많이 씀 

      • 644 (소유자는 읽기/쓰기, 나머지는 읽기) => (실행 안 되는) 파일에 많이 씀

  •  chown -R 사용자:그룹 : 하위 디렉토리까지 소유자 변경

 

 

파일 찾기

  • find -name 패턴 

    • 이 때 주의할 점은, 완벽하게 일치하는 파일명을 넣거나 아니면 *로 뒤에 랜덤값을 넣어줘야함.

ubuntu@ip-172-31-43-2:~/commandpractice$ find ./ -name result
ubuntu@ip-172-31-43-2:~/commandpractice$ find ./ -name result*
./result.txt
  • find -newer 파일 (이 파일 이후에 생성된 파일)

  • -exec 명령어 {} \;     : 어떤 파일들을 찾고 그 파일들에 대해서 -exec 뒤의 액션을 해라

  • find ./ -empty : 빈 파일 / 폴더 찾기

  • 특정 단어 들어있는 파일 찾기 ★★★

    • grep 할 때 대문자 H를 넣어주면, 어느 파일에서 찾았는지도 같이 나오기 때문에 써주면 좋을 듯

find ./ -type f -name "*.txt" -exec grep -nriH 'Geek'  {} \;

 

vi 관련 명령어

읽기전용으로 파일 열기 - 단, wq! 하면 수정사항 저장 가능

  • vi -R [파일이름]

이동 방향키

  • h, l : 왼쪽/오른쪽

  • j,k : 아래/ 위

  • W : 다음 단어의 처음으로 이동

  • 0 혹은 ^ : 현재 행의 맨 앞으로 이동

  • $ : 현재 행의 맨 끝

  • H : 현재 화면의 맨 위

  • L : 현재 화면의 맨 아래

  • Ctrl + F : 한 화면 다음으로 이동 (forward)

  • Ctrl + B : 한 화면 이전으로 이동 (backward)

  • [행번호] G : 원하는 행으로 이동

 

저장 관련

  • :wq test.txt  : text.txt라는 이름으로 문서가 저장됨.

 

내용 편집

  • x : 한 글자 삭제

  • dw : 한 단어 삭제

  • dd : 줄 단위 삭제

  • u :  실행취소

  • yy :  복사

  • p / P : 붙여넣기 (아랫줄로 / 윗줄로 )

 

검색

  • / : 아래 방향으로 검색

  • ? : 위 방향으로 검색

  • n / N  : 순방향으로 다음 / 역방향으로 다음

  • /\c{문자열}  : 슬래시(/) + 백슬래쉬(\) + 소문자 c + "찾을 문자열" 로 대소문자 구분 없이 검색 ★★★

  • :se ic : 라는 명령을 준 후, 찾기를 하면 대소문자 구분이 없어집니다. set ignorecase 라는 명령의 준말입니다. ★★

 

기타

  • :set nu : 행번호 표시

  • :s/word1/word2/ : 현재 행에서 word1 들을 word2로 바꾸기

  • :1, .s/word1/word2/ : 1부터 현재 행의 word1들을 word2들로 바꾸기

  • :%s/word1/word2/g : 파일 전체 에 있는 word1들을 word2들로 바꾸기

  • v : i 누르듯, v를 누르면 visual mode 진입하여 여러 줄 선택 가능

  • norm i# : 주석처리 (v키로 여러 줄 선택 후 하면 됨)

  • norm x : 주석처리 해제

 

파일 내용 보기

  • less : 일부만 보기

    • space : 한 화면씩 밑으로

    • enter : 한 줄씩 밑으로

    • b : 한 화면 이전으로

    • / : 이후에서 찾기

    • ? : 이전에서 찾기

    • q : 종료

  • head : 파일 앞부분 출력

    • head -n 20 파일명 : 앞에서 20행까지 보여줌

  • diff : 차이점 출력

    • 변경 기호도 보이는데, a : added, d : deleted , c: changed 임

  • wc :  파일 내용 통계

    • wc -c : 바이트 수 출력

    • wc -m : 문자 수 출력

    • wc -l : 행 수 출력

    • wc -w : 단어 수 출력

  • cut : 파일 내용을 특정 구분자로 필드 나누어서 보고 싶을 때 ! (엑셀 나누기처럼)

    • : 를 구분자로 해서 나누고, 그 중 1번째 필드만 출력할 것.

    • cut -d : 필드 구분자를 설정

    • cut -f : 지정된 필드를 출력

    • cut -d : -f 1 /etc/passwd

 

  • grep

    • grep -v : 특정 문자를 포함하지 않는 행을 출력

      • grep -v "#" filename | grep -v "^$" (주석과 빈줄 모두 빼고 보기)
    • grep -n : 행번호와 함께 출력

    • grep -i : 대소문자 구분

    • grep "문자열" * : 현 디렉토리의 모든 파일에서 문자열 검색

    • grep -r "문자열"  * : 하위 디렉토리를 포함한 모든 파일에서 문자열 검색

 

 

  • sort : 파일 내용 정렬 (알파벳순)

    • -r : 역순으로 정렬

    • sort 파일명 : 파일 내용을 행 별로 정렬

    • ll | sort 이런식으로 파일 이름을 sort할수도 있음 

 

SHELL 작성시 유용

 

awk

  • awk는 파일 또는 파이프를 통해 입력 라인을 얻어와 $0라는 내부 변수에 라인을 입력. 각 라인은 레코드라고 부르고, newline에 의해 구분
  • 라인은 공백을 기준으로 각각의 필드나 단어로 나뉜다. 필드는 $1부터 시작. 많게는 100개 이상의 필드를 저장할 수 있음

  • 내장 변수인 FS라고 부르는 필드 분리자가 공백을 할당받는다. 필드가 콜론이나 대시와 같은 문자에 의해 분리되면 새로운 필드 분리자로 FS의 값을 변경할 수 있다

  • awk는 화면에 필드를 출력할 때 print 함수를 사용

  • 콤마는 출력필즈 분리자(OFS)와 매핑되어 있으며 공백을 할당받음

  • awk '{print $0}' a.txt : 전체 print

  • awk '{print $1}' a.txt : 첫 부분만 print

  • awk '/error/' a.txt : error 있는 줄만 print

  • awk -f [awk 명령파일] [awk 명령을 적용할 텍스트파일] : 이렇게 명령내용을 따로 파일로 빼놓을수도 있음

 

sed

  • 원본 파일을 수정하는 것이 아니라, 원본파일을 변형해서 보고 싶을 때 (예를들면 로그 파일을 뭔가 보기 좋게 변형해서 보고 싶을때) 사용할 수 있음 
  • sed G a.txt : 한 줄씩 띄어서 보이게 하기

  • sed '/error/{x;p;x;}' a.txt : error라는 단어 위에 줄 한 칸씩 띄우기

  • sed '/error/G' a.txt : error 단어 밑에 줄 한칸씩 띄우기

  • sed -n /error/p a.txt : 특정 패턴 이 있는 줄만 출력

  • sed 's/[Ll]ife/Error/g' a.txt : 특정 단어를 모두 바꿔서 보기

 

 

네트워크 확인

 

lsof 

  • list open files. 시스템에 열린 파일 목록을 알려주고 사용하는 프로세스, 디바이스 정보, 파일의 종류등 상세한 정보를 출력해 준다.

  • 리눅스와 유닉스는 추상화된 파일 시스템(VFS - Virtual File System)을 사용하므로 일반 파일, 디렉터리, 네트워크 소켓, 라이브러리, 심볼릭 링크 등도 모두 파일로 처리되므로 lsof 에서 상세한 정보를 확인할 수 있다.

  • lsof -i TCP:22 

    • 특정 포트로 열린 파일들을 볼 수 있음

  • lsof -c httpd

    • 특정 커맨드로 연 파일들 볼 수 있음 

 

netstat -anp | grep PORT | grep LISTEN

  • 내 서버에 어떤 포트 사용하고 있는지 확인

 

기타 잡다구리 

crontab

  • crontab -l : 리스트 조회

  • crontab -e : 수정/삭제 등

 

환경변수 파일 동기화

  • source .bashrc

ps -ef 옵션

  • ps -eo pid,lstart,cmd

 

Comments