困った時はすぐQiitaを始めとしたTipsを表面的に鵜呑みにし、使えそうなプロダクトを拾ってきてマニュアル通りに対応するプロダクト至上主義者達よ。そんなことでは、想定外の事態に見舞われた時すぐ死ぬぞ。想定外とは、マニュアルには載ってないから想定外なのだ。マニュアル通りにしか動けぬ者は、典型的なコンビニ店員の如く薄給に喘ぐだけ。頭を使え!UNIX哲学に目覚めよ!そしてPOSIX原理主義を崇拝せよ! Follow

困った時はすぐQiitaを始めとしたTipsを表面的に鵜呑みにし、使えそうなプロダクトを拾ってきてマニュアル通りに対応するプロダクト至上主義者達よ。そんなことでは、想定外の事態に見舞われた時すぐ死ぬぞ。想定外とは、マニュアルには載ってないから想定外なのだ。マニュアル通りにしか動けぬ者は、典型的なコンビニ店員の如く薄給に喘ぐだけ。頭を使え!UNIX哲学に目覚めよ!そしてPOSIX原理主義を崇拝せよ! Follow
SMTPサーバの接続確認をする際、テストメールを送信することがあります。 最初のうちはtelnetコマンドを手で叩いて確認してましたが、だんだん面倒になってきたので、シェルスクリプト化してみました。 内部ではncコマンドを叩いているので、ncがない場合別途インストールしてください。 base64のエンコードはこのあたりからどうぞ。 # !/bin/bash host=メールサーバホスト port=ポート番号(25、465、587とか) user=SMTP認証のユーザ名(base64エンコードしたもの) pass=SMTP認証のパスワード(base64エンコードしたもの) to=宛先メールアドレス from=送信元メールアドレス function mail_input { echo "EHLO localhost" sleep 1 echo "auth login" echo "$user"
各種リンク jus共催勉強会「なぜシェルに仕事をさせてはいけないのか」と第18回ニンニク入れますかシェル芸勉強会。そして第35回アブラマシマシUSP友の会定例会 - USP友の会 | Doorkeeper 福岡サテライト会場:第18回シェル芸勉強会 : ATND 【問題】第18回ニンニク入れますかシェル芸勉強会 – 上田ブログ 【問題と解答】第18回ニンニク入れますかシェル芸勉強会 – 上田ブログ 問題に使用されたデータ:ShellGeiData/vol.18 at master · ryuichiueda/ShellGeiData · GitHub 当日のようす jus共催勉強会「なぜシェルに仕事をさせてはいけないのか」と第18回ニンニク入れますかシェル芸勉強会。そして第35回アブラマシマシUSP友の会定例会 @KDDIウェブコミュニケーションズ様 回答などはとげったーに残っているので置
■ラウンドトリップ時間をpingのワンライナーで計測してみる。 公式は以下を使用する。パケットの往復時間。 スループット (Kbps) = ( TCP ウィンドウサイズ (Bytes) * 8(Bit)) / RTT (sec) ■以下を参考に公式に問題が無いか確認する。 下記の本文の通り、64Kbytesは64000bytesとして計算。 第2回 ネットワーク遅延と高速化 http://gihyo.jp/admin/serial/01/net_prac_tech/0002 $ for RTT in 1 5 10 15 20 50 100 200;do \ echo "$RTT" | awk '{printf "RTTが%3dmsのとき、帯域 ≒ "((64000)*8)/($1*1000)"Mbps\n",$1}'; \ done RTTが 1msのとき、帯域 ≒ 512Mbps RTT
LinuxやUNIXを使う上で、ある程度使えると非常に便利な置換コマンドが、このsedコマンドだ。 今回は、このsedコマンドで覚えておきたい使い方について紹介する。 なお、今回の置換・編集の例として、以下のファイルを用いて説明する。 [root@test-centos7 work]# cat /root/sed_test.conf # line 1 line1=enable # line 2 line2=disable # line 3 line3=enable # line 4 line4=enable 1.基本的な使い方 sedコマンドの基本的な使い方としては、以下のようにコマンドを実行することでファイル・標準出力の内容で文字列の置換を行う事だ。 なお、条件の最後に「g」を付けないと、"最初に、マッチした箇所のみ"置換するので注意。 ファイルの内容を置換する場合 sed 's/置換前
ruby1.8.5しか入っていないサーバでメール送信するスクリプトを書くことになった。 rubyでメール送信するときはponyを使うと便利なので愛用していたのだけど、ruby1.8.5では最新版が動かない。シンタックスエラーが出まくる。*1 github.com 古いバージョンの中から動くものを探すのもいいかもしれないが、すごい手間が掛かりそう。依存ライブラリも含めてすべてのGemを調べる必要がある。 そんなことをするよりもsystem関数でsendmailコマンドを叩いてやったほうが早いかと思い、以下のスクリプトを書いた。 mime-typeがcsv固定になってたり汎用性は無い。 ほぼ、以下のシェルスクリプトの書き写し。qiita.com まあ最新の環境が用意できるのが一番いいのだけど。そうもいかない場合もある。こういう基礎は大事だと思った。*2 *1:->記法とか{key:val}記法
■ sedでも対応してみる awkの$3は3つあることを確認している。 つまりsedでも3個あることを確認すればいい。 フィールドが3個ということは区切りは2個なので/ .* /でok。 % seq 100|xargs -n3|sed '/ .* /s/[^ ]*$/Fizz/'|xargs -n5|sed '/ .* .* .* /s/[0-9]*$/Buzz/'|xargs -n1 ちょっと不恰好だけど、正規表現で条件を書けばいける。 ■ readの挙動 while read lineで読んでいるときに最終行に改行がないとループを抜けてしまう。 だが、read自身はちゃんとlineへ反映させているのであった。 % bash -c 'echo -n foo | while read line; do echo $line; done' % bash -c 'echo -n foo | {
DoRuby! (ドルビー!) は現場のエンジニアによる、主にRubyなどの技術に関する様々な実践ノウハウを集めた技術情報サイトです。 find コマンドの -mtime オプションを指定することで最後にデータが修正された日時で検索することができます。 日時の指定方法も色々あるのですが、個人的にわかりづらかったので以下のパターンだとどのような結果になるのか、実際に動かしてみることにしました。 試すパターン find -mtime 日数 find -mtime +日数 find -mtime -日数 結果からいうと、 find -mtime -3 3日(72時間)前〜現在 find -mtime 3 3日(72時間)前〜4日(96時間)前 find -mtime +3 4日(96時間)前〜過去 こうなります。 とりあえず、確認用のファイルを適当に作って試してみます。 touch -t 07
WebAPIの仕様を記述する方法はいくつかあると思う。 普通に日本語で記述する JSON Hyper-Schema、WADL、RAML、Swaggerなどを使う 仕様書の代わりにプログラムを書く HTTPメッセージそのものを記述しておく でも、文法にばらつきがあったり、読みにくかったり、ツールのセットアップが面倒だったり、どれもイマイチな所があって、手軽な方法が欲しいと思っていた。 何気なくcurlコマンドのオプションを調べていたら、「もうこれでAPIドキュメント扱いにしちゃえばいいんじゃね?」と思えてきたのでメモしておく。 curlコマンドのおさらい curlコマンドはlibcurlの付属コマンドで、最近のUnix系OSなら大抵最初から入っていると思う。コマンドの詳細はmanを読んでいただければ。 cURL - How To Use (マニュアルページ日本語訳) curlコマンドのオプシ
シェルスクリプトでだってできるよ 私は普段から、シェルスクリプトでCGIスクリプトを組んでいるが、「えー、ウソでしょ。だってセッション管理とかできないでしょ?」と言われることがあり、ウソじゃないってという回答を兼ねてこのTipsを前々から書きたいと思っていた。 では早速、披露しよう。 動作デモ も用意したので、よろしければ試してもらいたい。 ソースコード # ! /bin/sh # # シェルスクリプトでHTTPセッションを張るテスト # ・このシェルスクリプトを動かすには、標準UNIXコマンド以外に下記のものが必要 # - cgi-name (CGI変数を正規化する。Open usp Tukubaiコマンド) # https://github.com/usp-engineers-community/Open-usp-Tukubai/blob/master/COMMANDS.SH/cgi-
Unixの上でsed, awk, Python, Perl などを使ってファイルを行ごとに扱うためには、各行は LF という文字コード(\n)で区切られていないといけない。しかし、他のシステムで作られたファイルは異なる改行コードを用いているため、一旦unix用の改行コードに変換する必要がある。 1.改行コードの調べ方 1.A nkfを使う nkfを入れてあれば、Terminalから次のように打つだけ。 $ nkf -g foo.txt 1.B Octal dump 例えば、foo.txtというファイルを調べたければ、Terminalを開いて次のようにする。 $ od -c foo.txt | less 表示される文字の中に混じっている\n や\r\nを見つけ、下の表と比べる。 システム改行コードod -c での見え方
B! 250 0 0 0 GitHubで面白そうなシェルスクリプトを探してる時に見つけた Spark by holman について。 数値を棒グラフ上に表示してくれるスクリプトです。 Spark 使用例 Spark Spark は数値群を引数に与えるか標準入力で与えてあげると その数値群を棒グラフに変換してくれるシェルスクリプトです。 インストールはGitHubのレポジトリ から直接sparkというスクリプトファイルを取ってきてPATHの通った所に入れるか、 MacであればHomebrewで $ brew install spark でsparkコマンドが使えるようになります。 使い方は非常にシンプルで $ spark 0 20 40 60 80 100 ▁▂▃▅▆█ こんな感じで数値を与えるとそれを棒グラフにしてくれます。 インプットに使える数字は少数も使えますが、 実際に使われる際には
これは備忘録。 色々あって、まだ具体的なモノを何も作ってもないのにシェルスクリプトのパフォーマンス絡みでネタを収集してしまったので、ひとまずまとめてみた。 shellshock(bashのアレ)があったばかりなので、ちっとばかり微妙かも。 計測してボトルネックを探す まずは何よりも計測すること。time(1)を活用すべし。 データ量が多いと問題が表面化するのが定番のパターンなので、ワンライナー等でさくっとテストデータを作成して実験すると吉。 ループ構文よりもテキストフィルタを使う 一般的には、ループ構文を使うよりも、パイプでテキストフィルタに連結して処理した方が高速だ。 # NG seq 1 1000000 | while read i; do echo "$i"; done # NG # while readほどではないが遅い # (bashでは動いたが、dashやbusyboxのshで
最近のFreeBSDには「bsdinstall」というべんりツールが付属していて、どれくらい便利かっていうとワンライナーでOSのインストールが完了するくらい便利なのです。 環境 Windows7 64bit VirtualBox インストールメディア:FreeBSD-10.1-RELEASE-amd64-disc1.iso 手順 ①インストールメディアからブートします。②「2. Boot Single User」を選択します。 ③/bin/shのままログインし、おもむろに以下のワンライナーを入力します。 mdmfs -s 100m md1 /tmp && printf 'PARTITIONS=ada0\nDISTRIBUTIONS="base.txz kernel.txz"\n'>/tmp/a && bsdinstall script /tm
Dec 5, 2010 • nlfiedler For whatever reason, this is harder than it should have been. All I wanted to do was replace a particular expression with a newline character (0x10). My preference is typically to script such tasks, and the sed command is the perfect fit. This would be simple on just about any system, except for Mac OS X, where apparently all the standard advice is difficult to apply. Worse
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く