일부 Linux 명령을 함께 묶어야 하는데 그 중 하나가 파이프 입력을 허용하지 않습니까? xargs는 한 명령어의 출력을 가져와 다른 명령어에 매개변수로 보낼 수 있습니다.

당신은 목적 리눅스 xargs

일부 Linux 명령을 함께 묶어야 하는데 그 중 하나가 파이프 입력을 허용하지 않습니까? xargs는 한 명령에서 출력을 가져와 다른 명령에 매개변수로 보낼 수 있습니다.

모든 표준 Linux 유틸리티에는 3개의 데이터 스트림이 연결되어 있습니다. 표준 입력 스트림(stdin), 표준 출력 스트림(stdout), 표준 오류 스트림(stderr)입니다.

이 스트림은 텍스트와 함께 작동합니다. 텍스트를 사용하여 명령에 입력(stdin)을 보내고 응답(stdout)은 터미널 창에 텍스트로 기록됩니다. 오류 메시지는 또한 터미널 창에 텍스트(stderr)로 기록됩니다.

Linux 및 유닉스 계열 운영 체제의 뛰어난 기능 중 하나는 한 명령의 stdout 출력을 두 번째 명령의 stdin 입력으로 파이프하는 기능입니다. 첫 번째 명령은 출력이 터미널 창으로 가지 않는 것을 신경 쓰지 않고 두 번째 명령은 입력이 키보드에서 나오지 않는 것을 신경 쓰지 않습니다.

모든 Linux 명령에 세 가지 표준 스트림이 있지만 모든 명령이 다른 명령의 표준 출력을 표준 입력에 대한 입력으로 받아들이는 것은 아닙니다. 즉, 입력을 파이프할 수 없습니다.

광고

xargs는 표준 데이터 스트림을 사용하여 실행 파이프라인을 구축하기 위한 명령입니다. xargs를 사용하여 echo, rmmkdir과 같은 명령이 표준 입력을 인수로 받아들이도록 만들 수 있습니다.< /p>

xargs 명령

xargs는 파이프 입력을 허용합니다. 파일에서 입력을 받을 수도 있습니다. xargs는 그 입력을 우리가 작업하도록 지시한 명령의 매개변수로 사용합니다. 특정 명령으로 작업하도록 xargs에 지시하지 않으면 기본적으로 echo를 사용합니다.

이를 사용하여 xargs가 여러 줄 입력에서도 항상 한 줄의 출력을 생성하는 방법을 보여줄 수 있습니다.

ls와 함께 -1(한 줄에 하나의 파일 나열) 옵션을 사용하면 파일 이름의 단일 열이 생성됩니다.< /p>

