LINUX Classes || Session - 25: Piping and Importance of tee and xargs commands || By Mr. DURGA Sir
차례:
- Linux
xargs
명령을 사용하는 방법 - 명령을보고 사용자에게 프롬프트하는 방법
- 인수 수를 제한하는 방법
- 여러 명령을 실행하는 방법
- 구분자를 지정하는 방법
- 파일에서 항목을 읽는 방법
find
와 함께xargs
사용- 공백 문자를 자르기 위해 xargs 사용
- 결론
xargs
유틸리티를 사용하면 표준 입력에서 명령을 빌드하고 실행할 수 있습니다. 일반적으로 배관을 통해 다른 명령과 함께 사용됩니다.
xargs
를 사용하면
mkdir
및
rm
과 같은 명령 행 유틸리티에 대한 표준 입력을 인수로 제공 할 수 있습니다.
이 자습서에서는
xargs
명령 사용의 기본 사항을 설명합니다.
Linux
xargs
명령을 사용하는 방법
xargs
는 표준 입력에서 인수를 공백이나 개행으로 구분하여 읽고 입력을 명령의 인수로 사용하여 지정된 명령을 실행합니다. 명령이 제공되지 않은 경우 기본값은
/bin/echo
입니다.
xargs
명령의 구문은 다음과 같습니다.
xargs]
xargs
를 사용하는 가장 기본적인 예는 파이프를 사용하여 공백으로 구분 된 여러 문자열을
xargs
하고 해당 문자열을 인수로 사용하는 명령을 실행하는 것입니다.
echo "file1 file2 file3" | xargs touch
위의 예에서 표준 입력을
xargs
로 파이프하고
touch
명령이 각 인수에 대해 실행되어 세 개의 파일을 만듭니다. 다음과 같이 실행하는 것과 같습니다.
명령을보고 사용자에게 프롬프트하는 방법
실행하기 전에 터미널에서 명령을 인쇄하려면
-t
(
--verbose
) 옵션을 사용하십시오.
echo "file1 file2 file3" | xargs -t touch
touch file1 file2 file3
echo "file1 file2 file3" | xargs -p touch
y
또는
Y
를 입력하여 명령을 확인하고 실행하십시오.
touch file1 file2 file3 ?…y
이 옵션은 파괴적인 명령을 실행할 때 유용합니다.
인수 수를 제한하는 방법
기본적으로 명령에 전달 된 인수의 수는 시스템의 한계에 의해 결정됩니다.
-n
(
--max-args
) 옵션은 주어진 명령에 전달할 인수 수를 지정합니다.
xargs
는 모든 인수가 소진 될 때까지 필요한만큼 지정된 명령을 실행합니다.
다음 예에서 표준 입력에서 읽는 인수의 수는 1로 제한됩니다.
echo "file1 file2 file3" | xargs -n 1 -t touch
아래의 상세 출력에서 볼 수 있듯이 터치 명령은 각 인수에 대해 별도로 실행됩니다.
touch file1 touch file2 touch file3
여러 명령을 실행하는 방법
xargs
여러 명령을 실행하려면
-I
옵션을 사용하십시오.
-I
옵션 뒤에
replace-str
을 정의하면 작동하며 모든
replace-str
은 xargs에 전달 된 인수로 바뀝니다.
다음
xargs
예제는 두 개의 명령을 실행합니다. 먼저
touch
사용하여 파일을 만든 다음
ls
명령을 사용하여 파일을 나열합니다.
echo "file1 file2 file3" | xargs -t -I % sh -c '{ touch %; ls -l %; }'
-rw-r--r-- 1 linuxize users 0 May 6 11:54 file1 -rw-r--r-- 1 linuxize users 0 May 6 11:54 file2 -rw-r--r-- 1 linuxize users 0 May 6 11:54 file3
replace-str
의 일반적인 선택은
%
입니다. 그러나 다른 자리 표시 자 (예:
ARGS
를 사용할 수 있습니다.
echo "file1 file2 file3" | xargs -t -I ARGS sh -c '{ touch ARGS; ls -l ARGS; }'
구분자를 지정하는 방법
-d
(
--delimiter
) 옵션을 사용하여 단일 문자 나
\
시작하는 이스케이프 시퀀스 일 수있는 사용자 정의 구분 기호를 설정하십시오.
우리가 사용하는 다음 예제는
;
구분 기호로:
echo "file1;file2;file3" | xargs -d ; -t touch
파일에서 항목을 읽는 방법
xargs 명령은 표준 입력 대신 파일에서 항목을 읽을 수도 있습니다. 그렇게하려면
-a
(
--arg-file
) 옵션 뒤에 파일 이름을 사용하십시오.
다음 예에서
xargs
명령은
ips.txt
파일을 읽고 각 IP 주소를 핑합니다.
8.8.8.8 1.1.1.1
또한
-L 1
옵션을 사용하여
xargs
가 한 번에 한 줄을 읽도록 지시합니다. 이 옵션을 생략하면
xargs
는 모든 IP를 단일
ping
명령으로 전달합니다.
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
find
와 함께
xargs
사용
xargs
는 대부분
find
명령과 함께 사용됩니다.
find
를 사용하여 특정 파일을 검색 한 다음
xargs
를 사용하여 해당 파일에 대한 작업을 수행 할 수 있습니다.
줄 바꿈 또는 기타 특수 문자가 포함 된 파일 이름 문제를 피하려면 항상 find
-print0
옵션을 사용하십시오. 그러면
find
는 전체 파일 이름과 널 문자를 인쇄합니다. 이 출력은
-0
, (
--null
) 옵션을 사용하여
xargs
의해 올바르게 해석 될 수 있습니다.
다음 예제에서
find
는
/var/www/.cache
디렉토리에있는 모든 파일의 전체 이름을 인쇄하고
xargs
는 파일 경로를
rm
명령으로 전달합니다.
find /var/www/.cache -type f -print0 | xargs -0 rm -f
공백 문자를 자르기 위해 xargs 사용
xargs
는 주어진 문자열의 양쪽에서 공백을 제거하는 도구로 사용될 수도 있습니다. 문자열을
xargs
명령으로 파이프하면 트리밍이 수행됩니다.
echo " Long line " | xargs
Long line
쉘 스크립트에서 문자열을 비교할 때 유용합니다.
#!/bin/bash VAR1=" Linuxize " VAR2="Linuxize" if]; then echo "Strings are equal." else echo "Strings are not equal." fi ## Using xargs to trim VAR1 if]; then echo "Strings are equal." else echo "Strings are not equal." fi
Strings are not equal. Strings are equal.
결론
xargs
는 Linux에서 명령을 작성하고 실행할 수있는 명령 줄 유틸리티입니다.
각
xargs
옵션에 대한 자세한 내용은 xargs 매뉴얼 페이지를 참조하십시오.
마이크로 소프트와 베스트 바이는 리눅스에서 강탈한다

당신은 '안티 리눅스'라고 말하면, 나는 '프로 윈도우'라고 말한다. 당신은 'Linux bashing'이라고 말하면서 '마케팅'이라고 말합니다.
리눅스에서 부팅 가능한 데비안 10 USB 스틱 만들기

이 튜토리얼에서는`dd` 명령을 사용하여 Linux 터미널에서 부팅 가능한 데비안 10 (버스터) USB 스틱을 만드는 방법을 설명합니다.
리눅스에서 파일의 권한을 재귀 적으로 변경하는 방법

Linux는 다중 사용자 시스템이며 파일에 대한 액세스는 파일 권한, 속성 및 소유권을 통해 제어됩니다. 이 기사에서는 파일 및 디렉토리의 권한을 재귀 적으로 변경하는 방법에 대해 설명합니다.