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

0
2597
Fatmawati Achmad Zaenuri / Shutterstock.com

yes 명령은 실용적으로 사용하기에는 너무 단순 해 보이지만이 자습서에서는 응용 프로그램과 Linux 및 macOS의 펜트 업 양성으로부터 이점을 얻는 방법을 보여줍니다.

예 명령

그만큼 yes command는 Linux에서 가장 간단한 명령 중 하나이며 macOS와 같은 다른 유닉스 계열 운영 체제입니다. 그리고 간단하게, 우리는 사용법과 초기 구현이 단순하다는 것을 의미합니다. System 7 Unix에서 릴리스되고 Ken Thompson이 작성한 원래 버전의 소스 코드는 6 줄에 불과합니다.

그러나 간단한 작은 명령으로 작성하지 마십시오. 흥미롭고 유용한 방법으로 사용할 수 있습니다.

무엇을합니까?

명령 줄 매개 변수없이 사용하면 yes 명령은“y”를 입력하고 Enter를 반복해서 누르는 것처럼 작동합니다. 매우 빠르게. 그리고 Ctrl + C를 눌러 중단 할 때까지 계속 수행합니다.

yes

터미널 창에서 yes에서 출력

사실로, yes 선택한 메시지를 반복해서 생성하는 데 사용할 수 있습니다. 간단히 입력 yes, 공백, 사용하려는 문자열을 입력 한 다음 Enter 키를 누릅니다. 이것은 종종 원인이됩니다 yes “yes”또는 “no”문자열의 출력 스트림을 생성합니다.

yes yes

터미널 창에서 yes yes 출력

yes anything you like

터미널 창에 텍스트 줄이있는 yes에서 출력

그러나 그게 무슨 용도입니까?

의 출력 yes 다른 프로그램이나 스크립트로 파이프 될 수 있습니다.

익숙한가요? 긴 프로세스 실행을 시작하고 물러나서 실행 상태로 둡니다. 컴퓨터로 돌아 왔을 때 프로세스가 전혀 완료되지 않았습니다. 부재시, 귀하에게 질문을했으며 “예”또는 “아니오”응답을 기다리는 중입니다.

모든 답변이 긍정적 ( “예”또는 “y”) 또는 부정 ( “아니오”또는 “n”)임을 미리 알고 있다면 yes 응답을 제공합니다. 그러면 긴 프로세스가 무인으로 완료됩니다. yes 프로세스가 요청하는 모든 질문에 대한 답변을 제공합니다.

스크립트와 함께 yes 사용

다음 Bash 쉘 스크립트를보십시오. (이것은 실행하는 데 상당한 시간이 걸리는 훨씬 더 큰 스크립트의 일부라고 상상할 필요가 있습니다.)

#!/bin/bash

# ...
# in the middle of some long script
# obtain a response from the user
# ...

echo "Are you happy to proceed? (y,n)"
read input

# did we get an input value?
if ( "$input" == "" ); then

   echo "Nothing was entered by the user"

# was it a y or a yes?
elif (( "$input" == "y" )) || (( "$input" == "yes" )); then

   echo "Positive response: $input"

# treat anything else as a negative response
else

   echo "negative response: $input"

fi

이 스크립트는 질문을하고 응답을 기다립니다. 스크립트 내의 논리 흐름은 사용자의 입력에 따라 결정됩니다.

  • “예”또는 “y”는 긍정적 인 반응을 나타냅니다.
  • 다른 입력은 부정적인 응답으로 간주됩니다.
  • 입력 텍스트없이 Enter를 누르면 아무 것도 수행되지 않습니다.

이를 테스트하려면 스크립트를 파일에 복사하고 다음으로 저장하십시오. long_script.sh. 사용하다 chmod 실행 가능하게 만듭니다.

chmod +x long_script.sh

다음 명령으로 스크립트를 실행하십시오. “yes”,“y”및 입력 텍스트없이 Enter를 누르는 것을 포함하여 다른 입력 내용을 입력하십시오.

./long_script.sh

터미널 창에서 long_script.sh의 출력

얻기 위해 yes 스크립트 질문에 대한 응답을 제공하기 위해 yes 스크립트에.

yes | ./long_script.sh

터미널 창에서 long_script.sh로 yes를 파이핑

일부 스크립트는 요구 사항이 더 엄격하고 긍정적 인 응답으로 전체 단어 “yes”만 허용합니다. “yes”를 매개 변수로 제공하여 yes다음과 같이 :

yes yes | ./long_script.sh

터미널 창에서 long_script.sh로 yes로 파이핑

생각하지 않고 예라고 말하지 마라

스크립트 나 프로그램에 입력 할 입력 내용이 예상 한 결과를 확실히 제공하는지 확인해야합니다. 결정을 내리려면 질문과 응답이 무엇인지 알아야합니다.

