OS/linux

쉘 스크립트 명령어 사용기

vinc.oh 2008. 5. 27. 11:51

-------------------------
VI 사용기
-------------------------

1. 치환(substitution)
 - 전체문서 치환 1,$s/common/fooboo
 - s/common/fooboo => 커서가 있는 줄만 치환됨.

2. 삭제
 - 단어 삭제 : dw 명령어 사용
 - 라인 삭제
:set nu
하고 난후 삭제하고 싶은 라인를 선택한 후
:1,10 d
전체 라인을 삭제하려면
:1,$ d 라고 하면 전부 삭제됨.

3. 저장
 - 다른 이름으로 저장 : w + "filename"

4. !
 - vi 에디터 안에서 명령어 를 입력해서 확인 => :!pwd

5. 문서의 모든 부분[혹은 부분(라인 넘버를 넣어줌)]을 소문자->대문자,
대문자->소문자로 변환
:1,$ s/[a-z]/\u&/g   소문자를 대문자로
:1,$ s/[A-Z]/\l&/g

7. copy
 - 일정 라인을 copy 해서 해당 라인에 삽입
:set nu
:30,33 co 5 => 30 부터 33 라인을 복사해서 5라인 이후(6라인부터) 삽입한다.
 - 일정 라인을 copy 해서 첫라인 혹은 맨마지막 라인에 삽입
:30,33 co 0 => 첫 라인에 삽입
:30,33 co $ => 마지막 라인에 삽입


------------------------
변수 초기값할당/계산
------------------------

$x=20 (= 좌우에 스페이스를 넣으면 안됨.)
$y=5  (= 좌우에 스페이스를 넣으면 안됨.)
$z=`expr $x / $y` (= 좌우에 스페이스를 넣으면 안됨. / 좌우에 스페이스를 넣어야 함.)
$echo $z
$4

-----------------------------
Linux Command Reference (LCR)
-----------------------------

1. find


 - 수정된지 2일이 됬고 apr 로 시작하는 jsp 파일들의 목록
$ll `find . -ctime 2 -name apr*.jsp`


 - 오늘 수정된 jsp 파일 목록
$find . -ctime 0 -name *.jsp -print


 - 특정 문자를 포함하고 있는 파일 이름리스트 찾기
$find . -exec grep -l 'src="/banking/js' {} \;


2. ls & wc


 - 현재 디렉토리에 있는 파일의 총 갯수 구하기
$ll mur2_3*.jsp | wc -l


3. Back quote(`) 는 명령어를 실행하라는 의미의 문자이다.
$echo "Today is `date`"


4. Exit Status
 - 리눅스에서 Shell script 가 종료되면 종료상태가 zero 혹은 non zero 값을 가지게
   된다. 보통 0 이면 정상종료, 1 혹은 2이면 비정상 종료를 의미
 - Exit Status 를 확인해 보는 명령어는 다음과 같다.
$echo $?


5. Redirection
 - 파일의 내용을 sort 하고 영문자를 모두 대문자로 변환시켜주는 shell 2줄
sort < $1 > sortedFile
tr < sortedFile "[a-z]" "[A-Z]" > upperCaseFile


6. Shell Script 를 디버그 할때 유용한 명령어(-x, -v 옵션)
$sh -x ./dsh1.sh 5 6
$sh -v ./dsh1.sh 5 6


7. /bin/bash 명령어의 두가지 의미
 - 지역변수 : Now load second shell in memory (Which ignores all old shell's variable)
 - 글로벌 변수(export 키워드 사용) :  Now load second shell in memory (Old shell's variable is accessed from second shell,
if they are exported )


8. 도스 버젼의 text 파일(^M 들어 있는 것들)을 유닉스로 변환시켜주는 명령어 :
$dos2unix *.jsp


-----------------------------
CPU 및 Memory 정보 표시 방법
-----------------------------

1. CPU
# cat /proc/cpuinfo


2. Memory
# cat /proc/meminfo


-----------------------------
네트웍 설정

-----------------------------

1. 리눅스 서버에 설정된 라우팅 테이블 정보 확인

# netstat -nr


2. netstat 명령어

# netstat -s =>리눅스 서버에서 사용가능한 프로토콜에 대한 통계정보

# netstat -an => 모든 연결정보

# netstat -an | grep LISTEN => 현재 응답하고 있는 각 포트들 확인

# netstat -atp => 현재 열려있는 모든 포트 및 각 데몬들, 그리고 그 포트를 사용하는 프로그램들


3. IP address 수정

여러가지 방법이 존재하나 다음은 네트웍 설정 파일을 직접 수정하는 방법이다.

# vi /etc/sysconfig/network

# vi /etc/sysconfig/network-scripts/ifcfg-eth0

위 두 파일을 수정한 후

#/etc/rc.d/init.d/network restart 를 해주거나 시스템 리부팅을 하면 된다.


4. DNS 서버 설정 정보 확인

# cat /etc/resolve.conf

DNS 에 관련된 정보를 확인하려면 ☞ 요기 참조


5. nslookup 명령어 : 네임서버에 대한 도메인 설정정보를 조회한다.

# nslookup 도메인


6. traceroute 명령어 : 대상 호스트까지 몇개의 hop(거쳐가는 게이트웨이의 수) 및 통신 지연구간이 없는지 확인 할 수 있다. 만약 통신이 이루어지지 않는다면 "*" 으로 표시가 생길것이다.

# traceroute 도메인


7. whois 명령어: 특정 도메인이나 IP를 사용하고 있는 기관정보 조회(국내 및 국외로 구분)

 - 국내

# whois -h whois.krnic.net [조회할 IP address 혹은 도메인명]

웹 : http://whois.nic.or.kr/

 - 국외

#whois -h whois.internic.net [조회할 IP address 혹은 도메인명]

웹 : http://www.netsol.com/cgi-bin/whois/whois


-----------------------------
커널 정보

-----------------------------

1. 커널 및 OS 버젼 정보

# cat /proc/version


2. 호스트 네임

# cat /proc/sys/kernel/hostname


3. 커널 버젼

# cat /proc/sys/kernel/osrelease


4. 운영체제명

# cat /proc/sys/kernel/ostype


5. 외부의 ping 테스트 막기

# vi /proc/sys/net/ipv4/icmp_echo_ignore_all

0 을 1로 수정하면 서버가 정상일지라도 외부에서 ping 테스트를 할 수 없다.