Unix Tip

유닉스 혹은 리눅스용 커맨드 팁 모음입니다.





  1. 서브 디렉토리까지 파일안의 문자열 모두 검색
  2. haha와 huhu가 동시에 들어있는 행 뽑기
  3. 찾아서 지우기
  4. 공사중에 로그인 막기
  5. 크기가 가장 큰 파일, 디렉토리 찾기
  6. 가장 큰 파일을 찾으려면
  7. 현재 디렉토리의 크기만을 파악할때
  8. 시스템 정보 감추기
  9. 어떤 프로세스가 메모리를 가장 많이 잡아먹고 있는지 알아내기
  10. FTP로 들어온 사용자 확인하기
  11. 원하지 않는 사용자 죽이기
  12. less 결과를 vi로 보기
  13. vi에서 블럭 설정하기
  14. man 페이지 프린트하기
  15. ping 무시하기
  16. LILO 다시 살리기
  17. 특정 사용자 ftp 접근 막기
  18. X 윈도우에서 TV보기
  19. ls라는 파일이 포함된 rpm패키지 찾기
  20. 현재 rpm패키지의 의존패키지
  21. 현재 디렉토리크기
  22. 바로 이전 디렉토리로 가기
  23. 프로세스명으로 프로세스 죽이기
  24. 하드웨어 시계맞추기
  25. 원격에서 리모트서버의 X application실행시
  26. 링크 파일
  27. ^M 문자 없애기
  28. 비어있는 행을 찾기
  29. 기타 명령어 떼
  30. 각자가 사용하는 컴퓨터의 정보를 알고 싶을때
  31. 전체 메일
  32. 디렉토리만 빠르게 검색
  33. 호스트 네임 바꾸기
  34. 틀린명령어 틀린글자만 바꿔서 실행
  35. 유닉스의 현재 버젼과 종류 그리고 라이센스등을 알려주는 명령어
  36. 열려있는 포트 알아내기
  37. 텔넷 모든 접속자에게 메세지 보내기
  38. lsof는 열려있는 파일을 나타내 주는 옵션
  39. 사용자가 어디에서 무엇을 하는지 알아내기
  40. 텔넷 화면 수정
  41. 하위 디렉토리 한꺼번에 만들기
  42. 특정디렉토리의 모든 파일 안의 특정 문자열 치환
  43. killall 명령 시뮬레이션 (프로세스명으로 죽이기)
  44. find와 grep
  45. vi 검색, 치환
  46. 파일내의 중복되는 행을 제거 : uniq
  47. 파일의 결합
  48. 파일의 암호화 : crypt
  49. 개행을 제외한 화면내의 보이지 않는 문자 출력
  50. 화일내의 포함된 특정문자열로 찾아서 내용만 출력하기
  51. 특정 파일의 화일명을 비슷하게 여러개 한꺼번에 바꾸기
  52. 어제 날짜 구하기
  53. 원하지 않는 사용자 죽이기
  54. UNIX상에서 한글출력이 깨져 나올경우
  55. 현재 디렉토리의 대량의 파일을 각자의 파일명가운데에 특정문자 추가하여 바꾸기

0.0.0.1 서브 디렉토리까지 파일안의 문자열 모두 검색


0.0.0.2 haha와 huhu가 동시에 들어있는 행 뽑기



0.0.0.3 찾아서 지우기



0.0.0.4 공사중에 로그인 막기


시스템을 공사중일 때, root 이외의 다른 사용자를 로그인 못하게 해야 할 때가 있죠? 그럴 때는, /etc/nologin 이라는 파일을 만들어,공사중 또는 Under Construction이라는 공지를 넣으면 됩니다.


0.0.0.5 크기가 가장 큰 파일, 디렉토리 찾기

가장 큰 디렉토리를 찾으려면,  du -S | sort -n 


0.0.0.6 가장 큰 파일을 찾으려면

 ls -lR | sort +4n 


0.0.0.7 현재 디렉토리의 크기만을 파악할때



0.0.0.8 시스템 정보 감추기

/etc/inetd.conf 파일을 열어서,


0.0.0.9 어떤 프로세스가 메모리를 가장 많이 잡아먹고 있는지 알아내기

ps -aux | sort +4n  또는 ps -aux | sort +5n 


0.0.0.10 FTP로 들어온 사용자 확인하기

 ftpwho,ftpcount 


0.0.0.11 원하지 않는 사용자 죽이기

 [root@dream /root]# skill -KILL sunny 

위의 명령을 내리면 sunny 라는 사용자를 완전히 추방시킬수 있습니다. 그런데 이렇게 완전히 추방시키는게 아니구, 특정 터미널에 접속해있는 사용자만 추방시켜야 할 때도 있겠죠? 그럴때는

 [root@dream /root]# skill -KILL -v pts/14 

