それマグで!

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

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

bash

ターミナルで改行とEnterで表示がおかしく異常になった時のなおし方

ターミナルで改行や表示がおかしくなった時 たまにありますよね 。\r \n の改行がおかしくなって、エンターキーで改行しても反映されない時って。 こんな感じに、表示で改行と幅がおかしくなってしまうよね。 takuya@:~$takuya@:~$takuya@:~$ takuya@:~$ tak…

bashで実行ユーザがroot(id:1)か調べる

root じゃなきゃ、終了するとかしたい シェルスクリプトの実行ユーザを調べて、root 以外が起動したら処理をしない。などと簡単に書きたい時。 whoami を if 文に突っ込むだけでいい if [[ $(whoami) == 'root' ]] ; then echo user root else echo user is …

grepコマンドでファイル名だけを取り出す。

grep してマッチした行ではなく、ファイル名が欲しい 検索したキーワードを含むファイル名を取り出して、それを全部開いて処理したいときに grep -l -l をつけるとファイル名だけを取り出すことが出来る。 覚え方 l なので line ですね 関連資料:その他のgr…

一時的にaliasをオフにする バックスラッシュ

一時的にalias をオフにしたいとき grep や ls などを使っていて、一時的にalias をオフにしたいことないですか? 私は結構たくさんあります。 grep や ls にいっぱいオプションを付けていて普段はそれを使っているのですが、素のgrep がほしいときはある。 …

lsでファイルを拡張子ごとに並べる

ファイルを種類順に並べたい。 デスクトップの整理でよく見る「ファイルを種類別」に整理と同じ、ファイルを種類順にまとめて結果に表示を ls コマンドでもできることがわかった。 -X で拡張子でまとめて表示 ls -lX こうすると、ext 順にまとめて表示してく…

lsで日付ファイル名の逆順に並べる並べ方

ls で日付・ファイル名・ファイルサイズなどを昇順・降順に並べたい ファイルを並べて結果をだすときに、新しいものから処理したいとか、古いものから処理したいことがあるよね。 ls でファイルの日付順に並べる 新しいものが先になるように並べるには ls -l…

bashのシェルスクリプトで拡張子を取得して利用するときのまとめ

特定の拡張子に○○する的なことはよくある シェルスクリプトを書いていると拡張子で判別したいことはよくある。 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 これを防ぐためにちょっと標準出力と標準エラーの扱いをまとめておこう…

