1
私はSTDIN(以下に記載)から文字列を読み込む方法を理解していますが、私の問題は文字が画面に表示されていることです。 Unix/Linuxのパスワードプロンプトのように文字列を非表示にするにはどうすればよいですか?UNIXスタイルのパスワードreadline
print "Password: "
pass = gets.as(String).strip
私はSTDIN(以下に記載)から文字列を読み込む方法を理解していますが、私の問題は文字が画面に表示されていることです。 Unix/Linuxのパスワードプロンプトのように文字列を非表示にするにはどうすればよいですか?UNIXスタイルのパスワードreadline
print "Password: "
pass = gets.as(String).strip
現在のところ標準ライブラリではこれができません。迅速な回避策はgetpass(3)
をバインドすることです:
lib LibC
fun getpass(prompt : Char*) : Char*
end
def getpass(prompt : String)
password = LibC.getpass(prompt)
raise Errno.new("getpass") unless password
String.new(password)
end
password = getpass("Enter password: ")
しかし、この関数はglibcので廃止され、termios(3)
インタフェースを使用する必要があることに注意してください。私は、このためにpull requestを開いたので、うまくいけば、クリスタルバージョン0.19.0以降では、あなたのことができるようになります:
print "Enter password: "
password = STDIN.noecho &.gets.try &.chomp
puts
そして、あなたはそれを右に使用できるよう0.19.0までは、IOを再開し、そのコードを追加することができます離れて:-) – asterite