ターミナルで自分のユーザー名を特殊文字に置き換えることは可能ですか?


0

私は見つけた この これは解決策に近いようですが、それだけではありません。

編集:JavaScriptを使用すると、私はただ実行することができます知っている test.replace(/\w/g, "*")どこで test 私のユーザー名ですが、私はターミナルの同等物を知りません


どんな特殊文字? 読みましたか PROMPT_COMMAND そして PROMPTING の中に BASH マニュアルページ?ターミナルタイプ bash それを右クリックして選択 Open man Page。それから⌘Fそしてそれについて検索して読んでください。あなたがいますか googled - bashコマンドプロンプトをカスタマイズする方法 ?これはいいことです。 方法:bashカスタムプロンプトを変更/設定する(PS1)
user3439894

@ user3439894これらを見たことがありますが、ユーザー名をに変更する方法がまだわかりません ***** (それらは私が話していた特殊文字です)。私は使うと思う PRMOPT_COMMAND 前にこれを行う $PS1 始まります。
NetOperator Wibby

あなたは本当にあなたがユーザ名を置き換えることを望んでいることを説明するために質問を明確にするべきです コマンドプロンプトで それが他の文脈ではなく、それはTerminalに現れます。
Gordon Davisson

@ GordonDavisson私がしたところ、私の質問に答えました。
NetOperator Wibby

@NetOperatorWibbyあなたはあなたが望む答えを得ました、しかしこのサイトのポイントの一部は同じ(または類似の)質問を持つ他の人々にあなたのものを見つけさせることですその答えそのため、質問はできるだけ明確で、明確で、検索語に優しいものにすることをお勧めします。
Gordon Davisson

回答:


1

隠されたユーザー名は、元のユーザー名と同じ長さにしますか?そのようです:

Alices-MacBook:〜*****

Bobs-MacBook:〜***

次のコードスニペットがその仕事をするはずです(そして、ボーナスとして、それはまたhostnameを隠します)。 〜/ .bash_profileに追加するか、PS1を設定した場所に追加します。 (私はテスト用に一時ファイル - test.sh - を作成し、そのファイルを入手しました - '。./test.sh'。何かが目立って間違っていたら、私はプロンプトを判読できなくしてしまいました。ターミナルに戻り、私の古いプロンプトに戻ります。

PROMPT_COMMAND=__prompt_command

__hide_string()
{
    echo "$1" | sed 's/./\*/g'
}

__prompt_command()
{
    PS1="$(__hide_string $HOSTNAME):\W $(__hide_string $USER)\$"
}

これは、ユーザ名のすべての文字を "*"に置き換えます(関数の再利用を示すために、ホスト名に対しても行います)。これは理想的とは言えないと思います。(ユーザー名が変更されていなくても)プロンプトが表示されるたびに関数が呼び出される(ユーザーに1回、ホスト名に1回)。 PS1が設定されている場合(つまりログイン時)にのみ__hide_string関数を呼び出すように修正します。

説明:定義した__prompt_command関数は、プロンプトが表示されるたびにPS1を設定します。 (これはおそらくやり過ぎですが、物事を「動的」に保ちます)。 PS1はおなじみのはずです。唯一の新しい点は、 '\ h'と '\ u'が__hide_string関数の呼び出しに置き換えられたことです(そして引数として$ HOSTNAMEと$ USERを使用します)。 __hide_stringは楽しい部分です。引数をsedにエコーするので、個々の文字はすべて '*'に置き換えられます。


ありがとうございました!私はzsh-shellを使用しているので、テーマに合わせて少しカスタマイズする必要がありましたが、最終結果は同じです。 :D
NetOperator Wibby

1

PS1 promptはで定義されています /etc/bashrc そしてデフォルトは通常 PS1='\h:\W \u\$ '。あなたは交換します \u*****。たとえば、単に追加することもできます。 export PS1='\h:\W *****\$ ' あなたに ~/.bash_profile システムファイル( /etc/bashrc )一人で。


うーん、そう動的にこれを行う方法はありませんか?長さを手動で設定せずに、アスタリスクの量を自分のユーザー名の文字数と一致させる必要があります。
NetOperator Wibby

1
ユーザー名と同じ長さのアスタリスクの文字列を得ることができます。 ${USER//?/*} (すなわちエクスポートPS1 = "\ h:\ W $ {USER //?/ *} \ $")。ユーザー名はセッション中には変更されないので、これはプロンプトごとに(PROMPT_COMMANDを使用して)1回ではなく、セッションごとに1回(〜/ .bash_profileおよび場合によっては〜/ .bashrcでも)実行するだけで十分です。
Gordon Davisson
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.