Skip to content

리눅스 TIP

조회 수 25562 추천 수 0 2009.03.09 21:05:01
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. 현재 디렉토리의 대량의 파일을 각자의 파일명가운데에 특정문자 추가하여 바꾸기



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

find ./ -name "*" -exec grep 'abc' {} ; -print
find . -name -print -exec grep abc {} ;
grep -r abc *


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

grep haha foo.txt | grep huhu


3 찾아서 지우기

find / -name "*.eml" -exec rm -f {} ;


4 공사중에 로그인 막기

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


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

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


6 가장 큰 파일을 찾으려면

 ls -lR | sort +4n


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

[root@dev2 local]# du -c -h --max-depth=0 *
6.4M    apache
35M     bin
43M     dns
1.7M    doc
42k     etc
1.0k    games
42k     geektalkd
1.1M    gnuws
1.1M    include
41k     info
19M     jakarta-tomcat-3.2.3
0       jre
15M     jre118_v3
25M     lib
62k     libexec
1011k   man
1.3M    mm.mysql.jdbc-1.2c
937k    sbin
3.8M    share
1.8M    shoutcast-1-8-3-linux-glibc6
5.2M    ssl
159M    total


8 시스템 정보 감추기

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

telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -h


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

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


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

 ftpwho,ftpcount


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

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


12 less 결과를 vi로 보기

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


13 vi에서 블럭 설정하기

alt+v 하면, 라인 단위로 블럭 설정을 할 수 있으며, 해제 하시려면 Esc를 누르면 됩니다. 또한 ctl+v를 하시면, 블럭 단위로 블럭을 설정하실 수 있습니다.
블럭을 설정 하신 뒤,
삭제를 하려면 x 복사를 하려면 y 붙여넣기는 p


14 man 페이지 프린트하기


 man -t vi > vi.ps


15 ping 무시하기

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all


16 LILO 다시 살리기

 boot : vmlinuz root=/dev/hda6


17 특정 사용자 ftp 접근 막기

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


18 X 윈도우에서 TV보기

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

alias char-major-81 bttv  
# 필립스 튜너의 경우 pre-install bttv modprobe -k tuner
# 알프스 튜너의 경우 pre-install bttv modprobe -k tuner type=9


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


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

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

rpm -qf /bin/ls
[root@piruks /etc]# which ls
/bin/ls
[root@piruks /etc]# rpm -qf /bin/ls
fileutils-4.0i-2mz


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

rpm -qR 패키지명


21 현재 디렉토리크기

du -h --max-depth=1 .


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

cd -


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

