シェルスクリプト - 質問を反響し、答えを読んでみませんか?

シェルスクリプト - 質問を反響し、答えを読んでみませんか?

ユーザーに入力したい日付を尋ねたいです。その後、応答を読み、入力した内容に従ってディレクトリに移動します。

ほとんど今日の日付になると思います。できますか?

echo "What date would you like?"
read date

その後、現在の日付をコマンドラインに出力してEnterキーを押すか、バックスペースを使用して先月に変更できます。例えば?

ベストアンサー1

シェルの使用zsh:

zmodload zsh/datetime
strftime -s date %F $EPOCHSECONDS
set -o emacs
vared -p 'What date would you like? ' date

または、次のようにプロンプ​​ト拡張を使用しますprint -P

print -rPv date '%D{%F}'
set -o emacs
vared -p 'What date would you like? ' date

または(速い拡張のための他の(そして古い)方法):

date=${(%):-%D{%F}}
set -o emacs
vared -p 'What date would you like? ' date

)

varedediable に組み込まれたコマンドですvar

シェルの使用fish:

fish_default_key_bindings
read -c (date +%F) -P 'What date would you like? ' date

シェルの使用ksh93:

date=${ printf '%(%F)T' now; }
set -o emacs
IFS= read -rv 'date?What date would you like? '

シェルの使用bash:

printf -v date '%(%F)T' -1
set -o emacs
IFS= read -rei "$date" -p 'What date would you like? ' date

すべては、ラインエディタに現在の日付を事前設定し、それを編集できるようにします(emacsスタイルのキーバインディングを使用し、スタイルを好む場合はemacs/defaultに置き換えます)。vivi

ここ%F(の略)は、国際形式で日付を提供する標準的な%Y-%m-%dガイドラインです。詳しくはマニュアルページをご覧ください。strftime()YYYY-MM-DDstrftime(3)

複数行変数を編集したい場合とアプローチだけがzsh正しく機能します。fish

おすすめ記事