今時のLinuxならsystemd使ってるので、timedatectlコマンド使えば一発で設定できます。
$ date
Tue Feb 18 20:43:20 UTC 2020
$ sudo timedatectl set-timezone Asia/Tokyo ←これ
$ date
Wed Feb 19 05:43:35 JST 2020
list-timezones引数でタイムゾーンリスト表示。
$ timedatectl list-timezones
Africa/Abidjan
Africa/Accra
…
UTC
引数なしで現在の状態を確認。
$ timedatectl
Local time: Wed 2020-02-19 05:48:30 JST
Universal time: Tue 2020-02-18 20:48:30 UTC
RTC time: Tue 2020-02-18 20:48:30
Time zone: Asia/Tokyo (JST, +0900)
Network time on: yes
NTP synchronized: yes
RTC in local TZ: no
昔はOSのインストール途中でタイムゾーン設定してたけど、今時はAWS EC2とかGCP ECとかイメージコピーして立ち上げる機会が多くてデフォルトUTCになってるんでサクッっと設定しておきましょう。
seqコマンドのゼロサプレスなし(ゼロ抑制なし=先頭に0を付ける)のやり方を度々忘れるので備忘録として書いておく。
まず普通にseq。(便宜上INCREMENT=50にしてる)
$ seq 1 50 101
1
51
101
桁合わせに0を入れたいなら単純に-wオプションでOK。
$ seq -w 1 50 101
001
051
101
seqコマンドには-fというprintfと同様の書式が使えるオプションが用意されているのでこれを使う手もある。ただしオプション説明に“use printf style floating-point FORMAT”とあるのであくまでも浮動小数関連フォーマット指定になる。つまり%02gはOKだけど%02dはダメ。
ゼロサプレスなしの最低二桁。
$ seq -f %02g 1 50 101
01
51
101
ゼロサプレスなしの三桁。
$ seq -f %03g 1 50 101
001
051
101
ゼロサプレスなしの四桁。
$ seq -f %04g 1 50 101
0001
0051
0101
cygwinでテキストファイルの改行コードを変更するときは、unix2dos, unix2mac, dos2unix, mac2unix コマンドを使うと簡単にできます。-hオプション付けると詳細な使い方が表示されますが、ほとんどの場合は引数に変換対象ファイル名を指定すれば事足りると思います。
・元のファイルはUnix改行コード。(LF)
$ file sample.txt
sample.txt: ASCII text
・Windows,DOS改行コードに変換。(CRLF)
$ unix2dos sample.txt
unix2dos: converting file sample.txt to DOS format …
$ file sample.txt
sample.txt: ASCII text, with CRLF line terminators
・Mac改行コードに変換。(CR)
$ unix2mac sample.txt
unix2mac: converting file sample.txt to Mac format …
$ file sample.txt
sample.txt: ASCII text, with CR line terminators
REGZA 37Z9000 の外付けHDD(ベアドライブ・SATA-USB変換ケーブルで接続)が突然認識しなくなりました。いや、認識しなくなったというか、USBを接続し直すと新しいHDDとして再登録&フォーマットを要求されるようになってしまった。こうなる直前は録画番組が再生できたりできなかったりという不安定な状態でした。
録画済み番組が大量にあるのでなんとか復旧させようといろいろ調べたらレグザHDD復旧ソフト「REGZA HDD Easy Repair」(またはここ)なるものを公開してる人がいたので試したら直った!GJ!
復旧手順はリンク先に書いてあるので省略。ちなみに私は Xubuntu 11.10 (32bit) を使いました。一度64bit版で試したら復旧ツールのインストールができませんでした。また、LAN接続してないとインストールできなかったような気がしますが何かの間違いかもしれません。
復旧後は問題なく使えてます。
Macのlessコマンドでcompressやgzip圧縮されたテキストファイルを自動展開して閲覧できるようにするやりかた。(Macに限った話ではないですけどね…)
1. lesspipe.shファイルをどこかに作成する。
#!/bin/sh
case "$1" in
*.Z) uncompress -c $1 2>/dev/null ;;
*.gz) gzip -dc $1 2>/dev/null ;;
*.bz2) bzip2 -dc $1 2>/dev/null ;;
esac
2. lesspipe.shに実行権限を付与。
chmod +x lesspipe.sh
3. LESSOPEN環境変数を以下のように設定。lesspipe.shのパスは環境に合わせて変更すること。
export LESSOPEN="|~/Documents/shells/lesspipe.sh %s"
以上で、less readme.txt.gz などとすれば拡張子にあわせて自動的に展開してくれるようになります。詳しいことはlessのオンラインマニュアル(man less)を参照。
ターミナル起動するたびに有効にしたいときは.bashrcにexport LESSOPEN…行を書いておけばいいのですが、Macだと多分.bashrcも.bash_profileもないでしょうからそれぞれ以下のように設定しておいてください。
~/.bashrc
export LESSOPEN="|~/Documents/shells/lesspipe.sh %s"
~/.bash_profile
if [ -f ~/.bashrc ] ; then
. ~/.bashrc
fi
昔はUnixコマンドの-h
オプションといえばヘルプだったような気がするのですが、今はhuman readableな出力処理が割り当てられているコマンドが結構あります。以下はlsコマンドのオンラインマニュアルからの引用。関連オプション--si
も一緒に引用。
-h, --human-readable
with -l, print sizes in human readable format (e.g., 1K 234M 2G)
--si likewise, but use powers of 1000 not 1024
つまり人間が見てわかりやすいようにキロバイトならK、メガバイトならMを付けた形で表示してくれるということです。--si
は国際単位系に合わせて基数1000で表示します。(付けなければ基数1024)
実行結果は以下のとおり。
$ ls -l
total 2128
-rw-r--r-- 1 foo foo 1 2010-01-16 09:41 test.1B
-rw-r--r-- 1 foo foo 1000 2010-01-16 09:39 test.1KB
-rw-r--r-- 1 foo foo 1024 2010-01-16 09:39 test.1KiB
-rw-r--r-- 1 foo foo 1000000 2010-01-16 09:40 test.1MB
-rw-r--r-- 1 foo foo 1048576 2010-01-16 09:40 test.1MiB
$ ls -lh
total 2.1M
-rw-r--r-- 1 foo foo 1 2010-01-16 09:41 test.1B
-rw-r--r-- 1 foo foo 1000 2010-01-16 09:39 test.1KB
-rw-r--r-- 1 foo foo 1.0K 2010-01-16 09:39 test.1KiB
-rw-r--r-- 1 foo foo 977K 2010-01-16 09:40 test.1MB
-rw-r--r-- 1 foo foo 1.0M 2010-01-16 09:40 test.1MiB
$ ls -lh --si
total 2.2M
-rw-r--r-- 1 foo foo 1 2010-01-16 09:41 test.1B
-rw-r--r-- 1 foo foo 1.0k 2010-01-16 09:39 test.1KB
-rw-r--r-- 1 foo foo 1.1k 2010-01-16 09:39 test.1KiB
-rw-r--r-- 1 foo foo 1.0M 2010-01-16 09:40 test.1MB
-rw-r--r-- 1 foo foo 1.1M 2010-01-16 09:40 test.1MiB
わかりやすくていいですね。ls以外でもdfやduなどで使えます。
UnixやLinuxのようなCUI画面ではコマンドの実行結果が次の行に表示されますが、同じコマンドを連続実行するときは実行結果を同じ位置に表示し続けるほうが見やすい場合もあります。そんなときに使えるのがwatchコマンドです。watchコマンドは引数で指定したコマンドを定期的に実行してフルスクリーンで表示してくれます。
watch date
日本語が通らないようなのでLANG=Cでデフォルトロケールにしたほうがよいかもしれません。
LANG=C watch date
コマンド実行インターバルは-nオプションで指定。デフォルトは2秒なので、1秒間隔で実行したいときはこうします。
watch -n 1 date
-dオプションを付けると更新箇所をハイライトしてくれます。
watch -n 1 -d date
watchコマンドはLinuxならたぶん使えます。他のOSはわかりません。どなたかがportingしたものがどこかに落ちてるかもしれません。FreeBSDのwatchコマンドはttyの監視という全く別のコマンドなので気をつけましょう。watchコマンドがないときはこんなやりかたもあります。
while true; do clear; LANG=C date; sleep 1; done
テストデータとして固定長ファイルを作成するときはddコマンドを使うと簡単に作れます。1MBの空のファイル(全データnull文字)を作成する方法は以下のとおり。
dd if=/dev/zero of=zero1MB1.dat count=1024 bs=1024
dd if=/dev/zero of=zero1MB2.dat count=1024 bs=1K
dd if=/dev/zero of=zero1MB3.dat count=1 bs=1M
ifはデータ入力元、ofはデータ出力先、bsは1回当たりの処理量をバイトで指定、countは処理の回数。なので、上の3つのコマンドの生成ファイルは全て空の1MBのファイルになります。
1MBのランダムファイル(データは乱数)を作成する方法は以下のとおり。
dd if=/dev/urandom of=urandom1MB.dat count=1024 bs=1024
forとかseqコマンドと組み合わせると複数ファイルの生成を自動化できます。
for i in `seq 0 9`
do
dd if=/dev/urandom of=urandom1MB$i.dat count=1024 bs=1K
done
これでurandom1MB0.dat
からurandom1MB9.dat
までの10個の固定長乱数ファイルを一気に作れます。注意点ですが、ddのofで上書き可能なファイルが指定されたとき、ddは容赦なく上書きするので気をつけましょう。
パソコンとかプログラミングとか。その他、人柱的買い物など。