いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

catコマンドでタブを可視化 (-T, -t)

関連記事

GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ

概要

以下、自分用のメモです。使いたいときによく忘れているので、ここにメモメモ。。。

たまに、ターミナル上でタブ文字を可視化したいときがあります。そんなときは cat コマンドで表示出来たりします。

サンプルコード

以下のようなGoのコードがあるとします。中身に意味はありません。

package main

import "log"

func main() {
    log.SetFlags(log.Lmicroseconds)

    if err := run(); err != nil {
        log.Fatal(err)
    }
}

func run() error {
    for v := range gen() {
        log.Println(v)
    }

    return nil
}

func gen() <-chan int {
    ch := make(chan int)

    go func() {
        defer close(ch)
        for i := range 10 {
            ch <- i
        }
    }()

    return ch
}

普通にcatコマンドで表示

$ cat main.go
package main

import "log"

func main() {
    log.SetFlags(log.Lmicroseconds)

    if err := run(); err != nil {
        log.Fatal(err)
    }
}

func run() error {
    for v := range gen() {
        log.Println(v)
    }

    return nil
}

func gen() <-chan int {
    ch := make(chan int)

    go func() {
        defer close(ch)
        for i := range 10 {
            ch <- i
        }
    }()

    return ch
}

タブを可視化 (-T or -t)

package main

import "log"

func main() {
^Ilog.SetFlags(log.Lmicroseconds)

^Iif err := run(); err != nil {
^I^Ilog.Fatal(err)
^I}
}

func run() error {
^Ifor v := range gen() {
^I^Ilog.Println(v)
^I}

^Ireturn nil
}

func gen() <-chan int {
^Ich := make(chan int)

^Igo func() {
^I^Idefer close(ch)
^I^Ifor i := range 10 {
^I^I^Ich <- i
^I^I}
^I}()

^Ireturn ch
}

タブが ^I で表示されていますね。

タブと行末を可視化 (-E or -A)

$ cat -E -T main.go
package main$
$
import "log"$
$
func main() {$
^Ilog.SetFlags(log.Lmicroseconds)$
$
^Iif err := run(); err != nil {$
^I^Ilog.Fatal(err)$
^I}$
}$
$
func run() error {$
^Ifor v := range gen() {$
^I^Ilog.Println(v)$
^I}$
$
^Ireturn nil$
}$
$
func gen() <-chan int {$
^Ich := make(chan int)$
$
^Igo func() {$
^I^Idefer close(ch)$
^I^Ifor i := range 10 {$
^I^I^Ich <- i$
^I^I}$
^I}()$
$
^Ireturn ch$
}$

タブが ^I で、行末が $ で表示されていますね。

参考情報


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。