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

yes 명령은 실제 ​​사용하기에는 너무 간단해 보이지만 이 자습서에서는 해당 응용 프로그램과 Linux 및 macOS에서 억눌린 긍정적인 이점을 활용하는 방법을 보여줍니다.

예 명령

yes 명령은 Linux 및 macOS와 같은 기타 유닉스 계열 운영 체제에서 가장 간단한 명령 중 하나입니다. 그리고 단순하다는 것은 사용과 초기 구현이 단순하다는 것을 의미합니다. 원본 버전의 소스 코드 – System 7 Unix에서 릴리스되고 작성자: 켄 톰슨-에 불과하다 여섯 줄의 코드.

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

예는 무엇을합니까?

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

yes

실제로 yes는 선택한 메시지를 반복적으로 생성하는 데 사용할 수 있습니다. yes, 공백, 사용하려는 문자열을 입력하고 Enter 키를 누르기만 하면 됩니다. 이것은 yes가 “yes” 또는 “no” 문자열의 출력 스트림을 생성하도록 하는 데 자주 사용됩니다.

yes yes

yes anything you like

하지만 그게 무슨 소용입니까?

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

이것은 친숙하게 들리나요? 실행 중인 긴 프로세스를 시작하고 한 걸음 물러나서 실행되도록 둡니다. 컴퓨터로 돌아가면 프로세스가 전혀 완료되지 않습니다. 부재 시, 그것은 당신에게 질문을 하고 “예” 또는 “아니오” 응답을 기다리고 있습니다.

모든 답변이 긍정적(“예” 또는 “y”) 또는 부정적(“아니오” 또는 “n”)일 것이라는 것을 미리 알고 있다면 yes를 사용하여 해당 응답을 제공할 수 있습니다. 긴 프로세스는 프로세스가 묻는 모든 질문에 대한 답변을 제공하는 yes와 함께 무인 완료까지 실행됩니다.

  문제 해결을 위해 Outlook 추가 기능을 비활성화하는 방법

스크립트와 함께 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

다음 명령으로 스크립트를 실행하십시오. 입력 텍스트 없이 Enter 키를 누르는 것을 포함하여 “예”, “y” 및 기타 모든 것을 입력으로 제공하십시오.

./long_script.sh

스크립트의 질문에 대한 응답을 제공하기 위해 yes를 얻으려면 yes에서 스크립트로 출력을 파이프하십시오.

yes | ./long_script.sh

일부 스크립트는 요구 사항이 더 엄격하며 “예”라는 전체 단어만 긍정적인 응답으로 받아들입니다. 다음과 같이 yes에 대한 매개변수로 “yes”를 제공할 수 있습니다.

yes yes | ./long_script.sh

깊이 생각하지 않고 예라고 말하지 마십시오

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

스크립트, 명령 또는 프로그램의 논리가 예상과 일치하지 않을 수 있습니다. 예제 스크립트에서 질문은 “중지하시겠습니까? [y,n].” 그런 경우라면 부정적인 응답으로 스크립트를 진행할 수 있었을 것입니다.

  Linux에서 Qutebrowser 웹 브라우저를 설정하고 사용하는 방법

당신이 그것에 yes를 파이프하기 전에 당신은 스크립트, 명령 또는 프로그램에 익숙해야 합니다.

명령과 함께 yes 사용

초기에는 yes가 다른 Linux 명령과 함께 사용됩니다. 그 이후로 대부분의 다른 Linux 명령은 사람의 상호 작용 없이 고유한 방식으로 실행됩니다. 예를 달성하기 위해 더 이상 필요하지 않습니다.

Ubuntu 패키지 관리자 apt-get을 예로 들어 보겠습니다. 설치 중간에 “y”를 누르지 않고 응용 프로그램을 설치하려면 yes를 다음과 같이 사용합니다.

yes | sudo apt-get install fortune-mod

apt-get에서 -y(예라고 가정) 옵션을 사용하여 동일한 결과를 얻을 수 있습니다.

sudo apt-get -y install fortune-mod

apt-get이 평소와 같이 “계속하시겠습니까? [Y/n]” 의문. 그것은 단지 대답이 “예”일 것이라고 가정했습니다.

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

yes | yum install fortune-mod

dnf 패키지 관리자는 yum을 대체했으며 dnf에는 자체 -y(예라고 가정) 옵션이 있습니다.

dnf -y install fortune-mod

cp, fsck 및 rm에도 동일하게 적용됩니다. 이러한 명령에는 각각 고유한 -f(강제) 또는 -y(예라고 가정) 옵션이 있습니다.

그렇다면 예가 스크립트로만 작업하는 것으로 강등된 것 같습니까? 좀 빠지는. 늙은 개에는 아직 몇 가지 트릭이 더 있습니다.

몇 가지 추가 예 트릭

seq에 의해 생성된 일련의 숫자와 함께 yes를 사용하여 반복되는 동작의 루프를 제어할 수 있습니다.

이 한 줄짜리는 생성된 숫자를 터미널 창에 표시한 다음 1초 동안 절전 모드를 호출합니다.

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

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

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

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

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는 1240만 줄이 있다고 보고합니다.

명령 문자열에 head를 포함하여 파일 크기를 제한할 수 있습니다. 파일에 포함할 줄 수를 알려줍니다. -50은 head가 test.txt 파일까지 50줄만 허용한다는 것을 의미합니다.

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

test.txt 파일에 50줄이 있으면 프로세스가 중지됩니다. Ctrl+C를 사용할 필요가 없습니다. 저절로 저절로 멈춥니다.

wc는 파일에 정확히 50줄, 400단어, 2350바이트 크기가 있다고 보고합니다.

장기 실행 스크립트(및 기타 몇 가지 트릭)에 응답을 제공하는 데 여전히 유용하지만 yes 명령은 일상적인 명령 도구 키트의 일부가 아닙니다. 그러나 필요할 때 6줄의 황금 코드로 된 단순성 그 자체라는 것을 알게 될 것입니다.