bash + git環境でプロンプトにブランチ名と作業ツリーの状態を表示させて快適な開発環境を作る
tl;dr bash + git環境で開発中にいまのブランチがわからなくなって、いちいちgit statusをたたいて状態確認するのがめんどうでたまらない人向けに、プロンプトにgitのブランチ名と作業ツリーの状態を表示させる方法をまとめます。 用意するもの・動作確認環境 bashならどんな環境でも動くはずですが、わたしの環境は下記の通り。 Windows 10 Pro WSL2 (Windows...
View ArticleSSHで接続した後に特定のディレクトリに移動したい
プロジェクトごとのSSHで、あるサーバにログインした後、デプロイを行っているディレクトリに移動する、というスクリプトを書きたかったです。 $ ssh ssh.example.com -t 'cd tmp; bash --login' cdコマンドをsshの引数として渡すとcdが実行された後にsshコマンドが終了してきて戻ってきてしまいます。 -tオプションを付けてsshを起動し、cd した後に...
View ArticleLinux: HOSTNAMEコマンドでのホスト名取得が好まれない理由、及びホスト名の変更方法について
現場で言われたことについてメモ。 実施環境: Linux [root@testhost ~]# uname -a Linux testhost 4.18.0-147.8.1.el8_1.x86_64 #1 SMP Thu Apr 9 13:49:54 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux [root@testhost ~]# echo $SHELL...
View ArticleRemove all files/directories except for one file
ls *.log.* | grep -v '07-18' | xargs rm -v, --invert-match Invert the sense of matching, to select non-matching lines. (-v is specified by POSIX) 参考:
View Articleコマンド実行時の終了コードを表示する
ターミナル/シェルにそんなに詳しくない方から気になることを言われることがありました. 手順書どおり順番にコマンドを入力/実行しましたが, うまくいきません. 手順書には, いくつかの実行コマンドを順番に実行するよう指示するところがあります. そのあとの工程が期待通りにならないと言うのです. このケースでは手順書の作成者に問い合わせるべきと思います (例が悪い),...
View Articleシェルスクリプトの互換性と生産性の問題を解決する高度なプログラミング技術 〜1万行のコードをメンテしつづけるのに必要なもの〜
シェルスクリプトで高い移植性と生産性を両立させるシリーズ タイトル 第一弾 なぜシェルスクリプトはPOSIXに準拠しても環境依存が激しいのか? 第二弾 高い移植性と生産性を両立するソフトウェアを書くのに必要な知識と考え方 第三弾 中〜大規模シェルスクリプトのためのメンテナンス性の高いディレクトリ構造 【第四弾】 シェルスクリプトの互換性と生産性の問題を解決する高度なプログラミング技術 第五弾...
View Articleゾンビプロセスの自動キル方法
きっかけ 以前にAWS SSMを通じて、別サーバからDBを参照できるようにしていました。 そしたらバックグラウンド(nohup)実行のタスクが、ゾンビとして大量に生産され大変なことになっていました... こんな感じ [hoge@hogehost ~]$ ps -ef | grep defunct root 338 334 0 6月30 ? 00:00:00 [sh] <defunct>...
View ArticleLinuxサーバログイン時の/etc/bashrc、/etc/profile、~/.bashrc、~/.bash_profile等の読み込み順序が気になっ...
「LinuCレベル1」の試験勉強をしていると、bashの設定ファイルの読み込み順序について、以下のような表で説明されていました。 全員が参照 ユーザー個別で参照 ログイン時に読み込み /etc/profile 1. ~/.bash_profile2. ~/.bash_login3. ~/.profile bash起動時に読み込み Debian系: /etc/bash.bashrcRedHat系:...
View Articlebase64エンコードされた文字列からjpgファイルを作成する
<img id='base64image' src='data:image/jpeg;base64, LzlqLzRBQ...' /> > ls source.csv > cat source.csv "1","STR_BASE64" "2","STR_BASE64" ... > cat source.csv | xargs -I{} sh -c 'echo {} |...
View Article【BashでJSON】JSONファイルそのものをPOSTする
概要 DRF(Django Rest Framework) に JSON ファイルを POST したら、宜しく解読してくれて驚いた. 詳細 POST 実行プログラム 引数に JSON ファイルへのパスを 1個指定する #!/bin/bash curl -X POST \ http://192.168.1.100:8000/api/v1/foo/result? \ -H "Content-Type:...
View ArticleVSCodeのWSLターミナルでbrewが使えないときの対処方法
困ったこと VSCodeでwslのターミナルを起動したときに、brewと、brewで入れたコマンドが使えない。 以下のようにコマンドが見つからないといわれてしまう。 $ brew Command 'brew' not found, did you mean: command 'brec' from deb bplay (0.991-10build1) command 'qbrew' from deb...
View ArticleLinux: 曜日情報を取得する方法
たまに必要となるのでメモ。 実施環境: Linux [testuser@testhost ~]$ uname -a Linux testhost 4.18.0-147.8.1.el8_1.x86_64 #1 SMP Thu Apr 9 13:49:54 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux [testuser@testhost ~]$ echo $SHELL...
View Articledatabricksにおける環境情報を保持した構成ファイル(spark-env.sh、hive-site.xml等)を確認するためのノートブックで実行する...
概要 databricksにおける環境情報を保持した構成ファイル(spark-env.sh、hive-site.xml等)を確認するためのノートブックで実行するBashコマンド群を共有します。 Databricks Workspaceのノートブックで実行することを想定しており、ベースとなる3つのコマンドを提示した上で、重要なファイルを表示するコマンドを共有します。 ベースとなるコマンド 1....
View Articleシェルスクリプトの type, command, which 等の違いと注意点
はじめに この記事は type, command, which 等を用途で使い分けたい人のための記事です。関連がある hash、whence、where や紛らわしい whereis、whatis、what...
View ArticleMacのTerminalでのエイリアス利用方法
よく使うコマンドにエイリアス(別名の意)をつけておくと、コマンド入力時間の短縮につながります。 以下はMacユーザーに向けたエイリアス利用方法についての簡潔な解説です。 エイリアス設定方法 ターミナル( 厳密には zsh や bash というシェル )の起動時に読み込まれる設定ファイルである ~/.zshrc や ~/.bashrc というファイルにエイリアスの定義を記述することで設定できます。...
View ArticleGNU grep は /dev/null に出力すると、処理速度が異常に速くなる件について
あ...ありのまま 今 起こった事を話すぜ! 「おれは cat の方が grep "." よりも速いことを示すために、両方の出力を /dev/null に捨てたら grep の方だけ処理速度が異常に速くなっていた」 な・・・ 何を言っているのか わからねーと思うが おれも 何が起きたのか わからなかった・・・ 頭がどうにかなりそうだった・・・ 催眠術だとか超スピードだとか そんなチャチなもんじゃあ...
View Articleシェルで別ファイルに引数リストを書いておいて、1行ごとに処理をさせたい時のやつ
別ファイルに引数リストを書いておいて、1行ごとに処理をさせたい時のやつ $ cat list 001 aaaaa AAAAA 002 bbbbb BBBBB 003 ccccc CCCCC $ cat list | xargs -n3 bash -c 'echo $1 $2 $0' aaaaa AAAAA 001 bbbbb BBBBB 002 ccccc CCCCC 003 xargs に渡して...
View Articlebashで祝日を判定する関数を作ってみた
cronで月曜日から金曜日に実行するスクリプトを設定しているんですが、祝日には動いてほしくないので祝日を判定する関数をbashで作ってみました。 動作確認環境 Vagrant 2.2.14 CentOS 8 ※Macのbashではdateコマンドの引数の仕様が異なるようなので正常に動作しません。 祝日データの取得元...
View ArticleBourneシェルとBourneシェル系(≒POSIXシェル)の違いについて
はじめに Bourne シェルは今では殆ど使われなくなった古いシェルの名前です。現在の主流は POSIX シェルです。POSIX シェルというのは、そういう名前のシェルがあるのではなく POSIX の仕様に(ほぼ)準拠しているシェルのことで dash、bash、ksh、mksh、yash、zsh 等のことです。一方 Bourne シェルはそういう名前のシェルで歴史的な UNIX や少し前までの商用...
View Articleechoで改行を反映させ正しくエンコードする
はじめに echoコマンドを使って改行を含む文字列をエンコード/デコードした際、正しく復元できない状態に陥りました。 原因はエンコードする際にエスケープ文字を認識してくれないという点にあり、調べたところ、-e というオプションを加えることで、エスケープ文字を認識できるということが分かりました。 結論 echoコマンドにオプション -e をつけることでエスケープ文字(\n: 改行,\t: タブ...
View Article