UNIX
これも同じメモに書いてあった小ネタ。/Users/username/test.sh というファイル名のスクリプト中に echo $0 とあった場合、$0 は起動時のパスになるので、 % ./test.sh ./test.sh % % /Users/username/test.sh /Users/username/test.sh % % ~/test.sh /Users…
ファイル名をワイルドカードで指定して、一番最近変更されたファイルをtailで表示する。 ls -t /path/to/prefix-*.log | head -1 | xargs tail -f ls -t /path/to/prefix-*.log | head -1 | xargs less 最近変更されたファイルをtailで表示する。 - こせきの…
bashの設定を調べていたはずが、いつのまにかFizzBuzzを書いていたのでさらします。 #!/bin/bash if [ $# -ne 1 ] ;then echo "You have to give 1 argument. : ./`basename $0` num" exit 1 fi nums={1..$1} nums=`eval echo $nums` # Before refactoring f…
こうなりました。 /procは今動いている仮想ファイルなので消せないんですね。JSLinuxではlsコマンドが外部コマンドなので、lsも実行できないんですね。 http://bellard.org/jslinux/
viの使い方をチェックしようと購入していたが、1年以上積ん読だったのを消化。xpで2文字を入れ替えるという表現に、たしかにxとpを続けて入力すればその通りなんだけど、右手と左手で交互に入力する単語をよくタイポするので、感心した。巻末のvi/set/exのコ…
例えば、こんなテキストファイル 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, これを下のように、数字5個周期で縦から横に並べ替える編集をしようとします。 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, そこでJコマンドを使うわけですが、Jを1回打つと2行がくっついて、Jを2回打つ…
先日、IRCNet #ruby:*.jp で話題になったのでメモ。シェルスクリプト中で連番や複数回の繰り返しが必要になった場合、BSD系 (4.2BSD以降・Mac含む) では jot、GNU系では seq を使うことが多い。が、普通は片方しか入っていないし、互換性も全く無いというや…
「grep \[h\]ttpd」とした場合に、このgrepのプロセスは「grep [h]ttpd」となるのですが、「grep \[h\]ttpd」の「\[h\]ttpd」自体は正規表現(普通は[abc]とかやってaかbかcにマッチさせたりしますね)で「httpd」にマッチさせることになるため、「grep [h]ttp…
Pentium 3 900MHz、メモリ384MB(128+256)という非力なマシンにFedora 8を入れました。120GBの2.5インチIDE HDDが5600円くらいかかりました。メモリは128MBだと中古400円ぐらいでしたが、256MBだと1500円ぐらいしますね。512MBでは2,980円くらいでした。最初…
カレントディレクトリにあるファイルの名前を、 たとえば、*.html を *.htm と名前を変更するという課題に対し どのぐらいエレガントに書けるかというのを比較してみる。 複数のファイルの名前をまとめて変更する - 技術メモ帳 僕が書くと for file in *.htm…
2016/05/30 更新 labs.unoh.net/2008/07/post_124.html にリンクを貼っていましたが、ドメイン乗っ取りによりマルウェア配布サイトになってしまったようで、リンクを削りました。 これは↓のようにsortとuniqをパイプで繋げるだけでできます。 各行がいくつ重…
リリース対象外だけど、個人用の一時ディレクトリ等が開発マシン上に必要になるときがあります。それが、テスト用のスクリプト等の邪魔になってしまう可能性があります。例えば、ディレクトリ数を確認する処理などが違ってしまいます。そういう時はディレク…
HP-UX 11i v3に標準で備わる監査機能audsysは、「システムコールレベルで監査ログを記録する」機能。シェル上で実行されたコマンドの履歴を単に記録するのではなく、HP-UX上で実行されたすべてのプロセスのシステムコールをリアルタイムに記録できる。 http:…
ふと気になって、関数の再帰呼び出しをしらべてみました。OSはHP-UX 11iです。 #!/usr/bin/ksh typeset -i index function recursive_function { let index=${index}+1 if [ $index -eq 10 ]; then : # ヌルコマンドで関数を抜ける else echo $index recursi…
金曜日に読んだ【第5回】ブートローダがUbuntuの復旧の助けになりました。 【第1回】Linuxとは 【第2回】ディストリビューションとは 【第3回】LinuxとOSS 【第4回】H/W(PC)とLinux 【第5回】ブートローダ 【第6回】Linuxの構造 【第7回】GUIとCUI 【第8回】…
IDEのHDDにS-ATA変換のアダプタをつないでパーティションを削除する作業をしようとしていたのですが、認識されていないのに気づかず、誤って起動ドライブ側のUbuntuの領域を削除してしまいました。以下のサイトを参考にして復旧を試みました。(要Windowsイ…
以下のようにやってみた。 作業をシェルスクリプトにまとめる際、忘れてはいけないおまじないがあります。各コマンドの終了ステータス($?)の確認および表示する シェルスクリプトの最初と最後に date コマンドを実行する 影響を与えそうな情報は処理を始める…
man asciiでASCIIコード表とviでの入力方法が出ます。HP-UXでしか使ったことないですが。
UNIX初心者にオススメしまくりの『UNIX先生』に「環境変数PWDに値突っ込んだらその値のディレクトリ移動しちゃうよ」的なことが書いてあったので、会社のHP-UXのkshでやってみました。 ちなみに、envコマンドで確認すると PS1=[$PWD] と設定してあるので、プ…
sdiffコマンドはソースのようなファイルの比較に向いていて、commコマンドはテーブルのダンプのようなファイルの比較に向く。入力ファイルにsort -uをあらかじめかけておくのが吉。
今のプロジェクトでは、exit 0で正常終了する箇所は1つしかない形のシェルスクリプトを作成している。昨日書いた処理をメンバに組み込んでもらったら、いつの間にか正常終了の出口が2つになっていた。異常系の処理は省いたが以下のような形で対象性が悪い…
「サーバ2〜サーバ5が並列にいろんな処理をした後でサーバ1に向けてファイルを転送し、全ファイルを受信し終えたところでそれらをマージする」ということがやりたかったんだけど、受信側ではファイルがちょっとずつ書き込まれていくのでいつ完了したかを知る…
ls dirA/* というシェルスクリプトを書いてdirAの中にファイルが何もなかった場合にエラーを出して困っていた人に、その理由を上手く説明できませんでした。 ls a* がファイル「a」にマッチするなら ls dirA/ と同じ動作になってもいんじゃないかと考えたの…
懲りずにawkコマンドネタ。問題です。以下のようなファイル(input.dat)があります。 1,2,3,4,5 a,b,c,d,e このファイルに対して次のようにawkコマンドを使うとどのように出力されるでしょうか? awk 'BEGIN{FS=",";OFS="|"}{print}' input.dat 誤回答 1|2|3|…
バッククォート(\マーク)が無視されないようにするオプションhttp://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230866/?ST=oss だいぶ前にこのオプションが無くてバグになった。そのときのメモのサルベージ。
今のプロジェクトのプラットフォームはUNIX(HP-UX)なのですが、コーディングをWindowsのテキストディタ(秀丸やサクラディタ等)を使う人が多いせいもあり、Windows上にUNIXのディレクトリ構成を真似たフォルダ構成を作ってTortoiseSVNで管理しています(UNI…
案外アクション部分のprint以下に$30までしか書いてなったというオチかもしれない。。。 ずばりこれでしたorz。ごめんなさい。$200でしっかりエラーになることを確認しました。
いい加減な情報にツッコミのトラックバックを頂いた。ありがとうございます。 どういう検証しているかにもよるかもしれませんが、それは少なすぎるような気がします。 http://d.hatena.ne.jp/Rocco/20071006/p9 試したコードは以下のような感じ。 awk -F"|" …
今の環境は$30が限界。
/varの下がいっぱいだと言って落っこちた。作業していたディレクトリは別ボリュームだったので、どうやら一時ファイルが大きすぎたらしい。