programing

Linux는 DOS 일시 중지에 상당합니까?

sourcejob 2023. 4. 14. 21:38
반응형

Linux는 DOS 일시 중지에 상당합니까?

사용자가 키를 누를 때까지 실행을 일시 중지하는 Bash 셸 스크립트가 있습니다.DOS 에서는, 이것을 간단하게 실행할 수 있습니다.pause명령어를 입력합니다.스크립트에 Linux와 동등한 것을 사용할 수 있습니까?

read다음 작업을 수행합니다.

user@host:~$ read -n1 -r -p "Press any key to continue..." key
[...]
user@host:~$ 

-n1는 단일 문자만을 대기하도록 지정합니다.-rraw 모드가 됩니다.필요하죠.그렇지 않으면 백슬래시 등의 키를 누르면 다음 키를 누를 때까지 등록되지 않기 때문입니다.-p는 프롬프트를 지정합니다.스페이스가 포함되어 있는 경우는 따옴표로 묶어야 합니다.key인수는 어떤 키를 눌렀는지 알고 싶을 때만 필요합니다.이 경우 를 통해 액세스 할 수 있습니다.$key.

Bash 를 사용하고 있는 경우는, 다음의 방법으로 타임 아웃을 지정할 수도 있습니다.-t키를 누르지 않으면 읽기 오류가 반환됩니다.예를 들어 다음과 같습니다.

read -t5 -n1 -r -p 'Press any key in the next five seconds...' key
if [ "$?" -eq "0" ]; then
    echo 'A key was pressed.'
else
    echo 'No key was pressed.'
fi

매우 짧은 방법을 많이 사용하고 있으며, @theunamedguy 및 @Jim 솔루션과 비슷하지만 타임아웃과 사일런트 모드가 추가되어 있습니다.

특히 마지막 케이스가 마음에 들어 사용자가 를 누를 때까지 루프에서 실행되는 많은 스크립트에서 사용합니다.

명령어

  • 솔루션 입력

    read -rsp $'Press enter to continue...\n'
    
  • 이스케이프 솔루션 (-d $'\e' 포함)

    read -rsp $'Press escape to continue...\n' -d $'\e'
    
  • 모든 주요 솔루션 (-n 1)

    read -rsp $'Press any key to continue...\n' -n 1 key
    # echo $key
    
  • 미리 선택한 질문 (-ei $'Y' 포함)

    read -rp $'Are you sure (Y/n) : ' -ei $'Y' key;
    # echo $key
    
  • 타임아웃 솔루션 (-t 5 포함)

    read -rsp $'Press any key or wait 5 seconds to continue...\n' -n 1 -t 5;
    
  • sleep 확장 별칭

    read -rst 0.5; timeout=$?
    # echo $timeout
    

설명.

-r은 raw 모드를 지정합니다.이 모드에서는 "\" 또는 "^"과 같은 문자를 조합할 수 없습니다.

-s는 사일런트모드를 지정합니다.키보드 출력이 필요 없기 때문입니다.

-p $'discape'는 프롬프트를 지정합니다.이 프롬프트는 공백과 이스케이프 문자를 사용하려면 $'에서 "" 사이여야 합니다.이스케이프된 문자를 사용하려면 달러 기호가 있는 작은 따옴표를 사용해야 합니다. 그렇지 않으면 단순 따옴표를 사용할 수 있습니다.

-d $'\e'는 딜리미터 문자로 escape를 지정하기 때문에 현재 엔트리의 마지막 문자로서 임의의 문자를 입력할 수 있지만 사용자가 입력할 수 있는 문자를 입력할 수 있도록 주의하십시오.

-n 1은 단일 문자만 필요함을 지정합니다.

-e는 readline 모드를 지정합니다.

-i $'Y'는 읽기 라인 모드에서 Y를 초기 텍스트로 지정합니다.

-t 5는 타임아웃을 5초로 지정합니다.

key serve는 입력이 필요한 경우, -n1의 경우 누른 키를 알아야 하는 경우입니다.

