bashのファイル一覧表(markdown)をワンライナーで取得する


目的

  • 何かのアプリを開発しているとき、作成したコマンド群の一覧表を作りたいことないですか。それを実現するワンライナーです。さっくり作りたいのでコメントをサースから取り出すとか完璧は求めないです。あくまで表の骨格が作れればいいと思っております。

方法

  • Markdownは素晴らしい記法ですが表形式の手打ち作業は行が多くなると辛いですね。なので、bashawkでサクッと作ります。
  • llは可読性の高い時間表示に設定します。
$ alias ll
alias ll='ls -l --time-style=+%Y-%m-%d\ %H:%M:%S'

$ ll
合計 300
-rwxrwxr-x 1 hoge hoge 959 2020-04-24 08:51:09 add_comment.cgi
...
  • 考え方はawkprintf()で項目の区切りに|を入れるだけです。

作成したワンライナー

$ #基本形
$ ll *cgi |awk '{printf "|%02d|%s|%s|%s||\n",NR,$8,$3,$6}'
  • 番号、コマンド名、owner(hoge)と修正日と説明文を入れる空欄を|で区切ります。
  • 表のヘッダをつけたいならawk BEGIN{print ""}にコマンドを追加してもいいでしょう。
  • 追加する文字列は"|#|command名|owner|last update|content|\n| ---- | ---- | ---- | ---- | ---- |"でOKです。
$ #ヘッダ追加
$ ll *cgi |awk 'BEGIN{print "|#|command名|owner|last update|content|\n| ---- | ---- | ---- | ---- | ---- |"}{printf "|%02d|%s|%s|%s||\n",NR,$8,$3,$6}'

結果

  • 実行すると以下を得ます。
$ ll *cgi |awk 'BEGIN{print "|#|command名|owner|last update|content|\n| ---- | ---- | ---- | ---- | ---- |"}{printf "|%02d|%s|%s|%s||\n",NR,$8,$3,$6}'
|#|command名|owner|last update|content|
| ---- | ---- | ---- | ---- | ---- |
|01|add_comment.cgi|hoge|2020-04-24||
|02|change_passwd.cgi|hoge|2020-04-24||
|03|check_change_passwd.cgi|hoge|2020-04-24||
...
$ 
  • これをMarkdownファイルに保存するもよし、TyporaなどのMarkdownエディタにコピペするもよし。Typoraにコピペした画像を貼り付けます。

  • 誰かのお役に立てれば嬉しいです。