ひゃまだのblog

ひゃまだ(id:hymd3a)の趣味のブログ

Bash

Bashのwhileとforの無限ループと{}(ブレース)への対応について

(2024-02-11 初稿) Bashの while と for を利用していて、どうしてそのような仕様になっているのか、不思議なので記事にしてみた。 まずは、whileを使った無限ループは、以下のとおり。 なお、無限ループを抜けるのは、Ctrl+c(コントロールとcを同時に押す)…

Bashの便利なブレース展開(Brace Expansion)

(2024-02-08 初稿 ) Bashにはブレース展開と呼ばれる便利な機能がある。 このページでは、以下のサイトを参考に作った筆者の備忘録である。 Bash Reference Manual 第42回 bashの便利な機能 | gihyo.jp bashのブレース展開についてまとめ #Linux - Qiita 基…

Bashのパラメータ展開による大文字、小文字変換

(2024-02-02 初稿 - 2024-02-05 追記) Bashの文字列演算子については、以前、以下のページに記述した。 Bashの文字列演算子 - ひゃまだのblog 先日ネットを検索していたら、Bash 4.0以降のバージョンでは、アルファベット文字の大文字や小文字に変換すること…

Shellcheckを使ってBashスクリプトのチェックと最適化

(2023-01-29 初稿 ) はじめに 筆者は、Bashスクリプトをよく利用しているが、その独自の記述方法のためにエラーが起きたり、思いどおりに動作させられないことがしばしばある。 最近、ネットで shellcheck のことを知り、シェルスクリプトの強力な助っ人にな…

bashの{} (Braces) に関するメモ

