readlink -f

表題を忘れやすいのでメモ。

■ 環境

  • Amazon Linux

■ readlink

ファイルやディレクトリの絶対パスが取得したい時がある。シンボリックリンクだったり、スクリプト中の実行ディレクトリの場所だったり。そんな時に使ってる。

$ readlink -f .
/home/ec2-user
$

上記の使い方であると`pwd`と一緒なので特に意味がない。下記のような場合に本領を発揮する。

$ pwd
/etc/rc5.d
$ ls -l S99local
lrwxrwxrwx 1 root root 11 Oct  1 08:54 S99local -> ../rc.local
$ readlink -f S99local
/etc/rc.d/rc.local
$

以上。

colordiff

先日表題のコマンドを知ったので試してみた。

■ 環境

  • colordiff 2.8.1
  • Mac OSX El Capitan

■ colordiff

インストール。

$ brew update
$ brew install colordiff

インストールされたものを確認する。

$ brew ls colordiff
/usr/local/Cellar/colordiff/1.0.18/.bottle/etc/colordiffrc
/usr/local/Cellar/colordiff/1.0.18/bin/cdiff
/usr/local/Cellar/colordiff/1.0.18/bin/colordiff
/usr/local/Cellar/colordiff/1.0.18/share/man/ (2 files)
$

これを見て`cdiff`コマンドは、`colordiff`コマンドのaliasかと思ったのだがどうやら違った。使い方が少々違う。下記のようなファイルで試してみた。

$ cat test1
aaa
bbb
ccc
ddd
eee
fff
ggg
$ cat test2
aaa
bbb
ccc
ddd
ddd
eee
fff
ggg
$

通常の`diff`コマンドで試す。

$ diff test1 test2
4a5
> ddd
$ diff -u test1 test2
--- test1    2017-10-17 11:18:51.000000000 +0900
+++ test2    2017-10-17 11:18:59.000000000 +0900
@@ -2,6 +2,7 @@
 bbb
 ccc
 ddd
+ddd
 eee
 fff
 ggg
$

`colordiff`コマンドでは上記がカラー表示された。満足である。`cdiff`でも同じことができるのかと思いきや、、下記のようになってしまった。

$ cdiff test1 test2
aaa
bbb
ccc
ddd
eee
fff
ggg
aaa
bbb
ccc
ddd
ddd
eee
fff
ggg
$

単純に`cat`で連結されただけのように見える。どうやら使い方が違うようである。

$ diff -u test1 test2 | cdiff

これで同じ結果が得られた。

以上。

改行をスペースに置換

表題の通り。テキストファイルの改行をスペースに置換したい。

■ 環境

  • Mac OSX El Capitan

■ tr

`sed`でもいけるかな?と思ったが思い通りにはいかなかった。後々考えてみると”^M“でやらなければいけなかったかな、、と思い立ったのだが後の祭り。`tr`コマンドで実施した。

$ cat example.txt | tr '\n' ' ' 

単なるメモである。

以上。

■ 関連

sedで改行文字を削除

mysqldump: Got errno 32 on write

表題のエラーが出た。

■ 環境

  • MySQL 5.6.34
  • Linux

■ mysqldump

データをバックアップしようとして下記のようなコマンドで実行しようとした。

$ mysqldump -uXXXXX -pXXXXX -hXXXXXXXX database | gzip > backup/$(date '+%Y%m%d').dump.gz

このように実行しようとしたところ、表題のエラーメッセージが出力された。あれ?と思ったが単に出力先のディレクトリを作成していないだけであった…。”backup“ディレクトリに出力しようとしていたのを忘れていたようだ。

ディレクトリに出力するのであれば、事前にちゃんと作成しておこう。またそのディレクトリに書き込み権限があるかも確認しておこう。

以上。

RPMを展開(rpm2cpio)

表題の通り。`rpm2cpio`コマンドでRPMをインストールせずに展開する。

■ 環境

  • CentOS 6.9

■ rpm2cpio

先日のSRPMパッケージを用いて行う。

$ ls -l httpd-2.2.15-60.el6.centos.5.src.rpm

`rpm2cpio`コマンドについて確認。

$ which rpm2cpio
/usr/bin/rpm2cpio
$
$ rpm -qf /usr/bin/rpm2cpio
rpm-4.8.0-55.el6.x86_64
$

通常インストールされているパッケージだけで十分なようである。

実際には下記のように展開する。

$ mkdir tmp
$ cd tmp
$ rpm2cpio ../httpd-2.2.15-60.el6.centos.5.src.rpm | cpio -id
14230 blocks
$

上記で展開された。

以上。