UNIX

シェルスクリプトで $0 使うときの注意

これも同じメモに書いてあった小ネタ。/Users/username/test.sh というファイル名のスクリプト中に echo $0 とあった場合、$0 は起動時のパスになるので、 % ./test.sh ./test.sh % % /Users/username/test.sh /Users/username/test.sh % % ~/test.sh /Users…

最新のファイルをtailで表示する方法

ファイル名をワイルドカードで指定して、一番最近変更されたファイルを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やってみた。

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…

JSLinuxでrm -rf / をしてみた

こうなりました。 /procは今動いている仮想ファイルなので消せないんですね。JSLinuxではlsコマンドが外部コマンドなので、lsも実行できないんですね。 http://bellard.org/jslinux/

はじめてのvi&Vim (エッセンシャルソフトウェアガイドブック)

viの使い方をチェックしようと購入していたが、1年以上積ん読だったのを消化。xpで2文字を入れ替えるという表現に、たしかにxとpを続けて入力すればその通りなんだけど、右手と左手で交互に入力する単語をよくタイポするので、感心した。巻末のvi/set/exのコ…

vimのJコマンドは2Jと同じ

例えば、こんなテキストファイル 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 を使うことが多い。が、普通は片方しか入っていないし、互換性も全く無いというや…

pgrepコマンド

「grep \[h\]ttpd」とした場合に、このgrepのプロセスは「grep [h]ttpd」となるのですが、「grep \[h\]ttpd」の「\[h\]ttpd」自体は正規表現(普通は[abc]とかやってaかbかcにマッチさせたりしますね)で「httpd」にマッチさせることになるため、「grep [h]ttp…

自宅のマシンにFedora入れました。

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…

sortコマンドとuniqコマンドをパイプするよりもsortの-uオプション

2016/05/30 更新 labs.unoh.net/2008/07/post_124.html にリンクを貼っていましたが、ドメイン乗っ取りによりマルウェア配布サイトになってしまったようで、リンクを削りました。 これは↓のようにsortとuniqをパイプで繋げるだけでできます。 各行がいくつ重…

構成管理外のディレクトリはドットファイルにすればよい

リリース対象外だけど、個人用の一時ディレクトリ等が開発マシン上に必要になるときがあります。それが、テスト用のスクリプト等の邪魔になってしまう可能性があります。例えば、ディレクトリ数を確認する処理などが違ってしまいます。そういう時はディレク…

audsysコマンド

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…

LPICの「Linux道場 入門編」読みました。

金曜日に読んだ【第5回】ブートローダがUbuntuの復旧の助けになりました。 【第1回】Linuxとは 【第2回】ディストリビューションとは 【第3回】LinuxとOSS 【第4回】H/W(PC)とLinux 【第5回】ブートローダ 【第6回】Linuxの構造 【第7回】GUIとCUI 【第8回】…

デュアルブートのUbuntu領域をWindowsからうっかり削除してしまった場合の対処

IDEのHDDにS-ATA変換のアダプタをつないでパーティションを削除する作業をしようとしていたのですが、認識されていないのに気づかず、誤って起動ドライブ側のUbuntuの領域を削除してしまいました。以下のサイトを参考にして復旧を試みました。(要Windowsイ…

scriptコマンドも効果的な使い方とメモ

以下のようにやってみた。 作業をシェルスクリプトにまとめる際、忘れてはいけないおまじないがあります。各コマンドの終了ステータス($?)の確認および表示する シェルスクリプトの最初と最後に date コマンドを実行する 影響を与えそうな情報は処理を始める…

manコマンドがあってよかったと思うとき

man asciiでASCIIコード表とviでの入力方法が出ます。HP-UXでしか使ったことないですが。

kshでPWD=/hogeと打ってみた。

UNIX初心者にオススメしまくりの『UNIX先生』に「環境変数PWDに値突っ込んだらその値のディレクトリ移動しちゃうよ」的なことが書いてあったので、会社のHP-UXのkshでやってみました。 ちなみに、envコマンドで確認すると PS1=[$PWD] と設定してあるので、プ…

commコマンド

sdiffコマンドはソースのようなファイルの比較に向いていて、commコマンドはテーブルのダンプのようなファイルの比較に向く。入力ファイルにsort -uをあらかじめかけておくのが吉。

「平気で窓を割る人たち」

今のプロジェクトでは、exit 0で正常終了する箇所は1つしかない形のシェルスクリプトを作成している。昨日書いた処理をメンバに組み込んでもらったら、いつの間にか正常終了の出口が2つになっていた。異常系の処理は省いたが以下のような形で対象性が悪い…

rcpコマンドでサーバ間の同期処理をする簡易ジョブネット

「サーバ2〜サーバ5が並列にいろんな処理をした後でサーバ1に向けてファイルを転送し、全ファイルを受信し終えたところでそれらをマージする」ということがやりたかったんだけど、受信側ではファイルがちょっとずつ書き込まれていくのでいつ完了したかを知る…

ls dir/* でファイルが存在しないとエラーになることを上手く説明できない。

ls dirA/* というシェルスクリプトを書いてdirAの中にファイルが何もなかった場合にエラーを出して困っていた人に、その理由を上手く説明できませんでした。 ls a* がファイル「a」にマッチするなら ls dirA/ と同じ動作になってもいんじゃないかと考えたの…

awkコマンドのOFSが無効になるとき

懲りずにawkコマンドネタ。問題です。以下のようなファイル(input.dat)があります。 1,2,3,4,5 a,b,c,d,e このファイルに対して次のようにawkコマンドを使うとどのように出力されるでしょうか? awk 'BEGIN{FS=",";OFS="|"}{print}' input.dat 誤回答 1|2|3|…

readコマンドのrオプション

バッククォート(\マーク)が無視されないようにするオプションhttp://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230866/?ST=oss だいぶ前にこのオプションが無くてバグになった。そのときのメモのサルベージ。

FFFTPでUNIXのドットファイルをWindowsに持ってくる

今のプロジェクトのプラットフォームはUNIX(HP-UX)なのですが、コーディングをWindowsのテキストディタ(秀丸やサクラディタ等)を使う人が多いせいもあり、Windows上にUNIXのディレクトリ構成を真似たフォルダ構成を作ってTortoiseSVNで管理しています(UNI…

完結awkコマンド

案外アクション部分のprint以下に$30までしか書いてなったというオチかもしれない。。。 ずばりこれでしたorz。ごめんなさい。$200でしっかりエラーになることを確認しました。

続・awkコマンドのフィールド数

いい加減な情報にツッコミのトラックバックを頂いた。ありがとうございます。 どういう検証しているかにもよるかもしれませんが、それは少なすぎるような気がします。 http://d.hatena.ne.jp/Rocco/20071006/p9 試したコードは以下のような感じ。 awk -F"|" …

awkのフィールド数

今の環境は$30が限界。

sortコマンドでエラー

/varの下がいっぱいだと言って落っこちた。作業していたディレクトリは別ボリュームだったので、どうやら一時ファイルが大きすぎたらしい。