스크립트, 명령 또는 프로그램의 논리가 예상과 일치하지 않을 수 있습니다. 예제 스크립트에서 질문은“중지 하시겠습니까? (y, n).” 만약 그렇다면, 부정적인 반응은 스크립트가 진행되도록 허용했을 것입니다.

당신 곰팡내 나게 하다 블리치 파이프하기 전에 스크립트, 명령 또는 프로그램에 익숙해야합니다 yes 그것에.

명령에 yes 사용

초기 단계에서 yes 다른 Linux 명령과 함께 사용됩니다. 그 이후로, 대부분의 다른 Linux 명령은 인간의 상호 작용없이 자체 실행 방식을 가지고 있습니다. yes 더 이상 달성 할 필요가 없습니다.

우분투 패키지 관리자를 보자 apt-get 예로서. 설치 도중 절반에 “y”를 누르지 않고 응용 프로그램을 설치하려면 yes 다음과 같이 사용되었을 것입니다 :

yes | sudo apt-get install fortune-mod

터미널 창에서 apt-get에 yes로 파이핑

같은 결과를 얻을 수 있습니다 -y (예라고 가정) 옵션 apt-get:

sudo apt-get -y install fortune-mod

터미널 창에서 가정 가정 옵션과 함께 apt-get 사용

당신은 그것을 볼 수 있습니다 apt-get 평소에도 묻지 않았습니다.“계속하겠습니까? (Y / n)”질문입니다. 방금 대답이“예”라고 가정했습니다.

다른 Linux 배포판에서는 상황이 동일합니다. Fedora에서는이 유형의 패키지 관리자 명령을 한 번에 사용했을 것입니다.

yes | yum install fortune-mod

그만큼 dnf 패키지 관리자가 교체되었습니다 yumdnf 그 자체가 -y (예라고 가정) 옵션.

dnf -y install fortune-mod

동일에 적용 cp, fsck, rm. 이 명령들은 각각 자신의 -f (힘) 또는 -y (예라고 가정) 옵션.

그렇게 보인다 yes 스크립트 만 사용하도록 강등 되었습니까? 좀 빠지는. 오래된 개에는 아직 몇 가지 트릭이 있습니다.

좀 더 예 트릭

당신이 사용할 수있는 yes 에 의해 생성 된 일련의 숫자로 seq 반복되는 동작의 루프를 제어합니다.

이 단일 라이너는 생성 된 숫자를 터미널 창에 에코 한 다음 sleep 1 초 동안.

단순히 터미널 창에 숫자를 표시하는 대신 다른 명령이나 스크립트를 호출 할 수 있습니다. 이 명령이나 스크립트는 숫자를 사용할 필요조차 없으며 루프의 각 사이클을 시작하기 위해 거기에만 있습니다.

yes "$(seq 1 20)" | while read digit; do echo digit; sleep 1; done

예 터미널 창에서 루프를 조절하는 단일 라이너

때로는 테스트 할 큰 파일을 갖는 것이 유용합니다. zip 명령을 사용하거나 FTP 업로드를 테스트 할 수있는 크기가 큰 파일을 원할 수 있습니다.

당신은 신속하게 큰 파일을 생성 할 수 있습니다 yes. 작업을 수행하고 출력을 파일로 리디렉션하기 위해 긴 텍스트 문자열을 제공하기 만하면됩니다. 실수하지 마라; 이 파일들은 빠르게 커질 것입니다. 몇 초 내에 Ctrl + C를 누를 준비를하십시오.

yes long line of meaningless text for file padding > test.txt
ls -lh test.txt
wc test.txt

예, 터미널 창으로 테스트 파일 생성하기

여기에서 생성 된 파일은이 기사를 연구하는 데 사용 된 테스트 머신에서 약 5 초가 걸렸습니다. ls 크기는 557Mb이며 wc 그 안에 1,240 만 줄이 있다고 알려주세요.

포함하여 파일의 크기를 제한 할 수 있습니다 head 우리의 명령 문자열에서. 파일에 몇 줄을 포함 시킬지 알려줍니다. 그만큼 -50 방법 head 단지 50 라인을 통해 test.txt 파일.

yes long line of meaningless text for file padding | head -50 > test.txt

head를 사용하여 파일의 크기를 제한하기 위해 터미널 창의 크기 (이);

에 50 줄이있는 즉시 test.txt 파일이 있으면 프로세스가 중지됩니다. Ctrl + C를 사용할 필요는 없습니다. 그것은 자신의 의지에 따라 정상적으로 정지됩니다.

wc 파일에 정확히 50 줄, 400 워드가 있으며 크기는 2350 바이트입니다.


장기 실행 스크립트 (및 몇 가지 트릭)에 응답을 제공하는 데 여전히 유용하지만 yes 명령은 일일 명령 툴킷의 일부가되지 않습니다. 그러나 필요할 때 단순성 자체와 6 줄의 황금 코드로 구성되어 있습니다.