Computer >> 컴퓨터 >  >> 프로그래밍 >> Bash 프로그래밍

마스터 Linux 터미널:파이핑 및 리디렉션에 대한 전문가 가이드

마스터 Linux 터미널:파이핑 및 리디렉션에 대한 전문가 가이드

Linux의 명령줄 인터페이스는 시스템에서 다양한 작업을 수행하는 강력한 방법을 제공합니다. Linux는 그 뿌리로 인해 터미널에 많은 기능을 내장하고 있습니다.

이러한 강력한 기능 중 두 가지는 파이핑과 리디렉션입니다. 이러한 기능을 사용하면 명령의 출력 및 입력을 다른 명령 및 파일로 리디렉션할 수 있습니다.

이 문서에서는 Linux의 파이핑 및 리디렉션이 무엇을 의미하는지 알아보고 이러한 기능을 직접 사용하는 방법에 대해 자세히 알아봅니다.

전제조건

이 가이드를 완전히 이해하려면 최소한 다음 사항이 필요합니다:

  • Linux 운영체제에 대한 기본 이해
  • Linux 명령줄 작업에 대한 기본 경험입니다.
  • Linux 명령줄에 액세스하여 명령을 사용해 보세요.

초보자이거나 복습이 필요한 경우 이 Linux 명령줄 튜토리얼을 살펴보세요.

Linux의 파이핑이란 무엇인가요?

방법에 대해 알아보기 전에, 배관은 무엇을 의미할까요? 파이핑은 하나의 Linux 명령의 출력을 다른 명령의 입력으로 지정하는 행위입니다. 파이핑을 사용하면 한 명령에서 다른 명령으로 표준 출력이나 표준 오류를 전달할 수 있습니다.

파이핑의 간단한 예는 한 명령의 출력을 다른 명령의 입력으로 사용하는 것입니다. 이를 달성하기 위해 파이프(|) 메타 문자가 사용됩니다.

메타 문자 개념을 처음 접하는 경우 이는 명령줄에서 특별한 의미를 갖는 문자에 대한 멋진 이름일 뿐입니다. Linux에는 파이프(|) 외에 다른 메타 문자가 있습니다. 일반적인 예로는 미만(<), 초과(>), 앰퍼샌드(&) 등이 있습니다.

배관의 기본

pipe 사용의 기본 구문 명령은 다음과 같습니다:

command1 | command2 | command3 | ... | commandN

위 구문에서 터미널은 왼쪽에서 오른쪽으로 명령을 실행합니다. command1로 시작됩니다. , 그러면 출력이 command2에 입력됩니다. . command2의 출력 그런 다음 command3의 입력으로 사용됩니다. 등등. 파이핑의 좋은 점은 원하는 만큼 많은 명령을 연결할 수 있다는 것입니다.

배관 예시

다음은 pipe를 사용하는 몇 가지 예입니다. 다양한 작업을 수행하는 명령입니다.

1. 파일 및 디렉터리 수 계산

ls -l | wc -l

위의 예에서 첫 번째 섹션은 ls를 사용하여 현재 디렉터리의 모든 파일과 디렉터리를 나열합니다. 명령. 추가 -l 옵션은 ls를 알려줍니다. 긴 목록 형식으로 내용을 나열하는 명령입니다.

ls -l의 출력 그런 다음 명령은 두 번째 섹션으로 파이프됩니다. wc -l 명령은 ls -l 출력에서 줄 수를 계산합니다. 첫 번째 섹션에 명령을 입력하고 결과를 터미널에 인쇄합니다.

2. 파일 및 디렉토리 목록 정렬

ls | sort

위 명령에서 ls 명령은 현재 디렉터리의 파일 및 디렉터리 목록을 출력합니다. 그런 다음 목록은 sort로 파이프됩니다. 명령을 실행하면 알파벳순으로 정렬되어 결과가 터미널에 인쇄됩니다.

3. 파일의 고유 단어 정렬 및 표시

cat words.txt | sort -r | uniq

세 번째 예에는 두 개의 파이프로 연결된 세 개의 개별 명령이 포함되어 있습니다. 첫 번째 명령은 words.txt의 내용을 출력합니다. 단어 목록이 포함된 파일입니다.

