Programming/Linux

[리눅스] 파이프 및 리디렉션

kevin_01 2024. 1. 23. 11:22
728x90

파이프 및 리디렉션 개념

  • 한 명령이나 스크립트에서 다른 명령이나 스크립트로 전송된 일부 정보를 보내거나 검색하는데 사용(파일에서도 작동)

    • 파일의 줄수 계산
    • 한 파일에서 고유한 값을 선태하고 다른 파일에 씀
    • 파일이나 시스템에서 일부 문자열의 발생을 찾습니다.
  • grep 명령어는 출력에서 특정 패턴을 검색한다.

  • 출력은 파일이거나 다른 명령의 출력일 수 있다.

  • wc 단어, 개행 수를 계산 하는 유틸리티

파이프 |

  • 원하는 만큼 파이프를 결합할 수 있다
    • command1 | command2
    • command1 | command2 | command3
  • 원하는 명령어를 통해 다양한 결과를 한번에 실행할 수 있다
    • number.txt → 1 ~ 100 까지의 수 10000줄
    • cat numbers.txt | wc -l → 10000
    • cat numbers.txt | uniq | wc -l → 9904
    • cat numbers.txt | sort | uniq | wc -l → 100

파일로 리디렉션 > >>

  • 출력을 파일로 리디렉션 하는 과정
  • 일반적으로 모든 출력은 화면으로 이동한다.
  • 화면에 표시된 출력을 파일로 옮기기 >
    • ls -al > directorylist.txt
  • 파일에 더 많은 내용을 쓰기 작은 파일을 .profile cat 명령어를 통해 directorylist.txt 파일에 추가하기.
    • cat .profile > directorylist.txt
  • 리디렉션은 다음과 같이 수행된다.
    • 파일이 없으면 생성.
    • 리디렉션된 출력의 콘텐츠 추가.
    • 파일이 존재하고 비어 있지 않으면 파일을 지우고 리디렉션된 출력을 빈 파일에 쓴다. - 다시 써버린다
  • 파일에 추가하려면 >> 을 사용해야 한다.
    • cat .profile >> directorylist.txt
    • echo ‘this is my code’ >> directorylist.txt
  • 정리
    • 파일이 생성되고 모든 데이터를 새 파일로 다시 작성한다는 점을 기억해야 한다
    • >> 유사하게 작동하지만 채우기에 콘텐츠가 있는 경우 이 리디렉션은 기존 콘텐츠 끝에 명령 출력을 추가한다.

파일에서 리디렉션

  • 반대방향으로도 가능하다.
    • 인쇄하는 방법 cat numbers.txt
    • 이 파일을 명령입력으로 사용해보기
    • 파일의 줄 수 출력 방법
      • cat numbers.txt | wc -l → 좋은 방법은 아니다
      • wc -l numbers.txt → 파일이름도 함께 출력된다.
      • 파일이름 제거 방법 → wc -l numbers.txt | awk '{print $1}' OR awk 'END{print NR}' numbers.txt
    • 하지만 우리는 라인 수를 계산하기 위해서 리디렉션을 사용하고 싶다.
      • wc -l < numbers.txt - 파일이름이 제거된 숫자
      • 이 숫자를 다른 파일에 쓰기
        • wc -l < numbers.txt > count.txt
        • cat count.txt
728x90