前回に続き、Ubuntu14.04 メモです。
Ubuntu10.04 では、以下のように mail コマンドで sendmail のオプションが使用できていました。
MAIL(1) BSD General Commands Manual MAIL(1)
NAME
mail, mailx, Mail ― send and receive mail
SYNOPSIS
mail [-dEIinv] [-a header] [-b bcc-addr] [-c cc-addr] [-s subject] to-addr ... [-- sendmail-options ...]
mail [-dEIiNnv] -f [file]
mail [-dEIiNnv] [-u user]
ハイフン 2 つ付けて以下のようにしていました。
$ mail -s "subject" to@xxx -- -f from@xxx
Ubuntu14.04 では、sendmail のオプションが 指定できなくなっていました。 (指定すると、送信先のアドレスと判定されてしまいます)
MAILX(1) User Commands MAILX(1) NAME mailx - send and receive Internet mail SYNOPSIS mailx [-BDdEFintv~] [-s subject] [-a attachment ] [-c cc-addr] [-b bcc-addr] [-r from-addr] [-h hops] [-A account] [-S variable[=value]] to-addr . . . mailx [-BDdeEHiInNRv~] [-T name] [-A account] [-S variable[=value]] -f [name] mailx [-BDdeEinNRv~] [-A account] [-S variable[=value]] [-u user]
前回の話のように bsd-mailx から heirloom-mailx に 替わったからかと思い mail コマンドを bsd-mailx に戻してみました。
$ sudo update-alternatives --config mailx
There are 3 choices for the alternative mailx (providing /usr/bin/mailx).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/heirloom-mailx 60 auto mode
1 /usr/bin/bsd-mailx 50 manual mode
2 /usr/bin/heirloom-mailx 60 manual mode
3 /usr/bin/mail.mailutils 30 manual mode
Press enter to keep the current choice[*], or type selection number: 1
update-alternatives: using /usr/bin/bsd-mailx to provide /usr/bin/mailx (mailx) in manual mode
しかし やはり、sendmail のオプションが なくなっていました。
MAIL(1) BSD General Commands Manual MAIL(1) NAME mail, mailx, Mail ― send and receive mail SYNOPSIS mail [-dEIinv] [-a header] [-b bcc-addr] [-c cc-addr] [-s subject] to-addr ... mail [-dEIiNnv] -f [file] mail [-dEIiNnv] [-u user]
ちなみに Ubuntu14.04 の heirloom-mailx では、送信元は以下のように指定します。
$ mail -s "subject" -r from@xxx to@xxx
Ubuntu14.04 での話です。
mail コマンドのシンボリックリンクを追っていきます。
$ readlink -f `which mail` /usr/bin/heirloom-mailx
heirloom-mailx です。
Ubuntu10.04 では、bsd-mailx でした。
$ readlink -f `which mail` /usr/bin/bsd-mailx
複数のメールパッケージを入れている場合は update-alternatives コマンドで 切り替えることができます。
$ sudo update-alternatives --config mailx There are 3 choices for the alternative mailx (providing /usr/bin/mailx). Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/bin/heirloom-mailx 60 auto mode 1 /usr/bin/bsd-mailx 50 manual mode 2 /usr/bin/heirloom-mailx 60 manual mode 3 /usr/bin/mail.mailutils 30 manual mode Press enter to keep the current choice[*], or type selection number:
広義の HTML5 は色々と進化をとげていますが 狭義の HTML5 としてのタグや属性も追加・削除があります。
今回は HTML5 で追加された <progress> タグです。
<progress> は 「進捗」を表すタグです。 対応しているブラウザであれば 以下のようにプログレスバーを表示してくれます。
(Firefox)
(GoogleChrome)
Windows のファイルコピーや ブラウザのロード時に表示される アレですね。
記述は簡単で、次のようになります。
<progress value="0" max="100">0%</progress> <progress value="15" max="100">15%</progress>
「進捗」を表現するためのものなので 温度などの表示には使いません。 (<meter> というタグがあります)
また、 value 属性を定義しないと ブラウザによっては 「ただの進捗中」を表現してくれます。
<progress>(読み込み中)</progress>
(Firefox)
(GoogleChrome)
(矢印は動きのイメージです。実際には表示されません)
これなら進捗率が取得できない場合にも進捗中であることを表現できますね。
これまで「進捗バー」は、画像やスタイルで工夫して表現していました。 しかしそれでデータとして扱うのが大変です。 HTML5なのに、デザイン寄りにも見えるこのタグですが タグとして明確に意図を表現できるようになり 見た目はブラウザ(とスタイル)が整えてくれるようになったわけです。
ちょっと気になったのでメモ。 環境は Ubuntu14.04 です。
設定する前。
$ locale
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
LC_ALL に C を設定した場合。
$ env LC_ALL=C locale LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_CTYPE="C" LC_NUMERIC="C" LC_TIME="C" LC_COLLATE="C" LC_MONETARY="C" LC_MESSAGES="C" LC_PAPER="C" LC_NAME="C" LC_ADDRESS="C" LC_TELEPHONE="C" LC_MEASUREMENT="C" LC_IDENTIFICATION="C" LC_ALL=C
LANG に C を設定した場合。
$ env LANG=C locale LANG=C LANGUAGE=en_US:en LC_CTYPE="C" LC_NUMERIC="C" LC_TIME="C" LC_COLLATE="C" LC_MONETARY="C" LC_MESSAGES="C" LC_PAPER="C" LC_NAME="C" LC_ADDRESS="C" LC_TELEPHONE="C" LC_MEASUREMENT="C" LC_IDENTIFICATION="C" LC_ALL=
LC_ALL に設定した場合は LANG は変わりませんでした。
この前の CERTUTIL を使うと ファイルのハッシュ値も求めることができます。
C:\> CERTUTIL -hashfile test.txt SHA1 SHA1 ハッシュ (ファイル decoded.txt): 05 f6 94 17 04 da 46 18 40 dd da a0 a8 87 0c 9a 21 cb 6e 17 CertUtil: -hashfile コマンドは正常に完了しました。 C:\> CERTUTIL -hashfile test.txt MD5 MD5 ハッシュ (ファイル decoded.txt): 77 c1 6d 26 74 1b 41 91 c9 25 8b 59 61 a0 c4 d3 CertUtil: -hashfile コマンドは正常に完了しました。
不要な行を FIND コマンドで取り除きます。
C:\> CERTUTIL -hashfile test.txt SHA1 | FIND /V ":"
05 f6 94 17 04 da 46 18 40 dd da a0 a8 87 0c 9a 21 cb 6e 17
間の空白も取り除きます。 FOR コマンドだと簡単です。
C:\> @FOR /F "delims=/" %i IN ('CERTUTIL -hashfile test.txt SHA1 ^| FIND /V ":"') DO @((SET ITEM=%i) && (ECHO %ITEM: =%))
05f6941704da461840dddaa0a8870c9a21cb6e17
何かに使えそうですね。
Windows のコマンドプロンプトには CERTUTIL というコマンドがあります。 証明書とかをアレコレするコマンドなのですが このコマンドを使うことで base64 ファイルのデコードができます。
[参考]
Windowsコマンド集 - certutil:ITpro
まず Linux で base64 エンコードしたファイルを作ります。 (別にLinuxで作る必要はありません)
$ sudo vi source.txt $ cat source.txt おはよう こんにちは こんばんは $ cat source.txt | nkf -s | base64 | tee encoded.txt gqiCzYLmgqQKgrGC8YLJgr+CzQqCsYLxgs6C8YLNCg==
このファイルを Windows に持ってきて デコードしてみます。
C:\> CERTUTIL -decode encoded.txt decoded.txt 入力長 = 44 出力長 = 31 CertUtil: -decode コマンドは正常に完了しました。 C:\> TYPE decoded.txt おはよう こんにちは こんばんは
CERTUTIL コマンドでエンコードもできます。
C:\> CERTUTIL -encode decoded.txt encoded.txt 入力長 = 31 出力長 = 102 CertUtil: -encode コマンドは正常に完了しました。 C:\> TYPE encoded.txt -----BEGIN CERTIFICATE----- gqiCzYLmgqQKgrGC8YLJgr+CzQqCsYLxgs6C8YLNCg== -----END CERTIFICATE-----
1行目にヘッダーが出力されるコマンドの結果の 2行目以降のみをソートしようと思って力技。
$ df -T | sed '1d' | sort
sed で 1行目を削除しています。
で、ヘッダー行を追加。
$ (df -T | head -n 1) && (df -T | sed '1d' | sort)
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/sda1 ext3 19091584 2018084 16097016 12% /
none tmpfs 102400 0 102400 0% /run/user
none tmpfs 16432604 0 16432604 0% /run/shm
none tmpfs 4 0 4 0% /sys/fs/cgroup
none tmpfs 5120 0 5120 0% /run/lock
tmpfs tmpfs 3286524 844 3285680 1% /run
udev devtmpfs 16421864 4 16421860 1% /dev
PostgreSQL の 現在実行中の psql で、パラメータを表示するには "SHOW" というコマンドを使用します。
psql=# SHOW checkpoint_segments;
checkpoint_segments
---------------------
32
(1 row)
"SHOW ALL" だと一覧を表示することができます。
psql=# \x psql=# SHOW ALL; -[ RECORD 1 ]------------------------------------------------------------------- name | allow_system_table_mods setting | off description | Allows modifications of the structure of system tables. -[ RECORD 2 ]------------------------------------------------------------------- name | application_name setting | psql description | Sets the application name to be reported in statistics and logs. -[ RECORD 3 ]------------------------------------------------------------------- name | archive_command setting | (disabled) description | Sets the shell command that will be called to archive a WAL file.
知らないオプションだったので、メモ。
$ netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
localnet * 255.255.255.0 U 0 0 0 eth0
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
たいしたことではないのですが。
コマンドの結果にヘッダーを付けたかったんですが cat でできたっけ?どうしようかと考えて結果力技。
$ (echo "MByte Directory") && (du -sm /home /opt /tmp /var)
MByte Directory
1 /home
1 /opt
87 /tmp
2 /var
コマンドをカッコで囲んで && でつなげたらできました。