이런식으로 하면 된다 그럼 pts/14 에 연결되어 있는 사용자가 죽게 됩니다.


0.0.0.12 less 결과를 vi로 보기

less상태에서 v를 누르면 바로 vi로 감


0.0.0.13 vi에서 블럭 설정하기

alt+v 하면, 라인 단위로 블럭 설정을 할 수 있으며, 해제 하시려면 Esc를 누르면 됩니다. 또한 ctl+v를 하시면, 블럭 단위로 블럭을 설정하실 수 있습니다.

블럭을 설정 하신 뒤,

삭제를 하려면 x 복사를 하려면 y 붙여넣기는 p


0.0.0.14 man 페이지 프린트하기

 man -t vi > vi.ps 


0.0.0.15 ping 무시하기



0.0.0.16 LILO 다시 살리기

 boot : vmlinuz root=/dev/hda6 


0.0.0.17 특정 사용자 ftp 접근 막기


/etc/ftpusers 파일에 로그인 네임을 추가하면 됩니다.


0.0.0.18 X 윈도우에서 TV보기

리눅스에서 TV보기 위해서는 드라이버 파일과 TV를 보는 프로그램이 필요합니다. 이 글에서는 미지 리눅스 OS에 탑재된 bttv 칩셋을 사용하는 TV 카드를 기준으로 설명합 니다. 만일 커널을 새로 컴파일 하실 분은 반드시 Character devices -> Video For Linux -> BT848 Video For Linux 항목을 모듈화 시키거나 커널에 포함하십시오.

TV 카드를 리눅스에 인식시키기 위해서 /etc/conf.modules 파일에 다음과 같은 내용을 삽입하고 컴퓨터를 다시 시작합니다.


이제 kwintv나 xawtv 등의 TV 시청 프로그램으로 TV를 볼 수 있습니다. 만약 TV 장치를 찾지 못하는 오류가 있다면 bttv driver 디렉토리에 포함된 MAKEDEV 를 실행하십시오.


0.0.0.19 ls라는 파일이 포함된 rpm패키지 찾기

일단 ls의 절대경로를 알아야 한다. which lswhich로 알아낸 ls의 절대경로로 rpm질의를 한다.


0.0.0.20 현재 rpm패키지의 의존패키지

 rpm -qR 패키지명 


0.0.0.21 현재 디렉토리크기

 du -h –max-depth=1 . 


0.0.0.22 바로 이전 디렉토리로 가기

 cd – 


0.0.0.23 프로세스명으로 프로세스 죽이기



0.0.0.24 하드웨어 시계맞추기

배포본을 설치하고 나면 시간이 맞지 않는 경우가 많다. 간단히 어느정도 정확한 시간을 설정하는 방법이다.


0.0.0.25 원격에서 리모트서버의 X application실행시

X윈도 app를 실행할때 다음과 같은 에러가 나면 조치


0.0.0.26 링크 파일

ln -sf 링크할디렉토리 링크로 만들어질 디렉토리  참고로 링크를 걸기만 한다고 접근가능한것은 아니고,링크가 걸린 디렉토리의 퍼미션도 허용으로 바꿔야 한다. 링크로 만들어질 디렉토리는 저절로 생성되고 퍼미션 777로 잡혔음.  ln -sf /www/dir_1/r_photo /www/dir_2/r_photo 


0.0.0.27 ^M 문자 없애기

Unix류 기계에서는 그냥 ^J 하나만을 개행문자로 사용하는데 PC에서는 MJ 이렇게 두 제어문자가 연속으로 사용되어야 개행문자로 받아들이죠. (그래서 PC쪽에서 만들어진 txt문서를 유닉스 기계로 불러와 vi 등을 실행하면

    줄 끝마다 보기싫은 ^M이 붙습니다. 뭐 vi에서 요거 지우는건 간단하지만요.)


PC에서 Unix에서 작성한 텍스트 문서를 보통 ftp로 받아오거나 하면 워드패드 등에서 봤을 때 전혀 개행이 되어있지 않지요. 하지만 MS Word 등 좀더 강력한 편집기에선 대개 잘 처리해서 잘 보여줍니다.

위는 간단한 Python 소스입니다. 위의 경우 처럼 ^M문자가 있을때, dos2unix라는 유틸리티를 많이 사용하기도 하죠. 하지만 vi에서 간단하게 모두 삭제할수도 있습니다. dos2unix가 없거나 빠져나가서 지우는게 귀찮을때 좋겠죠. 명령은  :%s/(ctrl+v)M//g  입니다.  (ctrl+v)M  이거는 ctrl과 v를 눌러준후, ctrl키를 떼지 말고 바로 m을 눌러주시믄 됩니다. 위는 정규표현식을 이용한것이고, 형식은  %s/이것을/요걸로/g  입니다 그럼 문서안의 모든 “이것을” “요걸로” 바꾸게 되죠. 단, M의 경우 ctrl+M의 뜻인데 단순히 문자로 M을 바꾸라도 해도 인식을 못하기 때문에, 위처럼  (ctrl+v)M  으로 해주셔야 합니다.


