質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

コマンドライン

コマンドライン(別名:Command Line Interface)は、ユーザに命令の入力を促す(プロンプト)文字列の表示を行い、すべての操作をキーボードを用いて文字列を打ち込む事でプログラムを走らせるユーザインターフェースです。

zsh

zshは、UNIX系OSのシェルの1つです。 cshやksn系のコマンドライン編集機能も実装されたシェルです。

Q&A

解決済

1回答

3438閲覧

ターミナルとかで yes/no を求められたときにy/nだけで次に進みたい

退会済みユーザー

退会済みユーザー

総合スコア0

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

コマンドライン

コマンドライン(別名:Command Line Interface)は、ユーザに命令の入力を促す(プロンプト)文字列の表示を行い、すべての操作をキーボードを用いて文字列を打ち込む事でプログラムを走らせるユーザインターフェースです。

zsh

zshは、UNIX系OSのシェルの1つです。 cshやksn系のコマンドライン編集機能も実装されたシェルです。

0グッド

0クリップ

投稿2019/11/02 08:59

やりたいこと

タイトルそのままです。
zsh、iterm2とVim8を使っています。

今は y<Enter> として次に進んでいるんですが、これをy/nを押した時点で(Enterを押さなくても)即座に次に進むようにする方法は何かありますでしょうか?

調べるとyesコマンドというのが出てきましたが、一つ一つ確認しながら次に進みたいので今回やりたいことには適していないのかなと思いました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ビルトインコマンドのreadが使えます。例えば read -k 1 KEY"?[yn]" としますと、$KEY変数に入力された1文字が入ります。

以下、macOS Mojave zsh 上での実行例です。

zsh

1% cat t1.sh 2 3read -k 1 KEY"?[yn]" 4echo "KEY=$KEY" 5if [ "$KEY" = "y" ]; then 6 echo "YES" 7else 8 echo "NO" 9fi 10 11% zsh t1.sh 12[yn]yKEY=y 13YES 14%

投稿2019/11/02 09:45

dodox86

総合スコア9183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/11/02 17:01

ありがとうございます。試してみました!read、覚えておきたいと思います。 ところで、 rm -i で削除するときや、vim-plugで:PlugCleanするとき、brewで何かインストールしたときなどに自動で求められるyes/noはこちらが入力受付方法を決めているわけではないと思うのですが、そういった場合に一文字突破しようとしたらどうすればいいのでしょうか? 「これをzshrcに書いておくことでターミナル上では常にyes/noを1文字で突破できる」みたいなのがあったら嬉しいのですが....
dodox86

2019/11/02 17:46 編集

ごめんなさい、ご質問の意味を取り違えていたようです。どんな場合でも'Y'を入力したらY[ENTER]と入力変換できるような方法をお求め、と言うことですね。(回答としては低評価相当ですね) そのような方法は思い当たりませんが、一時的にキーボード入力1文字を1文字+[ENTER]となるような状態にするIMEのようなコマンドやツールがあるかもしれません。(ほとんど無い気もしますが) 今しばらく別の回答を待っても良いかも。
dodox86

2019/11/02 17:57

> 「これをzshrcに書いておくことでターミナル上では常にyes/noを1文字で突破できる」みたいなのがあったら嬉しいのですが.... Yes/Noを求めるプログラムは、それぞれが勝手にプログラムの中でYes/Noの選択(YかNを求めたり、ただのENTER入力でもYとして進んだり)を処理しているので、「Yes/No選択の場面において、Yを入れたらY+[ENTER]」と自動的に入力してくれるような外部プログラムは、かなり難しい、ほぼ不可能なように思います。
退会済みユーザー

退会済みユーザー

2019/11/03 09:27 編集

やっぱり難しそうですね......。ご丁寧にすみません、ありがとうございます! できない可能性が高いということがわかっただけでも良かったです! 一応他のツールでできそうなものがないか調べてみます。 手動でやることになりそうですが ????
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問