출력은 sort -r으로 파이프됩니다. 단어를 알파벳 역순으로 정렬하는 명령입니다. 마지막으로, 정렬된 단어는 uniq으로 파이프됩니다. 중복된 단어를 제거하고 고유하게 정렬된 단어를 출력하는 명령입니다.

Command Piping Linux를 적용해야 하는 이유와 시기

파이핑에는 구문을 아는 것 이상이 필요합니다. 구문은 매우 간단합니다. 배관을 효과적으로 사용하기 위해서는 배관의 본질을 이해해야 합니다.

파이핑의 목적은 하나의 출력을 다른 명령의 입력으로 사용하여 명령을 연결하는 데 도움을 주는 것입니다.

파이핑은 순차적으로 실행하려는 관련 없는 명령을 연결하는 방법이 아닙니다. 그렇게 해야 하는 경우 터미널에서 명령을 작성하고 다음 구문을 사용하여 세미콜론(;)으로 구분하세요.

command1 ; command2 ; ... ; commandN

Linux에서 리디렉션이란 무엇인가요?

리디렉션은 명령의 입력 또는 출력이 어디로 가는지 지정하는 행위입니다. 기본적으로 명령은 표준 입력에서 데이터를 받은 다음 결과를 표준 출력으로 출력합니다.

리디렉션이 유용하다고 입증된 주요 영역 중 하나는 명령 및 파일 작업을 할 때입니다. 예를 들어, 터미널에서 출력을 인쇄하는 대신 명령 출력을 파일로 리디렉션할 수 있습니다. 또는 특정 파일을 명령에 대한 입력으로 선언할 수 있습니다.

파이핑과 마찬가지로 Linux는 리디렉션을 수행하기 위한 특수 문자를 제공합니다. Linux의 중요한 파일 리디렉션 문자와 그 기능은 다음과 같습니다.

  • > – 명령의 출력을 특정 파일로 보냅니다.
  • < – 주어진 파일의 내용을 명령으로 전달합니다.
  • >> – 명령의 출력을 지정된 파일로 보냅니다. 파일이 존재하고 내용이 있으면 출력을 추가합니다.
  • 2> – 명령의 오류 메시지를 특정 파일로 전달합니다.
  • 2>> – 명령의 오류 메시지를 지정된 파일로 전달합니다. 파일이 존재하고 내용이 있는 경우 오류 메시지를 추가합니다.
  • &> – 표준 출력과 오류를 특정 파일로 보냅니다.
  • &>> – 표준 출력 및 오류를 지정된 파일로 보냅니다. 파일이 존재하고 내용이 있는 경우 파일에 추가합니다.

각 파일 리디렉션 문자를 자세히 살펴보겠습니다.

1. >을 사용한 출력 리디렉션

> 기호를 사용하면 명령 출력을 특정 파일로 리디렉션할 수 있습니다. 기호를 사용하면 출력을 기존 파일로 리디렉션할 수 있습니다. 존재하지 않는 경우 출력 리디렉션 문자가 자동으로 새 문자를 만듭니다.

하지만 기존 파일에 쓸 때는 경고 없이 해당 내용을 덮어쓰게 되므로 주의해야 합니다.

다음 구문을 사용하여 출력 리디렉션을 수행할 수 있습니다:

command > file

command 실행 결과 file에 기록됩니다. 표준 출력 대신(즉, 터미널에 인쇄됨) 다음은 출력 리디렉션을 수행하는 방법의 예입니다.

ls -a > contents.txt

위 명령에서 현재 디렉터리의 항목 목록(도트 파일, 디렉터리 및 파일 포함)이 contents.txt에 기록됩니다. 파일. 리디렉션으로 인해 터미널에 어떤 출력도 표시되지 않습니다.

2. >>을 사용한 출력 리디렉션

>> 명령 출력을 파일로 리디렉션할 수 있습니다. 그러나 문자보다 큰 단일 문자(>)를 사용하는 것과는 달리 ), >> 기존 파일에 쓰려고 하면(내용을 덮어쓰는 대신) 출력을 추가합니다. 파일이 존재하지 않으면 새 파일이 생성됩니다.

구문은 다음과 같습니다:

command >> file

다음은 >>와 함께 출력 리디렉션을 사용하는 예입니다. 이전과 동일한 작업을 수행하려면:

ls -a >> contents.txt

3. <을 사용한 입력 리디렉션