killall 프로세스명
kill -9 `pidof 프로세스명


24 하드웨어 시계맞추기

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

[root@dev /down]# rdate -s time.kriss.re.kr
[root@dev /down]# clock -w


25 원격에서 리모트서버의 X application실행 시 X윈도 app를 실행할때 다음과 같은 에러가 나면 조치

[kang@dev /home/kang] xclock
Xlib: connection to "211.222.186.170:0.0" refused by server
Xlib: Client is not authorized to connect to Server
Error: Can't open display: 211.222.186.170:0.0
 
export DISPLAY=211.222.186.170:0
xhost +211.222.186.170


26 링크 파일

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


27 ^M 문자 없애기

a = 1^M
def vartest(a):^M
a = a + 1^M
return a^M
a = vartest(a)^M
print a^M  

위 는 간단한 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  으로 해주셔야 합니다.


28 비어있는 행을 찾기

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

[...] ... 안의 임의의 한 문자. a-z,0-9 같은 범위도 사용
[^..] .. 안에 없는 임의의 한 문자. 범위 사용가능
r* 0회 이상 r 반복
r+ 1회 이상 r 반복
r? 0 혹은 1회의 r
r{n,m} n회 이상 m회 이하 r 반복
r1|r2 r1 혹은 r2 (egrep 만)
(r) r 의 정규표현(egrep 만)


29 기타 명령어 떼

alias(명령어 간소화하기)
apropos(관련된 명령어 찾기)
arch(컴퓨터 종류 알기)
arp(같은 서브넷의 IP 보여주기)
at(작업 시간 정하기)
atd(계획성 있는 작업 실행하기)
awk(특정 패턴 문자 처리하기)
a2p(펄 파일로 바꾸기)
badblocks(배드 블럭 검사하기)
bc(계산기)
biff(메일 수신 소리로 확인하기)
bg(후면작업; 배경화면 설정)
bind(키나 함수 순서 결합하기)
break(루프 빠져나가기)
cal(달력보기)
builtin(내부 명령어 알아보기)
case(조건 처리하기)
cat(화면상에서 파일 보기)
cd(디렉토리 변경하기)
cfdisk(디스크 설정하기)
chattr(파일 속성 변경하기)
chfn(사용자 정보 변경하기)
chgrp(파일, 디렉토리가 속했던 그룹 바꾸기)
chmod(파일 권한 바꾸기)
chown(파일 주인 바꾸기)
chsh(지정된 셸 바꾸기)
cksum(CRC값을 점검한다)
clear(화면 청소하기)
clock(CMOS 시각을 조정하기)
cmp(파일 비교하기)
colcrt(문자 변환 필터)
colrm(열 삭제하기)
column(가로 정렬하기)
comm(파일 비교 출력하기)
command(명령어 알아보기)
continue(루프 계속돌기)
cp(파일 복사하기)
cpio(복사본 만들기)
crontab(cron을 관리한다)
csplit(파일에 서식, 규칙 정하기)
cut(필요한 필드만 출력하기)
date(날짜 보기)
dd(블럭장치 읽고 쓰기)
debugfs(ext2 파일 시스템 디버깅하기)
declare(변수 선언하기)
df(파일 시스템의 사용량 보기)
dirs(디렉토리 목록 표시하기)
dmesg(부팅 메시지 보기)
dnsdomainname(DNS 이름 출력)
domainname(NIS 이름 출력&설정)
du(디렉토리와 파일의 용량 파악하기)
dumpe2fs(파일 시스템 정보 보기)
echo(표준 출력하기)
eject(장치 해제하기)
elm(메일 관련)
enable(내부 명령어 지정)
env(환경변수 출력하기)
eval(인수 읽기)
exec(셸 명령어 실행하기)
exit(종료하기)
expand(탭을 공백으로 변환하기)
export(변수 지정하기)
e2fsck(파일 시스템 복구하기)
fc(지정된 편집기 받기)
fdformat(플로피 디스크 포맷하기)
fdisk(파티션 나누기)
fg(지정된 작업을 전면 프로세스로 시작하기)
file(파일 종류 보기)
find(파일 찾기)
finger(사용자 정보 알기)
fold(정형화하기)
fmt(정형화하기)
for(반복 실행하기)
free(메모리 사용량 알아보기)
fsck(파일 시스템 검사하기)
fstab(파일 시스템에 대한 고정적인 정보 저장하기)
ftp(파일 전송 프로그램)
fuser(프로세스 ID 출력)
getkeycodes(매핑 테이블 출력하기)
grep(특정 문자(열) 검색하기)
gzexe(실행 파일 압축하기)
gzip(압축하기)
halt(시스템 종료하기)
hash(기억해 두기; index 역할)
head(파일의 앞부분 출력하기)
help(도움말 보여주기)
host(호스트 정보 보기)
history(사용 명령어 목록보기)
hostname(서버 이름 알기)
id(계정 정보 알기)
if(조건문 실행하기)
ifconfig(랜카드에 주소 할당하기)
imolamod(모듈 설치하기)
inetd(인터넷 서비스의 최상위 데몬)
init(실행 단계 정하기)
ispell(철자법 검사하기)
jobs(수행중인 프로세스 알기)
kbd_mode(키보드 모드 출력하기)
kill(프로세스 죽이기)
klogd(커널 로그 데몬)
ldd(공유 라이브러리의 의존성 알기)
less(페이지 단위로 출력하기)
let(정규식 표현하기)
lilo(부팅하기)
ln(링크하기)
locate(패턴에 맞는 파일 찾기)
login(로그인하기)
logger(시스템 로그 기록하기)
logname(사용자 로그인명 보여주기)
logout(로그인 셸 종료하기)
look(특정 단어 검색하기)
losetup(중복 장치 확인하기)
lpd(프린트 데몬)
lpq(현재 프린트 작업 상태 출력하기)
lpr(출력하기)
lprm(대기열에 있는 문서 삭제하기)
ls(디렉토리 내용보기)
lsattr(파일 시스템의 속성 보여주기)
lsdev(하드웨어 장치 출력하기)
lsmod(모듈 정보 출력하기)
mail(메일 관련)
make(컴파일하기)
man(매뉴얼 보기)
mattrib
mbadblocks
mcd
mcopy
mdel
mdeltree
mdir
mesg(메시지를 받을 수 있는지 확인하기)
mformat
minfo
mkdir (디렉토리 만들기)
mke2fs(파일 시스템 생성하기)
mkfs(파일 시스템 만들기)
mknod(특수 파일 만들기)
mkswap(스왑 영역 지정하기)
mlabel
mmd
mmount
mmove
mpartition
mount(장치 연결하기)
more(화면 단위로 출력하기)
mrd
mren
mtoolstest
mtype
mutt(메일 관련)
mv(파일 옮기기)
mzip
netstat(현재 네트웍 상황 보기)
nice(프로세스 우선 순위 변경하기)
od(8진수로 파일 보기)
passwd(암호 입력하기)
pidof(실행중인 프로그램의 프로세스 ID 찾기)
pine(메일 관련)
ping(네트웍 확인하기)
popd(pushd 취소)
ps(프로세스 상태 알기)
pstree(프로세스 상관관계 알기)
pwd(절대경로 보여주기)
quota(디스크 한계량 알기)
rarp(rarp 테이블 관리하기)
rcp(원격 호스트에 파일 복사하기)
rdev(루트, 스왑장치, 램 크기, 비디오 모드를 조사하고 설정하기)
rdate(네트웍으로 시간 설정하기)
reboot(재부팅하기)
rmmod(모듈 지우기)
readonly(읽기 전용으로 표시하기)
renice(프로세스 우선 순위 바꾸기)
reset(터미널 초기화하기)
restore(다시 저장하기)
rlogin(바로 접속하기)
rm(파일 지우기)
rmdir (디렉토리 지우기)
route(라우팅 테이블 추가/삭제하기)
rpm(프로그램 추가/삭제)
rpm2cpio(rpm을 cpio로 변환하기)
rsh(원격으로 명령어 실행하기)
rup(호스트 상태 출력하기)
rusers(호스트에 로그인한 사용자 출력하기)
rwall(호스트 사용자에게 메시지 뿌리기)
script(기록하기)
set(변수값 설정하기)
setup(시스템 관련 설정하기)
showmount(호스트의 마운트 정보 보여주기)
shutdown(전원 끄기)
sleep(잠시 쉬기)
source(스크립트 번역하기)
split(파일 나누기)
ssh(암호화된 원격 로그인하기)
stty(터미널라인 설정 보여주기)
su(계정 바꾸기)
suspend(셸 중단하기)
swapoff (스왑 해제하기)
swapon(스왑 활성화하기)
sync(버퍼 재설정하기)
syslogd(로그인 과정 설정하기)
tac(거꾸로 보기)
tail(문서 끝부분 출력하기)
talk(이야기하기)
tar(파일 묶기)
tcpdchk(tcp wrapper 설정하기)
tcpmatch(네트웍 요청에 대해 예측하기)
tee(표준 입력으로부터 표준 출력 만들기)
telnet(원격접속하기)
test(테스트하기)
times(셸에서의 사용자와 시스템 시간 출력하기)
top(cpu 프로세스 상황 보여주기)
tr(문자열 바꿔주기)
true(종료 코드 리턴하기)
type(유형 보기)
ul(밑줄 처리해서 보여주기)
ulimit(제한하기)
umask(매스크 모드 설정하기)
umount(장치 해제하기)
unalias(별명 제거하기)
uname(시스템 정보 보기)
unexpand(공백 문자를 탭으로 변환하기)
uniq(중복된 문장 찾기)
useradd(사용자 계정 만들기)
userdel(계정 삭제하기)
usermod(사용자 계정정보 수정하기)
unset(설정 변수 해제)
uptime(시스템 부하 평균 보여주기)
users(로그인된 사용자 보여주기)
w(시스템에 접속한 사용자 상황 알아보기)
wait(프로세스 기다리기)
wall(모든 사용자에게 메시지 보내기)
wc(문자, 단어, 라인수 세기)
whatis(명령어의 간단한 설명보기)
while(루프 명령어)
who(사용자 알기)
write(콘솔 상에서 간단한 메시지 보내기)
xcopy(반복적으로 복사하기)
XFree86
ypchfn(NIS에서 사용하는 chfn 명령어)
ypchsh(NIS에서 사용하는 chsh 명령어)
yppasswd(NIS에서 사용하는 passwd 명령어)
zcat(압축 파일 보기)
zcmp(압축 파일 비교하기)
zforce(강제로 gz 만들기)
zgrep(압축 상태에서 grep 실행하기)
zmore(압축 상태에서 more 실행하기)
znew(.Z 파일을 .gz로 다시 압축하기)



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

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


31 전체 메일
먼저 보낼 내용을 텍스트로 파일로 만들어야 합니다.어디에서든지 가능하지요!  [ root@aromi /root]# vi nea  안녕하세요! 저희 서버에서는 웹서버를 오늘부터 시작합니다. 사용자 여러분의 많은 관심과 이용을 부탁드립니다.
:wq
[ root@aromi /root]#

만약, 한글을 사용하지 못하면 윈도우95에서 먼저 쓴다음에 ftp를 이용해서 올리면 됩니다.

[ root@aromi /root]# mail -s "[공지]" `cat /etc/passwd|gawk ?F :'{print$1}'`

 [공지]->  라고 쓴 것은 보낼 메일의 제목입니다.  'cat /etc/passwd|gawk -F : '{print$1}''  ->먼저 cat으로 passwd파일의 첫번째 나오는 내용을 출력하라는 소리입니다. nea라는 텍스트파일을 메일의 내용으로 보내라는 내용입니다.


32 디렉토리만 빠르게 검색

ls -al | grep "^d"


33 호스트 네임 바꾸기

/etc/HOSTNAME file은 부팅시 /etc/sysconfig/network file 의 HOSTNAME 부분을 참조하여 저장합니다. 호스트 네임을 바꾸고자 한다면 /etc/sysconfig/network file 의 HOSTNAME 부분을 바꿔주면 됩니다.

[ root@linux /root]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME="linux"
GATEWAY=""
GATEWAYDEV=""
FORWARD_IPV4="yes"

바꾸신후 시스템을 재부팅 하신거나, #/etc/rc.d/init.d/network restart 명령을 내리시면 됩니다.


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

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


35 유닉스의 현재 버젼과 종류 그리고 라이센스등을 알려주는 명령어
 [ root@aromi /root]# uname -a


36 열려있는 포트 알아내기
 netstat -anp | grep LISTEN


37 텔넷 모든 접속자에게 메세지 보내기
wall 내용...  Ctrl-D


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


39 사용자가 어디에서 무엇을 하는지 알아내기
w라는 명령어를 사용하시면 된답니다. 이 때,  w [-s]  를 붙여주시면 -s 옵션이 긴 정보 대신에 필요한 짧은 정보만 알려 준답니다.


40 텔넷 화면 수정

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


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

mkdir -p music/koreanmusic/ost


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

for i in $*; do
    sed "s/paper/PAPER/g" < $i > $i.new
    mv -f $i.new $i
done
 
<chihwan.sh>
 
find ./(chihwan.sh를 포함하지 않는 디렉토리면) -type f -exec chihwan.sh {} ;


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

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

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


44 find와 grep

find . -name "H20021115.*" -exec grep -l '...;........;110100' {} ;


45 vi 검색, 치환

구호스트 서비스 오늘 날짜에서 분류코드가 110100인 파일 찾기 :%s/./U&/g
모든문자->대문자 g/^$/d


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

입력 파일에서 연속되는 행을 비교하여, 두 번째 이상의 동일한 행들을 제거하고 나머지는 출력파일로 출력 연속되어 표시되지 않으면 동일한 행이 존재할 수 있음.
sort 명령을 사용하여 정렬한 후 사용하는 것이 타당 사용법uniq [-cdu] [+|숫자] [입력파일 [출력파일]] -c : 각 행이 연속적으로 나타난 횟수를 행의 시작부분에 표시 -d : 연속적으로 반복되는 행만 출력 -u : 연속적으로 반복되지 않는 행만 출력 +숫자 : 행의 처음 '숫자' 만큼의 문자는 무시 -숫자 : 행의 처음 '숫자' 만큼의 필드는 무시


47 파일의 결합

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

cat [파일명1] [파일명2] ... > [출력파일명]  
cat [파일명1] [파일명2] ... >& [출력파일명]  
cat [파일명1] [파일명2] ... >> [출력파일명]
cat [파일명1] [파일명2] ... >>& [출력파일명]
cat - [파일명1], [파일명2] .. >> [출력파일명]
cat - [파일명1], [파일명2] .. >>& [출력파일명]
 
 
% cat > file1
파일명 : file1
^D
% cat > file2
파일명 : file2
^D
% cat file1 file2 > file3
% cat file3
파일명 : file1
파일명 : file2
%  


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

 
paste [파일명1] [파일명2]..
paste -d리스트 [파일명1] [파일명2] ...
paste -s [-d리스트] [파일명]  
d : 행간 결합시 행간 구분문자들의 리스트
s : 한파일의 연속되는 행을 결합
 
% cat > paste.data1
홍길동
이순신
김유신
% cat > paste.data2
부산
서울
대구
% paste paste.data1 paste.data2
홍길동 부산
이순신 서울
김유신 대구
% paste -d"n" paste.data1 paste.data2
홍길동
부산
이순신
서울
김유신
대구
% paste -s -d"::n" paste.data1
홍길동:이순신:김유신
%


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

% cat > join.data1
98001:서원일:
98002:홍길동:
98003:김유신:
98004:이순신:
98010:이상관:
% cat > join.data2
부산:98001:441
울산:98002:89
대구:98003:99
서울:98004:120
김해:98010:44
% join -j1 1 -j2 2 -t: join.data1 join.data2
98001:서원일::부산:441
98002:홍길동::울산:89
98003:김유신::대구:99
98004:이순신::서울:120
98010:이상관::김해:44
% join -j1 1 -j2 2 -o 1.2 1.1 2.1 -t: join.data1 join.data2
서원일:98001:부산
홍길동:98002:울산
김유신:98003:대구
이순신:98004:서울
이상관:98010:김해



48 파일의 암호화 : crypt

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

% cat > crypt.data
test test
안녕하십니까?
^D
% crypt <crypt.data > crypt.data1
Enter key: hello
% ls -l crypt*
-rw-r--r-- 1 wiseo pro 24 9월 24일 14:47 crypt.data
-rw-r--r-- 1 wiseo pro 24 9월 24일 14:48 crypt.data1
% crypt < crypt.data1
Enter key:hello
test test
안녕하십니까?
%


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 *.* | awk '{print "mv",$1, $1 }' | sed "s/ ([a-zA-Z0-9]*).([a-zA-Z0-9]*)$/ 1._2/g"

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


52 어제 날짜 구하기
$ date -v-1d "+%Y-%m-%d"  [컴퓨터분류]


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 하면 된다


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

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



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


/bin/ls A?????.html | sed 's/A(.....).html/1/g' | xargs -t -i mv 'A{}.html' 'A0{}.html'

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

일요일은 짜빠게뤼~ 먹는날~^^

엮인글 :
http://adminplay.com/1322/826/trackback
List of Articles
번호 제목 글쓴이 날짜 조회 수
47 데몬 및 프로세스 관리 ADMINPLAY 2009-05-11 17335
46 시스템 백업과 응급 복구 ADMINPLAY 2009-05-11 61926
45 Ascii Art관련 사이트 링크 ADMINPLAY 2009-05-11 17290
44 퍼미션 설정 ADMINPLAY 2009-05-11 17609
43 Linux 파일 오픈 갯수 확인 ADMINPLAY 2009-05-10 23422
42 Centos5 버전에서 메모리 인식 file ADMINPLAY 2009-05-10 21100
41 MRTG 로그 데이터 시간확인하기 ADMINPLAY 2009-05-08 22180
40 리눅스 java tocmat 설치 ADMINPLAY 2009-05-07 18984
39 ssh, ftp 접근 딜레이 현상 발생시 조치방법 ADMINPLAY 2009-04-27 20094
38 관리, 개발자를 위한 vi 환경 설정 ( vim-enhanced) ADMINPLAY 2009-04-27 19000
37 time.bora.net 시간 동기화후 dovecot 데몬이 죽는 현상 해결 ADMINPLAY 2009-04-27 23934
36 리눅스 페도라 인터넷잡는것좀 알켜주세요^^; [1] 시풍 2009-04-07 20706
35 .vimrc 설정 설정, 색상 (VI 설정 색상) ADMINPLAY 2009-03-21 26239
34 사이트 이전시 - rsync ADMINPLAY 2009-03-17 17418
33 dumpe2fs 파일 시스템의 슈퍼 블럭과 블럭 그룹 정보를 출력 ADMINPLAY 2009-03-17 20736
32 rm -rf / ==> 그 결과는...ㄷㄷ;; ADMINPLAY 2009-03-17 20146
31 Cent5 ffmpeg 설치 ADMINPLAY 2009-03-17 18041
» 리눅스 TIP ADMINPLAY 2009-03-09 25562
29 특정 디랙토리 인증걸기 htpasswd, htaccess ADMINPLAY 2009-03-04 22031
28 netstat 의 Send-Q, Recv-Q의 의미 ADMINPLAY 2009-02-09 25021

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234