それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

ファイルサイズを取得し、変数に格納する

rubypython からすぐ出来るんですが、bashでやると面倒ですね

ruby

File.size( 'path/to/file' )

python

import os 
os.path.getsize('path/to/file')

bash

どうやるの? ls -l だと余計なものが多いし。。。まさか、cut してgrep する〜?awkする?

いくつかあるけど stat が良さそう

stat -c %s path/to/file

コレを使って

size=$(stat -c %s path/to/file)

まとめ

ほかにも du -k ls -l wc -c なども考えられる。

ぱっと思いついただけで以下の通り。

ls -l path/to/file | cut -d ' '  -f 5
du --apparent-size --block-size=1  path/to/file
wc -c  < path/to/file
find path/to/file --printf=%s
ruby -e 'puts  File.size  ARGV[0]' path/to/file
  • du だとブロックサイズを意識するのが面倒ですね。
  • ls は cut と組み合わせるのが面倒ですね。
  • rubyワンライナーも面倒ですねぇ
  • find は stat とやってること変わらないから面倒ですねぇ。引数位置とかも。
  • wc はありですねぇ

参考資料

http://unix.stackexchange.com/questions/16640/how-can-i-get-the-size-of-a-file-in-a-bash-script

curl でよく使う設定をまとめる ~/.curlrc

curl の基本設定ファイルを作ることが出来る

~/.curlrc

Default config file, see -K, --config for details.

.curlrc に書く書き方は -K で指定する config ファイルと同じ

curl の毎回指定するのめんどくさいオプションを書いておくと楽

とくに、CookieやUser-Agentなど毎回付けるのが面倒なので、config を作ると楽になる。

とりあえず作った

## デフォルトでつけるよくあるヘッダ
header = "Accept-Encoding: gzip, deflate, sdch"
header = "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.76 Safari/537.36"
header = "X-Config-File: ~/.curlrc"

--compressed

X-Config-File は 自分でも curlrc をつけていることを忘れることがあるので、-v した時に気づくように追加しておいた。

gzip / deflate 圧縮を有効にする

header = "Accept-Encoding: gzip, deflate, sdch"
--compress

gzip/deflate で転送しつつ、 --compress で 圧縮されたレスポンスを展開して取得して表示する。

2017-02-15 追加

Cookie も毎回指定するならめんどくさいので、設定に書くことにした。

## cookie
cookie-jar =  /Users/takuya/.curl_cookies
cookie     =  /Users/takuya/.curl_cookies

設定の書き方

どうやらこういう書き方をするといいらしい。

-c path--cookie-jar path とも書くことが出来る。これを cookie-jar = path と書くことが出来る。

これは以下のように読み替えていけばいい

  • -c path
  • --cookie-jar path
  • cookie-jar = path ← 設定ファイル

同じように -b のオプションも同じですね。

  • -b path
  • --cookie path
  • cookie = path ← 設定ファイル

つまり、header の場合はこれを使うと

  • -H value
  • --header value
  • header = value

などと書くことが出来るようですね。

2017-04-11 追記

curlrc がずっと読まれちゃってCookieが維持されちゃうときなど、一時的にcurlrc を無効にしたいときは

curl -q  http:/...

-q オプションを付けることで curlrc の読み込みを一時停止してコマンドを実行することが出来る。

2018/02/15 追加

curlrc はどんなときでも読み込まれる。次のように、明示的にconfig を指定していても ~/.curlrc は読み込まれる。

curl --config yet-another-config  

なので、別の設定ファイルを明示するときや素のcurl が欲しい時は -q をかならず使う。

curl -q  --config yet-another-config  

-q を忘れないようにすること。

更に、-q は最初につける

## これはダメ
curl -v -q 
## これはOK
curl -q -v 

-q オプションは最初につけること

2018-02-04 改訂

compressed になった。

2019-07-22 追記

-K -q の仕様について追記

参考資料

man curl

iphone "装着していることを感じさせないほど薄い"

ELECOM iPhone5/5S用 シェルカバー 薄型スリム クリア(乳白色) 液晶フィルム付き PS-A12PVUCR

f:id:takuya_1st:20170202230338j:plain:w400