< 명령줄의 문자를 사용하면 입력을 키보드 대신 파일의 명령으로 리디렉션할 수 있습니다. <을 사용한 입력 리디렉션 구문 다음과 같습니다:

command < file

다음은 입력 리디렉션을 사용하는 예입니다:

wc -w < files.txt

위 예에서는 files.txt를 전달합니다. wc -w에 대한 입력으로 파일의 단어 수를 계산하는 명령입니다. 그러나 입력 리디렉션 문자는 기본 동작이므로 많은 시나리오에서 사용할 필요가 없습니다. 예를 들어, 위 명령은 다음과 유사합니다:

wc -w files.txt

4. 2> 오류 리디렉션 및 2>>

명령줄에서 작업할 때 오류가 발생할 수 있습니다. 예를 들어, 적절한 권한 없이 파일을 실행하려는 경우입니다. 터미널에서 인쇄하여 오류를 발생시키는 대신 오류 리디렉션 문자를 사용하여 오류 메시지가 어디로 가야 하는지 지정할 수 있습니다.

오류를 리디렉션하는 좋은 장소는 오류 저장 전용 파일입니다. 다음은 존재하지 않는 디렉터리의 파일 목록에 액세스하려는 명령의 간단한 예입니다.

ls nonexistent 2> error.txt

위의 예에서는 nonexistent라는 파일이 없기 때문에 터미널에서 오류가 발생합니다. . 그러나 콘솔에 인쇄하는 대신 error.txt에 저장됩니다. 오류 리디렉션 문자로 인해 파일이 손상되었습니다. 그러나 오류가 없으면 파일에는 아무 것도 포함되지 않습니다.

내용을 덮어쓰는 대신 기존 파일에 오류를 추가해야 하는 경우 2>>를 사용하세요. 2> 대신 .

5. &>를 사용한 출력 및 오류 리디렉션 및 &>>

표준 출력 또는 표준 오류를 파일로 리디렉션할지 여부를 선택하는 대신 &> 두 가지를 동시에 리디렉션할 수 있습니다. &>을 생각하시면 됩니다. 출력 리디렉션(>) 문자와 오류 리디렉션(2>) 문자를 결합하는 약어입니다.

&> 사용 구문 다음과 같습니다:

command &> output.txt

command의 오류 또는 출력 output.txt에 기록됩니다. 파일. 예를 들면 다음과 같습니다:

ls sample &> output.txt

위 명령에서 sample 디렉터리를 사용할 수 없거나 사용할 수 있지만 읽기 권한이 없으면 output.txt에 해당 오류가 기록됩니다. 파일. 그러나 그것이 존재하고 읽기 권한이 있는 경우 해당 내용은 output.txt에 출력됩니다. 파일입니다.

&>> 사용 파일이 존재하고 내용이 있는 경우 출력을 파일에 추가할 수 있습니다.

파이핑과 리디렉션을 결합하여 명령줄의 강력한 기능을 활용하는 방법

배관과 방향 전환을 함께 사용하면 무거운 작업을 하지 않고도 복잡한 작업을 수행할 수 있습니다. 두 가지를 결합하는 방법을 배우면 더 적은 입력으로 다양한 작업을 수행하는 복잡한 명령을 만들 수 있습니다.

다음 명령을 예로 들어보세요:

ls | grep ".txt" > text_files.txt

ls 명령은 현재 디렉터리의 내용을 나열합니다. 출력은 grep으로 파이프됩니다. 텍스트 파일을 필터링하는 명령입니다. 마지막으로 grep의 출력 명령이 text_files.txt로 리디렉션됩니다. 파일.

이 간단하면서도 강력한 예는 파이프라인과 리디렉션에 있어 유일한 한계는 마음뿐임을 보여줍니다.

결론

이 튜토리얼에서는 Linux의 파이핑 및 리디렉션의 기본 사항을 배웠습니다. 우리는 두 가지를 어떻게 사용할 수 있는지에 대한 예와 함께 기본 사항을 다루었습니다.

두 가지 기능을 따로 분리하면 강력할 수 있지만 마지막 섹션에 표시된 대로 명령에서 두 기능을 결합하면 더 많은 기능을 사용할 수 있습니다.

무료로 코딩을 배우세요. freeCodeCamp의 오픈 소스 커리큘럼은 40,000명 이상의 사람들이 개발자로 취업하는 데 도움을 주었습니다. 시작하세요