Linux Shell Command 용법

들어가기에 앞서

Bash 기준으로 설명. 선언부에 #!/bin/sh를 명시.

용법

  • 반복문
for i in 1 2 3 4 5
do
echo i
done

반복문에서 연속된 값은 다음과 같이 표현 가능하다.

for i in {1..5}
do
echo $i
done
  • 문자열 처리

파일명을 변경할 때 유용한 팁들

i="text123"
echo ${i:2}	# n≥0일 때, 두 번째 파라미터는 n+1번째 위치부터 남길 글자
xt123
echo ${i:(-4)}	# n<0일 때, 두 번째 파라미터는 n번째 위치부터 남길 글자
t123
echo ${i:0:4}	# n=0일 때, 세 번째 파라미터만큼 글자를 자름
text
echo ${i:2:2}	# 세 번째 파라미터는 남길 글자
xt

문자열 붙이기

i="text123"
j="string"
k=$i$j		# does works
k=${i}${j}	# does works
i="text123"
echo ${i%t*3}	# % 다음 시작문자, * 다음 끝문자
tex		# Shortest Match
echo ${i%%t*3}	# % 다음 시작문자, * 다음 끝문자
		# Longest Match
echo ${i/#text/book}	# text를 book으로
text123			# Front-end Match
echo ${i/%123/456}	# 123을 456으로
text123			# Back-end Match

숫자 0으로 채우기 (padding)

for i in {1..100}
do
i=$(printf %01d $i)
echo $i
done

위와 같이 작성하면 0001, 0002, ..., 0999, 1000과 같이 나온다.

wget 관련

wget을 이용하여 https 관련 프로토콜을 받을 때 다음과 같이 사용.

wget --no-check-certificate IN -O OUT

다른 방법으로는 .wgetrc에 설정 파일을 만드는 것도 있다.

echo "check_certificate = off" >> ~/.wgetrc

라인 조작

  • 라인 랜덤출력
    shuf
    
  • 임의의 글자넣기
    echo -ne '\n' >> a.txt
    

perl

for $i ( 0 .. $#AoA ) {
    for $j ( 0 .. $#{ $AoA[$i] } ) {
        print "elt $i $j is $AoA[$i][$j]\n";
    }
}

perl 주석

=pod
=cut

로 범위지정

python

python 2 or 3 사용시 다음을 명시

from __future__ import print_function

기타 유용한 팁

  • 비프음 끄기
    setterm -blength 0
    
  • zombie process kill
    ps -ef | grep defunct | awk '{print $3}' | xargs kill -9
    
  • root 권한에서 killall5 사용금지 (시스템 강제종료)