min117の日記

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

シェル芸

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 // さっ…

RaspberryPi3 fortune | figlet | cowsay でアスキーアート絵文字をウシにしゃべらせる

前回記事までの知見を合体するとこうなる。 min117.hatenablog.com $ fortune | figlet | cowsay -n コマンドを叩くたびに文字列の内容(占いメッセージ)は変わる。 // ~/.bashrc に記述して、起動時に毎回占ってもらうようにしよう。 この記述を追加すれば…

RaspberryPi3 Google翻訳をコマンドラインで使う

Google翻訳って便利だけどわざわざGoogle開くのがダルい。コマンドラインでGoogle翻訳できたらなぁ…って思って探したら、あった。 この記事そのまま。てかこのブログすごい。 orebibou.com インストールする。 $ git clone https://github.com/soimort/trans…

RaspberryPi3 sshログイン時に「今日の運勢」をウシさんに占ってもらう fortune | cowsay

前回記事で、sshログイン時のメッセージをネルフ本部のロゴに変えた。 min117.hatenablog.com 今回は sshログイン時(~/.bashrcが読まれるとき)に ウシに「今日の占い」をしゃべらせてみる。RaspberryPi3 で試す。 こんな感じになる。 debianだと /usr/game…

fedora sshログインしたときにネルフ本部のロゴを出す /etc/motd

Linuxに sshログインしたときにネルフ本部(NERV)のロゴを出したい。 こんな感じ。 sshログイン直後に表示されるメッセージは、fedoraだと /etc/motd に書くだけ。 $ cat /etc/motd ˍ▂▃▄▄ ◢████████◤ ◢ ██████████▆▄ ◥◣ ███████████████◣ ◥◣◢██████████████…

fedora SLコマンドをインストールしてD51をコンソールに走らせる

以前banner コマンドをインストールした。コンソールで遊ぶって結構大事と思う。UIそのものだから。 min117.hatenablog.com // SLコマンドというジョークコマンドがあるらしい。ジョークとはいえ、かなりすごい出来栄え。さっそくインストールする。 $ sudo …

Windows10 バッチファイル内でPowerShellコマンドを管理者権限で実行する

Windows10に入っている不要なアプリをダブルクリック一発でアンインストールしたい。バッチファイルからPowerShellを呼べば可能。ただしバッチを管理者実行しないといけない。 // できた。 doPS.bat Windows7で作ったが、Win10でも実行を確認済み。 ※ ソース…

Python 入力文字列を1字ずつ評価する(固定文字列と入力を1文字ずつ比較)

最近 paiza がお気に入り。転職じゃなくて、プログラマ向けのコーディング例題が面白い。 paiza.jp 例題)以下をコーディングせよ ① 4 回まで入力を試せる ② paiza が暗号文字列(固定)。 ③ 入力文字列を捕捉して②と比較する。 ・sdfpaizaoiu が最初に入力…

Windows ファイル名の半角空白文字をアンダーバーに置き換えるバッチ

Windowsでファイル名に半角空白が入ったファイル名は本当に扱いにくい。 例えば for /F %i in ('dir /b') do @echo %i なんてやったときに、ファイル名に半角空白があるとデリミタと解釈されちゃってtokenが複数入ってしまうなんてことになる。 // これを防…

Windows xlsをcsvに変換するバッチファイル

// 業務でxlsファイルをcsvに変換する必要が発生。調べたら、天才がいた。 kunst1080.hatenablog.com すごい。サラッとやってるのがとにかくすごい。1行目の @if (1==1) /* からしていきなり意味が分からないのでググったらどうやらバッチファイル(.bat)の…

Windows 大量のフォルダをパスワード付きzipにコマンド一括圧縮する(echo パスワード| 7z a zip名 対象dir -p)

Windows で仕事をしていて大量のフォルダを一括でパスワード付きzipに圧縮して顧客に納品したいとする。 <やりたいこと> 例)20180101というフォルダを、20180101.zipに圧縮(パスワード:himitu) 圧縮されたのを開こうとすると パスワードを求められる。…

vim キャプチャした文字列の一部を使って置き換えるホールドバッファ機能 :%s/\(¥[1-9]\),/\1/g

// カンマ区切りのcsvファイルがある。 金額の区切りもカンマになってしまっていてawkで扱いにくい。 金額の区切りのカンマだけ無くしたい。 1行目で言えば ¥8,163 を ¥8163 にしたい。 /¥[1-9], とやってキャプチャできるけど、一括置換ではフィールド区切…

bash 「複数のShift-JISファイル(csvとpyとbat)をnkfで変換してファイル名の末尾に_utf8をつけて保存する」をワンライナーでやる

Windowsで作ったShift-JISのファイルがある。拡張子がバラバラだ。csvとpyとbatが混在している。 これを全部utf-8に変換し、かつファイル名の末尾に_utf8をつけるをコマンド一発でやりたい。最終的にこうなる。 たとえば「DB.csv」を「DB_utf8.csv」に変換す…

