それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

linux

ファイルを指定バイトコピーする(テスト用に壊れたファイルを作る)

zip が正しく転送できてない実験をしてみたかった zip ファイルをアップロードしたり、バックアップしたりしてて、「ファイルが壊れた」のを検出したりしたかった。状況を再現したいなと思ってもそう簡単に壊れたりはしないので、壊れたファイルを作る必要が…

grepコマンドでファイル名だけを取り出す。

grep してマッチした行ではなく、ファイル名が欲しい 検索したキーワードを含むファイル名を取り出して、それを全部開いて処理したいときに grep -l -l をつけるとファイル名だけを取り出すことが出来る。 覚え方 l なので line ですね 関連資料:その他のgr…

unar/lsar コマンドで指定したファイルを取り出す。ほとんどのアーカイブファイルを扱える。

unar / lsar コマンドが便利 unar コマンドで展開すると文字化けがあまり発生しない。 unar とペアになってる lsar コマンドも文字化けを余り起こさずにファイルを取り出せる。 また展開できる 指定したファイルだけを取り出すには lsar で一覧したファイル…

pv pipe viewer をcaptureする

プロセスの進捗を見る pv で pv はプロセスパイプを通過したバイト数をみて、進捗を見ることが出来るのですが。 pv の出力をスクリプトから取りたい pv の output は stderr に書かれるのだけれど、それをキャプチャリングしたいなと思ったら。。。結構面倒…

WindowsのSJISのファイルがUTF-8で化けるので一気に置換するスクリプト