0.0.0.28 비어있는 행을 찾기

 #grep -n ‘^$’ filename  정규표현 의미 ^ 행의 처음 $ 행의 끝 . 임의의 한 문자


0.0.0.29 기타 명령어 떼



0.0.0.30 각자가 사용하는 컴퓨터의 정보를 알고 싶을때

 [root …]#more /proc/cpuinfo  위와 같이 치면 사용자의 컴퓨터 정보를 볼수 있으며,  [root …]#more /proc/meminfo  라고 치면 사용자의 메모리 정보를 볼수 있습니다.


0.0.0.31 전체 메일

먼저 보낼 내용을 텍스트로 파일로 만들어야 합니다.어디에서든지 가능하지요!  [ root@aromi /root]# vi nea  안녕하세요! 저희 서버에서는 웹서버를 오늘부터 시작합니다. 사용자 여러분의 많은 관심과 이용을 부탁드립니다. 만약, 한글을 사용하지 못하면 윈도우95에서 먼저 쓴다음에 ftp를 이용해서 올리면 됩니다.  [공지]->  라고 쓴 것은 보낼 메일의 제목입니다.  ‘cat /etc/passwd|gawk -F : ‘{print$1}”  ->먼저 cat으로 passwd파일의 첫번째 나오는 내용을 출력하라는 소리입니다. nea라는 텍스트파일을 메일의 내용으로 보내라는 내용입니다.


0.0.0.32 디렉토리만 빠르게 검색

 ls -al | grep “^d” 


0.0.0.33 호스트 네임 바꾸기

/etc/HOSTNAME file은 부팅시 /etc/sysconfig/network file 의 HOSTNAME 부분을 참조하여 저장합니다. 호스트 네임을 바꾸고자 한다면 /etc/sysconfig/network file 의 HOSTNAME 부분을 바꿔주면 됩니다. 바꾸신후 시스템을 재부팅 하신거나, #/etc/rc.d/init.d/network restart 명령을 내리시면 됩니다.


0.0.0.34 틀린명령어 틀린글자만 바꿔서 실행

 # ./configure –prefax=/usr/local/apache  앗, 틀렸습니다. prefax가 아니라 prefix인데… 고쳐야지요…간단하게 화살표키로 왔다갔다 하면서 지워지고 바꿔주면 되겠지만 다른 방법이 있습니다.  # ^fax^fix^  라고 하면…  -> ./configure –prefix=/usr/local/apache  라고 됩니다..


0.0.0.35 유닉스의 현재 버젼과 종류 그리고 라이센스등을 알려주는 명령어

 [ root@aromi /root]# uname -a 


0.0.0.36 열려있는 포트 알아내기

 netstat -anp | grep LISTEN 


0.0.0.37 텔넷 모든 접속자에게 메세지 보내기

wall 내용…  Ctrl-D 


0.0.0.38 lsof는 열려있는 파일을 나타내 주는 옵션

여기에 보안 점검을 위하여, -i 옵션을 사용하면, 현재 열려 있는 포트와 링크되어 있는 서비스 또는 프로그램이 모두 나타나죠. 자신이 열어 놓지 않은 포트가 열려있다던지하면 한번쯤 의심해 봐도 되겠죠?


0.0.0.39 사용자가 어디에서 무엇을 하는지 알아내기

w라는 명령어를 사용하시면 된답니다. 이 때,  w [-s]  를 붙여주시면 -s 옵션이 긴 정보 대신에 필요한 짧은 정보만 알려 준답니다.


0.0.0.40 텔넷 화면 수정

로그인화면:  /etc/issue.net  로그인후화면:  /etc/motd 


0.0.0.41 하위 디렉토리 한꺼번에 만들기

 mkdir -p music/koreanmusic/ost 


0.0.0.42 특정디렉토리의 모든 파일 안의 특정 문자열 치환



0.0.0.43 killall 명령 시뮬레이션 (프로세스명으로 죽이기)

ps aux | grep 프로세스명 | grep -v grep | awk ‘{ print $w }’ | xargs kill -9 

  • 모든 프로세스 나열
  • 지정한 프로세스만 뽑아냄
  • grep 명령이 포함된 라인 제거
  • awk로 두번째 필드만 뽑아냄
  • xargs에 의해 걸러진 아이디로 죽임


0.0.0.44 find와 grep

find . -name “H20021115.*” -exec grep -l ‘…;……..;110100’ {} ;


0.0.0.45 vi 검색, 치환

구호스트 서비스 오늘 날짜에서 분류코드가 110100인 파일 찾기 :%s/./U&/g

