명령줄에서 Y 앞에 "q" 자동 전달

명령줄에서 Y 앞에 "q" 자동 전달

Teamspeak 3 클라이언트를 다운로드하고 동시에 라이센스 계약 루틴에 동의하려고 합니다. 나는 스크립트 전에 "예"를 전달하는 방법을 알고 있지만 루틴에서는 클라이언트 압축 풀기를 시작하기 위해 키를 Q클릭하기 전에 "라이센스 계약"을 종료하라는 키를 눌러야 합니다.Y

#!/bin/bash
cd /home/test/ts3_client_files
wget http://dl.4players.de/ts/releases/3.0.19.4/TeamSpeak3-Client-linux_amd64-3.0.19.4.run
yes 'y' | ./TeamSpeak3-Client-linux_amd64-3.0.19.4.run

보시다시피 루틴에는 Q첫 번째 누르기가 필요합니다. Q을 누르면 Y자동으로 가 눌러지고 파일의 압축이 풀립니다.

+ cd /home/test/ts3_client_files
+ wget http://dl.4players.de/ts/releases/3.0.19.4/TeamSpeak3-Client-linux_amd64-3.0.19.4.run
--2016-09-05 08:33:26--  http://dl.4players.de/ts/releases/3.0.19.4/TeamSpeak3-Client-linux_amd64-3.0.19.4.run
Resolving dl.4players.de (dl.4players.de)... 85.25.26.25, 85.25.26.26, 85.25.26.27
Connecting to dl.4players.de (dl.4players.de)|85.25.26.25|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 37054436 (35M) [application/x-makeself]
Saving to: ‘TeamSpeak3-Client-linux_amd64-3.0.19.4.run’

100%[=============================>] 37,054,436  9.56MB/s   in 7.1s

2016-09-05 08:33:34 (4.96 MB/s) - ‘TeamSpeak3-Client-linux_amd64-3.0.19.4.run’ saved [37054436/37054436]

+ chmod 0700 TeamSpeak3-Client-linux_amd64-3.0.19.4.run
+ yes y
+ ./TeamSpeak3-Client-linux_amd64-3.0.19.4.run
Welcome to the TeamSpeak 3 Client for Linux on amd64 installer

In order to install this software you are required to accept the license
agreement, please press return to view the license.

You can scroll with the arrow keys and quit the viewer by pressing 'q'.
[RETURN]
Please type y to accept, n otherwise: Creating directory TeamSpeak3-Client-linux_amd64
Verifying archive integrity... All good.
Uncompressing TeamSpeak 3 Client for Linux on amd64  100%
+ exit

누군가 나에게 길을 안내해 주는데 그렇게 친절할까요?

답변1

q누르기는 호출기에 대한 종료 신호 역할을 하며 less스크립트에서 명시적으로 사용됩니다.

read FOO
echo "$licensetxt" | less
while true
do
  MS_Printf "Please type y to accept, n otherwise: "
  read yn
  if test x"$yn" = xn; then
    keep=n
eval $finish; exit 1
    break;
  elif test x"$yn" = xy; then
    break;
  fi
done

그리고man less말한다:

옵션은 환경 변수 "LESS"에서도 가져옵니다.

이 환경 변수를 다음과 같이 설정합니다.

printf '\ny\n' | LESS='+q' ./TeamSpeak3-Client-linux_amd64-3.0.19.4.run

다음에서 가져온 솔루션@steeldriver 님의 코멘트그리고에 따라 추가@JamesTheAwesomeDude의 법칙.

관련 정보