$?? 마지막 프로그램의 종료 코드를 알 수 있습니다.읽을 경우 타임아웃 시 142개, 입력은 0개).모든 명령어가 $를 다시 쓰기 때문에 somes 명령어 후에 $를 테스트해야 하는 경우 가능한 한 빨리 변수에 $?를 넣으십시오.

read매개 변수가 없는 경우 Enter 키를 누른 경우에만 계속됩니다.pause아무 키나 누르면 명령이 계속됩니다.read –n1이 행동을 원한다면요.

이것은 여러 종류의 Linux에서 작동했지만, 다른 솔루션에서는 작동하지 않았습니다(여기서 가장 인기 있는 솔루션도 포함).그게 더 읽기 쉬운 것 같아요.

echo Press enter to continue; read dummy;

.read.

read -n1을 사용하다동일한 작업을 수행하는 휴대용 방법은 다음과 같습니다.

(   trap "stty $(stty -g;stty -icanon)" EXIT
    LC_ALL=C dd bs=1 count=1 >/dev/null 2>&1
)   </dev/tty

★★★★★★★★★★★★★★★★를 사용하는 것 외에,read 됩니다ENTER계속 프롬프트를 표시하려면 다음 작업을 수행합니다.

sed -n q </dev/tty

또는 일시 키를 할 키를 누릅니다.read알아서 할 수 있을 거야

do_stuff
read
do_more_stuff

최종 사용자에게 편리한 것은 아니지만, 사용자가 직접 빠른 스크립트를 작성하고 백그라운드에서 수동으로 작업을 수행하기 위해 스크립트를 일시 중지해야 하는 경우에는 충분할 수 있습니다.

은 두 가지 할 수 있습니다.bash ★★★★★★★★★★★★★★★★★」zsh입출력하다

# Prompt for a keypress to continue. Customise prompt with $*
function pause {
  >/dev/tty printf '%s' "${*:-Press any key to continue... }"
  [[ $ZSH_VERSION ]] && read -krs  # Use -u0 to read from STDIN
  [[ $BASH_VERSION ]] && </dev/tty read -rsn1
  printf '\n'
}
export_function pause

의 기 your에 ..{ba,z}shrc★★★★★★★★★★★★★★★★!

이것으로 수정되므로 ENTER 이외의 키를 눌러도 새로운 행으로 이동합니다.

read -n1 -r -s -p "Press any key to continue..." ; echo

윈도우 일시정지보다 낫다.왜냐하면 텍스트를 변경하여 더 유용하게 만들 수 있기 때문이다.

read -n1 -r -s -p "Press any key to continue... (cant find the ANY key? press ENTER) " ; echo

, ★★★read두에 가장 몇 가지 수정 . - -고두두 - - - - - - - - - - - - - - - - - - - - 。cron터미널에 있습니다.

예:

time rsync (options)
read -n 120 -p "Press 'Enter' to continue..." ; echo " "

에 -n120은 -n120을 2분으로 .cron

동안 동안 2분 동안 동안 2분 동안 계속됩니다.rsync명령어를 실행해야 합니다.

음음 then then then then then then then.echo때리다

그렇지 않으면 "continue.." 바로 뒤에 같은 줄에 표시됩니다." 를 터미널에서 누릅니다.

내가 작은 프로그램을 만들어서pause명령어를 사용합니다.GitHub repo에 코드를 올렸습니다.

인스톨 하려면 ,

git clone https://github.com/savvysiddharth/pause-command.git
cd pause-command
sudo make install

을 설치하면, 이제 하실 수 .pause이치노

또, 다음과 같은 옵션의 커스텀 스트링도 서포트하고 있습니다.read.

예:

pause "Pausing execution, Human intervention required..."

해서 C 때 C/C++로 하다와 같은 을 사용합니다.system("pause");【리눅스】【리눅스】

이것을 시험해 보세요.

function pause(){
   read -p "$*"
}

언급URL : https://stackoverflow.com/questions/92802/what-is-the-linux-equivalent-to-dos-pause

반응형