くんすとの備忘録

IT系技術メモ

移転しました。

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

シェルスクリプト

無限のシェル芸 - "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…