職場や自宅では、クライアントマシンとしてMacを使っている(+Manjaro in Thinkpad)。 で、個人的にその日の作業用に日付別のディレクトリ(自分の場合は~/Work/YYYYMM/YYYYMMDD/)を作っておいて、そこに一時ファイルやダウンロードしてきたファイル、その日のメモなどを配置するような使い方をしている。

このとき、ダウンロードディレクトリ (~/Downloads)を日付別のダウンロードディレクトリ(~/Work/YYYYMM/YYYYMMDD/Downloads)のシンボリックリンクとすることで、ディレクトリが日付別になっていることを意...


最近は定型的な作業はfunctionを事前に作っておいてそれを使うようにしているのだけど、たまにwatchコマンドとかで実行させたいときに引っかかることがある。

悲しいことだけど、watchコマンドなどではfunctionやenvは読み込んでくれない(PythonとかからSubprocessなどで呼び出す場合でも同様だろう)。 なので、以下のように無理やり実行する方法を使っている。

watch "bash -c 'source ~/.bashrc 2>/dev/null; function ...'"

これでfunctionをwatchコマンド内でも実行できるようにできる。

...


たまにsshfsでマウントした領域のログファイルに対してtail -fをすることがあるのだけど、どうも更新を検知してくれないということがあった。 なんでだろうなと調べてみたところ、どうやらsshfsではsftpプロトコルを使っているので、inotifyを使ったファイルの更新検知ができないらしい(まぁそらそうだわ…)。

調べてみたところ、対応としてはtailでinotifyなしでもファイルをチェックするように「---disable-inotify」オプションを付与してやればいいようだ。 インターバルの指定は「-s」で指定できる。

tail ---disable-inotify PATH
...

少し前(というか2019年の年末)に、Twitterでファイルをコマンドで利用したあとにリダイレクトで上書きしてはいけないよねというツイートがあった。

これは結構やってしまう(そしてやらかして学習する)人が多いと思うのだけど、shellの解釈の順序の関係でコマンドの処理より先にリダイレクトの処理が...


先日実施された第45回シェル芸勉強会に出席してきたので、その復習。 前回の45回はawkでゴリゴリ解いていくような問題が多かったのだけど、今回はいろんなコマンドを組み合わせて解いていくような問題が多めになっているらしい。

問題および模範解答はこちら。あと、問題を解くに当たって必要になるファイルは以下のコマンドで取得してくる。

git clone https://github.com/ryuichiueda/ShellGeiData

Q1.

csvファイル「data.csv」に、日別のトマト・バナナ・ピーマンの売れた個数が書かれているので、それぞれが記録されている最後の日の日付...