Linux의 Xargs 명령

Linux의 Xargs 명령

2022-06-01 last update

10 minutes reading terminal xargs
xargs 유틸리티를 사용하면 표준 입력에서 명령을 작성하고 실행할 수 있습니다.그것은 보통 파이프를 통해 다른 명령과 결합하여 사용된다.xargs mkdir 등의 명령행 유틸리티에 표준 입력을 매개 변수로 사용할 수 있습니다.
.본 강좌에서 우리는 rm 명령을 사용하는 기본 지식을 소개할 것이다.

Linux xargs 명령 사용 방법

xargs 표준 입력에서 매개변수를 읽고 공백 또는 줄 바꿈으로 구분한 다음 명령으로 입력된 매개변수를 사용하여 지정된 명령을 실행합니다.명령이 제공되지 않으면 기본값은 xargs
./bin/echo 명령의 문법은 다음과 같다.
xargs [OPTIONS] [COMMAND [initial-arguments]]
사용xargs의 가장 기본적인 예는 파이프를 사용하여 공백으로 구분된 몇 개의 문자열을 xargs 전달하고 이 문자열을 매개 변수로 사용하는 명령을 실행하는 것이다.
echo "file1 file2 file3" | xargs touch
위의 예에서 표준 입력 파이프를 xargs xargs
각 매개변수에 대해 명령을 실행하고 세 개의 파일을 생성합니다.이것은 실행:
touch file1 file2 file3

명령을 보고 사용자에게 알리는 방법

명령을 실행하기 전에 터미널에서 명령을 인쇄하는 것과 같습니다. 명령을 실행하기 전에 각 명령을 실행할지 묻는 프롬프트를 얻으려면 touch-t 옵션:
echo  "file1 file2 file3" | xargs -t touch
touch file1 file2 file3
,--verbose(-p) 옵션을 사용하여:
echo  "file1 file2 file3" | xargs -p touch
유형--interactive 또는 y 명령을 확인하고 실행합니다.
touch file1 file2 file3 ?...y
이 옵션은 파괴적인 명령을 실행할 때 유용합니다.

매개변수 수를 제한하는 방법

기본적으로 명령에 전달되는 매개변수 수는 시스템 제한에 의해 결정됩니다.Y-n 옵션은 주어진 명령에 전달할 매개변수 수를 지정합니다.--max-args 매개변수가 모두 소진될 때까지 필요한 경우 지정된 명령을 여러 번 실행합니다.다음 예제에서는 표준 입력에서 읽는 매개변수 수가 1로 제한됩니다.
echo  "file1 file2 file3" |  xargs -n 1 -t touch
아래의 상세한 출력에서 보듯이 터치 명령은 매개 변수에 대해 각각 실행됩니다.
touch file1
touch file2
touch file3

여러 명령을 실행하는 방법

여러 명령을 실행하려면 xargs옵션을 사용하십시오.그것의 작업 원리는 xargs 옵션 다음에 -I 을 정의하고 replace-str 의 모든 인용을xargs에 전달하는 매개 변수로 바꾸는 것이다.다음 -I 예시에서 두 개의 명령을 실행합니다. 먼저 replace-str 을 사용하여 파일을 만든 다음 xargs 을 사용하여 파일을 표시합니다.
명령:
echo "file1 file2 file3" | xargs -t -I % sh -c '{ touch %; ls -l %; }'
-rw-r--r-- 1  users 0 May  6 11:54 file1
-rw-r--r-- 1  users 0 May  6 11:54 file2
-rw-r--r-- 1  users 0 May  6 11:54 file3
touch의 일반적인 선택은 ls입니다.단, replace-str:
echo "file1 file2 file3" | xargs -t -I ARGS sh -c '{ touch ARGS; ls -l ARGS; }'

구분자를 지정하는 방법

% ARGS 옵션을 사용하여 사용자 정의 구분자를 설정할 수 있습니다. 이 구분자는 단일 문자일 수도 있고 -d 로 시작하는 전의 서열일 수도 있습니다.(adsbygoogle=window.adsbygoogle | |[]).푸시({});다음 예는 --delimiter 을 구분자로 사용합니다.
echo  "file1;file2;file3" | xargs -d \; -t touch
touch file1 file2 file3

파일에서 항목 읽는 방법

xargs 명령은 표준 입력이 아닌 파일에서 항목을 읽을 수 있습니다.이렇게 하려면 \; 옵션을 사용하고 파일 이름을 따르십시오.다음 예에서 -a 명령은 --arg-file 파일을 읽고 IP 주소를 ping합니다.ips.txt
8.8.8.8
1.1.1.1
옵션도 사용합니다. 이 옵션은 xargs 한 번에 한 줄을 읽는 것을 표시합니다.이 옵션ips.txt을 생략하면 모든 IP를 단일 IP로 전달 -L 1
명령
xargs -t -L 1 -a ips.txt ping -c 1
ping -c 1 8.8.8.8 
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=50 time=68.1 ms

...
ping -c 1 1.1.1.1 
PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
64 bytes from 1.1.1.1: icmp_seq=1 ttl=59 time=21.4 ms

xargs를 xargs와 함께 사용하기

ping과 가장 자주 결합하여 사용한다
명령xargs 를 사용하여 특정 파일을 검색한 다음 find 를 사용하여 작업을 수행할 수 있습니다.줄 바꿈표나 다른 특수 문자를 포함하는 파일 이름에 문제가 생기지 않도록findxargs 옵션을 사용하면 find 전체 파일 이름을 인쇄하고 빈 문자를 출력할 수 있습니다.find, xargs 옵션-print0을 사용하면 출력을 정확하게 해석할 수 있습니다.다음 예제에서는 find 디렉터리에 있는 모든 파일의 전체 이름을 인쇄하고 xargs 파일 경로를 -0 에 전달합니다.
명령:
find /var/www/.cache -type f -print0 | xargs -0 rm -f

xargs를 사용하여 공백 문자 자르기

--null도 주어진 문자열의 양쪽 공백을 삭제하는 도구로 사용할 수 있습니다.파이핑을 통해 find 명령으로 문자열을 전송하면 클리핑이 완료됩니다.
echo "  Long line " | xargs
Long line
이것은 /var/www/.cache 때 매우 유용합니다.
셸 스크립트에서.
#!/bin/bash

VAR1=" Linuxize "
VAR2="Linuxize"

if [[ "$VAR1" == "$VAR2" ]]; then
    echo "Strings are equal."
else
    echo "Strings are not equal."
fi

## Using xargs to trim VAR1
if [[ $(echo "$VAR1" | xargs) == "$VAR2" ]]; then
    echo "Strings are equal."
else
    echo "Strings are not equal."
fi
Strings are not equal.
Strings are equal.

결론

xargs는 Linux의 명령행 유틸리티로 명령을 생성하고 실행하는 데 사용됩니다.각 rm 옵션에 대한 자세한 내용은 를 참조하십시오comparing strings
페이지질문이나 피드백이 있으면 언제든지 의견을 발표하십시오.