min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

シェル芸

IOCCCの「Most Portable Output」を試す

やってみた。 mametter.hatenablog.com すげぇ mame.github.io やり方メモ。 日本語解説サイト(素晴らしいなコレ)に行き ★ 動作コードをメモる。 ↑の「審査員・作者による説明」のリンクに行って hintの一つ上のフォルダ(↓だと2000)リンクに行く リンク…

CSVに色を付ける(ANSIエスケープシーケンス)その2

CSVの各列に色を付ける。前回の続き。 min117.hatenablog.com 今度は引数にCSVファイルを指定して開けば列数を自動で判定して各列に色をつけてくれるようにした。 こうやって開くと $ ./myCSVcolor2.sh ebooks.csv 列数をカウントして各列への色付け(ANSIエ…

CSVに色を付ける(ANSIエスケープシーケンス)

なんてこった。CSVの各列に色をつけられるらしい。ANSIエスケープシーケンスを使えば可能なようだ。 こうなる。 超わかりやすい。 ソースはこれ。 今後やること ・csvファイル名(ebooks.csv)はソース内に固定で書いちゃってるけど、引数で取れるように改良…

python3 カンマ区切りCSVファイル内の「金額列のカンマ区切り」のみ消し去る

例えばこんな財務データファイルがある。 irbank.net ファイル名はSheet1a.csvで保存。 売上高列に続く数字は "116,861,000,000円 "。 つまり、金額がカンマで区切られてしまっている。これだとCSVの各項目(フィールド)の区切りのカンマなのか金額のカンマ…

sed ヘッダ行だけをタテに表示する (Excelの行列を入れ替えて貼り付け)

こんな感じのカンマ区切りのcsvファイルがあったとして $ vim test.csv 1列目(ヘッダ)だけをタテに表示したい。 sedでできた。こうなる。 $ cat test.csv | head -n 1 | sed -e 's/,/\'$'\n/g' 's/,/\'$'\n/g' ではsとgの前後にシングルクオートが要るらし…

macOS Ctrl+h で入力中の文字の左1文字が消せる → Ctrl+k だと

macOSでは Ctrl+h で入力中の文字の左1文字が消せる。すごい。 今さら知った。超便利。 もちろんメモアプリでもCtrl+h で入力中の文字の左1文字が消せる。 この記事を書いているこの文字ですらCtrl+hで(deleteキーのように)消せる。 この記事を書いている…

fedora30 定期実行cronの実行ログをjournalctlで見る

毎日のラジオ録音がcronで正常に動いたかどうか確認したい。journalctlでcronのログを確認する。 できた。 $ journalctl --since today | grep -v MUSIC --since today とすれば今日のログが取れる。 grep できるみたい。 journalctl嫌い。UNIXの哲学に反す…

bash トランプの札を全て表示する

麻雀ができたのでトランプもやってみる。 orebibou.com Unicode 麻雀牌 - CyberLibrarian Unicode トランプ - CyberLibrarian [fedora PT3]$ echo -e \\U1F0A0 \\U1F0A{1..9} \\U1F0A{A..E} \\U1F0B{1..9} \\U1F0B{A..E} \\U1F0BF \\U1F0C{1..9} \\U1F0C{A..…

bash マージャンの牌を全て表示する

麻雀なんてやったことないから意味は全く分からないが、文字コードにはマージャン牌があるらしい。 orebibou.com Unicode 麻雀牌 - CyberLibrarian Unicode トランプ - CyberLibrarian [fedora PT3]$ echo -e \\U1F00{A..F} \\U1F01{0..9} \\U1F01{0..9} \\U…

bash 3桁の数字で各桁を足すと15になる数字だけを表示(ゾロ目は除く)

www.youtube.com [fedora PT3]$ seq 123 999 | grep -v 0 | awk -F '' '$1+$2+$3==15' | grep -P '(.).*\1' 177 339 366 393 447 474 555 636 663 717 744 771 933 [fedora PT3]$ grep -P だと perlの正規表現 min117.hatenablog.com xargsで1行に表示 [fedo…

bash sedでラベリングによりループ回して三角形を書く

シェル芸勉強会の動画。毎度すごい参考になる。 www.youtube.com シェルにこんな三角形を表示するワンライナーはどう書くか? こうやる。 $ echo ' ^^' | sed ':a p;s/ ^/^ /;b a' | head -n 5 | sed 1i. すごい。 $ echo ' ^^' | sed ':a p;s/ ^/^ /;b a' |…

大量のmp3ファイルに一括でアルバムアートを登録する(eyeD3)

iTunesでなくて、CDで買った曲をiPhoneの「ミュージック」アプリに入れて聴く。アルバムアートをつけるのが面倒(けど実は楽しい)と思っていたら、一括でアルバムアートを登録できるeyeD3なるコマンドがあった。 Macのbashで動くのが最高に良い。動きはこう…

bash 複数のソースファイルに日付をつけて一括バックアップ(拡張子は変えない)

pythonやらphpやらで色々書いたソースを一括でDropboxにバックアップしたい。 ファイル名に今日の日付をつけて拡張子は変えずにバックアップする。 こんな感じ。 ファイル名から、本体部分(body)と拡張子部分(ext)を取り出すところに工夫がいる。 できた…

国別プロキシリストを画像に落とす

国別プロキシリストなるサイトを見つけた。 各国のproxyが載っているようだ。 proxyのリンクに入ると各国にある串の一覧が見られる。 どうも怪しい広告が入っているが情報としては悪くない。こういうときは必ずシークレットモードでアクセスする。 うむ。 国…

macOS Mojave treeコマンドの文字化けは -N オプションで解決

macのtreeコマンドで日本語が文字化けしてしまう。 $ tree これでは何のファイルか分からない。リダイレクトでテキストに落とすこともできない。 こういうときは -Nオプションを付けるといいみたい。 $ tree -N 素晴らしい。 qno.oops.jp //

bash for文で変数に代入した値をゼロ埋め(ゼロパディング)する

素晴らしい記事発見。 genzouw.com 例えばfor文ではseq -w を使えばゼロ埋めした連続文字列を作れることは知っていた。 $ for i in `seq -w 1 10`; do echo "$i"; done しかしこれ(seqを使う方法)だと、for文に食わせる文字列が連続していない場合はゼロ埋…

Linux ジョークコマンド sl を動かす

前回記事でジョークコマンドに目覚めた。 min117.hatenablog.com 今回は sl コマンドの動きをみる。インストール自体は以前してある。 min117.hatenablog.com 動くとこうなる。 // おそらくだけど、リストコマンド ls を sl に打ち間違えたエンジニアが「じ…

RaspberryPi3 コマンドcmatrixをインストール → マトリックスの「あの画面」をコンソールに流す

面白い記事を発見。この人の記事ホントためになる。おそらくだけど有名な技術者だと思う。 orebibou.com 映画「マトリックス」のあの画面が再現できるコマンドがあるようだ。 www.youtube.com cmatrix というコマンドらしい(Character Matrix の略だろうか…

Outlookのデータ(.pstファイル)をテキストに変換する(readpstコマンド利用)

6年前の古いOutlookのデータ(.pst)が出てきた。 6年前、自分はどんなメールをしていたんだろう…と。 開いて中を見たいけどWindowsで開くと 現在のOutlookにインポートされちゃって、今リアルに使っているメールと混じってしまう心配がある。 なのでLinuxで…

bash 仮想通貨マイニングウイルスに現実に仕込まれたソースからシェルのノウハウを学ぶ

1月に入って、ランサムウェア「GandCrab」が添付されたメールが大量に出回っているらしい。 japan.zdnet.com 復元ツールは出ているみたいだけど japan.zdnet.com ランサムウェアは影響が大きいので感染はゴメンこうむりたい。 なんて情報をあさっていたら、…

bash byobuで開いた複数セッションの履歴を全て.bash_historyに保存し共有する

byobuで複数のセッションを切り替えて使っているときにセッション間の履歴を共有できないのに困っていた。 例えば セッション0 の履歴がこれで セッション1 の履歴がこれ。 Ctrl + p して入力履歴を呼び出すときにセッションごとに履歴が異なるのが困る。全…

Windows コマンドプロンプトからディスクの容量を確認する(cmdでdf)

Windowsでディスクの容量を確認する作業が地味に面倒くさい。画面の左から「コンピュータ」を選ぶ作業が面倒。 「選べばいいだけじゃん」と思うかもしれないが、1日に何度も繰り返すこの選ぶ作業をいかに減らせるかで作業効率が全然違ってくる。コマンド一発…

情報処理安全確保支援士(SC)平成30年度 秋期 午前Ⅱ 解答速報(2018年10月21日実施)

本日 2018年10月21日。受けてきた。 自分なりの解答速報。 ※ 午前Ⅰ は免除なので受けてない。 ※ 午前Ⅱ の解答速報。 <平成30年度 秋期 午前Ⅱ 解答速報> △が付いていないものはまず間違いなく正解(過去問にある or 調べた)。 △が付いているものは自信なし…

bash の行数カウント wc -l と同じことをWindowsのコマンドプロンプトでやるには → find /c /v "" とする

Linuxで行数をカウントするのはカンタン。例えば、拡張子sh(シェルスクリプト)がこれだけあったとする。 $ ls | grep sh その行数を数えるには wcコマンドにパイプすればいい。オプションは -l(たぶん line の頭文字)。 $ ls | grep sh | wc -l // これ…

bash echo-sdコマンドで >突然の死< ジェネレーター を試す

ツイッターでよく見かける「囲み文字」を作るコマンドがあるらしい。 // >突然の死<ジェネレーター - 拡張 POSIX シェルスクリプト Advent Calendar 2013 - ダメ出し Blog 暇なのか天才なのかよく分からないけど、すごいものを作るもんだ。 さっそくインス…

RaspberryPi3 neofetch コマンドでOSロゴとシステム情報を表示する

neofetch という面白いコマンドを知った。RaspberryPi3 で実行するとこうなる。 $ neofetch OSのロゴとシステム情報を表示するようだ。Debian や Ubuntuもある。 orebibou.com // RaspberryPi のインストール方法は他とは異なる。このサイトの「All other ve…

RaspberryPi3 テレビリモコンから omxplayer を操作する(mkfifo /tmp/cmd → omxp-with-cec.sh)

以前の記事で、omxplayer の操作(一時停止、再生)をbashコマンドからできることが分かった。FIFO経由でコマンドを流し込んでやれば動く。 min117.hatenablog.com さらに前回記事では、RaspberryPi3を(HDMIで)繋いだテレビのリモコンで押したキー信号(上…

RaspberryPi3 「テレビリモコンで押したキー信号」を捕捉する cec-client | grep --line-buffered -Po '(?<=key pressed: )\w+(?= \(\d, \d\)$)'

以前の記事で、cec-clientなるプログラムを使えばRaspberryPiからテレビを操作できることが分かった。 min117.hatenablog.com 今回も cec-client を使うが、やりたいのは(電源オンオフより)もっと複雑。 リモコンで押されたキーを捕捉したい。つまりこうな…

bash grepの前にバックスラッシュをつけて「\grep」と書く意味は?

例えば INSTALLED=$(dpkg -l \grep $1) のようにして変数INSTALLEDを設定する場合なぜgrepの前にバックスラッシュがあるのか? 答え) \grep /bin/grep または /usr/bin/grep にある システムにデフォルトのgrepを使うという意味。つまり、すべてのalias設定…

RaspberryPi3 Gitの脆弱性を見つけ出すプログラム(もりもり)を試す

Gitに脆弱性が発見されたようだ。CVE-2018-11235。 otameshi61.hatenablog.com こんなのを作ってくれてる人がいた。 Gitに脆弱性が発生したら「うんこもりもり」とコンソール表示してくれる。これは強烈。すぐに対処しなきゃ!となる。 twitter.com // さっ…