Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

bash

pasteコマンドで二つのファイルを行方向にマージする

pasteコマンドで二つのファイルを横方向にマージする事ができます。 NAME paste -- merge corresponding or subsequent lines of files 実際のところ $ cat 0001.txt 0002.txt as you like it hello worldこれが、pasteコマンドだとこんな感じ $ paste 0001.…

run-partsコマンドで実行するスクリプトに引数を渡す

run-partsコマンドで引数を渡すには "--arg=argument"のオプションを使えば良いです。 まとめては指定出来ないので、一個一個やる必要があります。 基本同じ端末で、管理者と利用者でインストするツールを微妙に変えたい時なんかに有効です。

run-partsコマンドで、ディレクトリ下のコマンドをまとめて実行

run-partsコマンドで、ディレクトリ下のコマンドをまとめて実行できます インストーラーや初期化処理などを追加する度に一々更新しなくて楽チン ただし、一階層分のみなので注意が必要です 実際のところ "/etc"ディレクトリ直下のファイルのうちpかdで終わる…

mkdirは"-p"つけると階層構造も一気に作成できる

mkdirは"-p"つけると階層構造も一気に作成できます。 親ディレクトリを作って潜って……なんて事しなくてもいいのです(小声 実際のところ $ mkdir -p 190517/001 $ mkdir -p 190517/002$ ls 001 002

spool領域はいろんなプログラムで使うデータを置いとく用途に使える

spool領域というのがあるそうです。e-wordさんの定義によると スプールとは、処理能力に大きな差のある装置やソフトウェア、通信回線などを協調して動作させる際に、速い側の待ち時間を短くするために、処理すべきデータを一時的に記憶装置に保存し、遅い側…

anacronで数日ぶりに起動した端末から通知をおくる その2:実行日の情報

実行日付については /var/spool/anacron に保存されています。 試しに中身をみてみると……このように、単純なテキストデータです。 $ sudo cat /var/spool/anacron/cron.daily 20190514ここを参照してやるので、何かズルっこしたいなら直接てをつけるのも有り…

SSHコマンドをつかって、リモート環境のコマンドを単発実行

1個程度のリモートボードの中身をみたい/実行したい時、 一々ログインするのは面倒です。 SSHコマンドには、一個だけ実行する技もあります。 実際のところ /tmp ディレクトリをlsでみる $ ssh pi@yourtestname.local ls /tmpscpで送ったファイル群がちゃん…

atコマンドの時刻記法

実際のところ midnight : 翌日の午前0時 now + 3 days : 三日後の同時刻 now + 1 years : 一年後の同時刻*1 3 AM : その日の午前3時 というわけで……以下のようにやると、二日後の午後4時にコマンドを実行できます $ at 4 PM + 2days 参考もと www.computerh…

atコマンドで指定時刻に起動

cronを使うほどではないが、定期的に実行したいコマンドがあったときはatコマンドがつかえます。 実行してたら消えてくれるので、一度使い捨ての場合も有効。 例えば、起動したその日の夕方に一回だけ起動した旨を通知するような処理も楽に実装できます。 (…

splitコマンドでバラバラになったものをくっ付けるには……catコマンドで繋げばいい

考えてみれば当たり前なのですが……splitコマンドでバラしたデータは catコマンドでくっ付ければ元に戻ります。 ……catはそもそも、そういう用途のコマンドですからね( 実際のところ こういう状況だったとき $ head x?? ==> xaa <== 3 4 5 ==> xab <== 6 7 8 …

splitコマンドで行ごとに分割

実際のところ $ cat basedata.txt 3 4 5 6 7 8 9 10これを3行ごとに分割するには、以下のように $ split -l 3 basedata.txt 例のごとく、ファイル名は「xa?」といった形式になってます。 必要ならリネームするといいでしょう。 $ ls x?? xaa xab xac念のため…

dateコマンドで日数を数える

シェルコマンド類だけで日数を数える方法です。 irbとかpythonとか使わずとも、なんとか行けます。 実際のところ 今日2019年4月26日から2019年3月22日までの日数を割り出します。 これを1日は60*60*24=86400秒で割ります。 $ expr \( `gdate +%s` - `gdate -…

dateコマンドで翌月末日を出す

実際のところ $ LANG=C gdate -d "+2 month -$(($(gdate +%d))) days" +%m%d 0531$ LANG=C gdate -d "-$(($(gdate +%d))) days" +%m%d 0331あるいは、1日前を示すlast day(または yesterday)という構文をつかう手も。 ただし、EMONTHとは違うため「2ヶ月後…

dateコマンドでN日後の日付や曜日を知る

実際のところ $ LANG=C gdate -d "$((100)) days" +%m%d 0802$ LANG=C gdate -d "$((100)) days" +%a Fri特定の日付から100日後 $ LANG=C gdate -d "20190101 100 days ago" +%m%d 0923 参考もと shuzo-kino.hateblo.jp shuzo-kino.hateblo.jp

webIoPiでRasPiのIOにブラウザから簡易的にアクセスする その2:WEB鯖の設定

実際のところ $ cd /etc/webiopi $ YOUREDITOR configここで、WEB鯖のポートをデフォルトの8000番から、114514番に変更する事を想定します。 ファイル内を探すと以下のような部分がみつかるので……ポート番号を変更します。 [HTTP] enabled = true port = 800…

crontabで、起動毎や1日一回のような短縮記法を

実際のところ string meaning ------ ------- @reboot Run once, at startup. @yearly Run once a year, "0 0 1 1 *". @annually (same as @yearly) @monthly Run once a month, "0 0 1 * *". @weekly Run once a week, "0 0 * * 0". @daily Run once a day,…

crontabの日時指定構文

field allowed values ----- -------------- minute 0-59 hour 0-23 day of month 1-31 month 1-12 (or names, see below) day of week 0-7 (0 or 7 is Sun, or use names) というわけで、下の構文は5分ごと */5 * * * * CMD0時から20時まで2時間ごとの場合 …

crontabをつかってみる

なんやかんやで、今日までマトモにcrontabを使った事がなかったのでメモ。 $ crontab -evi系エディタが立ち上がるので、編集 5分ごとにDocumentフォルダのhogehoge.txtをtouchしたい場合 */5 * * * * touch ~/Documnt/hogehoge.txt保存して閉じると……アクシ…

"\`"で行頭パターンのみにマッチ

実際のところ 行頭マッチ $ printf "a\nb\nc\n" | gsed 'N;N;s/\`/X/gm' Xa b c$ printf "a\nb\nc\n" | gsed 'N;N;s/^/X/gm' Xa Xb Xc 末尾マッチ $ printf "a\nb\nc\n" | gsed "N;N;s/\'/X/gm" a b cX$ printf "a\nb\nc\n" | gsed "N;N;s/$/X/gm" aX bX cX …

sedの\Bで文字間にマッチング

\B Matches everywhere but on a word boundary; that is it matches if the character to the left and the character to the right are either both “word” characters or both “non-word” characters. 実際のところ $ echo 完全に理解した | gsed 's/\B/ …

echo-sdでcowsayめいた煽りメッセージをつくる

echo-sdはfumiyas氏作の文字列遊びツールです。 実際 導入 $ brew tap fumiyas/echo-sd $ brew install echo-sd 使い方 横書きはもちろん $ echo-sd ぬるぽっ!! _人人人人人人人_ > ぬるぽっ!! <  ̄Y^Y^Y^Y^Y^Y^Y ̄縦書きにしたり $ echo-sd -v ガッ!…

headでbyte数を指定して表示

"-c"オプションでbyte指定。 実際のところ $ head -c 100 /dev/random | hexdump 0000000 a2 d3 5e 3b d1 74 53 0a bc 7d 53 7e 38 f3 b8 bb 0000010 a0 5b d3 9b bc 66 a3 88 21 0c ca 4a cb dc 19 8a 0000020 24 bd 34 eb 0c c9 ac 59 ce 12 58 6a c1 92 3…

shufの"-i"オプションで簡易にランダムな数をつくる

shufの"-i"オプションでは範囲をしていすることで $ shuf -i 2-6 6 2 4 5 3 $ shuf -i 2-6 2 5 4 6 3

shufコマンドでランダムテイク

実際のところ shufは行を要素としてランダムに散らすコマンドです。 これの"-n 1"をつかうと、一行だけ取り出せます。 $ printf "平社員\n社長\n" | shuf -n 1 社長 $ printf "平社員\n社長\n" | shuf -n 1 平社員 "-e"のあとに続く引数を要素として扱います…

shellでTDDするshunit2 その4:初期設定と破壊

shellでTDDするshunit2のお話。 今回はTDDフレームワークで欠かせないものの一つ、テストの前と後の値設定です。 実際のところ oneTimeSetUp/setUp 存在する場合テスト前に呼び出され、そのテストで使用する一時環境変数を設定します。 前者は呼び出されたら…

shellでTDDするshunit2 その2:Red/Greenをブン回す

前回に続いてshunit2のお話。 今回はいよいよRed/Greenテストの開始です。 実際のところ つかってみる ではまず失敗するファイルをつくりましょう #! /bin/sh myFunc() { echo 0 } testEquality() { value=`myFunc` assertEquals 1 "$value" } # Load shUnit…

shellでTDDするshunit2 その1:とりあえず導入

シェルコマンド は思いついた事をすぐ実装できる手軽さ、移植性が高いなどのメリットがある反面、 多人数開発という観点ではあまり嬉しくない状況がありました。そんなお困りごとはTDDで解決! 一時ほど聞かなくなりましたが、それでもテストの重要性は今尚…

nkfコマンドで半角カナと全角カナが混じったファイル群に秩序を取り戻す

shuzo-kino.hateblo.jp 実際のところ バッチ処理対象のファイルで、どういうわけか半角カナと全角カナが入り交じるという地獄のような状態が発生しました。 どうもエクスポートするツールの都合らしいのですが…… 「アクション001」と「アクション003」はこ…

extglobの正規表現におけるオプションについて

shuzo-kino.hateblo.jp の補足のような内容です。 用意されている正規表現オプションは @:一回だけ *:ゼロ回以上 +:一回以上 ?:ゼロまたは一個 !:これらに一致しないもの 実際のところ ためしに、"@"をつかって正規のjpgだけ引っ張ってくるケースを考えます…

Bash環境において"$_"は最後にマッチした変数を拾う

Bash環境において"$_"は最後にマッチした変数を拾います。 実際のところ 以下のようなコマンドを叩いたとします。 $ mv ~/tmp/hoge /Users/shuzo_kino/dev/src/ $ cd $_この時、"$_"がマッチするのはどっちでしょうか? ……正解は後者。 これならmvした後に移…