マイブーム

Linux, perl,shellscript,DIYなどがマイブーム(不定期)

神のシェルスクリプト

2024-05-12 22:32:21 | 日記

自作したアスキーコード表

マニアックですが、近頃はシェルスクリプトにハマっています。面倒いですが、ターミナルで使えるコマンドがプログラムのパーツになるので、覚えればいろいろ重宝しそうです。

上記のようなアスキーコード表を出力するシェルスクリプトを作ってみましたが、プロは次のように1行のコマンドで出力するそうで驚きです。

$ printf "$(printf '\\%o' {0..127})" | od -t a

素人なので長くなりますが、下記のシェルスクリプトを試行錯誤しながら自作。

 アスキーコード表表示シェルスクリプト

3日後には、作った本人でも内容が分からなくなるので、コメント多めがオススメだそうです。

ちなみに、エディタは「神にもなれる」というemacsを使っています。エディタ以外の機能もついているので、趣味プログラマにはオススメ。双璧を成すviというエディタは「魔法使いにもなれる」という本業プログラマ用だそうです。(※個人的見解)



最新の画像もっと見る

5 コメント

コメント日が  古い順  |   新しい順
おや、こんなトコにEmacsユーザーが (cametan_42)
2024-05-13 00:19:40
僕はSpacemacsを使ってます。

Spacemacs:
https://www.spacemacs.org/
返信する
Unknown (subzero)
2024-05-13 09:09:10
Spacemacsという上級版があったんですね。良い情報ありがとうございます。🌌
返信する
上級版、と言うよりExtensionの固まりです(笑) (cametan_42)
2024-05-13 17:46:36
SpacemacsはEmacsを拡張する為のエクステンションですね。

本文にもあったけど、

> ちなみに、エディタは「神にもなれる」というemacsを使っています。エディタ以外の機能もついているので、趣味プログラマにはオススメ。双璧を成すviというエディタは「魔法使いにもなれる」という本業プログラマ用だそうです。

Spacemacsは元々、viからEmacsへと移ってきた人の為に「Emacsでvi系の操作系を提供する統合開発環境」と言うちとトチ狂った発想でデザインされたエクステンションです。
(もっとも古来からのEmacsキーバインドで使う事も出来ます)
Emacsは古くは.emacs、今だとinit.elかな?を編集して初期設定をして・・・とかなり「環境設定」が面倒くさかったんだけど、Spacemacsは.spacemacsが.emacs代わりとなり、また、設定編集は最小限に抑えて、ネット経由で必要な「パッケージ」をダウンロードしてインストールする、って形式になっています。
これの利点は、長らくEmacsって「実家の秘伝のタレ」的な.emacs編集技が基本となってて、と言う事は、自宅のEmacsと仕事先のEmacsで「環境を揃える」とか言うのがややこしかった辺りなんですよ。10年ちょっと前くらいだと?USBメモリに.emacs積んで・・・とか言う話なんかもありましたよねぇ。
一方、Spacemacsはほぼ「自分でカスタマイズする必要がない」ので、.spacemacs一つあればどこでもネット環境を利用すれば「同一環境」がどこでも簡単に「復元」出来る辺りです。何故なら自分でEmacs lispを弄くる必要が殆どないから、ですよね。
「自作Emacs Lispファイル」にこだわる人には向かないけど、そうじゃなければラクもラク、ホント気楽な環境です。
あと、Emacs新規参入者向けです。Newbieの「環境」をエクスパートのEmacs環境まで「育てる」のは結構洒落にならない時間がかかりますし。
ちと重いのが欠点ですけどね。
返信する
Unknown (subzero)
2024-05-13 19:05:20
@cametan_42 パッケージでカスタマイズ出来るなら楽そうですね。初心者ですがおいおい試してみたいです。
返信する
是非とも試してみてください。 (cametan_42)
2024-05-13 21:27:59
しかし、

> プロは次のように1行のコマンドで出力するそうで驚きです。

これってodってコマンドの強力さですよねぇ。
これでほぼ表示に関する目的を解決してる(笑)。

一番上でLispモンスターがいますが(笑)、ANSI Common Lispでさえ

CL-USER> (loop for n from 1 below 128 collect (code-char n))
(#\Soh #\Stx #\Etx #\Eot #\Enq #\Ack #\Bel #\Backspace #\Tab #\Newline #\Vt
#\Page #\Return #\So #\Si #\Dle #\Dc1 #\Dc2 #\Dc3 #\Dc4 #\Nak #\Syn #\Etb
#\Can #\Em #\Sub #\Esc #\Fs #\Gs #\Rs #\Us #\ #\! #" #\# #\$ #\% #\& #' #\(
#\) #\* #\+ #\, #\- #\. #\/ #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9 #\: #\;
#\< #\= #\> #\? #\@ #\A #\B #\C #\D #\E #\F #\G #\H #\I #\J #\K #\L #\M #\N
#\O #\P #\Q #\R #\S #\T #\U #\V #\W #\X #\Y #\Z #\[ #\ #\] #\^ #\_ #\` #\a
#\b #\c #\d #\e #\f #\g #\h #\i #\j #\k #\l #\m #\n #\o #\p #\q #\r #\s #\t
#\u #\v #\w #\x #\y #\z #\{ #\| #\} #\~ #\Rubout)

辺りが限界で、「整形処理」で言うとodコマンドにちと敵いませんね。
(オマケに、仕様上、ANSI Common LispはOSのコマンドを呼び出せない・・・実装上は「出来る」けど、移植性が落ちる)
返信する

コメントを投稿