踏み台サーバーを経由してSSH接続する設定を~/.ssh/configに書く
注意 Macで踏み台サーバーを経由してSSH接続する方法です。 以下の記事もあわせてご参照ください。 公開鍵認証を使ってリモートサーバーにSSH接続する SSH接続の設定を~/.ssh/configに書いておくと接続する際に長いコマンドを打つ必要がなくなる やり方 ProxyCommandを使うと踏み台サーバーを経由してSSH接続することができます。...
View ArticleSwiftLintで引っかかったエラーの種類ごとに集計するワンライナー
経緯 SwiftLintを導入するにあたり、autocorrectで修正されない部分を修正するのにルールごとの違反数単位で優先度を付けたかった (あまりにも違反数が多い場合は一旦disableにして追々有効にして直す等の回避策も考えられるように) 愚直に書いた結果 swiftlint --quiet | awk '{ print $NF }' | sed -E...
View ArticlemacOS Catalinaのターミナルでの「デフォルトのシェルがzshになりました」というメッセージを抑止する方法
macOS Catalinaにアップデートしてからターミナルを開くと毎回鬱陶しいメッセージが表示されるようになった。 The default interactive shell is now zsh. To update your account to use zsh, please run `chsh -s /bin/zsh`. For more details, please visit...
View Articleプロセス名を部分一致指定で kill する
sbt のプロセス殺したくて、jps で検索した番号をいちいち指定するのがめんどかっただけ。 $ pkill -f sbt おわり
View ArticleRemote-SSHがラズパイでも使えるようになったので使ってみた
概要 Raspberry Piでは使えなかったVSCodeのRemote-SSHがバージョンアップでSupportedにラズパイが含まれていたので試してみました。 必要な環境 VScode(1.39.1) Raspberry Pi(Raspberry Pi 3 Model B) インストールする拡張機能 ms-vscode-remote.remote-ssh...
View ArticleMacで意識高い系のPS1(プロンプト)を設定する。
プロンプトで意識を高める 勉強会や、技術動画などでターミナルを使っている人のプロンプトを見ると、 ■■■▶ みたいになっている人がよくいますよね。 これをMacのbashで出来るようにしてみます。 (シェルがzshの場合は変更するか諦めてください) まず、フォントをダウンロードしてください。 「view raw」ををクリックするとダウンロードされます。...
View Articlebashスクリプトの最初の方に書いておくと少しだけ安心できる数行のコード
テストを完走したスクリプトが本番環境で動かない!などの不安を和らげる数行のコードで、個人的によく使う 3つを紹介します。 1. 環境変数 $PATH systemd から実行したら動かないなどの問題が起きないように、環境変数$PATHの値を最初に整えます。スクリプト内で各コマンドをフルパスで書くより、環境変数をテスト環境と同じにした方が安心です。 for _path in $(echo...
View Articleシェルで標準出力と標準エラー出力を別々のファイルに書き出す
bashだと方法がたくさん出てくるのだけど、cshではなかなか見つからなかったので、メモ。 bash系 標準出力をfile1に、標準エラー出力をfile2に書き出し command 1> file1 2> file2 標準出力と標準エラー出力を両方ともfileに書き出し command &> file csh系 標準出力をfile1に、標準エラー出力をfile2に書き出し...
View Article(Windows) Bashが管理者として実行されているか判定する(ついでにプロンプトに表示する)
Windowsのコマンドライン環境としてCmder とそれに同梱されているBashで作業をしていて,タイトルにあることがやりたくなったのでメモ代わりに初投稿です. 方法 バッチファイルでの方法(参考: https://commandprompt.noyokan.com/command/ck_admin.html, https://amksystem.com/cmd/cmd7/)...
View Articleシェルスクリプト オプション解析 徹底解説 (getopt / getopts)
シェルスクリプトでオプションを解析といったらまず挙がるのが getopt と getopts です。さてどちらを使うべきでしょうか? 始めに断っておくと実は私はどちらも積極的には使っていません。なぜなら独自実装でもほとんどコードは変わらず、より柔軟な処理ができるからです。とはいえ getopt と getopts...
View Articleパイプ処理の終了ステータスの取得方法
パイプしたときの終了ステータスの取得方法 パイプ処理の終了ステータスを取得する パイプ処理を行った場合、特殊変数 $? に設定される値は 一番最後に実行されたコマンドの終了ステータスとなる。 例) sample.sh #!/bin/bash $ exit 0 | exit 1 | exit 2 $ echo $? 2 パイプ処理の途中のコマンドの終了ステータスの取得方法...
View ArticleWindows10でSSHサーバーを立ててデフォルトシェルをBashにする
LinuxっぽくWindowsにSSH接続する方法です。 OpenSSHだとデフォルトシェルがコマンドプロンプトになってしまうので、Bashに変更する方法です。 手順 OpenSSHをインストール デフォルトシェルを変更 sshdサービスを自動起動 OpenSSHをインストール Windows10 1803からOpenSSHサーバーが正式につかえるようになった...
View Article高機能で短いシェルスクリプト用のオプション解析コード(POSIXシェル準拠・独自実装)
はじめに シェルスクリプト用のオプション解析コードのサンプルは検索するといくつも見つかるのですが、機能が不足していたり雛形とするには長くメンテナンスしづらいものばかりだったので作成しました。以下のような特徴があります。 POSIXシェル準拠なので bash 以外でも動作可能(dash, zsh, ksh, mksh, yash 等で動作確認) ロングオプションにも対応(getopt,...
View Articlebash > fileIO > 並列化 > ls + awk > 入力ファイルをINTVLとINDX指定で分割する > コマンド | bashスクリプト...
動作環境 CentOS Linux release 7.7.1908 (Core) 状況 OpenMPで処理が遅いので、自分が考える最適な並列化に変更する そのためにはlsで読込むファイルリストを分割する方法が必要となる 分割対象ファイル $ ls DATA/ inp.001 inp.002 inp.003 inp.004 inp.005 inp.006 inp.007 inp.008...
View Articleファイル名の最初の6文字だけ保持してrenameする
bmpファイルの最初の6文字を残す処理. forでファイル名のループ for; do; doneでくくる(基本) $iがファイル名 ${i:0:6}で$iの0から6文字目を表す 拡張子が固定だから.bmpを足す for i in *.bmp ; do mv $i ${i:0:6}.bmp ; done
View Articlebash > fileIO > 並列化 > ls + awk > 入力ファイルをINTVLとINDX指定で分割する > bashスクリプト v0.3
動作環境 CentOS Linux release 7.7.1908 (Core) 状況 bashスクリプト(ImageMagickのconvertコマンドを実行する)を並列化したい 自作のlsで並列化用のファイルリスト分割をする v0.1, v0.2 bash > fileIO > 並列化 > ls + awk > 入力ファイルをINTVLとINDX指定で分割する...
View Articleシェルで変数とその内容を全部出力する方法
デバッグ時、エラー出力時に便利です。 引数なしのsetコマンドで全て出力されます。 set Bashの場合は以下です。 (set -o posix; set) POSIXと異なり、setだけだと変数に加え関数まで出力されてしまいます。 そこでPOSIXモードで出力すれば変数だけになる仕組みです。
View ArticlebashrcをOS等の環境ごとに異なる設定にする書き方
bashrcを環境ごとに異なる設定にする書き方 OS、ディストリビューション、ホスト、ターミナルごとに異なる設定を行う場合の書き方まとめ (それとbashrcが長くなりすぎる場合の他ファイルへの分割の仕方) OSごとに固有の設定 OSによる場合分けはunameで判定する case `uname -a` in Darwin* ) # Darwin(MacOS)に固有の設定はここに書く #...
View Articlebashで複数選択のメニューを作る
検索してもあまり情報が出てこなかったので、自分用にメモ。 関数 multiple_select() { local PS3="$1(複数選択する場合は、半角スペースを開けてください)> " local items="$2 exit" local itemarray=($items) local itemlen=${#itemarray[@]} local...
View Article【Bash】Shellの関数内だけsetコマンドオプションを有効化
普段Bashを使うことが多いので、よく使うコマンドとかワンコマンドで自動化したいものを関数化しています。関数のログとか未定義の変数を使用時にエラーメッセージを出力するようにしたかったのでsetコマンドを使用しています。ただそれを関数内だけ有効にしないと関数以外の普通のコマンドを実行した時も出力されてしまうので、setコマンドのオプションを無効化する必要がありました。...
View Article