BASH_VERSION

表題の通り、”bash“の”version“について。

■ 環境

  • Mac OSX El Capitan
  • Ubuntu 16.04

■ BASH_VERSION

`bash`のversionを得る為には変数として入っているらしい。

Macで実行。

$ echo ${BASH_VERSION}
3.2.57(1)-release
$

Ubuntu 14.04で実行。

$ echo ${BASH_VERSION}
4.3.48(1)-release
$

他にもショートカットキー(?)があるようだ。

control + X
control + V

Macで実行。

$
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin15)
$

Ubuntu 16.04で実行。

$
GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)
$

以上。

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で改行文字を削除

apt-getでエラー

Ubuntuにおいて表題の通り。

■ 環境

  • Ubuntu 16.04

■ apt-get

下記のようなエラーが出た。

$ sudo apt-get upgrade
E: Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)
E: Unable to lock directory /var/lib/apt/lists/
$

周囲の使っていそうな人に確認したが、現在は誰も操作をしていないとのこと。しばらく待ったが状況は変わらなかったので下記で対処する。

$ ps -ef | grep apt

`apt-get`のプロセスを探して`kill`する。その後、下記で回復させる。

$ sudo dpkg --configure -a

念のため、完了後に下記も実施しておく。

$ sudo apt-get update
$ sudo apt-get upgrade

以上。