Corredor

ウェブ、プログラミングの勉強メモ。

Bash

Windows の VSCode 上の GitBash ターミナルで日本語表示がおかしくなった時

Windows の VSCode 上では、Git For Windows による Bash ターミナルを利用しているのだが、最近どうも日本語表示がおかしくなってしまった。 よくある「文字化け」とは違って、日本語の表示部分が <E3><83> のように、英数字と不等号記号で表現されるようになっ</e3>…

Diff に色付けする colordiff コマンドを試してみた

diff コマンドは git diff のように色付けされない。そこで、colordiff というコマンドを入れてみた。 colordiff macOS Mojave で試したので、$ brew install colordiff でインストールしたが、Linux なら apt-get とかでもインストールできるみたい。 Unifi…

Mac で指定の HTML ファイルを Chrome で開くコマンドを用意する

MacOS High Sierra にて検証。 僕は普段、.html ファイルを CotEditor というテキストエディタに関連付けしている。Finder から .html ファイルをダブルクリックすると、CotEditor で開くワケだ。 この状態で、ターミナルから $ open index.html のように op…

プロキシ環境下で ifconfig を使って自分の IP アドレスを調べる

よくグローバル IP を調べる方法として $ curl globalip.me こんな風に専用サービスを curl で叩く、というモノがあるが、プロキシ環境下では globalip.me にアクセスできなくて使えない。 参考:Shellで超簡単にグローバルIPを確認する方法 そこで調べてみ…

tar で複数ファイルを圧縮する時にワイルドカードと変数を併用する

以下のように、ある DB のデータをテーブル別にファイルを毎日吐き出すディレクトリがあるとする。 $ ls -1 data-fuga01.db data-fuga02.db data-fuga03.db # …中略… data-fuga29.db data-fuga30.db data-fuga31.db data-hoge01.db data-hoge02.db data-hoge…

コマンドプロンプト上で Unix・Linux コマンドを使えるようにする GnuWin32

GnuWin32 という、かなり古いツール群があるのだが、コレを試してみた。 簡単にいうと、Windows コマンドプロンプト上で使える Unix・Linux 風コマンドを多数提供しているコマンド集。PATH を通すだけでコマンドプロンプト上で ls とか grep とかできるよう…

Bash で利用可能なコマンド一覧を出力する compgen コマンド

以前、Bash で利用可能なコマンドを一覧表示するため、環境変数 PATH の中身を ls するようなスクリプトを紹介した。 今回さらに調べてみると、compgen というコマンドで利用可能なコマンドを一覧表示できることが分かったので紹介する。 参考:Linux 現在の…

find コマンドで特定の拡張子のみ指定 or 除外する

find コマンドがなかなか覚えられない。 特定の拡張子のファイルのみ表示する 特定の拡張子のファイルを除外する 複数の拡張子のファイルを除外する 特定の拡張子のファイルのみ表示する $ find . -type f -name "*.jpg" find . で ./、つまりカレントディレ…

Bash の Tab 補完でファイル名の大文字・小文字を区別しないようにする

Bash で cd とかする時に、ファイル名の大文字・小文字を区別しやがるのが鬱陶しいので、直し方を紹介。このやり方は Windows GitBash・Linux・MacOS で使える。 やり方は、以下の内容を書いたファイル .inputrc を、ユーザホームディレクトリ配下に置くだけ…

Bash 環境変数がどのファイルで定義されたか調べたい

Bash にて、export NO_PROXY=localhost といったように、ある環境変数をどこかのファイルで設定しているのだが、どこに書いてあるか分からない、という時に、その調べ方を調べてみた。 参考:bash - How to determine where an environment variable came fr…

Bash 上で使えるコマンド一覧を取得する!

ふと、Bash 上で使えるコマンドって全部でどれだけあるんだろう?と思い、一覧での取得方法を調べてみた。 ネットで見つけたやり方 参考:Linux - Linuxでコマンド一覧を表示するコマンドについて(53835)|teratail ↑ ドンズバな質問と回答が載っているペー…

SSH 接続先でサーバを立ち上げっぱなしにしてログアウトするための Bash の書き方

自端末から、SSH で Linux (CentOS) サーバに接続し、その Linux サーバ上で Express サーバを立ち上げ、SSH 接続を切断したかった。 Express サーバは、$ npm install 後、$ node main.js と叩くと起動するようになっているのだが、ターミナルを閉じたり、…

Redmine API を利用してチケット ID からチケット情報を出力するシェルスクリプトを書いた

Redmine API を利用して、curl でチケット情報を取得し、jq で整形して出力するシェルスクリプトを書いた。引数チェックとかもするようにした。 以下のスクリプトを red とかいうファイル名で保存して、PATH が通っているところに置いて実行権限を付ければ O…

SSH 接続のパスワード入力を自動化するシェルスクリプトを作ってコマンド化した

MacOS にて実施。 SSH 接続する際、とある理由で公開鍵認証方式が使えず、sshpass という便利なツールも導入できなかったので、他の方法でパスワード入力を自動化する方法を調べた。 expect・spawn・send コマンドで作れる! 結論からいうと、以下のようなシ…

コードの実装行数を測る npm モジュール2つ と Bash コマンド

あるプロジェクト全体での、プログラムの実装行数を調べたくなった。 npm モジュールでは sloc というモジュールと、cloc というモジュールがサクッと集計できた。 参考:sloc - npm 参考:cloc - npm いずれも $ npm i -g sloc cloc とグローバルインストー…

