くんすとの備忘録

IT系技術メモ

移転しました。

15秒後に自動的にリダイレクトします。

シェルスクリプト

BATファイルにシェルスクリプトを埋め込む方法

Bash on Ubuntu on Windowsによって、Windowsでカジュアルにbashを利用することが出来るようになりましたよね。 しかしながらシェルスクリプトを直接実行することはできないようです。(パスの形式が違うので関連付けで実行できない) ということで、BATファイ…

MacでiTermの背景色を変更するシェルスクリプト

[ch_bg_color.sh] #!/bin/bash R=$1 G=$2 B=$3 /usr/bin/osascript <

install(1)コマンドが便利だった件

はじめに install(1)という、cpとmkdirとchmodを同時に行うような便利コマンドがあることを知りました。 (忘れちゃいましたが、何かのMakefileを見ているときに存在に気付きました) これを使うと、プロビジョニングなどのスクリプトが簡潔に書けるようになり…

リファクタリングのための回帰テストをシェルスクリプトでさくっと書こう

この記事はShell Script Advent Calendar 2016の20日目の記事として公開されました。 昨日は@MasWagさんの「Tech Hack: 最近見た不思議なシェルスクリプトを直してみた」でした。 シェルスクリプトは「知ってる・知らない」で長さもわかりやすさも全然違って…

「シェル芸勉強会 大阪サテライト」のレポートを書くためのシェルスクリプトを作成しました。

賢明な読者諸君は既にお気付きになられているかと思いますが、ここ数回のシェル芸勉強会大阪サテライトレポートの記事、実はほぼ全て同じ構成になっています。 「第19回シェル芸勉強会 大阪サテライト」レポート - くんすとの備忘録 「第21回シェル芸勉強会 …

内部十進数を含む固定長ファイルにheadしたいときはdd(1)がべんり!

内部十進数(Decimal型とかS9 comp-3とか)を含むデータって普通にNULL(0x00)が入ってくるので、headすると行末をちゃんと判定できなくておかしなことになりますよね。ですが、固定長ファイルの場合は dd(1) を使うと簡単に、先頭から任意の行数だけ抜き出すこ…

直前のコマンドラインにハッシュタグ「#シェル芸」をつけてツイートするためのコマンドを作りました。

github.comいちいち端末からブラウザにコピペしてツイート、という流れが面倒なあなたに! これは何? 標準入力から読み込んだ文字列にハッシュタグ「#シェル芸」をつけてツイートするpythonスクリプトです。 確認済みの環境 python2.7 on MSYS2 (64bit) pyt…

ArchLinuxをインストールしてGUIと日本語環境を揃える一撃シェルスクリプト(HiDPI対応)を作った

ArchLinuxへの浮気をはじめました。のですがこのマシン、HiDPIなわけで・・・小さすぎて読めない pic.twitter.com/Bg4VG2riVI— くんすと (@kunst1080) September 9, 2015 解像度が高すぎて入力した文字が読めません!! ・・・・・・というわけで、一撃シェ…

【FreeBSD】nlコマンドのオプション、論理ページなど

昨日のシェル芸ヴェンキョウカイ(問5)で話題(?)になった、nlコマンドのオプションについて。これもさらりとオプションの再確認だけ…… と思っていたのですが、『論理ページ』なるものが気になったのでむしろそちらをメインに確認してきます。 論理ページのセ…

【FreeBSD】catコマンドのオプションをおさらい

昨日のシェル芸ヴェンキョウカイ(問5)で話題(?)になった、catコマンドのオプションについて。これはさらりとオプションの再確認だけ… テストデータ 問5;https://github.com/ryuichiueda/ShellGeiData/blob/master/vol.18/Q5/text あ あ い い う え お お お…

commコマンドのつかいかた

昨日のシェル芸ヴェンキョウカイ(問2)で話題になった、commコマンドについて。 自分はたまたま先週使ったことがあって知ってたんですが、シェル芸ヴェンキョウカイで初めて知った!っていう人もいたみたいだし、せっかくなので使い方をまとめておきます。 テ…

BSD環境での制御コードの置換について

昨日のシェル芸ヴェンキョウカイ(問2)で話題になった、BSD系環境で制御コードを置換するはなしです。 sedではやれないけどtrなら……という話です。BSDでも、trを使えば8進数で置換できるみたい。 comm <(sort a) <(sort b) | sort -r | tr '\011' ',' #シェル…

【FreeBSD】uniqコマンドでキーを使った重複カットを行う

昨日のシェル芸ヴェンキョウカイ(問1、問5)で話題になった、BSD系環境のuniqコマンドの使い方について。 BSDのuniqにはキー部分を指定する「-w」オプションがないけどどうするの? っていう話です。 テストデータ 問1;https://github.com/ryuichiueda/ShellG…

paizaオンラインハッカソン5をbashワンライナーで説いてみた(MINAMIルート)

マンガ版「俺の許嫁と幼なじみが修羅場すぎる」|paizaオンラインハッカソン5paiza.jp幼なじみルートの最終問題の解答例です。 read X Y && awk -v x=$X -v y=$Y '{for(i=0;i

【Python】シンプルなサーバーを自作してみた

8080ポートを待ち受けてリクエストをそのまま別スクリプト(シェルスクリプト)に渡すだけ、っていうのをしたかったんですが、いいコマンドが見つからなかったので勉強がてら自作してみました。もともとはncコマンドでやろうとしていたんですが、データを出力…

uniqコマンドを使って、論理和・論理積・排他的論理和・差集合を得る方法

