tkomatsu/minishell

プロンプトのオプションをたくさん作りたい

Closed this issue · 8 comments

#6 でもpromptを手入力している。
今後promptを > から変更できるようにpromptの文字列をマクロで定義するか、read関連の関数で引数を渡すようにする

@tkomatsu
quote,dquote対応について以下、認識に間違いがあればご指摘願います!

bashだとquote, dquoteの表示はされない、zshだとquote, dquoteの表示はされるという認識です。
→ ↑の場合、zshの仕様の方がイケてる。
→ 課題だと最低限のmandatory part機能のみbashの仕様に準拠するよう記載されているがそれ以外は作成者の自由。

よって上述の件については、zshの仕様に合わせて実装しよう!というかシンプルにそっちの方がいいよね!
という理解で良いでしょうか?

@kefujiwa
bashとzshの違いを把握できてなかったです。
bashに合わせてquoto対応は > だけでもいい気もする。
dquoto> , quoto> にしたらよりわかりやすい気はするからzshに合わせたいな。

プロンプトは完全にわけて考えた方がいいね!

了解です!
quote, dquote 対応については実装修正してプルリク済みなので内容に問題ないか確認お願いします!

実装〜マージ対応まで完了した為、本件クローズします。

PS1の対応はしたけど、PS2の対応がまだできてないので余裕があればやりたい。

bashでは環境変数:PS1にてプロンプトが定義されている。
ちなみにPS1は通常のプロンプトで、PS2はコマンド入力が完了していないときに表示される。PS3とPS4はプログラミングとデバッグ用。

https://qiita.com/Hiroki_lzh/items/d33184cf5ac9ec92c3a6

PS2が必要になるのはクォートのエスケープを実装する場合とかなので、そこまでいかないなら不要かもです。

  • \a an ASCII bell character (07)
  • \d the date in "Weekday Month Date" format (e.g., "Tue May 26")
  • \D{format} the format is passed to strftime(3) and the result is inserted into the prompt string; an empty format results in a locale-specific time representation. The braces are required
  • \e an ASCII escape character (033)
  • \h the hostname up to the first `.'
  • \H the hostname
  • \j the number of jobs currently managed by the shell
  • \l the basename of the shell's terminal device name
  • \n newline
  • \r carriage return
  • \s the name of the shell, the basename of $0 (the portion following the final slash)
  • \t the current time in 24-hour HH:MM:SS format
  • \T the current time in 12-hour HH:MM:SS format
  • \@ the current time in 12-hour am/pm format
  • \A the current time in 24-hour HH:MM format
  • \u the username of the current user
  • \v the version of bash (e.g., 2.00)
  • \V the release of bash, version + patch level (e.g., 2.00.0)
  • \w the current working directory, with $HOME abbreviated with a tilde
  • \W the basename of the current working directory, with $HOME abbreviated with a tilde
  • \! the history number of this command
  • \# the command number of this command
  • \$ if the effective UID is 0, a #, otherwise a $
  • \nnn the character corresponding to the octal number nnn
  • \\ a backslash
  • \[ begin a sequence of non-printing characters, which could be used to embed a terminal control sequence into the prompt
  • \] end a sequence of non-printing characters

課題で使用可能な関数でできるのは大体作った気がする & あっても使わんなあが残ってるのでissueは閉じます。