bash 2つのファイルを行単位で連結する(各ファイルの行を相互に取り出し合体して1行にする)paste -d "\n"

// 前回、radiko の画像をまとめてダウンロードした。 min117.hatenablog.com これを HTML に埋め込んで、ラジオ局をクリックしたらテレビでラジコが再生されるようにしたい。 <目指す完成形> iPadでアイコンタップすると ラズパイがラジコ再生を実行して …

bash ファイル一覧(ls -l)の表示サイズをGB単位で表示する(awk)

// ファイル名に「NHK」を含むtsファイルの合計サイズをGB単位で表示させたい。 コマンドの変遷 $ ls -l | grep NHK $ ls -l | grep NHK | awk '{print $5,$9}' $ ls -l | grep NHK | awk '{a+=$5; print $5,$9}' $ ls -l | grep NHK | awk '{a+=$5; print $…

fedora Apache(httpd)で cgi-bin が動かない場合の対処(permissionエラー)

// Apache から直接 pythonスクリプトを実行したいが、どうしてもエラーになる。 You don't have permission to access /test.py on this server. 環境は以下。 ・fedora 20 ・Apache/2.4.10(Fedora) ーーー 解決手順 ① まずログをみる $ sudo -s # ls -sh…

MacbookAir Python 3 をインストールする(OSX Sierra)

// Mac へのPython 3のインストールは以前の記事で行ったが、もっと簡単な方法がないか試す。以前の記事では pyenv をインストールした。 http://min117.hatenablog.com/entry/2017/01/17/233852 今回は純粋に pip だけで python3 をインストールする(Beaut…

bash 配列の要素をhtmlでテーブルに書き出す(SELECT + SORT)

bashでSQLのSELECTとSORTのようなことをやってみる。 $ vim math004.sh 出力 $ ./math004.sh >> math004.html

bash 配列の要素をhtmlでテーブルに書き出す

配列 ${PRODUCTS[@]} の要素を全てhtmlに書き出したい。このへん参照。 d.hatena.ne.jp ソースは以下。 $ vim math003.sh html に書き出して、ブラウザから見てみる。 $ ./math003.sh >> math003.html 素晴らしい。色々応用できそう。

bash 深いディレクトリパスの最深部フォルダ名だけを取り出してmvする

日常的に使うファイル移動で、深いPATHにあるフォルダを移動するときに、できるだけラクしたい。コマンド(ワンライナー)で最深部のフォルダ名を取り出して変数toに入れて使えば便利そう。 // $ ls /media/3TB/Dropbox | grep Jobs_Seiko 深いパス:/media/…

bash echo {1..11..2} で「1から11までの数を2とびで表示」する(ブレース展開)

こんなことができるとは。驚愕。 bashのそれって実はこういう書き方できるよ一覧 - Qiita 実際やってみる。 ーーー fedora20 $ bash --version $ for i in {1..11..2}; do echo "$i"; done すごい。できた。 ーーー Macだとできないみたい。 //

fedora 一括画像縮小 convert TARGET.jpg -resize 640x480 OUT.jpg

iPhoneで撮った画像を、ブログに貼る用に一括で縮小したい。fedoraでやる。たぶんRaspberryPiでもいける。 まずはファイル1個で実験。 $ convert TARGET.jpg -resize 640x480 out.jpg いいね。一瞬で縮小された。縮小後の画像もキレイ。 フォルダ内の全てのJ…

PHP フォルダ内の全てのテキストファイルの中身を1ページ内にまとめて表示する

Apacheで公開している自宅サーバのフォルダ内に、複数のテキストファイルがある。 全てのテキストファイルの中身を確認したい。1つ1つ開いていくのは大変なので、index_txt.php をクリックするだけで、全てのテキストファイルの内容を1ページに表示できるよ…

bash フォルダ内のテキストファイルの文字コードを一発で調べるコマンド

テキストファイルが4つあるが、このうち1つだけが文字コードが違っている。 $ ls -shal それぞれのファイルの文字コードを、コマンド1行(ワンライナー)で調べる。 $ for i in *txt; do echo "$i"; nkf -g "$i"; echo ===== ; done 一つだけ Shift-JIS が混…

bash 画像の撮影日時(EXIF)を「YYYYMMDD_HHMMSS」形式で取り出してファイル名に付ける(awkとsedで)

iPhoneで撮ったシンガポール旅行の写真を、Macの「写真」アプリに取り込み&書き出しを行ったら、ファイル名が「IMG_0775.JPG」のようになってしまった。これではいつとった写真か分からない。 ーーー (やりたいこと) IMG_0775.JPG ↓ ①ファイル内に持って…

bash awk ファイル一覧(ls)の毎行ごとに容量の合計を表示する

// 大量の動画ファイルをブルーレイ(片面25GB)に焼いていくけど、どれとどれを焼けば合計で25GBか?を考えるのが面倒。こういうのこそコンピュータにやらせる。 ーーー 毎行ごとにファイル容量の合計を出す $ { for i in *{ts,mp4}; do ls -shal "$i" | aw…