C & C++, 일반

[Tools and Tips] Linux 명령어

그레이트쪼 2017. 2. 11. 21:39

시스템 정보

  • Linux 정보
    • Linux 이름과 커널 버전 알기

> uname -a

    • Linux 배포판 알기

> cat /etc/*rel* 

(redhat일 경우 # cat /etc/redhat-release 와 같은 의미이다)

    • 프로세서 정보

> cat /proc/cpuinfo

    • 메모리 정보

> cat /proc/meminfo

  • hostname 변경
    • /bin/hostname하면 된다

> hostname [HostName]

이거하고 나서 echo $HOSTNAME하면 예전 이름이 나오나 쉘을 다시 띄어주면된다.

  • 시간설정

> date 0901182605.00 

(9월1일 18:26:00, 2005)이란 뜻이다.

  • 쉘에서 색깔바꾸기

> vi /etc/DIR_COLORS

내용을 바꿔준다. 

  • 디스크(disc) 사용량 확인하기
    • Dash에서 "System Monitor"라고 검색하여 [시스템 감시] 항목을 실행한다.
    • [시스템 감시]에서 파일시스템(File Systems) 탭을 누르면 현태 물리적 디스크 장치의 사용량을 알 수 있다. 


    • 참고로 터미널에서는 아래의 명령어

> df -h

Filesystem        Size     Used     Avail     Use%  Mounted on

/dev/sda1       102G      22G      75G      23%  /

...

  • 소프트 링크

> ln -s (대상) (생성할 링크 이름)


프로그램 설치/실행/로깅

  • RPM
    • rpm 설치된거 묻기

> rpm -qa | grep http

    • rpm 설치하기

> rpm -Uvh http.rpm 

    • rpm 강제로 설치하기

> rpm -Uvh --force --nodeps http.rpm

  • 우분투 패키지
    • 패키지 검색 (Program 이라는 단어를 포함한 패키지 검색)

>apt-cache search program

    • 패키지 설치

>sudo apt-get install program

    • 로컬 패키지 설치

>sudo dpkg (--force-depends) -i program.deb

    1. deb는 Debian binary package를 의미하며 이는 우분투가 Debian GNU/Linux 배포판 기반이라서 그렇다.
    2. --force-depends는 패키지 의존성 에러를 무시하는 것이라서 특별히 문제없는데 의존성 에러 떨어져서 어쩔 수 없는 경우에 사용한다. 
    • 모든 패키지 업그레이드

>sudo apt-get upgrade

    • 패키지 삭제 (설정 파일은 삭제 제외)

>sudo apt-get remove program 

    • 패키지 삭제 (설정 파일도 싹 다 지움)

>sudo apt-get purge program

  • 프로그램 실행 로그 처리
    • stdout과 stderr의 redirection

> a.out >> file 2>&1



압축

  • tar
    • tar 풀기

> tar xvzf filename.tar.gz

    • tar로 묶기

> tar cvzf filename.tar.gz [file1] [file2] …

  • zip
    • zip 풀기

> unzip [file]



찾기

  • find 사용하여 파일 찾기

> find (시작위치) (옵션) 

    • ex) > find . -name "filename" ! -type d
      현재위치부터 이름이 "filename"인것 중에서 디렉터리가 아닌것들을 찾는다
    • ex) > find . -mtime -6 -type f
      현재위치부터 수정한 날짜가 6일 미만인 것들 중 file들만 찾는다 (분단위일 경우 -mtime 대신 -mmin)
  • 찾은 파일 실행하기 
    • find한 결과 파일을 삭제하기

> find . -name "filename" -exec rm -rm_options {} \; 

또는 

> find . -name "filename" | xargs rm -rm_options 

    • *.c, *.h파일을 찾은 다음 total line수 구하기

> find . -name "*.[ch]" | xargs wc -l 

또는

> find . -name "*.cpp" -or -name "*.h" | xargs wc -l 

ex) Source 코드 사이즈 


> find include/Common include/SingleView include/ServiceAbstraction include/CommonFramework include/test src -name "*.cpp" ! -name "*Test*.cpp" -o -name "*.h" ! -name "*Test*.h" | xargs wc -l 

    • find한 결과 파일들에서 단어찾기

> find . -name "*.h" | xargs grep Deprecated 

  • grep 사용하여 파일 찾기
    • 문자열 제외하는 방법

1. -v 옵션을 반복해서 사용

> grep Hello * | grep -v apple | grep -v orange | grep -v banana

2. -Ev 옵션으로 패턴 적용 (포함하는  것을 찾을 때는 -Ev 대신 -E)

> grep Hello * | grep -Ev 'apple|orange|banana'

    • grep 결과 중 특정 column만 뽑아내는 방법
      awk를 활용 (사실 임시 방법, 더 좋은 방법 검색 필요)
      예) 특정 키워드를 가지고 있는 파일과 line number 출력하기

> grep Hello * -r -n | awk '{ print $1 }'

    • binary file이라고 grep이 안될 경우

1. -a option을 준다. 

예) 특정 키워드를 가지고 있는 파일과 line number 출력하기

> grep Exception dumpState_201502111111.log

Binary file dumpState_201502111138.log matches

> grep -a Exception dumpState_201502111111.log