모든문자->대문자 g/^$/d


0.0.0.46 파일내의 중복되는 행을 제거 : uniq

입력 파일에서 연속되는 행을 비교하여, 두 번째 이상의 동일한 행들을 제거하고 나머지는 출력파일로 출력 연속되어 표시되지 않으면 동일한 행이 존재할 수 있음.

sort 명령을 사용하여 정렬한 후 사용하는 것이 타당 사용법uniq [-cdu] [+|숫자] [입력파일 [출력파일]] -c : 각 행이 연속적으로 나타난 횟수를 행의 시작부분에 표시 -d : 연속적으로 반복되는 행만 출력 -u : 연속적으로 반복되지 않는 행만 출력 +숫자 : 행의 처음 ‘숫자’ 만큼의 문자는 무시 -숫자 : 행의 처음 ‘숫자’ 만큼의 필드는 무시


0.0.0.47 파일의 결합

여러 개의 텍스트 파일을 하나의 파일로 순차적으로 묶는데 사용

행단위 결합 : paste 여러 파일에 대해여 행간 결합을 수행하거나 하나의 파일에 대해 연속되는 행들을 결합 둘이상의 파일에 대해서 테이블상의 하나의 열과 같이 취급하여 동일한 행번호 끼리 결합


두 파일을 동일한 필드 값에 따라 행 단위 결합 : join

관계형 데이터 베이스에서의 join 연산과 동일 키로 사용할 필드에 대해 정렬된 두 파일의 각 행에 대해 동일한 키 값을 갖는 행들을 결합 입력으로 사용될 두 파일은 키 값에 대해 오름 차순으로 정렬되어 있어야 함 출력 결과는 기본적으로 키 값이 먼저 표시되고, 첫번째 파일에서 키를 제외한 나머지 필드, 두번테 파일에서 키를 제외한 나머지 필드가 표시 필드 구분은 공백, 탭, 개행문자가 기본, 연속적으로 나타날 경우 하나로 취급



0.0.0.48 파일의 암호화 : crypt

파일을 암호화 하여 키를 알지 못하는 사람은 내용을 볼 수 없도록 함 표준 입출력 사용


0.0.0.49 개행을 제외한 화면내의 보이지 않는 문자 출력

cat -v http://comp-cse.sch.ac.kr/~pl/lecture/linux/file2.html


0.0.0.50 화일내의 포함된 특정문자열로 찾아서 내용만 출력하기

grep -h ‘20030305……01’ ./R00*


0.0.0.51 특정 파일의 화일명을 비슷하게 여러개 한꺼번에 바꾸기



  • 현재디렉토리의 모든 *.* 파일을 *._* 형식으로 바꾼다.
  • 더 간단하게 ls *.* | sed “s/([a-zA-Z0-9]*).([a-zA-Z0-9]*)/mv 1.2 1._2/g”




0.0.0.52 어제 날짜 구하기

$ date -v-1d “+%Y-%m-%d”  [컴퓨터분류]


0.0.0.53 원하지 않는 사용자 죽이기

[root@dream /root]# skill -KILL sunny 

위의 명령을 내리면 sunny 라는 사용자를 완전히 추방시킬수 있습니다. 그런데 이렇게 완전히 추방시키는게 아니구, 특정 터미널에 접속해있는 사용자만 추방시켜야 할 때도 있겠죠? 그럴때는 [root@dream /root]# skill -KILL -v pts/14 

이런식으로 하면 된다 그럼 pts/14 에 연결되어 있는 사용자가 죽게 됩니다.


0.0.0.54 UNIX상에서 한글출력이 깨져 나올경우

유닉스상에서 한글을 stdout출력할 경우 가끔 출력되는 문자들이 몽땅 깨져서 나오는 경우가 있다. 이때부터는 프로그램이 종료된 이후에도 쉘 프람프트를 비롯, 쉘에서 입력하는 모든 커맨드가 깨져서 나온다. 이는 ascii code 로 ^n 에 해당하는 문자가 출력될 때 나오는 현상으로 그 이후로는 MSB가 모두 켜지기 때문이다. 문자가 깨져나오는 이후부터 ascii code 로 ^o 에 해당하는 문자를 출력하면 반대로 된다. 쉘 커맨드 상에서라면, # echo ^v^o 

라고 해야겠지만 커맨드가 깨져나오므로 shell이 해석을 못한다. 따라서, command line에서 ^v^o를 치고 enter 하면 된다


0.0.0.55 현재 디렉토리의 대량의 파일을 각자의 파일명가운데에 특정문자 추가하여 바꾸기

/bin/ls는 ls가 보통 -F로 파일 종류 표시(*, @등)까지 하기 때문에 그걸 막기 위한 것이고 xargs의 -t는 트레이스모드이다.