Ars は次のように尋ねます。シェルを共有して、騙された端末を見せてください。

Ars は次のように尋ねます。シェルを共有して、騙された端末を見せてください。


timer_stop 関数にはタイマーを人間が判読できる形式に変換する仕事もありますが、おそらく必要以上に面倒です。私はプログラマーではないので、リー氏が数時間サンプルを探した結果、これを決定しました。

私のような人は魚でやってみよう

これは Linux サーバーの 1 つに SSH 接続するときの bash 用ですが、MacOS 上で Fish を実行しています。そこで同じ結果を得るために別のfish関数を用意し、測定値を人間が読める形式に変換するための粗雑なトリックを完成させました。このコードを作成したのは私です。申し訳ありません。私の StackOverflow ソースの汚物を目撃してください。

function fish_prompt --description 'Write out the prompt'
    # Save the last status
    set -l last_status $status

    # Calculate the command duration if available
    set -l cmd_duration ""
    if set -q CMD_DURATION
        # Convert milliseconds to microseconds for more precise comparison
        set -l duration_us (math "$CMD_DURATION * 1000")

        # Calculate different time units
        set -l us (math "$duration_us % 1000")
        set -l ms (math "floor($duration_us / 1000) % 1000")
        set -l s (math "floor($duration_us / 1000000) % 60")
        set -l m (math "floor($duration_us / 60000000) % 60")
        set -l h (math "floor($duration_us / 3600000000)")

        # Format duration string
        if test $h -gt 0
            set cmd_duration (string join '' "(" $h "h" $m "m)")
        else if test $m -gt 0
            set cmd_duration (string join '' "(" $m "m" $s "s)")
        else if test $s -ge 10
            set -l fraction (math "floor($ms / 100)")
            set cmd_duration (string join '' "(" $s "." $fraction "s)")
        else if test $s -gt 0
            set cmd_duration (string join '' "(" $s "." (printf "%03d" $ms) "s)")
        else if test $ms -ge 100
            set cmd_duration (string join '' "(" $ms "ms)")
        else if test $ms -gt 0
            set -l fraction (math "floor($us / 100)")
            set cmd_duration (string join '' "(" $ms "." $fraction "ms)")
        else
            set cmd_duration (string join '' "(" $us "us)")
        end
    end

    # Define unicode symbols for status
    set -l checkmark "✓"
    set -l cross "✗"

    # Colors
    set -l normal (set_color normal)
    set -l dark_gray (set_color 555555)
    set -l blue (set_color -o blue)
    set -l red (set_color red)
    set -l green (set_color green)
    set -l purple (set_color -o purple)

    # First line
    echo # New line
    echo -n -s $dark_gray "["(date +%T)"] $last_status " # Time in brackets and exit status

    # Status indicator with exit status
    if test $last_status -eq 0
        echo -n -s $green $checkmark
    else
        echo -n -s $red $cross
    end

    # Actually echo the duration
    echo -n -s $dark_gray " $cmd_duration"

    # Do the rest of the prompt
    echo
    set -l host_color $purple
    echo -n -s $host_color $USER "@" (prompt_hostname) $normal ":" $blue (prompt_pwd) $normal " \$ "
end

色彩のタッチ

ANSI BBS グラフィックに没頭して形成期を過ごしたおかげで、ボタンのない雑然とした平均的な管理者よりも、端末上のカラフルなテキストの方が少し好きになったかもしれません。構文の強調表示や色は一般的に理解を妨げ、流し読みを促すと感じている人もいると思いますが、何と言えるでしょうか?私は彼らを愛していますし、信頼しています。時間がかかりすぎるかもしれないが、それはそれでいい。私の冷たい死んだ手から私の色付きの貝殻の道具をこじ開けることができます。

このために、私は GRC (Generic Colorizer の略) と呼ばれる小さなプログラムを利用して、他のツールにハイライトと色を追加します。これは広く利用可能であり、追加の構成なしで動作します。

Ars は次のように尋ねます。シェルを共有して、騙された端末を見せてください。

多少の色なら問題なし!

リー・ハッチンソン

ping で ip a を使用する前後の画像

少しエイリアシングがあります(私が維持しています) .bash_aliases 善良な市民のように)、カラフルな出力をいくつかの一般的なコマンドのデフォルトにします。

    alias ls="ls --color=auto"
    alias ll="ls -AlFh --group-directories-first"
    alias df="grc df -h"
    alias du='grc du -h'
    alias free="grc free -h"
    alias ping='grc ping'
    alias traceroute="grc traceroute"
    alias ip='grc ip'

私は自分の番号を人間が判読できるようにすることの大ファンでもあります。 -h したがって、スイッチは自由に適用されます。

(次のようなラッパー コマンドに注意してください。 ip GRC では、出力を他のものにパイプしていると、時々奇妙な動作をすることがあります。気をつけてください!それはあなたのコンピュータです、取り去ってください!)

端末自体

鋭い目の読者は、スクリーンショットを見ると、もっと良いオプションがあるにもかかわらず、ターミナル プログラムに MacOS の Terminal.app を使用していることに気づくでしょう。私の言い訳は、私は Terminal.app に慣れていて、何も戸惑うことはなかったということだと思います。私はよくある候補をテストしました。Ghostty、Alacritty、素晴らしい tmux ウィンドウ統合を備えた強力な iTerm2、さらには Warp のようなターミナル エクスペリエンスの派手な新しい再解釈です。

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *