리눅스 쉘 커맨드 고급 활용

김명주·2024년 12월 26일
0

리다이렉션과 파이프

리다이렉션

리다이렉션은 명령어의 입력 또는 출력을 다른 파일이나 명령어로 전환하는 기능.
명령어 실행 결과를 파일로 저장하거나 파일의 입력으로 사용할 수 있다.

  • 출력 리다이렉션

    • > : 기존 파일에 내용을 덮어씀 -> 기존 내용은 사라지고 새로운 내용으로 덮어써짐

      • 예시 : `echo "hello world!" > output.txt
    • >> : 기존 파일의 끝에 내용을 추가 -> 기존 내용은 존재하고 새 내용이 추가됨

      • 예시 : echo "내용 추가" >> output.txt
  • 입력 리다이렉션

    • < : 파일의 내용을 명령어의 입력으로 사용
      • 예시: sort < unsorted.txt

파이프

파이프는 한 명령어의 출력을 다른 명령어의 입력으로 연결하는 기능
| 기호를 사용하여 여러 명령어를 연결하여 복잡한 작업을 수행할 수 있다.

  • 기본 개념

    • A|B : 명령어 A의 출력을 명령어 B의 입력으로 사용
    • A > tmp.txt, B < tmp.txt의 결과와 유사함
      (단, 파이프는 A가 완전히 끝나지 않더라도 B를 사용할 수 있으므로 100% 일치하지는 않음)
  • 예시 :

    • ls -l | grep "^d" : 현재 디렉터리에서 디렉터리만 나열

    • cat file.txt | sort | uniq : 파일 내용을 정렬하고 중복 제거.

    • 파일 내용 정렬 후 중복 제거하여 새 파일로 저장
      uniq 명령어는 인접한 내용을 기준으로 삭제하기 때문에, 먼저 정렬 후에 uniq 명령어를 사용

    • 로그 파일에서 키워드 추출 후 내림차순 정렬하여 저장

  • 디렉터리 내 파일 개수 세기: ls | wc -l > file_count.txt
    wc -l 은 현재 파일의 행의 수가 몇인지를 출력하는 명령어

  • 로그 파일에서 키워드 추출 후 내림차순 정렬하여 저장:
    로그 파일에서 'systemd' 에 의해 발생한 로그만 찾고 싶다. 그 후, 역순으로 출력한 결과를 파일에 저장
    grep "systemd" /var/log/syslog | sort -r > sorted_syslog.txt

  • 특정 확장자 파일 찾아 압축하기:
    find . -name "*.jpg" | xargs tar -cvzf images.tar.gz

  • 압축된 대용량 파일에서 특정 패턴 검색 후 결과 요약:
    zcat large_file.gz | grep "pattern" | wc -l > result_summary.txt

쉘 스크립트 기본

쉘 스크립트는 명령어를 자동화하는 방법으로, 여러 명령어를 파일로 저장하고 이를 실행할 수 있다.

스크립트 작성법:
  • 스크립트 파일을 만들고 첫줄에 #!/bin/bash 로 시작하여 스크립트를 Bash에서 실행하도록 지정

  • 실행할 명령어를 두 번째 줄부터 작성

  • 파일에 실행 권한 부여 : chmod +x script.sh

조건문

Bash 스크립트에서는 주로 if, elif, else 문을 사용하여 조건문을 구현한다.

반복문

Bash 스크립트에서는 주로 for 문과 while 문을 사용한다.
for 문은 주로 다음과 같은 상황에서 사용된다.

  • 파일 목록 처리: 디렉터리 내의 모든 파일에 대해 작업 수행
  • 숫자 범위 처리: 특정 횟수만큼 작업 반복
  • 배열 요소 처리: 배열의 각 요소에 대해 작업 수행

while 문은 주로 다음과 같은 상황에서 사용된다.

  • 사용자 입력 처리: 특정 조건을 만족할 때 까지 입력 받기
  • 파일 읽기: 파일의 끝에 도달할 때 까지 각 줄 처리
  • 무한 루프: 특정 조건이 만족될 때 까지 계속 실행

profile
개발자를 향해 달리는 사람

0개의 댓글