シェルスクリプトのパッケージマネージャー「basher」の機能概要と使い方
はじめにシェル環境で作業することの多いみなさんは、シェルスクリプトのパッケージ管理ツールが欲しいと思ったことはあるでしょうか?私はあります。一時期その欲求が高まって、つい自作してしまったほどです。1本稿では、最近見つけたシェルスクリプトのパッケージ管理ツールを1つ紹介します。こちらです:https://github.com/basherpm/basher「basher」という名前で、一見Bash専用...
View Articlebashで複数ファイルを配列に入れる。($())と括弧に入れてねー。
目的複数のファイルをbashの配列に入れてファイル名を取り出す方法です。背景:複数の処理を行っていて、例えば巨大なMP3を時間分割して、それをWAVに変換して、WAVからFFTに変換して、そのFFTを元にスペクトログラムのpngに変換してと、中間ファイルがいっぱいできます。この時に処理がどこまで進んだのかを別のプロセスからチェックしたくなりました。そのため拡張子毎のファイル数を勘定しようと思いました...
View ArticleWSL (Windows Subsystem for Linux)或いはMSYS2からWindowsのgvimを立ち上げる
Windows上でのLinux環境であるWSLからgvimを立ち上げる方法をメモとして残しておく。WSLからWindowsのアプリケーションを起動できるので、以下のようなWindowsのgvimを起動するbashのfunctionを作って登録しておくだけ。当然Windows版のgvimを事前にインストールしておく必要がある。/home/$USER/.bash_aliases#alias...
View Articlebashで取得した複数のファイル名をJavaScriptの配列に書き出す簡単な方法
目的JavaScriptに複数のファイル名を渡したいです。bashでサクッと作りたい環境MacOS/bash5.0centOS7/bash4.24方法bashで複数ファイル(例えばpng)をfindで取得し整形する。hoge.jsというテンプレートの変数宣言の場所に1.の結果を入れるJavaScriptの配列定義はfoo = ["a.png",...
View ArticleAWS CLI v2のコマンド補完を有効にする
TL;DRAWS CLI v2で、シェル補完が有効なようなので設定したいaws_completerを使ってシェル補完を有効にするが、継続的に有効にするには~/.bashrc等に設定するちなみに、Amazon Linux上ではデフォルトで有効化されているようです。Amazon Linuxコマンド補完は自動的に設定され、Amazon Linux を実行する Amazon EC2...
View Articlebashでテキストファイルを行毎に読み込む
目的bashでテキストファイルを行毎に読み込む処理を、IFSを利用して実装した際の備忘録です。IFSとは【シェルスクリプト】IFSで区切り文字(デリミタ)を変更する方法環境変数「IFS」(Internal Filed Separator)には、bashの場合「スペース」「タブ」「改行」($'...
View ArticleMac/Linuxのaliasでaws ssmによるパスワード管理を直感的にする
公私共にお世話になっているSSMですが、都度コマンドは何だっけと苦労してたのでaliasにしました。正確には、引数を使う必要があったので、aliasではなくfunctionとして実装しました。以下のように利用できます。$ setssm TEST_KEY test_val #登録して$ getssm TEST_KEY #参照する test_val #出力$ setssm TEST_KEY2 "test...
View Articlebash/zshで「入力途中の履歴補完」(not インクリメンタルサーチ)
インクリメンタルサーチは謎のモードに突入するのが面倒なので、私は「入力途中の履歴補完」を利用する。こちらを使うと、既に入力済みの内容以降をそのまま履歴補完してくれる。 (謎のモード遷移はない)設定方法がイマイチまとまっていなかったので、備忘録代わりに記載するbash.bashrcbind'"\C-n": history-search-forward'bind'"\C-p":...
View ArticleCSVファイルの行頭に行番号を入れる方法
行数が数百行あるCSVファイルの行頭に行番号を入れたかった。何かいい方法はないかと悩んだ、ExcelでCSVファイルを加工すると思わぬことが起こるのでExcelは使いたくない。 shellでも書くか・・・面倒くさい、と思った時に見つけた方法。環境 Windows10 64bit バージョン1909nl (GNU coreutils) 8.31CSVファイルの行頭に行番号を入れる方法$...
View ArticleWSLからWindowsのexeを拡張子なしで実行する
Windows Subsystem for LinuxからはWindowsのアプリケーションを直接実行する事ができます。PATHが通っていれば単純に$...
View ArticlePowerShell はどうして Bash よりも取っつきにくいのか
理由学習コストが低い。Bash は UNIX哲学の流れを汲んでストリームはすべてテキストで統一しているから、テキストの抽出・加工方法さえ覚えれば、 仕様を一々調べなくて済む表示されたテキストを見れば、取り出したい情報がどこにあるかは一目瞭然 (洗練されたGUIもそういう特性を持つ)PowerShell が素晴らしい理由と取っつきにくい理由素晴らしいところストリームにオブジェクトを流せる...
View Articleスクリプト言語としてみた各POSIXシェルの特徴と互換性上の注意点まとめ
はじめにこの記事は私の主観かつ知っていることをまとめたものです。古くからのシェルの専門家とかではなくここ数年の間に必要になった時にその都度調べたものなので間違いとかもあると思います。またタイトルの通りスクリプト言語としての比較です。つまりインタラクティブシェルの機能についての比較はしていません。(そもそも使い込んでるわけじゃないので知らないです。)POSIX...
View Article[個人メモ]いまさらbashの自動補完
概要Linuxのコマンドが長くなると入力するのがめんどくさくなり、効率が悪いなので、いまさらだがコマンドの自動補完の設定手順を残す導入方法bash-completionをインストール> yum install-y bash-completion ロード&確認>source /usr/share/bash-completion/bash_completion #...
View Articlebashでevalを使って変数内の文字列を評価・連結して実行する
目的bashでevalを使って変数内の文字列を評価して実行するbashでevalを使って変数内の文字列を連結して実行する環境bashevalの使用例同ディレクトリ内に、以下2つのtxtファイルを格納した状態とします。hoge.txthoge hoge fuga.txtfuga fuga evalを使って、単純な文字列ではなく、文字列を評価・連結します。...
View Articlebashのtrapが関数内に継承されないわけがない
久しぶりにシェルスクリプトでtrapを使ったら罠にはまったので備忘録。 (trapを使うたびにこの罠にかかっている気がする。trap自体それほど使わないし、使ったとしても一度実装したら滅多に変更しない部分だし…。)関数外部のエラーtrap_sample1.sh#!/usr/bin/env bashset-eset-o pipefail trap'echo "ERR";' ERR...
View Articleこんなソースコードはイヤだ-クォーテーションはシングルなのダブルなの?
プログラムのソースコードのより良い書き方をまとめていこうと思います。クォーテーションはシングルなのダブルなの?sample.shname="Taro"age=19 country='Japan'greeting="I am $name. I am ${age} years old. I live in $country"echo$greetingどのようにリファクタリングできるのか
View ArticleAtCoder abc168_a
A - ∴ (Therefore)https://atcoder.jp/contests/abc168/tasks/abc168_aread N case ${N: -1} in 2|4|5|7|9 ) echo "hon" ;; 0|1|6|8 ) echo "pon" ;; 3 ) echo "bon" ;; esac
View ArticleAtCoder abc168_b
B - ... (Triple Dots)https://atcoder.jp/contests/abc168/tasks/abc168_bread -r K read -r S if [ "${K}" -lt "$(echo -n "${S}"|wc -c)" ]; then echo "${S:0:$K}"... else echo "${S}" fi
View Article【#FizzBuzz】いろいろな言語で”1から100までの数字を数えて3の倍数と3の付く数字のときにだけアホになる”というのを書いてみる
ふだん定期的にコードを書いていないと、ふとしたときに簡単なロジックのコードも書けなくなってしまう場面に遭遇してしまったため、リハビリの意味も含めて、再勉強した際の内容を自分用のメモとしてまとめました。0. 説明世界のナベアツさん(桂三度さん)の最も代表的なネタ「3の倍数と3が付く数字のときだけアホになります」というものを、いろいろな言語で実装してみます。Wikipedia -...
View Article