シェルスクリプトを書くときの初手のおさらい
はじめに 最近、シェルスクリプトを書く機会があり、どういう初手をとるのがいいのか、自分なりに整理し直しました。 まず先頭に書くもの もはや、何番煎じかわからないネタですが、あらためて。 このあたりの記事がよくまとまっています。 結論 #!/usr/bin/env bash set -euo pipefail shebang #!/usr/bin/env bash...
View Article確定申告に向けて、NiceHash のマイニング収益を自動計算する
はじめに 暗号資産のマイニングをお手軽にはじめられる NiceHash ですが、確定申告のための収益計算を手作業で行うのは厳しいものがあります。 2021年は手動で CSV をダウンロードしてワンライナーで乗り切りましたが、来年こそは自動化しましょう。 自動化なので、使用するプログラミング言語はもちろん Bash です。 ※ 本記事は確定申告の正確性を保証するものではありません。 NiceHash...
View ArticleBash スクリプトが逐次読込されている件の詳細
bash スクリプトの実行中上書き動作について このパーサは fgets(2) で読み込まれつつ実行される為、一括でファイルが読み込まれている訳ではない。 普通の fgets の実装ならまとまった単位でバッファに read してそのバッファから 1 行ごとに返るだろうので、ファイルサイズが大きくなければ一括で読まれることになるのでは・・? と思っていたところ下記を見まして、...
View Article【Bash】スクリプト実行中にスクリプトを書き換えてみる
はじめに 先日、日本ヒューレット・パッカード合同会社が京都大学のスパコンのファイルシステムを消失させてしまったことが話題に。 根本原因はリリース手順の不備なものの、技術的なポイントとしては以下が興味深かったので同事象に関わるテストを実施してみました。 bash...
View Article『エラトステネスの篩』の記述例(bash版)
元記事より分離しました.趣旨は元記事と同じく『「エラトステネスの篩」だとこれだけ速く素数が求まる!』ですが,仕様・処理系に大きな制約のあるプログラミング言語については,他の言語との比較を避けるため,個別記事としている次第です.なお,POSIXシェルによるシェルスクリプト版は別記事としています. 実行環境(スマートフォン) ASUS Zenfone 5: Qualcomm Snapdragon 636...
View Article隠しフォルダとか含めたディレクトリサイズの計算 / du
ディレクトリ内の容量を計算する際 du コマンドを使うが、サブディレクトリ毎の一覧を出したい時に、隠しディレクトリが拾えなかったりで意図と違う感じになる。 git 使ってるディレクトリだと .git に大量のファイルが入ってたりするので、整理する。 結論 下記のコマンドで全部出る。 $ du -sh . .[^.]* * 経緯など 下記のような内容のディレクトリがあった場合。 $ ls -a ....
View Articlejqコマンドを使わずにjsonを一行にする裏技
curlコマンドでapiのテストをするときに用意したjsonを1行にする必要があった。 でもjqコマンドをインストールするのはめんどくさい。 そこで、デフォルトでmacなどに入っているtrコマンドでjson文字列内の改行と空白を削除する方法を考えた。 $ echo <json> | tr -d ' ' | tr -d '\n' && echo...
View Article[Linux] ランダム文字列を出力
Linux環境にてパスワードやパスフレーズ等の設定に使うランダム文字列を生成 条件:アルファベット大文字 (I,Oを除く)、小文字 (lを除く)、数字 (0-9)、記号 (#,?,!,_)を入れること cat /dev/urandom | tr -dc 'a-km-zA-HJ-NP-Z0-9#?_!' | fold -w 8 | head -n 300 | grep '[#?_!]' | grep...
View Articlebash上で正規表現を使って文字列の後方一致をチェックする
bash上で正規表現を使って文字列の後方一致をチェックする際の備忘メモ 例えばURLがhttps://github.com/xxxx/testである事を確認したい場合でも、 以下のようにすると後方が一致してないのに一致と判定されてしまう。 test.sh VALUE_URL="https://github.com/xxxx/test2" if [[ "$VALUE_URL" =~...
View Article本当に便利!direnv の 3つの活用パターン
今の時代、VM ベースのクラウド基盤だけでなく、Docker や Kubernetes (K8s) などのコンテナ基盤が広く使われています。 こんな時代だと、おうちクラウドを使っている人に限らず、他の人と環境を共有していたり、複数の環境を切り替えて作業しなければならない場面は多いのでは無いでしょうか? 例えば、複数の K8s クラスタを切り替えながらアクセスしないといけない、とか。 PC...
View Articletsv を 1行1件ずつの json にする
コード tsv2json.jq (env.HEADER|split("\t")) as $header | [ $header, split("\t") ] | transpose | map({(.[0]): .[1]}) | add tsv2json.sh #!/bin/bash set -ue read HEADER export HEADER jq -c -R -f tsv2json.jq...
View ArticleWindows出身者がMacでパスを通してみた【zsh】
背景 Qiita初投稿です。よろしくお願いします。 学生時代と社会人を通し、ずっとWindowsを使ってきた私が個人開発のためMacを使うことになり、Windowsだと慣れていた「パスを通す」という作業で苦労したためやり方をここに残しておきます。...
View Articlelsコマンドで直下ディレクトリ内のファイルのフルパスを表示したいだけ
調べてもいい感じの記事がヒットしなかったのでメモ bash ls -dF $(pwd)/* | grep -v "/$" 以下のように直下のファイルのみフルパスが表示されている bash user@LAPF13C6TSA:~/main$ ls Makefile README.md cloud common config.sh device doc edge misc...
View ArticleUbuntuでターミナルからVSCodeが開けなくなった時の対処法(WindowsPowerShell)
問題点 WindowsPowerShellでUbuntu20.04からcodeコマンドでVSCodeを立ち上げていたものの、ある日突然Command 'code' not foundとのエラーメッセージが出て、VSCodeを開けなくなった。 考えられる原因 前日にNode.jsのnpmのパスをWindowsに通していたので、その関係でUbuntu側のパスが変更された? 対処法...
View Article爆速でMFAを突破する
※oath-toolkit導入済みとします oathtool --totp --base32 'XXXXX_SECRET_KEY_XXXXXXXXX' | pbcopy これをコンソールで叩けばMFAのトークンがクリップボードに保存されて爆速認証ができる
View Articledocker コンテナ内の例えば .bash_profile の設定を反映して実行したい
Login を伴うのであれば、--login オプションを付ければ、反映される。 docker run -it something_image bash --login 以下のように、Login せずにコマンドだけ実行させたい場合があった。 docker run something_image ls -l 強引ではあるが、以下のように対処した。 docker run something_image...
View ArticleGitHub IssuesにあるTasksの状況を取得する
Issue の中にある Tasks の進捗状況集計したい。したくない?したいですよね! 実は GitHub の REST API を叩いても Tasks 情報を素直に取れません 仕方がないので雑に取得するためのシェルスクリプトを書きました 自作するまでの経緯 GH CLI では出来ない GitHub CLI 使ったら簡単に出来るやろ、そう思っていた時代が私にもありました なんとできません...
View ArticleRaspberry piにSORACOM CLIをインストールする
はじめに ラズパイからSORACOMのAPIを叩くにはCLIを使うのが便利ですが,公式ドキュメントに書かれているインストール用のコマンドラインはラズパイ向けになっていないので,備忘録としてラズパイ用のインストールコマンドを残しておきます。 実行環境 機種: Raspberry pi 4 Model B OS: raspbian 10.10 CPU: ARMv7 (32bit) コード...
View ArticleCLIを使わずにSORACOMのSIM入りデバイスへリモートSSH
はじめに SORACOM Napterは,SIM入りデバイスをインターネットに晒すことなくリモートから接続可能にする便利なサービスですが,Napter経由でリモート接続する際にはその都度ポートマッピングを作成する必要があります。...
View Articleyad : シェルスクリプトで簡単にGUIを作って活用したい
はじめに Githubの組織管理をしているときに、「新規ユーザのAさん、Bさん、…を組織Xに加えて」とかの依頼をよく受けます。 最近は、Github Rest APIを用いて、スクリプトベースで登録処理ができるのでだいぶ楽になったのですが…、いちいちコマンドラインに打ち込むのも面倒。 slackで依頼を受けるので、slackの内容をコピペしたいな…、と思っておりました。...
View Article