地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

Bash

【Bash】sedの最短一致

$ echo "<aaa>b<ccc> <ddd>e<ccc>" という文が会った時にbというのを取り出したいケースで以下のようにsedを使おうとするとb以外の不要な部分まで取れてしまう。 $ echo "<aaa>b<ccc> <ddd>e<ccc>" | sed -r 's/<aaa>(.*)<ccc>/\1/' b<ccc> <ddd>e これはsedが最短一致ではなく最長一致がデフォルトで機能するためでそして</ddd></ccc></ccc></aaa></ccc></ddd></ccc></aaa></ccc></ddd></ccc></aaa>…

【Bash】小数点演算する

引数で渡された分だけファイル内の数値に0.1ずつインクリメントするスクリプト。マイナーバージョンとかのタグを自動インクリメントしたいみたいなケースで使えたりする。 #!/bin/bash [[ ! -f "version" ]] && touch version [[ ! $# -gt 0 ]] && exit 1 fo…

【Bash】変数展開で置換をやるイロハ

100回ぐらいググっているやつ。bashにある変数展開は多機能だがその中でもたまにつかう置換機能の紹介です。 記法 概要 ${変数#パターン} 文字列先頭の最短マッチ部分を削除 ${変数##パターン} 文字列先頭の最長マッチ部分を削除 ${変数%パターン} 文字列末…

【Bash】エクスポネンシャルバックオフ

> Exponential Backoffこれ名前あったんだ。。https://t.co/vZomHNRHoF— Ryuichi@vimなにもわからない (@ryuichi_1208) November 16, 2020 仕組み自体は前から知ってたけど正式な名前はさっき知った。そして指数関数的なリトライの実装って実はライブラリが…

【Bash】パイプ有無での実行シェルの違い

シェルスクリプトを書いていて関数を定義した際にlocalを付けずに変数を宣言するとグローバル領域に定義されたような動作をする。これはこれでグローバルにフラグを持っておいて関数内で書き換えたりっていう処理を書くなら直感的で個人的には良いなと思って…

【Bash】entrypoint.sh

#!/usr/bin/env sh usermod -u "${UID}" neovim groupmod -g "${GID}" neovim # su-exec neovim nvim +UpdateRemotePlugins +qa cd "${WORKSPACE}" && su-exec neovim nvim "$@" # su-exec neovim sh

【Linux】LinuxのTip集

コマンド基本+α 省略しない名前 省略しない名前を知っているとちょっとした時に役に立つかも? cd : change directory pwd : print working directory mv : move cp : copy ls : list ln : link teeでリダイレクト リダイレクトと言えば>であるがこれだと実…