直前に実行した Bash コマンドの終了コードを見る

Bash で直前に実行したコマンドの終了コードを確認するには、echo $? という構文を使う。 # 正しくファイルが削除できた場合 $ rm test $ echo $? 0 # ファイルが存在せず削除できなかった場合 $ rm test rm: test: No such file or directory $ echo $? 1 …

Jenkins で定期実行!cron の書き方

Jenkins ジョブを定期的に実行するには、ジョブ定義から「定期的に実行」を選び、cron (crontab) の書式で日時を指定してやる。今回はこの cron の書式をおさらいする。 そもそも cron って? cron とは、UNIX 系のコマンドで、任意のコマンドを任意実行する…

npm run とかで使うハイフン2つ「--」の意味

npm-run-scripts を使っていると、npm run something コマンドにオプション引数を渡したくて、$ npm run something -- --include=hoge みたいに書いたりする。 他にも、ハイフンから始まるファイルを指定するときに、$ rm -- -some.txt などと書いたりする。…

シェルスクリプトで開発案件ディレクトリの雛形とプレースホルダを作る

以下のサイトで紹介されている、Windows バッチでよくお世話になったスクリプトを Bash で作り直してみた。 language-and-engineering.hatenablog.jp サブルーチンを用いた実装になっているが、やっていることをものすごく単純化すると、 Mkdir 01_概要設計 …

Bash シェルスクリプトを安全に実行するための便利な set コマンド

Jenkins で実行するシェルスクリプトを書いていて、 sh ./script.sh で実行すると実行されるコマンドが Jenkins のコンソールに出力されないから分かりづらいな コーディングミスとかでエラーになった時は中断してほしいな コーディングミスで未定義の変数を…

Jenkins の実行結果を UNSTABLE (不安定) にする Text-Finder Plugin

Jenkins ジョブでシェルスクリプトを実行し、その結果に応じて「成功 (SUCCESS)」「失敗 (FAILURE)」に振り分けようと思ったのだが、「失敗 (FAILURE)」はその中身が分かりにくい。つまり、 実行したシェルスクリプトに構文エラーがあって失敗したのか、 cur…

sed で行追加する i オプション (と、MacOS の BSD sed での注意点)

sed で行を追加する、i というコマンドを使ってみる。 今回はサンプルとして、cat にヒアドキュメント << を使って複数行のテキストを用意する。コレをパイプで sed に渡し、1行目にテキストを追加してみる。 # まずは普通に出力してみる $ cat << EOM > Ori…

sudo 実行時に環境変数を引き継ぎたい

MacOS にて検証。 sudo コマンドを利用すると、環境変数を引き継げず、$HTTP_PROXY とかを当てている時にツラい。 そこで調べてみると、sudo -E というオプションで環境変数が引き継げることが分かった。 $ sudo -E 【コマンド】 コレだけ。知らなかった…! …

Windows 上の Jenkins から curl で TypeTalk API を叩いてメッセージを送信するまでの道のり

Windows 上の Jenkins はとにかく罠が多い…。 Windows 上の Jenkins から「シェルスクリプトの実行」で curl コマンドを実行し、TypeTalk API を叩いて任意のメッセージを投稿してみようと思った。それがかなりつまづいたのでまとめる。 TypeTalk API の叩き…

MacOS の BSD sed は慣れないので Windows GitBash と同じ GNU sed に変える

BSD UNIX 系の MacOS に搭載されている sed と、Linux や Windows GitBash に搭載されている sed は、オプションの働きが異なる部分が多い。コレが厄介で、sed を利用したスクリプトが Mac と Windows とで同じように動作してくれないのだ。 Windows GitBash…

MacOS の man を日本語化する

MacOS High Sierra の man コマンドの表示を日本語にしてみた。 ほぼ以下の記事のとおりで出来た。 参考:manコマンドの表示を日本語化した話 # groff (GNU roff) という文書整形を行うコマンドをインストールする $ brew install groff # /usr/local/bin/gr…

Windows コマンドプロンプトや GitBash 上で Linux・MacOS のコマンドを再現する方法をまとめ中

これまでいくつかの記事で、Windows コマンドプロンプトや、Windows GitBash 上で、Linux 風・MacOS 風なコマンドを再現する方法を紹介してきた。 neos21.hatenablog.com neos21.hatenablog.com これらを網羅的にまとめたページを作ろうと思い、以下のリポジ…

Mac のターミナル上でカレンダーが見られる「cal」コマンドを Windows でも実現する方法

Linux 標準コマンドの一つに、cal コマンドというモノがあるのを知った。ターミナル上でカレンダーが見られるのだ。 $ cal 8月 2018 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 当日日付は…

Bash ターミナル上からカレントディレクトリを VSCode で開く方法

ターミナルコンソールで作業していて、カレントディレクトリを VSCode で開いて作業したくなることがある。そんな時に、$ code . だけでカレントディレクトリを VSCode で開けるようにする方法。 想定環境は MacOS 標準の Bash ターミナル (「ターミナル.app…

git clone したディレクトリにすぐ移動する

git clone と同時に、作成されたディレクトリに cd したいなーと思っていたので調べてみた。 以下のように basename を利用して、直前のコマンドの引数を $_ で取得するとうまくいく。 $ git clone http://example.com/example.git && cd $(basename $_ .git…