iPhone 2012にぴったりフィットしてキズや汚れからしっかり守るポリプロピレン製の薄型シェルカバーと保護フィルムです。 軽くて丈夫でありながら薄くてスリムなので、本体のデザインを損なうことなくキズや汚れをガードします。 前面フルサイズの液晶保護フィルムが付属しています。液晶保護フィルムは、iPhone 2012にぴったりのサイズですので、カットする手間がかかりません。 保護フィルムは、貼り付け面にシリコン皮膜をコーティングした自己吸着タイプです。接着剤や両面テープを使用しないので、本体を汚すことなく手軽に貼り付け・貼り直しができます。 ケースを装着したままで液晶画面の確認、本体の操作、充電・通信ケーブルの接続が可能です。メーカー型番 : PS-A12PVUCR対応機種 : iPhone 2012セット内容 : ケース本体×1、液晶保護フィルム×1材質 : ケース本体:ポリプロピレンカラー : クリアフィルム材質 : 表面:PET、接合面:シリコン

f:id:takuya_1st:20170202230647p:plain:w100f:id:takuya_1st:20170202230651p:plain:w100

おひとつどうですか

ご購入はこちらから → http://j.mp/2jGXxIC

dd で進捗を表示する status=progress

dd の進捗を表示する事ができる

ふとしたことで status の引数を知りました

takuya@Desktop$ dd if=/dev/zero of=out.img bs=1M count=1000  status=progress
711983104 bytes (712 MB, 679 MiB) copied, 1.00343 s, 710 MB/s
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB, 1000 MiB) copied, 1.48507 s, 706 MB/s

man からの抜粋

       status=LEVEL
              The  LEVEL of information to print to stderr; 'none' suppresses everything but error messages,
              'noxfer' suppresses the final transfer statistics, 'progress' shows periodic transfer  statis-
              tics

status をつけたときの表示のタイミング

bs=1M なら 1Mを書くたびに progressが実行される。

## 1G を4回書いたとき=>4回前後
sudo dd if=/dev/zero of=/swap.img bs=1000M count=4 status=progress
## 10Mを 400回書いたとき=>400回前後
sudo dd if=/dev/zero of=/swap.img bs=10M count=400 status=progress

速度的には、bsが大きい方がわずかに早いと思うんだが、progressを見たいときは countを多めにしたほうがぱっと見れる。

その他の方法

通常は SIGNAL USR1

長くかかるときは シグナルを送ればいいんだけど、 status=progress でもいいよね

dd_rescue もいいね

dd より dd_rescue 使うことが多いわ。

2018/02/27 追加

pv コマンドをつかって流してあげたほうが再利用しやすいかも

コマンド(lzop)の圧縮展開の進捗どうですかー?(pvコマンドで進捗を見る) - それマグで!

関連資料

dd でディスクをコピーするよく使う例 - それマグで!

dd_rescueコマンドで、HDDのバックアップ が楽になる - それマグで!

キーチェーンのセキュリティダイアログを自動でチェックする

キーチェーンをスクリプトで自動登録しようとするとダイアログが。。。

f:id:takuya_1st:20170131001918j:plain

自動処理にとても厄介・・・

osascript -l j で解決

javascript 文法で apple script を買いてコマンドにボタンを押させることにした。

var app = Application('System Events')
var p   = app.processes.byName('SecurityAgent')
var w   = p.windows.at(0)
var btn = w.buttons.at(2)
btn.click()

pdfのページの解像度(ピクセル数)を調べる。

pdfinfo でファイルの中身を確認した

PDFの解像度(ページのピクセルサイズが分かった)

また同時に、pdfの権限などもわかった。

Title:          Software Design 2017年2月号
Author:         (株)技術評論社
Creator:        Acrobat 10.1.16
Producer:       Acrobat 10.1.16
CreationDate:   Thu Jan 12 14:45:49 2017 JST
ModDate:        Fri Jan 13 14:19:26 2017 JST
Tagged:         no
UserProperties: no
Suspects:       no
Form:           AcroForm
JavaScript:     no
Pages:          205
Encrypted:      yes (print:yes copy:yes change:no addNotes:yes algorithm:RC4)
Page size:      515.906 x 728.504 pts
Page rot:       0
MediaBox:           0.00     0.00   515.91   728.50
CropBox:            0.00     0.00   515.91   728.50
BleedBox:           0.00     0.00   515.91   728.50
TrimBox:            0.00     0.00   515.91   728.50
ArtBox:             0.00     0.00   515.91   728.50
File size:      64138310 bytes
Optimized:      no
PDF version:    1.6