(2024-01-16 初稿 ) 本日、Bashスクリプトを作っていて、ちょっとハマったのでメモ。 Emsg="ファイル数が合ってないよ" [[ $(ls -1 | wc -l) -ne 10 ]] && { echo $Emsg; exit 1 } /home/hoge/bin/bash-test: 行 28: 構文エラー: 予期しないファイル終了 (EO…

Bashで三項演算子ぽいもの

(2023-01-02 初稿) Bashで if 文の書き方があまり好きではない。 具体的には、if ; then と判定文とthenの間に、「;」(セミコロン)が入るのがどうも気にいらない。 できれば、ruby や python等のように、print("true") if a=0等のように if 文を最後に書く書…

Debian 12(bookworm)で~/binにpathを追加する

(2023-12-25 初稿 - ) 今更感が半端ないけど、Debian 12(bookworm)でLXDE環境を新規にインストールしたときに、~/binにpathが通らないので不便だ。 ちなみに、筆者が使っているログインシェルは、Bash。 どうも、CUIやsshでログインした時と、Xからlightdmで…

BashスクリプトのみでDockerを管理する

(2023-12-08 初稿 - ) Dockerをしばらく使っていると、いろいろなImageとconteinerが溜まって来るとともに、Dockerfileも溜まってきて、どれがどのDockerfileかわからなくなって来る。 (もちろん、Dockerfileに名前を付けて、呼び出すこともできるけど…) 最…

JavascriptでなんちゃってMusic Serverを作る

(2023-10-31 初稿 - ) これまで、Webサーバーを立ち上げたり、Javascriptで日付や時間、CGIを動かしてきた。 PythonでWeb Serverを立ち上げる Javascriptでホームページに日付と時刻を表示する JavascriptでCGIを起動して、起動元のページにCGIの出力を表示…

Debian 12(bookworm)の Docker で Tensorflow を動かす

(2023-10-25 初稿 - ) Debian 11 (bullseye) から Docker で、TensorFlowを使ってきたけど、12(Bookworm)もマイナーアップデートしていることだし、そろそろDockerの環境を入れ替えて末永く使おうと思った。 Debian 11(Bullseye)にDockerのインストール Dock…

PythonでWeb Serverを立ち上げる

(2023-10-17 初稿 - 2023-10-27 追記) (2023-10-27 追記) いつの間にかRaspberry Pi OSも、12(bookworm)が公開され、Pi 4または5でwaylandを利用している場合は、後述する autostart の方法では自動起動することができなくなった。 Waylandを使っている場合…

Bashでもprintfが使える

(2023-08-22 初稿) 恥ずかしながら、つい最近までbashでprintfが使えることを知らなかった。 これまで、echoで一生懸命整形したり加工したりして出力してたこと。^^; さて、printfの使い方は、man 3 printf等を見て欲しいが、echoと違ってとても高機能。 い…

シェルスクリプトの先頭行にshebang(#!)を書く

(2023-08-21 初稿 - 2023-08-22 追記) bash等のスクリプトをファイルに記述する場合は、先頭行にshebang(シバン)を記述する。shebangでスクリプトを実行する処理系(インタプリタ)を指定することになる。 bashでは、以下のように記述することが多い。 $ which…

Bashスクリプトのechoで改行を含む複数行のメッセージを表示する

(2023-07-24 初稿) bashスクリプトで、改行を含む複数行のメッセージを出力したいときがある。 ヒヤドキュメントを使う方法等、様々方法があるようだが、一番シンプルな方法が以下のサイトに記述があったので、筆者のメモとして書き残す。 bashで複数行の文…

mkdir -p って便利だね

(2023-07-19 初稿) Bashスクリプト等でディレクトリを作る際は、いつも既にディレクトリが有るか無いかを確認してからディレクトリを作成していた。 例えば、カレントディレクトリにtempディレクトリを確認して、無い場合にディレクトリを作成していた。 if …

Bashスクリプトで複数行をコメント化

(2023-06-13 初稿) Bashスクリプトを作っていて、コメント化する場合、1行のみや行の途中からの場合は、#を用いてコメント化できる。 ただし、複数行をコメント化するのは、少々面倒だ。 筆者の場合、vimを使うことが多いので、C-v、j(矩形選択)、S-I、#、E…

Sedで途中の行を抽出する

(2023-06-11 初稿 - 2023-06-12 修正) sedを用いて、途中の行を抽出する。自分用のメモ。 $ cat test.txt 1: a 2: b 3: c 4: d 5: e 上記のようなファイル(test.txt)がある場合、3〜4行を抽出する場合、sedでは以下のように記述する。 $ cat test.txtt | sed…

フォルダ内のファイルをランダムに指定個数選んで表示(コピー、移動)する

(2023-06-07 初稿 - 2023-06-11 追記) 元ネタは、以下のサイトの「フォルダ内のファイルをランダムに10個コピーする」で、素晴らしいアイデア。 フォルダ内のファイルをランダムに10個コピーする - Qiita ワンライナーで汎用性が高いのだけど、筆者はすぐに…

chatGPTにbashスクリプトを書いてもらう

(2023-04-28 初稿) 最近、はやりのchatGPTを使って、bashスクリプトを作ってもらった。 作ってもらったbashスクリプトは、以下のページある株価を取得するもので、簡単にするためにVYMのみの株価を取得するようにした。 BashでGoogleファイナンスをスクレイ…

BashでGoogleファイナンスをスクレイピング

(2023-04-06 初稿 - 2023-04-27 追記) ランキング参加中プログラミング ランキング参加中Debian ランキング参加中Linux はじめに 来年(2024年)から新NISAが始まるようで、投資するお金はないけど、投資の練習だけはしておこうと、Googleファイナンスをスクレ…

bashでもinkey$のようなキー入力を得たい

(2023-04-03 初稿 - 2023-04-08 修正) ランキング参加中プログラミング ランキング参加中プログラミング ランキング参加中Debian ランキング参加中Linux 以前、pythonでも同様にキー入力を受けるためのスクリプトを紹介した。 python CUIでキー入力 - ひゃま…

bashスクリプトで画像等GUIを表示しても、フォーカスを失わずにスクリプトを継続実行する

(2023-04-02 初稿 - 2023-04-08 修正) ランキング参加中プログラミング ランキング参加中プログラミング ランキング参加中Debian ランキング参加中Linux 新年度、初投稿。2023年度もよろしくです。 最近、bashスクリプトが楽しくて、気がつくとスクリプトを…

bashでimportっぽいことをしてみる

(2023-03-31 初稿 - 2023-04-08 修正) ランキング参加中プログラミング ランキング参加中プログラミング ランキング参加中Debian ランキング参加中Linux bashでも、他のスクリプトで作成したfunctionをimportして使ってみたい。 pythonなら、if __name__ == …

コマンドライン引数の最大文字数

(2022-08-31 初稿 ) 最近、Bashスクリプトを書くのが楽しくて、先日も、大量のコマンドライン引数を必要とするBashスクリプトを書いたので、気になって最大文字数はいくつなのか調べてみた。 その結果、以下のサイトに調べ方と答えがあった。多謝。m(__)m コ…

Bashとcurlを使ってLine Botで自分に通知する

(2022-08-29 初稿 ) はじめに 以前に、以下のページを作り、便利に使っていた。 Ntfyで、超簡単に自分へ通知する - ひゃまだのblog しかし、NtfyはAndroid端末のアプリなので、iPhoneでは利用できない。 そこで、Line Botで通知する方法を調べて、簡単なスク…

timeout コマンドが便利すぎる

(2022-06-17 初稿) 筆者はRaspberry Piで温湿度を測ったりしている。 Raspberry PiでCircuitPythonを利用して温湿度を測る(DHT22、AM2302) - ひゃまだのblog 先日、少し遠い所の温湿度を計測しようと、センサーの接続ケーブルを伸ばしたところ、時々温湿度…

Debian PCをWake On LANで起動できるようにしたよ

(2022-01-31 初稿 - 2022-11-01 追記) はじめに Chrome Remote Desktopを利用すると、多くの場合ネットワークの設定を変更せずに職場や自宅のネットワークにアクセスできるようになる(職場のPCにリモート接続する場合は、許可が必要な場合がある)。 少なく…

Bash,Python,Ruby等のスクリプトを簡単にはてなブログのHTML編集に貼れるように

(2022-01-25 初稿 - 2023-12-06 修正) はじめに はてなブログに投稿を始めて、先日アップした記事が100を越えた。多くの記事は以前アップしていたサイトからの転載だが、2021年5月15日から始め255日で100記事を超えることができた。 はてなで記事を書くこと…

Bashの終了ステータスを利用した小技

(2022-01-24 初稿 - ) Bashのスクリプトを作っていると、Webでいろいろ調べてとても勉強になる。 今回は、終了ステータスを利用した小技を紹介。 今回は、以下のサイトを参考にさせていただいた。多謝。m(__)m 終了ステータス | UNIX & Linux コマンド・シェ…

Raspberry Pi(ラズパイ)にBluetoothスピーカーをつないだよ

(2022-01-22 初稿 - 2022-01-24 追記) (2022-01-24 追記) Raspberry Piとなかなか接続(Connect)が成功しないスピーカーがあったので、その対策のスクリプトを追記。 (追記終了) はじめに 先日、Raspberry Pi(ラズパイ)をBGMサーバとラジオをきけるようにした…