Copyright ⓒ1996-98 Specialized
Systems Consultants. Inc. Linux Gazette is a member of the Linux
Documentation Project.
2센트짜리 팁 몇가지
또 하나의 간단한 팁
Date : Sun 30 Nov 1997 03:48:40
-0800(PST) From : Gary Johnson gjohnso@season.com
이미 이 팁을 알고 있는 사람이 있을지도 모르겠는데, 아직 이 Linux
Gazette에 실린 적이 없다면 실어주세요.
사용되지 않는 가상 콘솔로 화면을 전환하면 화면에 아무 것도 나타나지
않게 되고, 키보드로도 조작할 수 없는 상태가 됩니다. 시작할 때
다음과 같이 해보십시오.
setterm -clear > /dev/tty12
Alt 키와 F12키를 동시에 누르거나
엑스 윈도우를 사용하고 있을 때는 Alt 키와 Ctrl 키, F12 키를
동시에 누르면 됩니다. 그 가상 콘솔(/dev/tty12)에는 로그인 프로세스가
돌아가고 있지 않기 때문에 특별히 하고 있는 일은 없습니다.
도스 에뮬레이터
Date : Fri, 5 Dec 1997 00:55:55
-500
From : Joey Hess Joey@kitenet.net
나는 좋아하는 게임을 하기 위해서 도스 에뮬레이터를 가끔 쓰곤
합니다. 그러나 C:\>프롬프트는 정말 싫어하죠. 그래서 생각하기를
도스 에뮬레이터가 시작할 때에 특정한 명령어를 실행하도록 하고
싶어서 방법을 생각해냈습니다. 지금 보여드리는 펄 스크립트가
바로 그러한 역할을 하죠. 맨 윗부분의 주석을 잘 보세요. 도스
쪽에서 해주어야 할 일을 얘기하고 있습니다. 기본적인 아이디어는
홈 디렉토리에 dos_do.bat라는 파일을 만들어 두고 그 파일에 도스
에뮬레이터가 실행하기를 원하는 명령들을 적어준 다음, lredir을
이용해서 도스 에뮬레이터가 실행할 때에 홈 디렉토리에서 그 파일을
찾을 수 있도록 하는 것이죠.
#!/usr/bin/perl
# # This runs dosemu.#
# Any parameters specified after "-" will be passed
in to dosemu to be
# run as dos commands.
#
# Setup : add to autoexec.emu:
# lredir.com h: linux\fs\$(home)
# if exist h:\dos_do.bat call h:\dos_do.bat#
# GPL Copyright 1996, 1997 Joey Hess
# Split params into dosemu parameters and dos commands.
while ($a=shift @ARGV) {
if ($a=~m/-/ ne undef) {last}
$dosemu_command_line.="$a
";}
$dos_command_line=join(' ',@ARGV);
$dos_command_line=~s/;/\r\n/g;
open (OUT," >$ENV{HOME}/dos_do.bat"
) || exit print
"$ENV{HOME}/dos_do.bat:
$!";
if ($dos_command_line) {
print OUT "$dos_command_line\r\n";
# note dos CR LF
print OUT "Exitemu\r\n";
}
close OUT;
system "/usr/bin/dos $dosemu_command_line";
unlink "$EVN{HOME}/dos_do.bat";
Re: "find를 사용해서 원하는
것을 찾아내기"
Date : Wed, 03, Dec 1997 16:03:30 +0100
From : Mike Neuhauser mike@gams.co.at
Jon Rabone, jkr@camcon.co.uk 씨가 지난 번 12월호 Linux Gazette에서 다음과 같이
썼습니다.
find를 이용하여 원하는 것 찾아내기
1997년 10월자 Linux Gazette에서
Dave Nelson씨는 grep이 원하는 문자열을 포함하는 파일을 나타낼
수 있도록 다음과 같이 제안했었죠.
find . -type f -exec grep "string"
/dev/null {} \;
이것은 모든 파일에 대해서 grep을
실행하는데 여기 더 짧고도 효과적인 방법이 있습니다.
grep "string" 'find
. -type f
주의할 것은 조건에 맞는 파일의
개수가 많을 경우 쉘의 명령행 버퍼의 범위를 벗어나므로 문제가
생길 수도 있다는 것입니다.
명령행 버퍼의 오버플로우를 방지하기
위해서 다음과 같이 하십시오.
find . -type f | xargs grep "string"
이 방법은 파일 이름에 공백이
들어갈 경우(touch "test file"을 실행하고 'ls'로 확인해
보십시오) 문제가 생길 수 있습니다. 이러한 문제를 해결하기 위해서는
find . -type f -print0 | xargs
-0 grep "string"
find는 심볼릭 링크된 디렉토리에
대해서는 기본적으로 검색을 실시하지 않으니 -follow 옵션을 사용해야
할 경우도 있다는 것을 알아두세요.
Re:find를 이용해서 원하는 것을
찾아내기
Data : 5 Dec 1997 17:47:50 -0000
From : Dale K. Hawkins khawkins@mines.edu
제가 사용하고 있는 방법은 다음과 같습니다.
find . -type f -exec grep "string"
/div/null {} \;
그런데 제 친구가 다음과 같은
방법을 알려 주더군요. 매우 좋은 방법이었습니다.
find . -type f | xargs fgrep
"string" /dev/null
이 방법은 매번 새로운 grep 프로세스를
생성하지 않아도 된다는 장점이 있죠. 그런데 정말 빠르고도 교묘한
방법이 있습니다. 다음과 같이 해보세요.
locate $PWD | grep "$PWD"
| xargs fgrep "string" /dev/null
이 방법도 괜찮긴 하지만 grep이
매번 실행되고, 디렉토리에 대해서까지 grep이 실행된다는 단점이
있죠.
locate $PWD | grep "$PWD"
|xargs -ifilename sh -c \
"if [ -f filename ]; then echo filename; fi
"|\
xargs fgrep "string" /dev/null
제 글을 읽으시는 독자분들께 :
lesspipe.sh이 설치되어 있다면 한번 보세요.
find로 원하는 것을 찾아내기 세
번째 이야기
Data : Thu, 11 Dec 1997 17:12:46
+100(MET)
From : Axel Dietrich Axel.Dietrich@newroinformatik.ruhr-uni-bochum.de
Linux Gazette 1997년 10월 호에서 Dave Nelson씨는
find . -type f -exec grep "string"
/dev/null {} \;
을 권장했었습니다.
Jon Rabone씨의 "더 짧고도 효과적인" 방법은 다음과
같습니다.
grep "string" 'find
. -type '
다음과 같은 방법은 명령행 버퍼의
오버플로우 걱정을 할 필요없이 사용할 수 있습니다.
find . -type f -exec grep -l"string"
{}\;
'-l' 옵션은 grep이 "string"을
포함하는 파일명을 나타내도록 해줍니다. 이런 식의 검색을 특정
파일들에 대해서 행하기 위해서 저는 -type과 -name 옵션을 쓰죠.
다음과 같이 말이죠.
find . \(-type f -name "*\.html"\)
-exec grep -l "string" {}\;
이것은 html의 확장자를 가지는
모든 파일에 대해서 "string"을 포함하는지 알아보고
포함하고 있는 파일명을 출력해줍니다.
/Axel
find에 관해 좀 더 알아볼까요?
Date : Tue, 16 Dec 1997 14:12:57
+ 100(MET)
From : Alexander Larsson alla@lysator.liu.se
1997년 12월자 Linux Gazette에서 Jon Rabone씨는 다음과 같이 말했었죠.
이것은 각각의 파일에 대해서 grep을
실행하는데 좀 더 짧고 간단한 방법이 있습니다.
grep "string" find
. -type f
그런데 알아두어야 할 것은 조건에
맞는 파일들이 많은 경우 명령행 버퍼가 오버플로우될 수도 있다는
것입니다.
이것보다 조금 더 좋은 방법이
있죠.
find . -type f | xargs grep "string"
이 방법은 명령행 버퍼가 가득
찰 때마다 새로운 grep 프로세스를 실행해줍니다.
find를 이용하는 또 하나의 방법
Date : Sat, 27 Dec 1997 12:06:47
-0500
From : rchandra@letter.com
지금 논의되고 있는 "어떻게 서브디렉토리에 있는 파일들에
대해서 grep을 실행해줄 수 있는가?"하는 문제에 관한 여러
가지 방법들은 매우 유용하긴 하지만 검색을 실시하는 디렉토리에
바이너리 파일이 있을 경우에는 터미널을 제어하지 못하는 문제가
생길 수도 있습니다. 왜냐하면 바이너리 파일의 몇몇 제어 문자들(Control
Characters)이 터미널을 그래픽 모드로 바꿔놓을 수 있기 때문입니다.
물론 이렇게 되었을 경우 터미널을 다시 바로잡는 방법이 있긴 하지만
아무래도 가장 좋은 방법은 그러한 일이 없도록 처음부터 방지하는
것이 가장 좋겠죠.
이제 화면에 찍혀나올 수 없는 문자들을 모두 없애봅시다. 어쨌든
읽을 수는 없지만 다음과 같은 명령을 내려보세요.
sed -e 's/[^-~][^-~]*//g'
이 명령은 화면에 출력될 수 없는
(제어) 문자들을 그냥 스페이스들로 바꿔 버립니다. 이 명령은 파이프를
이용하여 쉽게 다른 명령어들과 결합해서 사용할 수 있습니다. 여기
간단한 쉘 스크립트가 있습니다. 저는 이것은 grepfind라고 이름붙여서
사용하고 있죠.
#!/bin/sh
#save this in a file called grepfind and do a "chmod 755
grepfind"
#
if test $@ = 0 -o "$1" = "-h" -o "$1"
= "-help" ; then
echo 'grepfind ─ recursively descends directories and
egrep all files '
echo
echo 'Usage: grepfind [-help][-h](start_directory] egrep_search_pattern'
echo
echo 'The surrent directory is used as start_directory if parameter'
echo 'start_directory is omitted. The search is case insensitive.'
echo 'Multiple occurrences of control characters are replaced
by a single'
echo 'space. This makes it possible to grep around in files
that contain'
echo 'binary data and strings without setting the terminal accidently'
echo 'to graphics mode.'
echo
echo 'Example : grepfind/home "hello world"
else
if ["$2" = "" ];then
find . -type f -exec egrep -i "$1" /dev/null {} \;|sed
-e 's/[^-~][^-~]*//g'
else
if [-d "$1" ] ;then
find $1 -type f -exec egrep -i "$2" /dev/null
{} \;|sed -e 's/[^-~][^-~]*//g'
else
echo "ERROR: $1 is not a directory"
fi
fi
fi
#_END_OF_grepfind
RE: 도와주세요
Date : Sun, 7 Dec 1997 14:25:25
+0100(MET)
From : Roland Smith rsmith@ibm.net
Javier씨에게,
당신의 지난 번 Linux Gazette 기사에 대한 답신입니다.
당신은 MOZILLA(넷스케이프)가 저장되어 있는 디렉토리에 대한 환경변수를
설정하여야 한다고 하셨었죠.
두가지 방법이 있습니다.
'export MOZILLA_HOME=/usr/local/netscape'을 컴퓨터가 매번 시작될
때마다 실행해주거나 혹은 /etc/profile파일을 수정하면 됩니다.
이것은 bash쉘이 시작될 때 읽어오는 파일입니다. 이 파일에 다음과
같은 내용을 추가하세요.(넷스케이프는 /usr/local/netscape 디렉토리에
설치되어 있다고 가정합니다.)
MOZILLA_HOME=/usr/local/netscape
export MOZILLA_HOME
또한 윈도우 매니저의 설정 파일에도
넷스케이프의 실행 파일의 위치를 알려주어야 넷스케이프를 윈도우
매너자가 사용하는 툴바나 메뉴에서 곧바로 이용할 수 있습니다.
이것은 사용하는 윈도우 매니저에 따라 틀리죠. 만약 FVWM2-95를
사용하신다면 다음과 같은 내용을 홈 디렉토리에 있는 .fvwm2rc95파일에
추가해주세요.
#add to this menu
AddMenu "Utilities" Titel
+ "Netscape%mini-ascape.xpm% Exec netscape -geometry
931x683+54+9 &
사용하지 않는 하드디스크 회전
속도 줄이기
Date : Mon, 08 Dec 1997 14:21:31
-0500
From : Peter S Galbraith galbraith@mixing.qc.dfo.ca
Linux Gazette 12월호 기사 중 하드 디스크의 회전 속도를 줄이기
위해서 hdparm 명령을 사용하는 방법이 있었죠. 이것을 제 오래된
SCSI 하드 디스크에 다음과 같이 적용해보았습니다.
안타깝게도 SCSI 하드 디스크에는 hdparm 명령이 작동하지 않는군요.
(메뉴얼 페이지에도 나와있지 않은 게 참 이상하죠?)
bash-2.01#hdparm -S6 /dev/sdb
/dev/sdb;
operation not supported on SCSI disks
보안 스크립트
|