pdfinfo コマンドでPDFページ数を確認する

pdfinfo コマンドが便利

time pdfinfo Software-Design-2017年2月号_00.pdf
Title:          Software Design 2017年2月号
Author:         (株)技術評論社
Creator:        Acrobat 10.1.16
Producer:       Acrobat 10.1.16
CreationDate:   Thu Jan 12 14:45:49 2017
ModDate:        Fri Jan 13 14:19:26 2017
Tagged:         no
UserProperties: no
Suspects:       no
Form:           AcroForm
JavaScript:     no
Pages:          205
Encrypted:      no
Page size:      515.906 x 728.504 pts
Page rot:       0
File size:      64084898 bytes
Optimized:      no
PDF version:    1.6

real    0m0.086s
user    0m0.072s
sys     0m0.012s

pdfinfo コマンドであれこれ便利になる。

Poppler のパッケージに含まれる。

pdfinfo version 0.26.5
Copyright 2005-2014 The Poppler Developers - http://poppler.freedesktop.org
Copyright 1996-2011 Glyph & Cog, LLC
Usage: pdfinfo [options] <PDF-file>
  -f <int>          : first page to convert
  -l <int>          : last page to convert
  -box              : print the page bounding boxes
  -meta             : print the document metadata (XML)
  -js               : print all JavaScript in the PDF
  -rawdates         : print the undecoded date strings directly from the PDF file
  -enc <string>     : output text encoding name
  -listenc          : list available encodings
  -opw <string>     : owner password (for encrypted files)
  -upw <string>     : user password (for encrypted files)
  -v                : print copyright and version info
  -h                : print usage information
  -help             : print usage information
  --help            : print usage information
  -?                : print usage information

動画の一部分を切り出し(トリミング)する

動画の指定領域をCropして切り出す。

ffmpeg -i input.mp4 -vf crop=160:90:32:18 out.mp4

動画から時間を指定して切り出す方法は→こちら

ターゲット

ターゲットの画像の中の、該当部分(白抜き)のエリアを切り出すことが出来る。

動画の一部分をcrop して切り出すには、

-vf crop:w:h:X:Y

もう少しわかりやすく

-vf crop=幅:高さ:左上X:左上Y

video filter の一種ですね。当然再エンコが発生するのですが、そんなに時間がかかるものではなさそう。

いきなり全部切り出すと辛いので

いきなり全部切り出すと時間がかかるので、指定時間のエリアを数秒ほど切り出して確認するといい。

ffmpeg -i input.mp4 -vf crop=160:90:32:18 -t 10 -ss 10 out.mp4

左上の座標を調べるには

いったん、指定時間の範囲を、画像に変換して調べると楽だと思う。

ffmpeg   -i in.mp4 -ss 10 -vframes 1 -f image2 out.jpg

時間で切り出すには方法は、こちら

takuya-1st.hatenablog.jp

画像に切り出す方法は、こちら

takuya-1st.hatenablog.jp

2019/08/20 更新

crop のvf 指定が変わってたので変更

pvresizeを試してみた

lvm2 のよくわからないものを使うシリーズ

今回はpvresize を使ってみた。

正直言って、何に使うのかがまだ良くわからない。

物理HDDパーティションのサイズが変わるわけでもない。

150GB のディスクから 40GB のPVができた。残りの110GBは未使用というか、使えないで残ってしまう。どうするんだこれ

縮小する。

lv も vg も設定されてない pv を縮小してみた

takuya@:~$ sudo pvresize --setphysicalvolumesize 40GB /dev/sdc1
  Physical volume "/dev/sdc1" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized

縮小結果を確認

takuya@:~$ sudo pvs
  PV         VG   Fmt  Attr PSize   PFree
  /dev/sdc1       lvm2 ---   40.00g  40.00g

物理HDDのサイズを見る

lvm で 150 GB 用意されてる。でもpv は40GB

takuya@:~$ sudo sgdisk -p /dev/sdc
Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048       314574847   150.0 GiB   8300