Bashでシンボリックリンクのディレクトリの補完(上位ディレクトリが辿れない

シンボリックリンクされたディレクトリから上位が辿れない・・・ シンボリックリンクされたディレクトリがあって、その内部から、補完を試みても、ディレクトリがうまく補完されない。 takuya@vim$ ll -d /usr/local/opt/vim lrwxr-xr-x 1 takuya admin 26 2…

which コマンドを見直してみる。which コマンドの活用法

which コマンド which コマンド which コマンドについて そもそも which コマンドって? which コマンドを更に追求する このls はなに? which コマンドで 検索に alias も含める。 which コマンドの検索に function も含める。 alias も function もどちら…

bashで複数行の文字列の代入と、ヒアドキュメントを使わずに変数に格納する方法

bash で複数行の文字列を変数に格納する方法 その1:一番シンプルなのはそのまま str=" ここは サンプル の複数行文字列 です。 " echo "$str" echo $str ではなく、 echo "$str" なのがちょっと味噌ですね その2:ヒアドキュメント編 一般的なのは、ヒア…

sendmail でコマンドからメールを送信する。

メール通知のテストに使う。 postfix や exim4 のメールサーバーの設定をしていて、テスト・メールを送信したいときに、手作業でsendmail コマンドを送るのは、ちょっと面倒なのと、どのメールが未到達で、どのメールが到達したか区別するのが大変なのでスク…

シェルで指定文字に文字列を分割して結合する。

文字列をシェルで、指定文字数に分割して結合するには 選択肢になるコマンドは、分割・結合でそれぞれ次の通り 分割 flod grep 結合 paste tr などが使えることがわかった。 分割の例 fold -w2 grep -E -o '.{2}' 文字列を指定文字に分割する。fold コマンド…

bashの似てて紛らわしいもの() / {} について

サブシェルとグループの違い サブシェル () グループ {} サブシェルの大きな特徴は、サブシェルであるということ サブシェルは、ほぼfork みたいなものだと思ったらいいと思います。 () / { } の違い () はサブシェルを起動し実行する。 {} は現在のシェルで…

bashのブレース展開の変数置換でPATHをぱぱっと確認する。

PATHってパット見でわからないので整形したい。 echo -e ${PATH//:/'\n'} 実行結果 takuya@~$ echo -e ${PATH//:/'\n'} /Users/takuya/.pyenv/shims /Users/takuya/.pyenv /Users/takuya/.bin /usr/local/sbin /usr/local /opt/X11 /usr/sbin /usr /sbin /Us…

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

ruby や python からすぐ出来るんですが、bashでやると面倒ですね ruby File.size( 'path/to/file' ) python import os os.path.getsize('path/to/file') bash どうやるの? ls -l だと余計なものが多いし。。。まさか、cut してgrep する〜?awkする? いく…

bashの似てて紛らわしいもの . / source について

似てて紛らわしいものシリーズ . / source について bash の記号で初心者泣かせの、似てて紛らわしかったり、使い分けがわからなかったり、読み方を間違えてパニックになる記号について書く。 . / source について . と source は、どちらも同じ意味と効果を…

bashの再起動execとbashrc を無視する起動オプション

bash の再起動方法 exec bash --login bash の起動オプション 以下のオプションは、すべて同じ意味だと思っていい。 bash を起動してInteractiveShellとして起動する。設定ファイルなどはいつもどおりの順番で処理します。 bash --login bash -l bash - exec…

bashの使い方のまとめ記事のインデックス

bash の使い方を1から見直すシリーズ シェルスクリプトは、もうbashで書いていいよね。bashが動かない環境なんてないんだし。 bash の紛らわしい記号や歴史的経緯によるPOSIXかき分けなどがあって、bashに特化した記事って少ないし断片的なので、色々と調べ…

bashの似てて紛らわしいもの ``バッククオートと $() について

似てて紛らわしいものシリーズ `バッククオートと $() について bash の記号で初心者泣かせの、似てて紛らわしかったり、使い分けがわからなかったり、読み方を間違えてパニックになる記号について書く `` と $( ) の違いのついて コマンドの実行結果で置換…

bashの条件判断の関数名を美しくする

Bashの関数名に?を使う bash の関数名には ? が使えます。つまりまぁまぁ美しい関数名が作れます if の中が美しくない例 # sf-pwgenが存在したら alias をいれる if type sf-pwgen > /dev/null 2>&1 ; then alias sf-pwgen-alphanum-12char="sf-pwgen -a alp…

bashの正規表現マッチで後方参照

bash の正規表現マッチで後方参照。 bash の [[ コマンドで、正規表現マッチが使える話は以前書きました。 そのときには、意図的に書きませんでしたが、bashの正規表現マッチでは後方参照が使えます。 bash の正規表現マッチと後方参照 とりあえず、動作例を…

bash の for と パイプ(xargs) の一番大きな違い

bash の似たものシリーズ 初心者が躓きそうなbash で似て紛らわしいものの違いをはっきりさせようとさせるシリーズ。 bash に於ける xargs / for には違いがあるのか? あります。結構大きな違いが有ります。 それぞれのループの回しかたを復習しておきまし…

bashの似てて紛らわしいもの [[ / [ / test  はどこが違うの?

似てて紛らわしいものシリーズ [[ / [ / test bash の記号で初心者泣かせの、似てて紛らわしかったり、使い分けがわからなかったり、読み方を間違えてパニックになる記号について書く [ / [[ の違い 結論から言います [[ / [ は同じものです。 [[ が新しい書…

bashの似てて紛らわしいもの =/==と= 代入&比較の注意点

似てて紛らわしいものシリーズ =/==と= bash の記号で初心者泣かせの、似てて紛らわしかったり、使い分けがわからなかったり、読み方を間違えてパニックになる記号について書く =/==と= の違い =はいくつかのパターンで出てきます。 比較演算子として = で比…

bashのジョブ(bg/fg)とお手軽kill

bash のジョブの概念とコントロール bash のジョブの話とkill の話。 Ctrl+zでプロセスはどこへ行くのか? takuya@~$ ログアウト 停止しているジョブがあります。 takuya@~$ 停止してるジョブってなんだよ!!!ってなる人が多い。 ジョブはどこに行った。…

bashの複数タブ間コマンド履歴(ヒストリ)共有とPROMTO_COMMAND変数について

bash でもコマンド履歴の即時反映をしたい 複数タブでターミナルを使ったり、複数ウインドウでターミナルを使うと、bashの履歴が共有されて無くて、悲しいことがある。 zsh の機能で紹介されることも多いですが。それ bash でも出来るよ。 共有方法 export P…

bashの何もしない特殊コマンド : コロン

: はコマンドです。 え?コマンド? と思うかもしれません。はい、コマンドです。記号一文字がコマンドです。 : がコマンド(関数)の証拠 takuya@~$ type : : はシェル組み込み関数です : コマンドを実行した結果 takuya@~$ : ; echo $? 0 : は何に使うの?…

bashの似てて紛らわしいもの [[ / ((

似てて紛らわしいものシリーズ [[ / (( bash の記述で初心者泣かせの、似てて紛らわしかったり、どう使っていいかわからなかったり、読み方を間違えてパニックになる記号について。今回は [[ / ((について [[ / (( の違い [[ / (( は if 文の条件判断の中で…

bashの似てて紛らわしいもの (( / $((

似てて紛らわしいものシリーズ (( / $(( bash の記述で初心者泣かせの、似てて紛らわしかったり、どう使っていいかわからなかったり、読み方を間違えてパニックになる記号について (( / $(( の違い (( / $(( は数字を計算する方法です。どちらも同じ機能を持…