タイトルの通り、UNIXの「uniq」コマンドを使って、2つのファイルから 論理和(OR) 論理積(AND) 排他的論理和(XOR) 差集合(A-B) 差集合(B-A) を取得する方法を示します。 方法 前提:入力ファイル 確認のため、以下のような、ファイルa・bを使用します。 % ca…

paizaオンラインハッカソン Vol.4 Lite「エンジニアでも恋がしたい!」をいろんな言語で解いてみた

応募期間終わりましたし、もう大丈夫だよね……エンジニアでも恋がしたい〜転職初日にぶつかった女の子が同僚だった件〜|paizaオンラインハッカソン4 Lite マンガ版「エンジニアでも恋がしたい!」〜転職初日にぶつかった女の子が同僚だった件〜|paizaオンラ…

FreeBSD Jail環境でrbenvを使うと/dev/fd/62がないよってエラーが出るので無理やり対応した話

FreeBSD Jail環境でrbenvを使用するとき、/dev/fdにfdescfsをマウントできてないとき、だと思っているのですが、こんなエラーが出ます。 /usr/local/libexec/rbenv-version-file-read: line 23: /dev/fd/62: No such file or directory どうも該当スクリプト…

「第14回東京居残りシェル芸勉強会&第32回蟹ではなくピザが出るUSP友の会定例会」の問題をなるべく解きました

当日は用事があり参戦できなかったので、ブログ参戦です! TLをネタバレしない程度に覗いてみましたが、今回の問題はいつもにも増して頭がおかしいとレベルだとの評判で、なかなか楽しみであります! 各種リンク 公式:https://www.usptomo.com/PAGE=2014121…

(初心者向け)空行を出力する(別解) の別解を考えてみました

@nullpopopoさんの記事を受けて、自分もやってみました。 [シェル芸](初心者向け)空行を出力する(別解) | (っ´∀`)っ ゃー | nullpopopo さて、FreeBSDには rs(1) という、配列を変換するコマンドがあります。例えば、 % jot 10 | rs 2 3 1 2 3 4 5 6とすれ…

シェルスクリプト一撃でArchLinuxを構築!

先日の記事の内容をシェルスクリプト化したものを作成しました。もう構築しちゃったので使い道はあんまりないんですけどね :-P ArchLinuxをインストールしてみた手順 - くんすとの備忘録 使い方 curlやscpなどでスクリプトを転送して実行します。 実行時は第…

【FreeBSD】DHCPで変更されたresolv.confをJail prisonerに反映するうまい方法がわからないのでスクリプト書きました

FreeBSDのホスト環境でDHCPを使用しています。 環境(ルーター)が変わるとそれに合わせてホストのresolv.confの内容は書き換わるのですが、Jail prisonerのresolv.confは連動して変わりません。。。(そりゃあそうでしょうけども)おそらくうまくやるやり方…

【bash】テキストファイルに埋め込んだ環境変数を展開する

ご利用は自己責任で。こんなテキストファイルがあります。 $ cat test.txt LANG is $LANG LANG is "$LANG" LANG is '$LANG' 普通にcatすれば上記の通りですが、これをこうすればヒアドキュメント形式になって…… $ printf "cat <<++EOS\n`cat test.txt`\n++EO…

「第12回本当は怖くないシェル芸勉強会&第29回本が出たよUSP友の会定例会」に参加してきました

今回は関西から、Twitter参加しました。 イベント:http://usptomo.doorkeeper.jp/events/12763 UST:http://www.ustream.tv/channel/%E3%82%B7%E3%82%A7%E3%83%AB%E8%8A%B8 問題と解説:http://blog.ueda.asia/?p=3535 togetter:http://togetter.com/li/70…

タッチパッドを無効化するワンライナー

入力デバイスの一覧は、以下のコマンドで確認できるみたい。 xinput list 出力 ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ USB Optical Wheel Mouse id=11 [slave pointer (2)] ⎜ ↳ PS…

inetdとシェルスクリプトでシンプルなwebサービスを作る実験②

前回の続きで、今回は、メソッド名とURLを受け取ってみる。telnetでアクセスする場合、一旦アクセス後入力待ちになり、そこで「GET /」みたいな入力をするので、それを真似てみる。 とりあえず、頭に入力待ちを入れてみる /home/test/hoge.sh #!/bin/sh read…

inetdとシェルスクリプトでシンプルなwebサービスを作る実験

以前(http://kunst1080.hatenablog.com/entry/2014/01/26/180321)、netcatでwebサーバできないかなーってシェルスクリプト書いたりしていたわけですが、そもそもinetdで指定のポートを通して標準入出力が扱えるってことに気づいたのでやってみたテスト。 前…

改行付きの固定長ファイルをcsv化するperlスクリプト

前のエントリの続き。 こちらはおまけ[flunpack] 使い方はこんな感じ。 % cat data 1HOGE 0 2FUGA 0 3HOGEHOG0 % cat data | flsplit 10 1HOGE 0 2FUGA 0 3HOGEHOG0 % cat data | flsplit 10 | flunpack "A1A7A2" 1,HOGE,0 2,FUGA,0 3,HOGEHOG,0 ,, ,, ん?…

改行なしの固定長ファイルにレングスを指定して改行を入れるperlスクリプトを書いた

必要に迫られて書いた。[flsplit] こんな感じで使います。 % cat data 1HOGE 0 2FUGA 0 3HOGEHOG0 % cat data | flsplit 10 1HOGE 0 2FUGA 0 3HOGEHOG0

ddコマンドでアルファベットを大文字にしたり小文字にしたりする

ddコマンドには「conv」というオプションがあり、これを使うと色々と面白い変換ができます。指定できるのは、manより ascii, oldascii block ebcdic, ibm, oldebcdic, oldibm lcase pareven, parnone, parodd, parset noerror notrunc osync sparse swab syn…