리눅스/Part3. Ch08. 스크립트 및 쉘프로그래밍

05. (실습) 리눅스 커맨드를 파이썬으로 구현

Engineer-Lee 2022. 12. 17. 21:40
반응형

tail -f

- 파일의 마지막 부분을 출력하는 명령
- -f 옵션: 추가된 데이터를 연속해서 출력
$ tail -f -> $ py_tail


wc

- 문자, 단어, 라인 수를 출력하는 명령
$ wc -> $ py_wc
실습: https://github.com/go4real/linux_campus/blob/main/Part3/Ch08_03/ssh_by_id.md

 


[실습] 리눅스 커맨드 파이썬으로 구현


tail -f 구현하기


1. 파이썬 스크립트 작성
+ vim py_tail

#!/usr/bin/python3
import sys
import time

def tail(filename):
    with open(filename) as f:
        f.seek(0,2)
        while True:
            line = f.readline()
            if not line:
                time.sleep(0.1)
                continue
            yield line

filename = sys.argv[1]
for line in tail(filename):
    print(line)


2. 실행 권한 부여

chmod +x py_tail


3. /usr/local/bin 디렉토리로 이동

sudo cp py_tail /usr/local/bin


4. 테스트

py_tail /var/log/auth.log

 


wc 구현하기


1. 파이썬 스크립트 작성
+ vim py_wc

#!/usr/bin/python3
import sys
import time

def wc(filename):
    chars = words = lines = 0
    with open(filename) as f:
        for line in f:
            lines += 1
            words += len(line.split())
            chars += len(line)
            
    print("{} {} {} {}".format(lines, words, chars, filename))

filename = sys.argv[1]
wc(filename)


2. 실행 권한 부여

chmod +x py_wc


3. /usr/local/bin 디렉토리로 이동

sudo cp py_wc /usr/local/bin


4. 테스트

wc py_tail
py_wc py_tail

반응형