読者です 読者をやめる 読者になる 読者になる

くんすとの備忘録

プログラミングや環境設定の覚え書き。

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…

無限のシェル芸 - "unlimited shell works" (アーチャー版)

前回の記事(http://kunst1080.hatenablog.com/entry/2014/03/01/074329)の、アーチャー版。元ネタはこのへんとかこのへんとか。

無限のシェル芸 - "unlimited shell works"

※元ネタはTYPE-MOONの「Fate/stay night」です。※3/2 内容の微修正に伴いバージョン管理したかったのでgistに移行しました

【メモ】パイプでつないだ先のcdコマンドの挙動(bashとzsh)

※これは個人的な疑問のメモです。解答はありません。 コマンドをパイプでつないでcdした時の挙動が、bashとzshで異なる jot -b a 3 | while read L; do cd $L; done bashのばあい 特にカレントディレクトリは変更されません。 zshのばあい a/a/aディレクトリ…

jotコマンドについて調べてみた

本日のシェル芸勉強会(http://usptomo.doorkeeper.jp/events/8339)の中でプチ話題になったjotコマンド。 イマイチ使い方をちゃんと把握していなかったので調べてみました。※確認・検証はFreeBSD 8.3にておこなっておりまする。 当時の認識jot 回数 開始 終端…

5文字のコマンドと7文字のコマンドを抽出する

\ls /bin/ /usr/bin/ /usr/local/bin/ |awk 'length==5||length==7{print length, $0}' |sort 最後にsortしない場合はもっと簡単で \ls /bin/ /usr/bin/ /usr/local/bin/ |awk 'length==5||length==7' ※man awkに以下のような記述があり、awkのlengthには$0…

シェルスクリプトでwebアプリケーションフレームワークを作ってみた

概要 なんとなく作り始めてみました。 セキュリティホールがいっぱいあると思われるので、ローカルホストの外に出しちゃダメね。GItHubのリポジトリはこちら → https://github.com/kunst1080/shwaf/ ざっくりとした仕様など 動作確認はFreeBSD 8.3でのみ実施…

クリスマスなのでワンライナー書いてみた

経緯 リア充の爆発を願うより楽しい事は沢山あるよ……ワンライナーとかさ! というわけで、イブの夜はクリスマスにちなんだワンライナーを勉強がてら書こう。 ハッシュタグは #クリスマスワンライナーで。 帰ったらやる! #シェル芸— くんすと (@kunst1080) 2…

【FreeBSD】Jail環境の作成を自動化してみた

元々手作業(http://kunst1080.hatenablog.com/entry/2013/10/21/235038)で ezjail-admin とかファイルコピーやら書き換えやらやっていたのですが、やってらんねー的な感じだったのでシェルスクリプト化してみました。自分用なので汎用性はあまり無いのですが…

【bash】whileの代わりにxargsでループ処理を行う

ワンライナーやる時かシェル芸でしか使わないような気もしますが。 例えば、今回のシェル芸勉強会(第7回・ゆるふわ)の問題7の模範解答①を少し書き換えて、cpコマンドをechoするように書くと $ find . -type file | sed 's;./;;' | while read f; do echo…

UNIX使いのための、DOS-BAT解説 ~ forkとexec

はじめに DOS-BATファイルから別のDOS-BATファイルを起動するには、色々な方法があります。 hoge.bat start "" hoge.bat call hoge.bat これらの起動方法が、UNIXに於ける何と対応するのか、ということを簡単にまとめます。 解説 ①hoge.bat hoge.bat これは…

【シェル芸】bashのワンライナーでクロス集計2(※awkで一撃!)

昨日のエントリでawkとsedを使用しない縛りプレイをしたわけですが、awkを使ってみたら一撃でできちゃいました。 awk 'NR!=1{k1[$1]=0;k2[$2]=0;ks[$1,$2]=ks[$1,$2]+$3}END{for(h in k2) printf "\t" h;print"";for(o1 in k1){printf o1;for(o2 in k2){v=ks…

【bash】xargsを使って2つのリストをCROSS JOINする

ひとつ前のエントリの中で、2つのリストをCROSS JOINする、ということを行っています。 データの流れ [tmp.key1] A B I[tmp.key2] Ice Juice OREO上記二つのファイルをCROSS JOINしたような感じで、下記の出力を得ます。 A,Ice A,Juice A,OREO B,Ice B,Juice…

【シェル芸】bashのワンライナーでクロス集計(※sedもawkも使わないプレイ)

きっかけ こことここを見ていたら、やってみたくなったので・・・ 内容 仕様(やりたいこと) こんなファイル [sample.txt] を、集計して、こんな感じ Ice Juice OREO A 310 0 0 B 130 120 0 I 0 0 630 ,Ice,Juice,OREO A,310,0,0 B,130,120,0 I,0,0,630に変換…

【bash】素lsとperlしかない環境で、lsコマンドの結果を色付き表示する

PleiadesをDLしている合間に…… 概要 タイトルの通りです。[colorls.sh] ……そろそろPleiadesのDL終わったかな。

FreeBSDでwmaをmp3に変換する

ffmpegとgogoを使用。パッケージの準備 pkg_add -r ffmpeg pkg_add -r gogopetit ※ffmpegのインストールには結構時間がかかります (もっと軽いパッケージでできないものか) で、変換 ffmpeg -i hoge.wma -y hoge.wav gogo-petit -b 128 hoge.wav hoge.mp3 …

【bash】ワンライナーで、ディスク使用量の多いディレクトリトップ10を出力する

du -s /usr/ports/* 2>/dev/null | sort -r -n | head -10 | awk '{print $2}' | xargs du -sh 2>/dev/null | cat -n ざっくりとした解説 du -s して各ディレクトリの容量の集計を取得 sort -r -n でひっくり返す -n オプションは、フィールドを数値扱いでソ…

【bash】シングルクォートで括ったヒアドキュメントに変数を埋め込む方法

ヒアドキュメントをパイプでsedに噛ますだけ。 cat <<'EOS' | sed 's/%AI/DAMAI/g' %AI:Yes sister, GOOD SISTER! /// NANAGY:... Why am i here? %AI:Because we are sister! EOS 実行結果 DAMAI:Yes sister, GOOD SISTER! /// NANAGY:... Why am i here? D…

【Perl】Solarisでstatしたかった、ので。

ざっくり、シェルスクリプトとPerlで実装。 色々参考にしつつ。一部変なコメントが入っていますがそれはそれで。[stat.sh]

【bash】シェルスクリプトで複数コマンドの実行結果を結合(OR/AND/XOR)する

2つのディレクトリをlsした結果を比較したりとか、awkで作った2種類のリストを比較したりとか、そういうことをしたかったので考えてみた。 解説 コマンドを && で繋いで () で括って sort して uniq してるだけ。 [def-concat_commands.sh] [test_def-conc…

広告