pvresize でHDDのパーティションいっぱいまで広げてみる。

takuya@:~$ sudo pvresize  /dev/sdc1
  Physical volume "/dev/sdc1" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized

拡張された。

takuya@:~$ sudo pvscan
  PV /dev/sdc1             lvm2 [150.00 GiB]
takuya@:~$

なんのためにあるんでしょうかコレは

HDD交換のときに使うのかな? HDD更新の反映とか?

物理パーティションに割り当てる量を変えたときにLVMのサイズをそれに応じて変えるためでしょうか。

パーティション単位でLVMって実験以外にやらないと思うのでサイズ可変が必要な状況が思いつかない。iSCSINFSをLVMでつかってるときとか?

NAS(Samba)のログイン・パスワードを削除してユーザーを変更する。

Samba にログインしたユーザー名を切り替える。

SambaログインするユーザーはWindowsに記憶されてて切り替えるのが面倒ですよね。一旦接続すると、切断するまで記憶しているし不用意に触ると接続してしまいます。

コントロールパネルの資格情報マネージャーで

保存したユーザ名とパスワードを消せる。

f:id:takuya_1st:20170122135008p:plain

f:id:takuya_1st:20170122134520p:plain

コマンド・プロンプトで切断。

毎回毎回切断作業やExplorerの再起動をするのはめんどくさいので、コマンドから履歴でEnterすれば簡単に切り替えられますね。

net use /delete * 

関連資料

http://takuya-1st.hatenablog.jp/entry/20101224/1293986650

ありがとうございます。

https://mobile.twitter.com/_HODA/status/822011412922798080