windowsから来たZipファイルを展開したら 文字コードがグチャグチャーって化けるのでした。辛い。 文字コードを修正するスクリプトをぱぱっと書いた conv_file_name.sh -v -n path/to/*.pdf conv_file_name.sh -v path/to/*.pdf nkf があれば何とか出来るん…

作成済みのm5sumとぱぱっと比較する方法(改竄検出の楽な方法

md5sum の -c オプション -c 生成済みの md5sum の一覧とファイルを比較して改ざんを検出する。 事前にファイルのmd5sum の値の一覧を作成しておき、いまのファイルがそのファイルのハッシュ値と一致するかを調べておく。すると簡単に改竄検出や不正検出を見…

nkfの使い方:base64のエンコードとデコード(ただし文字列だけ

nkf だけで base64 のエンコードとデコードが出来る nkf には -mB と -MB のペアがあるのでBase64のエンコードとデコードが出来る。 nkf で base64 エンコード echo -n こんにちは | nkf -MB nkf で base64 デコード echo 44GT44KT44Gr44Gh44Gv| nkf -mBW こ…

nkfでURLエンコードされた文字を扱える(エンコード・デコード・文字コード)

nkf だけで、URIエンコードされた文字を扱える とある文字列を処理していて、CP932(Shift_JIS ) がそのまま、URLエンコードされた文字に出会って、ちょっと面倒な自体になった 。 node の decodeURI/decodeURIComponent だとUTF-8を期待されて動かない。ruby…

lsでファイルを拡張子ごとに並べる

ファイルを種類順に並べたい。 デスクトップの整理でよく見る「ファイルを種類別」に整理と同じ、ファイルを種類順にまとめて結果に表示を ls コマンドでもできることがわかった。 -X で拡張子でまとめて表示 ls -lX こうすると、ext 順にまとめて表示してく…

lsで日付ファイル名の逆順に並べる並べ方

ls で日付・ファイル名・ファイルサイズなどを昇順・降順に並べたい ファイルを並べて結果をだすときに、新しいものから処理したいとか、古いものから処理したいことがあるよね。 ls でファイルの日付順に並べる 新しいものが先になるように並べるには ls -l…

curlコマンドで速度制限(スピードリミッタ)をつける

curl でファイルを次々と取得してて curl でパッケージを取得したり、転送したりしてて他の作業に支障がでることがあります。 curl 万能なので使いすぎます。 speed limit をつけることで curl を速度制限出来ます。 速度上限をつけることで、穏やかに、急が…

tailf でログをgrep して確認する確実な方法

tailf の結果をgrep してxargs したい場合 grep するだけなら問題ない。これは期待どおりに動く tail -f a.log | grep name grep が pipeの間に入ると厄介だ tail -f a.log | grep name | grep type この場合は正しく動作しない、中間に挟まったgrepがIOをバ…

script コマンドで作業内容をリモートで伝える

script コマンドで作業内容をリモートで伝える screen コマンドの共有でも出来るけどね。script コマンドだけでも出来るよね。 screen の共有とかと同じです。 見せたい側で script -f -a sample.log みたい側で tail -F sample.log としておけばずっと見て…

MySQL/MariaDBのSQLとテーブル名を補完する mycli が便利

mycli が便利でやばい SELECT / INSERT などを補完してくれて、テーブル名やカラム名を補完してくれて、SQLを色付けしてくれる。 インストール python で出来てるのでpip でインストール pip install mycli pip がないときは pyenv を pyenv から準備すれば…

tailコマンドで複数のログをまとめて表示する

同時に2つのログを見たい tail -f を2つ起動して、ターミナル並べておくのも邪魔くさいと思ってました。 tail -f /path/to/log2 /path/to/log1 こうすれば、複数のログファイルを同時に tail でウオッチできる。 いままでは watch と cat を組合せてたので…

tail コマンドがファイルの削除、作成時でも動くようにする

tail -f コマンドを使うとファイルの削除で動作が止まる。 tail -f /path/to/log で ログファイルを見ているときに、別のプロセスでファイルが消えたら ファイルが消えたら、動作が止まる。 mv /path/to/log /dev/null rm /path/to/log echo hello > /path/t…

tail -f コマンドがログ監視てるプログラムが死んだら一緒に自動的に終了する

pid を指定すると tail コマンドが自動的に終了する tail -f --pid=$PID /path/to/log PIDを指定したときに ローカルホスト開発ツールのログ監視してるときとかに便利ですね。 man tail --pid=PID with -f, terminate after process ID, PID dies 参考資料 h…

tailf と grep を組合せて Slackにログを通知する。パイプでワンライナー

ログファイルを監視して、slack などに通知したい。 ログを監視して Slackに投げる方法で、かんたんなのを考えた。 ログファイルに何か変更があって、それが特定のときに メールや slack のチャンネルに通知を出したら便利だと思う。 あれこれログ監視や通知…

素因数分解をしてくれるコマンド factor

prime numbers ( 素数 ) に分解してくれるコマンドがあった。 takuya@Desktop$ factor 123456 123456: 2 2 2 2 2 2 3 643 factor とは 要因の意味で数学的に因数で、factor コマンドは 素数を使って因数を表現してくれるコマンド 何に使うのか。 特に何に使…

シェルスクリプトの改行コードを修正する

改行コードが原因でエラーになる。 改行コードを \r\n が原因でエラーになった。 takuya@:~$ bash -n apt apt: 行 2: 予期しないトークン `$'\r'' 周辺に構文エラーがあります 'pt: 行 2: `_apt() 一瞬何のエラーかわからなかったけどよく見るとエラーに改行…

正規表現の名前付きマッチで、scanf から卒業する

正規表現の名前付きなマッチを覚えました。 >> ret = '直通特急 阪神梅田行 18:29 発 3番のりば'. match(/(?<type>.+) (?<dest>.+)行 (?<dep_time>.+)発 /) => #<MatchData "直通特急 阪神梅田行 18:29 発 " type:"直通特急" dest:"阪神梅田" dep_time:"18:29 "> >> puts ret[:type] => "直通特急" 名前付きマッチの後方参照はとても楽しい!!便利!!これで scanf みたいなレガシ</matchdata></dep_time></dest></type>…

jq コマンドで json を minify する

jq を使って minify することが出来る cat composer.json | jq -c . または jq -c . < sample.json 任意のJSONをJSONのフィルタを変えて小さくすることが出来る。 サンプル composer.json を小さくする { "repositories" : [ { "type" :"git", "url" : "http…

指定したファイルの日付を取得してフォーマットするdateコマンド

date コマンドでファイルの日付を取得する。 指定したファイルの日付を取得するには $ date +'%F %T' -r /etc/aliases 2015-08-02 13:35:20 最終更新日が取得できる。 -r, --reference=FILE display the last modification time of FILE もちろん stat でも…

dateコマンドでiso/rfc日付時刻タイムゾーンをぱぱっとフォーマットして作る

date コマンド便利だけど、フォーマット指定がめんどくさい takuya@:~$ date --date "2017-03-22 + 90days" +"%Y-%m-%d %H:%M:%S" 2017-06-20 00:00:00 ああ、めんどくさいよ%Y-%m-%d 、記号が多くてめんどくさい。 よくつかう日付は、オプションが用意され…

sendmail でコマンドからメールを送信する。

メール通知のテストに使う。 postfix や exim4 のメールサーバーの設定をしていて、テスト・メールを送信したいときに、手作業でsendmail コマンドを送るのは、ちょっと面倒なのと、どのメールが未到達で、どのメールが到達したか区別するのが大変なのでスク…

sudoersの設定を分割する /etc/sudoers.d を使おう

/etc/sudoers.d で分割できる。 /etc/sudoers.d を使うと、必要なものを覚えやすいファイル名で書いておいてバージョン管理することが出来る。 編集方法 編集方法がめんどくさい。分割して管理できるが、各ファイルを編集するのにvisudoを使う必要があり、こ…

POSIX の メッセージ・キューを作成する(C言語)

POSIXのメッセージ・キューをC言語で扱う コンパイルには gcc -lrt を使う。 まずは送信するところから。 q_push.c #include <mqueue.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> int main(){ int cnt; int ret; char *str; void *pt; mqd_t q; q</string.h></unistd.h></stdlib.h></stdio.h></fcntl.h></sys/stat.h></mqueue.h>…

POSIX の メッセージ・キューを確認する。コマンドで。

POSIX message queue を確認する。 Linux なら /dev に出現する。 takuya@:~$ ls /dev/mqueue/ キューがあるとき /sample という名前でキューを作ったのでキューを確認することが出来る。 takuya@:mq$ ls /dev/mqueue/ sample キューの状態をサクッと確認す…

シェルで指定文字に文字列を分割して結合する。

文字列をシェルで、指定文字数に分割して結合するには 選択肢になるコマンドは、分割・結合でそれぞれ次の通り 分割 flod grep 結合 paste tr などが使えることがわかった。 分割の例 fold -w2 grep -E -o '.{2}' 文字列を指定文字に分割する。fold コマンド…

Debian/ubuntu のapt自動アップデートのUnattendedUpgradesを設定する

Debian の apt 更新がめんどくさいのでなんとかする。 昔は cron-apt でやってたけど、今時はどうするのかなーと思って調べてたらUnattendedUpgradesがあったのでコレを設定することに。 Debian Wikiに従ってインストール sudo apt install unattended-upgra…

qpdfでPDFにパスワードをつける。

qpdf でパスワードをつける。 qpdf があればコピーを不可、編集不可、閲覧不可などのパスワードをつけることが出来る 使うオプション --encrypt qpdf --encrypt パスワード1 パスワード2 キー フラグ -- in.pdf out.pdf 最後にいれる -- はオプションフラグ…

GNU mc(:midnight commander)でファイラ使うと楽しい。

ようやく名前がわかったので使ってみた。 昔、教授が使ってて、なんやこれ!楽しそうと思ったファイラ。「これDOSですか?」「いいやちがうよ、古い頃から使ってるMS-DOSみたいなもんだな」「なんで?Finderあるじゃないですか?」「コレがいいんだよコマン…

curl で get/post/put/delete などメソッドを指定する

curl でHTTPのMethod指定する curl -X GET curl -X DELETE curl -X POST --data 'name=value&id=1' curl -X PUT --data 'name=value&id=1' ファイルを送信する場合は curl -X POST -F name=@path/to/name curl -X PUT -F name=@path/to/name JSON を送信する…

curl でAPIアクセスのヘッダ毎回指定を設定ファイルを使って省略する

API にアクセスするときHEADER多すぎ URLとPOST/GETのデータ以外に指定する項目が多すぎて嫌になる。 curl "https://api.example.com/api/v4/settings" \ -H "X-Auth-Email: takuya@example.com" \ -H "X-Auth-Key: gfhfdertgfdsertgf" \ -H "X-Auth-SID: xx…

文字列の長さ順にソートする(awk/sortコマンド組み合わせ)

文字列の長さ順にソートすると美しい。 なんでなんだろうね。アルファベット順よりも文字列長さ順でソートすると、出力がきれいに見えるんだよね。 awk/sort で文字列の長さ順にソートする。 command | awk '{print length() ,$0}' | sort -nr 例えばPATHを…

bcacheでSSDをキャッシュに使ってHDDアクセスを早くしてSSHD的なことをやる

ssd を書込み読み込みキャッシュに使いたい HDDのアクセスを早くしたい。Writeおせーんだわ。 あれこれ、実装があるけど lvm cache / dm-cache より、bcacheの方が圧倒的に簡単で速かった。 もちろん、こんなことをしなくても、よく使うデータはHDDからメモ…

コマンド(lzop)の圧縮展開の進捗どうですかー?

lzop 速くて便利だけど。どこまで終わってるの lzop って圧縮伸張がそこそこ速くて便利だけど、それでも数十GBやると結構時間がかかるんですよね。 その進捗見たいです。 progress コマンドでは出来ないことがわかった。 progress コマンドも候補に入るらし…

S.M.A.R.Tの値をsmartd で監視してメールを送る

HDD のsmart 状態を監視する HDD のSMARTで値を監視して、ハードウェアの状態が変化したり、故障が近づいたらメール通知しておくことにして、少し安心したい。 準備 sudo apt install smartmontools smartd の有効化 smartmontoolsを入れたら smartd がつい…

ぱぱっとIP/ドメインを調べるhostコマンド

host コマンドでぱぱっと調べる host コマンドなるものが有ります。dig みたいだけどdig ほどちゃんとDNSを見れるわけでもないですが、現在使用中のPCから見たドメインとIPの対応はきっちりわかります。 host コマンドの使用例1:Debian GNU/Linux takuya@:…

LinxuでHDDの状態を調べる。コマンド

コマンドでSMARTの状態を調べる HDD の状態を調べるには、S.M.A.R.Tを調べる必要があって、それには smarttools のコマンド一式を使う必要が有ることがわかった。 HDDが異常化か正常化知りたいだけなんだ! そんなせっかちな人には、此のコマンド PASSED と…

Deiban/Exim4通知メールをgmailで送出する。

メールの設定はめんどくさい SMTPリレーとかSMTP Outbound port Blocking 25 ( OBP 25 ) だとかさ、めんどくさいんですよね。理解できない人に、「○○が必要で」などと説明するのもめんどくさい。 Gmail 経由で送信する。 というわけで、一番手っ取り早くて、…

画像の比較をしてズレがないか調べる

image magick で画像の比較をすることが出来る。 画像の比較をするにはいろいろな方法がある。 目で見てわかりやすい→WEBや校正用 機械的に見てわかりやすい→ダイアログなどプログラムのテスト 画像におおきな影が出る→動体検出 等と大きく分けて使い分ける…

compare コマンドで画像のズレを見つけろ!

ImageMagickにはcompareコマンドがある。 compare コマンドを使うと簡単に画像を比較することが出来る。 これはWebkit2png で取得した画像を使うとレイアウト崩れを見つけられるので嬉しいと思う 画像比較の例 compare -highlight-color red 1.png 2.png out…

/etc/passwd を編集しても反映しなかった。→ usermod を使う

/etc/passwd を手で編集した。 なぜだかわからない。反映しない。手作業で編集は駄目だと思ったけどshellや home dir や gid をマトメて編集できるから、もう直接手で触ればいいやとおもったけど反映しない。 home_dir を変更しても反映しない。。。再起動が…

ネットワークのIPアドレスを一覧表示する(sort でIPアドレスをソート)

ローカルネットワークのIPを列挙する nmap を使って、ネットワークに疎通できるIPアドレスがどれだけあるか見ておく takuya@Desktop$ nmap -sP 192.168.2.0/28 | /usr/bin/grep -o '192.168.2.\d' 192.168.2.1 192.168.2.2 192.168.2.3 192.168.2.9 うちのロ…

ファイルサイズを取得し、変数に格納する

ruby や python からすぐ出来るんですが、bashでやると面倒ですね ruby File.size( 'path/to/file' ) python import os os.path.getsize('path/to/file') bash どうやるの? ls -l だと余計なものが多いし。。。まさか、cut してgrep する〜?awkする? いく…

curl でよく使う設定をまとめる ~/.curlrc

curl の基本設定ファイルを作ることが出来る ~/.curlrc Default config file, see -K, --config for details. .curlrc に書く書き方は -K で指定する config ファイルと同じ curl の毎回指定するのめんどくさいオプションを書いておくと楽 とくに、CookieやU…

pdfのページの解像度(ピクセル数)を調べる。

pdfinfo でファイルの中身を確認した PDFの解像度(ページのピクセルサイズが分かった) また同時に、pdfの権限などもわかった。 Title: Software Design 2017年2月号 Author: (株)技術評論社 Creator: Acrobat 10.1.16 Producer: Acrobat 10.1.16 Creatio…

pdfinfo コマンドでPDFページ数を確認する

pdfinfo コマンドが便利 time pdfinfo Software-Design-2017年2月号_00.pdf Title: Software Design 2017年2月号 Author: (株)技術評論社 Creator: Acrobat 10.1.16 Producer: Acrobat 10.1.16 CreationDate: Thu Jan 12 14:45:49 2017 ModDate: Fri Jan 1…

pvresizeを試してみた

lvm2 のよくわからないものを使うシリーズ 今回はpvresize を使ってみた。 正直言って、何に使うのかがまだ良くわからない。 物理HDDパーティションのサイズが変わるわけでもない。 150GB のディスクから 40GB のPVができた。残りの110GBは未使用というか、…