いろんなコマンド

linuxのshell scriptを、excelなどを使って作った場合、実行できない場合がある。これは改行コードがCR+LFとなっているためである。

実行できるようにするには、二つの方法がある。

まずは、ftpで転送する場合、asciiモードで送信する。テキストファイルは asciiでもbinaryでも表示には問題ないが、改行コードがwindows式のCR+LFではスクリプトとして実行できない。asciiモードで送信すると、改行コードを変換してくれる。

もし、FTPで送受信していないとかで再受信できない場合は、nkfコマンドを使う。これは改行コードや文字コードを変換してくれるコマンドである。

nkf -Lu windows.txt > linux.txt

とやると、改行コードがCR+LFからLFに変換される。nkfコマンドにはほかにもいろいろオプションがあるので確認されたし。

ヒマなのでlinuxコマンドリファレンスに載っているコマンドを片っ端から使ってみた。そして発見したこと。

scriptで記録したログの制御コードを除くには、

cat log.txt|col > log2.txt

でよい。viで %s/^M//g とかやらなくても。


diff3 というコマンドは3つのファイルを比較できる。

diff -u で、結果をunified型式で出力できる。

cmp バイナリファイルの比較。差がなければ何も表示されない。

netstat -r は route と同じ。

grep -v word は、指定した語に一致しない行を出力

grep -i word は、指定した語の大文字小文字を区別せずに検索

lha もある。

bzip2 最近ちょくちょく見かけるが、圧縮率がgzipより高い。が、時間もかかるようだ。

ちなみに lhaはgzipよりちょっと圧縮率が高いようだ。

pushd/popd の使い方。あるディレクトリに居て、一時的にディレクトリを変更してすぐ戻りたい場合に、

pushd /home/aiueo

popd

とやると、戻ってこれる。




Makefile の書き方

TARGET = myfile

all: $(TARGET)

clean:
rm myfile

myfile:
gcc -o myfile myfile.c


myfile.cをコンパイルしてmyfileという名前の実行ファイルを作る。

users ログインユーザの一覧

w でもわかるけど余計な情報がつく

wget ミラーサイトなどを作るときにディレクトリごとコピーできる(未確認)

arping リモートホストにarp requestを送信する。

strings filename 指定したファイル内の文字列を表示する。使ったことはあったが意味を知らなかった。

pstree psの階層表示。どんなときに使うのかは知らないが。

alias コマンドやオプションに別名をつける。

lastlog って実行ファイルだった。いつもログファイルと思ってエディタで開いてしまう。

write username 指定したユーザにメッセージを送る。 write 文字列 ではない。

bmtoa/atobm ビットマップとはWindowsで使う画像のbmpファイルではなく、アイコンなどにつかういわゆる1bitの画像ファイルらしい。使い方はよくわからない。

cjpeg/djpeg/jpegtran jpegの画像変換。回転や反転もできる。

convert 画像のファイル変換、回転

ウィルス

私のパソコンにはウィルス対策ソフトが入っていないし、入れたこともない。

ニュースなどで非常にうるさいので、オンラインスキャンを何度かやってみたことがあるが、一度も検出されたことがない。

ただし感染の経験はある。

一番ひどかったのは仕事で使っているパソコンで、知らない人ではあるが社員の名前が明記されていてvbscriptが添付されているものだったのだが、そのスクリプトをダブルクリックしてしまったのだ。

すぐに大量のメールが送信されたのだが、宛先不明だかなんかで自分に返ってきた。幸い、相手に送信はされなかった。あわててLANケーブルを抜いたのだが、同じように感染してしまった人がけっこういたようである。

あとは、coderedだのnimdaなどが流行っていた頃、自宅のpcにadmin.dllとかいうファイルを見つけたことがある。

それはスキャンしたのではなく、自分で見て気づいたのだ。探すまで気づかなかったくらいだから、もちろんPCに不具合はなかった。

あとインターネットにつなぎ始めたばかりで、spamなどに不慣れなころには、添付ファイルはexeだろうがなんだろうがガンガン開いていたし、リンクも平気でクリックしていた。

ただ、私は3ヶ月に一度くらい再インストールしていたのと、家庭内LANを使うためにルータを入れたことで、ほとんどウィルスの被害はなかった。

誰かにそのウィルスをうつしてたりしたかもしれないが、その人だって私と同程度の被害しかないのだから、そんなに悪かったとは思わない。

私は、ウィルスというものは実は悪意を持って作成されたのではなく、ほとんど自然発生的に生まれたのではないかと考えたことがある。もしかして、単なるバグなんじゃないか、と。

複数シートの特定箇所に同じ文字列を設定するマクロ

複数シートの特定箇所に同じ文字列を設定

Sub macro1()

'すべてのシートを選択(非表示シートがあると失敗する)
Sheets.Select

'A1セルを選択
Range("A1").Select

'アクティブなセルに「はてな」をセット
ActiveCell.Value = "はてな"

'シート1を選択(シートの複数選択を解除)
Sheets(1).Select

End Sub