桜乃(´ . .̫ . `) (@cerasus26) on Twitter

参考資料

http://tecstaff.blog.so-net.ne.jp/2016-11-26_nasne-Windows10

Windows 10 のエクスプローラーの表示切り替えのショートカット

Windows 10 の表示切り替えが遠くて辛い

リボンメニューは粗悪品。小さいアイコン、大きいアイコン、一覧、詳細 の切り替えだけでちょっとどこにあるか探し回ることになって大変。なんで表示メニュー消しちゃったの・・・

エクスプローラーのレイアウト切り替えのキーボードショートカット

レイアウト    キー
特大アイコン    Ctrl + Shift + 1
大アイコン    Ctrl + Shift + 2
中アイコン    Ctrl + Shift + 3
小アイコン    Ctrl + Shift + 4
一覧    Ctrl + Shift + 5
詳細    Ctrl + Shift + 6
並べて表示    Ctrl + Shift + 7
コンテンツ    Ctrl + Shift + 8

マイクロソフトはどこに書いているの・・・

アクセシビリティにも、Windows10のキーボードショートカットの項目にも該当エントリがないので、存在しないのかと思っちゃったよ。

https://www.microsoft.com/ja-jp/enable/products/keyboard/default.aspx?navIndex=4#ln01

https://support.microsoft.com/ja-jp/help/12445/windows-keyboard-shortcuts

参考資料

Windows10 - エクスプローラーの表示レイアウトの変更(設定) - PC設定のカルマ

Sambaサーバーの接続を確認する。

linux からSambaサーバに接続を試す

Debian から、Sambaサーバに接続、ログイン、閲覧可能なフォルダ一覧を確認。いちいちWindowsに切り替えて確認するのも面倒な話だし。SSHでリモートでSamba接続くらい確認したいよねってことで。

smbclient コマンド

smbclient コマンドで、Samba への接続可否を確認することが出来る。

takuya@:~$ smbclient -L 192.168.2.8
Enter takuya's password:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.5.6]
tree connect failed: NT_STATUS_ACCESS_DENIED

同時にSambaサーバ側で ログを見る

エラーログを見ながらやると更に捗る。

takuya@NAS : $ sudo tail -f /var/log/samba/samba.log
[2017/01/19 18:28:16.477288,  1] smbd/service.c:678(make_connection_snum)
  create_connection_server_info failed: NT_STATUS_ACCESS_DENIED
[2017/01/19 18:28:16.489171,  1] smbd/service.c:678(make_connection_snum)
  create_connection_server_info failed: NT_STATUS_ACCESS_DENIED
[2017/01/19 18:28:33.829766,  0] smbd/map_username.c:140(map_username)
  can't open username map /etc/samba/smbusers. Error そのようなファイルやディレクトリはありません

接続が成功した場合。

takuya@:~$ smbclient -L 192.168.2.8
Enter takuya's password:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba xx.x.x]

    Sharename       Type      Comment
    ---------       ----      -------
    sekkei01        Disk      設計01用フォルダ
    共用ファイル Disk      共通フォルダ
    takuya          Disk      ファイルサーバーのテスト場所
    temp            Disk      一時的に使うところ
Domain=[WORKGROUP] OS=[Unix] Server=[Samba x..x.x]

    Server               Comment
    ---------            -------

    Workgroup            Master
    ---------            -------

サーバー側でログオン状態を確認

smbstatus -b
smbstatus -d

まとめ

linux 側クライアントから smbclient サーバー側から、 smbstatustailf /var/log/samba/samba.log

GNU Linux でも brew コマンドで homebrew したい

brew 便利ですよね。

brew すごく便利です。 /usr/local/~/.brew などに環境を組み立てる事ができる。

linux 側でmake しまくってると管理がめんどくさいし、dpkg だと衝突が・・・

linuxbrew.sh というサイトがあった

調べたら http://linuxbrew.sh/ というサイトが出来ていた。

早速使ってみることに

事前準備

sudo apt-get install build-essential curl git python-setuptools ruby

インストール

takuya@:~$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install)"
==> This script will install:
/home/takuya/.linuxbrew/bin/brew
/home/takuya/.linuxbrew/Library/...
/home/takuya/.linuxbrew/share/doc/homebrew
/home/takuya/.linuxbrew/share/man/man1/brew.1
/home/takuya/.linuxbrew/share/zsh/site-functions/_brew
/home/takuya/.linuxbrew/etc/bash_completion.d/brew
/home/takuya/.cache/Homebrew/

Press RETURN to continue or any other key to abort
==> Downloading and installing Linuxbrew...
remote: Counting objects: 1060, done.

インストール完了

PATHを通す

export PATH="$HOME/.linuxbrew/bin:$PATH"

コマンドインストール出来る

takuya@:~$ brew list
takuya@:~$ brew install hello
==> Installing dependencies for hello: patchelf
==> Installing hello dependency: patchelf
==> Downloading https://linuxbrew.bintray.com/bottles/patchelf-0.9_1.x86_64_linux.bottle.tar.gz
######################################################################## 100.0%
==> Pouring patchelf-0.9_1.x86_64_linux.bottle.tar.gz
🍺  /home/takuya/.linuxbrew/Cellar/patchelf/0.9_1: 6 files, 1.2M
==> Installing hello
==> Downloading https://linuxbrew.bintray.com/bottles/hello-2.10.x86_64_linux.bottle.tar.gz
######################################################################## 100.0%
==> Pouring hello-2.10.x86_64_linux.bottle.tar.gz
🍺  /home/takuya/.linuxbrew/Cellar/hello/2.10: 52 files, 595.4K
takuya@:~$ hello
Hello, world!
takuya@:~$

sqlite 入れようとしたら・・・

ためしにsqliteをいれようとしたら、nucurses から入り始めた。

なるほど、完全にゼロから環境作るのか。安全にインストールできるけど、、、独自ディストリをユーザ空間に作るようなもので・・・コンパイル済みバイナリが提供されない初期のMac Homebrew な感じある。

takuya@:~$ brew install sqlite
==> Tapping homebrew/dupes
Cloning into '/home/takuya/.linuxbrew/Library/Taps/homebrew/homebrew-dupes'...
remote: Counting objects: 41, done.
remote: Compressing objects: 100% (41/41), done.
remote: Total 41 (delta 0), reused 3 (delta 0), pack-reused 0
Unpacking objects: 100% (41/41), done.
Checking connectivity... done.
Tapped 35 formulae (101 files, 329.5K)
==> Installing dependencies for sqlite: pkg-config, homebrew/dupes/ncurses, readline
==> Installing sqlite dependency: pkg-config
==> Downloading https://pkgconfig.freedesktop.org/releases/pkg-config-0.29.1.tar.gz
######################################################################## 100.0%
==> ./configure --prefix=/home/takuya/.linuxbrew/Cellar/pkg-config/0.29.1_2 --disable-host-tool --with-internal-glib --w
==> make
==> make check
==> make install
🍺  /home/takuya/.linuxbrew/Cellar/pkg-config/0.29.1_2: 11 files, 670.3K, built in 1 minute 8 seconds
==> Installing sqlite dependency: homebrew/dupes/ncurses
==> Downloading https://ftpmirror.gnu.org/ncurses/ncurses-6.0.tar.gz
==> Downloading from http://ftp.jaist.ac.jp/pub/GNU/ncurses/ncurses-6.0.tar.gz
######################################################################## 100.0%
==> ./configure --prefix=/home/takuya/.linuxbrew/Cellar/ncurses/6.0_2 --enable-pc-files --with-pkg-config-libdir=/home/takuya/.linuxbrew/Cellar/ncurses/6.0_2/lib/pkg

ただの移植っぽい

ある程度のコマンドはインストール出来るっぽいので、CentOS のEPELや Debian の apt が古いときに便利かもしれないです。

linux なのですが macvim とか見えるんですけどね。。。

takuya@:~$ brew search vim
macvim              pacvim              pyvim               vim                 vimpager            vimpc
takuya@:~$

WindowsBrew とかも出来ないかな・・・ と思って調べてみたら、onegetchocoscoop など乱立してていかにもwindowsらしい。Linux側もいずれ乱立していくんだろうな。。。私はまだcygwinでいくけどね。

関連資料

takuya-1st.hatenablog.jp

MacのHomeBrew環境におけるman について

homebrew いれてると man がグチャグチャ・・

brew したコマンドは無事に動くんだけど、man や completion などが結構大変。今回は man / manpath を何とかするために調べた話。

brew したgnu date の man はどこ?

BSDコマンドはLinuxメインの私には、ちょっと面食らうことが多いので、brewGNU コマンドを使っているのですが、man どこだ。。。

date の man
$ man date # BSD manual 
$ man date -M /usr/local/opt/coreutils/libexec/gnuman/ # GNU User manual

ということで、date コマンドのman は coreutils の gnuman にありました。

なぜ、見れないのか

manpath で解決しないのはナゼなのでしょうか?それは brew link してないからです。brew で link したものは、/usr/local/share/man にリンクされいつも通りに表示できました。それ以外(未link)は出てこないようです。

リンク非推奨の curl なども同じ

これらも 通常のman だけでは調べることが出来ない。

g-prefix については gつけたら見られる

上記のlink 非推奨で link 出来ないコマンドについては g-prefix をつけたらman を見ることが出来る

$ man gls
$ man grm
$ man gsed
$ man gdate
$ man ggrep
$ man gfind

ただし、それでもman が見られないものもある。

ls / date など頻繁に使うコマンドについても BSD コマンドより GNU コマンドのマニュアルをよく使うので、そっちを参照したい。

man のためだけに、いちいちlinux にログインするもの面倒だ

環境変数MANPATHに含めるしか無い。

coreutils / curl / sqlite に関しては、MANPATHで強引に解決することにした。

~/.bashrc
    MANPATH=$(manpath)
    if [[ $( realpath  $(which curl ) ) =~ local   ]] ; then 
      MANPATH=/usr/local/opt/curl/share/man:$MANPATH
    fi 
    if [[ $( realpath  $(which date ) ) =~ local   ]] ; then 
      MANPATH=/usr/local/opt/coreutils/libexec/gnuman:$MANPATH
    fi 
    if [[ $( realpath  $(which sqlite3 ) ) =~ local   ]] ; then 
      MANPATH=/usr/local/opt/sqlite/share/man:$MANPATH
    fi 
    export MANPATH

なぜ brew link --force しないのか

--forcebrew link をすれば一発解決なのですが。brew link 非推奨のコマンドはやっぱり リンクしないほうがトラブルが少ない。

過去に起きたトラブルで時間を無駄にした記憶がある。

「なんでこのコマンドはbrew インストールできない!!」 「なんでコマンド動かない!!」といったトラブルで時間を浪費したことがあり、その原因の大半が brew link --force だったのです。

まとめ

homebrew で入れたコマンドの man が見れない時

  1. g-prefix を試す. 例:ls → gls など
  2. manのパス指定を試す 例:man date -M /usr/local/opt/coreutils/libexec/gnuman/
  3. manpath を先にしておく。
  4. man コマンドでサイトに飛ぶ。 例function man(){ open https://www.die.net/search/?q=$1; }

の解決策がありそうでした。

おまけ

brew コマンドの日本語man はここにあった

takuya@~$ ll /usr/local/share/man/ja/man1/
total 44
lrwxr-xr-x 1 takuya admin 52 2016-11-28 02:08 evim.1 -> ../../../../Cellar/vim/HEAD/share/man/ja/man1/evim.1
lrwxr-xr-x 1 takuya admin 50 2016-11-28 02:08 ex.1 -> ../../../../Cellar/vim/HEAD/share/man/ja/man1/ex.1
lrwxr-xr-x 1 takuya admin 52 2016-11-28 02:06 nkf.1 -> ../../../../Cellar/nkf/2.1.4/share/man/ja/man1/nkf.1
lrwxr-xr-x 1 takuya admin 53 2016-11-28 02:06 nmap.1 -> ../../../../Cellar/nmap/7.31/share/man/ja/man1/nmap.1
lrwxr-xr-x 1 takuya admin 53 2016-11-28 02:08 rview.1 -> ../../../../Cellar/vim/HEAD/share/man/ja/man1/rview.1
lrwxr-xr-x 1 takuya admin 52 2016-11-28 02:08 rvim.1 -> ../../../../Cellar/vim/HEAD/share/man/ja/man1/rvim.1
lrwxr-xr-x 1 takuya admin 52 2016-11-28 02:08 view.1 -> ../../../../Cellar/vim/HEAD/share/man/ja/man1/view.1
lrwxr-xr-x 1 takuya admin 51 2016-11-28 02:08 vim.1 -> ../../../../Cellar/vim/HEAD/share/man/ja/man1/vim.1
lrwxr-xr-x 1 takuya admin 55 2016-11-28 02:08 vimdiff.1 -> ../../../../Cellar/vim/HEAD/share/man/ja/man1/vimdiff.1
lrwxr-xr-x 1 takuya admin 56 2016-11-28 02:08 vimtutor.1 -> ../../../../Cellar/vim/HEAD/share/man/ja/man1/vimtutor.1
lrwxr-xr-x 1 takuya admin 51 2016-11-28 02:08 xxd.1 -> ../../../../Cellar/vim/HEAD/share/man/ja/man1/xxd.1

brew コマンド man 自体はここにあった

takuya@~$ ll /usr/local/share/man/man1
total 4172

iTerm2 で表示色やスタイルを維持してコピー&ペースト

iTerm2 でも、リッチテキスト形式でコピペしたい

Terminal.app の場合だとテキストをコピーすると、色付きのRTF(リッチテキスト)でコピペされるんですよね。

これを iTerm2.app でもやりたいと思った。

Option+CMD+C で出来る

コピーするときに、Optionを押しながらコピペすると出来る。

f:id:takuya_1st:20170122040619j:plain:w400

貼り付けはリッチテキストに貼り付ける

コピーしたものを貼り付けるときは、色付きのテキストなので、リッチテキストのエディット・エリアに対して貼り付けることで取得することが出来る

evernote に貼り付けた例

f:id:takuya_1st:20170122034713j:plain:w300

TextEdit.app に貼り付けた例

テキストエディットをリッチテキストで起動すると次のようになって、iTermで取得したものをそのままコピペできるようになる。

f:id:takuya_1st:20170122035811j:plain:w450

コピペするときのコツ

背景色を白のテーマでコピペすると概ねうまくいくと思う。

ブログなどに便利

ブログやEvernoteに貼っておくとちょっとだけ便利になるかもしれないと思います。

Macクリップボードについて。

Macのコピペで使うクリップボードには、数種類ある。それらは、テキスト・バイナリ・リッチテキスト の3種類になっている。

リッチテキストのクリップボードとテキストのクリップボードはほぼ共通で使うことが出来る。クリップボードに格納・取得する際に、OSやアプリ側でどのクリップボードから取り出すか、保存するか決めることが出来る。

コマンドからHTMLで取り出すには、Appkitを経由しないといけないのですが、そんなに難しいわけじゃないので、そのうち作ろうと思う。