쉘 스크립트 명령어 사용기
-------------------------
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 혹은 도메인명]
- 국외
#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 테스트를 할 수 없다.
[출처] 쉘 스크립트 명령어 사용기|작성자 jinoxst