ls -1 ./*.sh

현재 디렉토리에 있는 쉘 스크립트 파일을 나열합니다.

예상대로 단일 열이 표시됩니다. xargs를 통해 파이프하면 무엇을 얻을 수 있습니까?

<사전>ls -1 ./*.sh | xargs

광고

출력은 하나의 긴 텍스트 스트림으로 터미널 창에 기록됩니다.

이 기능을 통해 xargs 매개변수를 다른 명령에 제공할 수 있습니다.

wc와 함께 xargs 사용

xargs를 사용하여 wc가 여러 파일에서 단어, 문자 및 줄을 쉽게 계산하도록 할 수 있습니다.

<사전>ls *.page | xargs 화장실

이렇게 하면 됩니다:

<울>

  • ls는 *.page 파일을 나열하고 목록을 xargs에 전달합니다.
  • xargs는 파일 이름을 wc에 전달합니다.
  • wc는 파일 이름을 명령줄 매개변수로 받은 것처럼 처리합니다.
  • 각 파일에 대한 통계가 전체 합계와 함께 표시됩니다.

    See also  비디오 트랜스코딩이란 무엇입니까? » 비디오 압축 기초 - 트랜스코딩

    확인과 함께 xargs 사용

    -p(대화형) 옵션을 사용하여 xargs가 계속 진행할 수 있다는 확인 메시지를 표시하도록 할 수 있습니다.

    파일 이름 문자열을 touch에 전달하면 xargs를 통해 touch파일을 생성합니다. 우리.

    <사전>에코 ‘하나 둘 셋’ | xargs -p 터치

    광고

    실행될 명령이 표시되고 xargs는 “y” 또는 “Y” 또는 “n” 또는 “N”을 입력하고 Enter 키를 눌러 응답할 때까지 기다립니다.

    Enter만 누르면 “n”으로 처리됩니다. 명령은 “y” 또는 “Y”를 입력하는 경우에만 실행됩니다.

    “y”를 누르고 Enter를 눌렀습니다. ls를 사용하여 파일이 생성되었는지 확인할 수 있습니다.

    하나 둘 셋

    여러 명령과 함께 xargs 사용

    -I(초기 인수) 옵션을 사용하여 xargs와 함께 여러 명령을 사용할 수 있습니다.

    이 옵션은 “replace-string”을 정의합니다. replace-string의 토큰이 명령줄에 나타날 때마다 xargs에 제공된 값은가 삽입되었습니다.

    tree 명령을 사용하여 현재 디렉토리에서 하위 디렉토리를 살펴보겠습니다. -d(디렉토리) 옵션을 사용하면 tree가 파일을 무시하고 디렉토리에 대해서만 보고합니다.

    트리 -d

    “이미지”라는 단일 하위 디렉토리가 있습니다.

    광고

    “directories.txt”라는 파일에는 만들고자 하는 일부 디렉토리의 이름이 있습니다. cat를 사용하여 내용을 볼 수 있습니다.

    고양이 디렉토리.txt

    이것을 xargs의 입력 데이터로 사용할 것입니다. 우리가 할 명령은 다음과 같습니다.

    <사전>고양이 디렉토리.txt | xargs -I % sh -c ‘에코 %; mkdir %’

    다음과 같이 나뉩니다.

    <울>

  • cat directory.txt |: 이것은 directrories.txt 파일의 내용(모든 새 디렉토리 이름)을 xargs로 푸시합니다.
  • xargs -I %: “%” 토큰으로 “replace-string”을 정의합니다.
  • sh -c: 새 서브쉘을 시작합니다. -c(명령)는 쉘이 명령줄에서 명령을 읽도록 지시합니다.
  • ‘에코 %; mkdir %’: 각 “%” 토큰은 xargs에 의해 전달된 디렉토리 이름으로 대체됩니다. echo 명령은 디렉토리 이름을 출력합니다. mkdir 명령은 디렉토리를 생성합니다.
  • 디렉토리가 하나씩 나열됩니다.

    tree를 한 번 더 사용하여 디렉토리가 생성되었는지 확인할 수 있습니다.

    트리 -d

    여러 위치에 파일 복사

    xargs를 사용하여 단일 명령으로 파일을 여러 위치에 복사할 수 있습니다.

    두 디렉토리의 이름을 입력 매개변수로 xargs에 파이프할 것입니다. xargs가 작업 중인 명령에 한 번에 이러한 매개변수 중 하나만 전달하도록 지시합니다.

    이 경우 명령어는 cp입니다. 따라서 효과는 cp를 두 번 호출하는 것입니다. 매번 두 디렉토리 중 하나를 명령줄 매개변수로 사용합니다. 이를 가능하게 하는 xargs 매개변수는 -n(최대 수) 옵션입니다. 우리는 이것을 하나로 설정할 것입니다.

    광고

    또한 cp와 함께 -v(상세) 옵션을 사용하여 무슨 일이 일어나고 있는지 보고합니다.

    <사전>에코 ~/Backups/ ~/Documents/page-files/ | xargs -n 1 cp -v ./*.페이지

    파일은 한 번에 한 디렉터리씩 두 디렉터리에 복사됩니다. cp는 각 파일 복사 작업을 보고하여 이러한 작업이 수행되는 것을 볼 수 있습니다.

    See also  iPad Pro 2021 vs MacBook Air M1: 무엇을 사야 할까요? - 정제 - 2022 - 아이패드 프로 vs 맥북 에어

    중첩 디렉토리의 파일 삭제

    파일 이름에 공백과 개행 문자와 같은 이상한 문자가 있는 경우 xargs는 이를 올바르게 해석할 수 없습니다. -0(null terminator) 옵션을 사용하여 이 문제를 극복할 수 있습니다. 이것은 xargs가 null 문자를 파일 이름의 최종 구분 기호로 사용하도록 지시합니다.

    이 예에서는 찾기를 사용할 것입니다. find에는 공백과 파일 이름의 이상한 문자를 처리하는 자체 옵션이 있습니다. -print0(전체 이름, null 문자) 옵션입니다.

    <사전>찾다 . -이름 “*.png” -유형 f -print0 | xargs -0 rm -v -rf “{}”

    다음과 같이 나뉩니다.

    <울>

  • 찾다. -name “*.png”: find는 현재 디렉토리 “.”에서 검색합니다. 파일인 “*.png”와 이름이 일치하는 개체의 경우(type -f).
  • -print0: 이름은 null 문자로 끝나고 공백과 이상한 문자는 처리됩니다.
  • xargs -0: xargs는 파일 이름도 null로 끝나는 것으로 간주하고 공백과 이상한 문자로 인해 문제가 발생하지 않습니다.
  • rm -v -rf “{}”: rm은 장황하고 무슨 일이 일어나고 있는지 보고합니다(-v). 재귀적(-r)이고 중첩된 하위 디렉토리를 살펴보고 프롬프트 없이 파일을 제거합니다(-f). “{}”는 각 파일 이름으로 대체됩니다.
  • 모든 하위 디렉토리를 검색하고 검색 패턴과 일치하는 파일을 삭제합니다.

    중첩 디렉토리 제거

    중첩된 하위 디렉터리 집합을 제거하려고 한다고 가정해 보겠습니다. tree에서 볼 수 있습니다.

    트리 -d

    <사전>찾다 . -name “level_one” -유형 d 인쇄 | xargs -o rm -v -rf “{}”

    광고

    이 명령은 find를 사용하여 현재 디렉토리 내에서 재귀적으로 검색합니다. 검색 대상은 “level_one”이라는 디렉토리입니다. 디렉토리 이름은 xargs를 통해 rm으로 전달됩니다.

    이 명령과 이전 명령 사이의 유일한 중요한 변경 사항은 검색어가 최상위 디렉토리의 이름이고 -type dfind에게 다음을 찾도록 지시한다는 것입니다. 파일이 아닌 디렉토리

    각 디렉토리의 이름은 제거될 때 인쇄됩니다. tree로 확인할 수 있습니다.

    트리 -d

    중첩된 모든 하위 디렉토리가 삭제됩니다.

    하나의 파일 형식을 제외한 모든 파일 삭제

    find, xargsrm을 사용하여 유지하려는 한 유형을 제외한 모든 파일을 삭제할 수 있습니다. 다소 직관적이지 않지만 삭제하려는 파일 유형의 이름이 아니라 유지하려는 파일 유형의 이름을 제공합니다.

    -not 옵션은 검색 패턴과 일치하지 않는 파일 이름을 반환하도록 find에 지시합니다. xargs와 함께 -I(초기 인수) 옵션을 다시 한 번 사용하고 있습니다. 이번에는 우리가 정의하는 교체 문자열 토큰이 “{}”입니다. 이것은 이전에 생성한 “%”인 문자열 교체 토큰과 정확히 동일하게 작동합니다.

    <사전>찾다 . -type f -not – 이름 “*.sh” -print0 | xargs -0 -I {} rm -v {}

    See also  수정: Windows 10의 메모리 누수 [전체 가이드] - 메모리 누수를 해결하는 방법 Windows 10

    ls로 확인할 수 있습니다. 디렉토리에 남은 파일은 “*.sh” 검색 패턴과 일치하는 파일뿐입니다.

    ls -l

    Xargs로 아카이브 파일 생성

    find를 사용하여 파일을 검색하고 xargs를 통해 tar로 전달하여 아카이브 파일을 생성할 수 있습니다.

    광고

    현재 디렉토리에서 검색할 것입니다. 검색 패턴은 “*.page”이므로 “.page” 파일을 찾습니다.

    찾기 ./ - 이름 "*.page" -type f -print0 | xargs -0 -tar -cvzf page_files.tar.gz

    보관 파일이 생성됨에 따라 파일이 예상대로 나열됩니다.

    데이터 중재자

    때로는 물건을 쌓을 때 약간의 비계가 필요합니다. xargs는 정보를 퍼낼 수 있는 명령과 정보를 받아들이도록 만들어지지 않은 명령 사이의 격차를 해소합니다.

    xargsfind에는 모두 수많은 옵션이 있습니다. 자세한 내용은 매뉴얼 페이지를 확인하는 것이 좋습니다.


    주제와 관련된 추가 정보 보기 리눅스 xargs

    Using the Shell: xargs

    • 저자: Calin Leafshade – Linux & Productivity Videos
    • 게시일: 2019-12-29
    • 평점: 4 ⭐ ( 8633 평점 )
    • 검색 결과 일치: A short video about using the linux terminal. In this video we look at the command xargs. xargs is used to pull data from standard input and put it into a command as an argument.

      My dotfiles: https://github.com/calinleafshade/dots
      Twitter: https://www.twitter.com/@calinleafshade

      ► Ending music by octarob
      https://www.soundcloud.com/octarob

      ► Wallpaper credit zedotagger
      https://www.deviantart.com/zedotagger/art/Dark-Souls-3-Firelink-601790597

    Linux xargs

    • 저자: lascrea.tistory.com
    • 평점: 4 ⭐ ( 9596 평점 )
    • 검색 결과 일치: 기본적인 명령어 뒤에 파이프로 추가하여 사용 파이프 이전에 명령을 인자로 받아 명령어를 실행하는 구조 xargs [옵션] 명령어 옵션 – a : 표준 입력 대신 파일에서 항목을 읽음, 이 옵션을 사용하여 명령을 실행..

    Linux : Xargs 사용 방법, 예제, 명령어

    • 저자: jjeongil.tistory.com
    • 평점: 3 ⭐ ( 3011 평점 )
    • 검색 결과 일치: xargs 유틸리티를 사용하여 표준 입력에서 명령을 작성하고 실행할 수 있습니다. 일반적으로 pipe를 통해 다른 명령과 함께 사용된다. xargs를 사용하면 mkdir 및 rm과 같은 명령줄 유틸리티에 표준 입력을 인수로..

    Linux에서 xargs 명령을 사용하는 방법

    • 저자: choesin.com
    • 평점: 4 ⭐ ( 7438 평점 )
    • 검색 결과 일치:

    리눅스 xargs

    • 저자: itwiki.kr
    • 평점: 5 ⭐ ( 2978 평점 )
    • 검색 결과 일치:

    초보자를위한 Linux Xargs 명령어의 12 가지 실용 사례

    • 저자: ko.linux-console.net
    • 평점: 5 ⭐ ( 1998 평점 )
    • 검색 결과 일치:

    Linux 101 Hacks : Xargs 명령어를 이용한 다양한 활용방법

    • 저자: rsec.kr
    • 평점: 4 ⭐ ( 8485 평점 )
    • 검색 결과 일치: xargs 는 매우 효과적인 명령어로써 출력된 결과를 인자값으로 이용하여 다른 커맨드에서 활용할 수 있게 만들어 줍니다. 아래 예제와 같이 강력하게 사용할 수 있습니다. xags 명령어의 다양한 예제와 활용법을 공유하도록 하겠습니다

    이 카테고리의 더 많은 기사 보기: 컴퓨터 팁