bash
xargs のコマンド実行前に確認する xargs -p これで、毎回確認できる 使ってみた例 takuya@temp$ ls *.jpg | xargs -p -I@ --verbose mogrify -crop 2886x3700+0+0 @ mogrify -crop 2886x3700+0+0 out-000.jpg ?...y mogrify -crop 2886x3700+0+0 out-000.jp…
xargs 便利ですよね。 コマンドを明示的に1つずつ実行したり、ファイルをまとめて実行したり。実行する子プロセス数(スレッド)を指定できたり。 まとめて処理しているときにどこまで処理しているかを見ながらやってほしい たとえば、rsync の場合だと rsy…
date +"%s" bash を使ってて、今の時間を int 表記でタイムスタンプとしてほしいよねってとき。 takuya@~$ date +"%s" 1538853051 こうすれば、Unix秒、つまり1970 からの経過秒数が取得できる。 知っておくと便利だし。Gnu Date の時刻フォーマットなので、…
sudo するとコマンドnot found あああ、、もう。 takuya@sakura:~$ sudo ll sudo: ll: command not found alias に頼り切ってると、こういうことが頻繁に起きる 解決策 alias sudo='sudo ' コレが解決策 間違った解決策: preserve Environment sudo -E 環境…
重複ファイルを探すコマンド find . -type f -exec md5sum {} + | sort | uniq -w32 -dD find して md5sum にかけて sort したら、uniq を取る 解説 コマンドがズラッと並ぶのでひとつずつ見ていく 現在のディレクトリ以下のエントリ(Dir/File)を列挙 find .…
realpath コマンドが無い。 Ubuntuの最小インストールに、realpath コマンドがなかったんです。まぁalpineとかDockerイメージはちょっと便利なコマンドがなくて苦労する。 相対パスを絶対パスに変換する目的でめっちゃ便利なんだけど readlink でなんとかす…
source my_bashrc.sh bashの設定を読み込むときに、カレントディレクトリを知りたいというか、実行されている自分自身のファイルを知りたい $0 で取れるだろうと思ったら甘かった。 my_bashrc #!/bin/bash echo $0 source してみる。 $source my_bashrc.sh -…
謎現象が起きた カレントディレクトリのファイルがコマンドとして実行されてしまう。 takuya@Desktop$ ./a aaaaaaaaaaaaaaaaaaaaaa takuya@Desktop$ a aaaaaaaaaaaaaaaaaaaaaa bash で、このような動的に変化するPATHを認めてしまうと思いもよらない動作を引…
bash で設定を無効にして起動する。 env -i bash --noprofile --norc bash --noprofile --norc だと環境変数が。。 takuya@$ bash --noprofile --norc bash: takuya_prompt_command: コマンドが見つかりません bash-4.4$ bash: takuya_prompt_command: コマ…
bashで ctrl-C の検出をするには bash でCtr-C の検出をする必要がある利用場面がある。たとえば、時間のかかる処理を書いていて途中で止めたいとか、スクリプトを作っていて中間ファイルを確実に消したいとか、Ctr-Cの強制終了で止めたときに「なにか処理」…
npm / rbenv / pyenv みたいな感じの bashenv がほしい。 npm などを ディレクトリ単位で切り替えていると、どうしてもbashrc と整合性が合わなくなる時がある。 そのために、ディレクトリ単位でシェルの設定やエイリアスを切り替えられると便利だよね。 っ…
問題点 -list から -listDevice のようなcompletion が出来なくて、invalid option なっちゃう。 $ networksetup -list<TAB> compgen 無効な引数です キーワードの補完ができない。 ハイフンを付けた引数を補完するときは compgen にハイフンをハイフン( -- )で渡</tab>…
ファイルを空にしたい フォルダやファイルの構造をそのままに、ファイルの中身を空っぽにしたい。 ファイルを消してtouch すれば良いんだろうけど、パーミッション設定しなおしたり面倒くさいよね。ファイルのinodeも変わってしまうので tail してたら tail …
realpath で解決 bashスクリプトで2つのファイルパス間の相対パスを取ろうとすると、計算が大変です。 LinuxもMacもrealpath は入ってないので、 apt/brew でいれる必要があります。 realpath のインストール macOS の場合はhomebrew で GNU Linux coreutils…
シェルのコマンドを展開したい。 composite 使おうとしたら、候補多すぎて面倒くさい。補完が補完にならないよね takuya@~$ com<tab> comm command compare compgen complete compopt composer composite compress comsat 最初の3文字くらいで、展開されてほしい</tab>…
xargs やfind exec でリダイレクトを使うには sh を挟むのが覚えやすくて楽 sh -c ' cmd "{}"> out.txt ' find と xargs の例 find . | xargs -I@ sh -c ' echo "@" >> names.txt ' find . -exec sh -c ' echo "{}" >> names.txt ' 参考資料 https://stackov…
jot コマンドを知りました。 jot コマンドは、連番の数字やアルファベットを生成したり、ランダムな数字を生成したりに使えます。 連番ファイル名などを作るのに大活躍です。 上手に使えば、Bashのスクリプトで seq や $RAMDOM よりも便利かもしれないっす。…
ターミナルで改行や表示がおかしくなった時 たまにありますよね 。\r \n の改行がおかしくなって、エンターキーで改行しても反映されない時って。 こんな感じに、表示で改行と幅がおかしくなってしまうよね。 takuya@:~$takuya@:~$takuya@:~$ takuya@:~$ tak…
root じゃなきゃ、終了するとかしたい シェルスクリプトの実行ユーザを調べて、root 以外が起動したら処理をしない。などと簡単に書きたい時。 whoami を if 文に突っ込むだけでいい if [[ $(whoami) == 'root' ]] ; then echo user root else echo user is …
grep してマッチした行ではなく、ファイル名が欲しい 検索したキーワードを含むファイル名を取り出して、それを全部開いて処理したいときに grep -l -l をつけるとファイル名だけを取り出すことが出来る。 覚え方 l なので line ですね 関連資料:その他のgr…
一時的にalias をオフにしたいとき grep や ls などを使っていて、一時的にalias をオフにしたいことないですか? 私は結構たくさんあります。 grep や ls にいっぱいオプションを付けていて普段はそれを使っているのですが、素のgrep がほしいときはある。 …
ファイルを種類順に並べたい。 デスクトップの整理でよく見る「ファイルを種類別」に整理と同じ、ファイルを種類順にまとめて結果に表示を ls コマンドでもできることがわかった。 -X で拡張子でまとめて表示 ls -lX こうすると、ext 順にまとめて表示してく…
ls で日付・ファイル名・ファイルサイズなどを昇順・降順に並べたい ファイルを並べて結果をだすときに、新しいものから処理したいとか、古いものから処理したいことがあるよね。 ls でファイルの日付順に並べる 新しいものが先になるように並べるには ls -l…
特定の拡張子に○○する的なことはよくある シェルスクリプトを書いていると拡張子で判別したいことはよくある。 bashで拡張子を取得するには bashのブレース展開が一番ラクです。 path=/etc/apache2/httpd.conf extension=${path##*.} #=> conf 特定のディレ…
標準出力と標準エラー出力を扱うときに たまに間違って 1 というファイルが出来てしまって悲しいことになる。 takuya@Desktop$ ll 1 -rw-r--r-- 1 takuya staff 20 2017-04-27 14:51 1 これを防ぐためにちょっと標準出力と標準エラーの扱いをまとめておこう…
シンボリックリンクされたディレクトリから上位が辿れない・・・ シンボリックリンクされたディレクトリがあって、その内部から、補完を試みても、ディレクトリがうまく補完されない。 takuya@vim$ ll -d /usr/local/opt/vim lrwxr-xr-x 1 takuya admin 26 2…
which コマンド which コマンド which コマンドについて そもそも which コマンドって? which コマンドを更に追求する このls は何の? which is ls which コマンドで 検索に alias も含める。 which コマンドの検索に function も含める。 alias も functi…
bash で複数行の文字列を変数に格納する方法 「改行が入らない」ではなく、「改行が見えない」のです。入らないと思って改行を調べてしまう事例が多いです。注意しましょう その1:一番シンプルなのはそのまま str=" ここは サンプル の複数行文字列 です。…
メール通知のテストに使う。 postfix や exim4 のメールサーバーの設定をしていて、テスト・メールを送信したいときに、手作業でsendmail コマンドを送るのは、ちょっと面倒なのと、どのメールが未到達で、どのメールが到達したか区別するのが大変なのでスク…
文字列をシェルで、指定文字数に分割して結合するには 選択肢になるコマンドは、分割・結合でそれぞれ次の通り 分割 flod grep 結合 paste tr などが使えることがわかった。 分割の例 fold -w2 grep -E -o '.{2}' 文字列を指定文字に分割する。fold コマンド…