シェル変数と環境変数の違い(bash)
概要シェル変数と環境変数について調べる機会があったので、備忘録兼誰かの役に立てばと思い書きました。環境変数環境変数は、例えば「PATHを通す」のPATHがその一例です。他にも$ cd で移動する先はHOMEという名前で環境変数として保存されていたりします。そのようなもともと用意されている環境変数の他に、自分でも環境変数を設定することができます。環境変数は以下のコマンドで確認することができます。$...
View Article[Bash]ファイルのパターンマッチしない行をカウントする
ファイルのパターンマッチしない行をカウントするサンプルコード(覚え書き)。具体的には、各行の特定の箇所の出力が正しいか調べます。環境OS: Amazon Linux2概要ファイルの各行先頭から、7文字がIDで、そのパターンが以下の通りであることを調べます。パターン:ID + 数字5文字...
View Articleシェル芸でGitHubの日付別Contribute数を取得
概要シェル芸で日付別のGitHubの草情報を取得し日付別にContribute数を整形して表示したい.やってみたまず列挙.https://github.com/users/eggplants/contributionsのソースを見ると, 草の部分に<rect>要素が列挙されていることがわかる.しかし<rect>要素を抜き出すとのような部分も取得してしまう....
View Article空白を含むShell変数の展開時の挙動
環境bash疑問以下のように変数を定義したとき、空白やタブはどのように処理されるのか知りたい。packages=' httpd postgresql redis ' yum install ${packages} 結論yum httpd postgresql redisと展開されるので、処理は正常に完了する。詳細echoコマンドで挙動を確認する。#!/bin/bash # your code...
View Articlebash関数の内部で`exit`した際の挙動
EnvironmentbashProblems関数内でexitを読んだ際、どのような挙動になるのかを知りたい。 関数の実行のみが終了するのか、ファイルの実行が終了するのか終了コードはどのようになるのかHow to solve確認したところ、以下のような挙動だった。ファイルの実行が終了するプロセスの終了コードは、exitで指定した終了コードとなるDescriptioncat << EOF...
View ArticleCentOS 6でupstartを使ってログを吐きながらdaemon化する
TL;DRStack Exchangeにそのものドンピシャな回答がある。https://serverfault.com/a/666970/etc/init/blackbox_exporter.confdescription "prometheus blackbox exporter" start on runlevel [2345] stop on runlevel [016] script...
View ArticleBashでよく使う記法集
本記事の目的作業自動化用のスクリプトを作成する際によく使う、Bash独自の記法についてまとめる。シェルスクリプト文法パラメータ$?:直前のコマンドの終了ステータスを参照する。0であればTrue、0以外であればFalseの値を意味する。$#:シェルスクリプトやシェル関数の引数の個数を参照する。$0:起動されたシェルスクリプト名を参照する。"$@":全ての位置パラメータをそれぞれダブルクォートで囲んだ状...
View ArticleBashのエイリアスで「'」(シングルクウォート)が紛れていると認識されなかった話
結論「'\'」を先頭に置いてエスケープ!例alias xxx='~~~ | awk -F ':' '{print $1}'' ↓alias xxx='~~~ | awk -F '\'':'\'' '\''{print $1}'\''' あとがきこのエスケープめっちゃ読みづらいね!でもメモしておかないとこのエスケープの仕方は忘れるから.bashrcにでもコメントで書いとくといいかもね!ってメモでした
View Articlebashでブラウザクラッシャー「you are idiot」を再現してみた
bashでyou are idiotを作ってみる実行イメージ背景と文字が白黒で点滅しながら、巨大文字でYou are idiotが出力されます。また、Ctrl-Cで終了しようとすると☺が増えます。 実行環境Ubntu 20.04LTSGNU bash, version...
View Articleシェルで入出力のスペース区切りに悩まされたときの解決法
本記事では、コマンド間で文字列をやり取りするときに勝手にスペースで区切られてしまうことで起きる問題の解決法をまとめます。前提とする環境Linux (Ubuntu)bashLinux 周りに疎いため、これが必要十分かどうかはわかりかねます。(さすがにLinux以外だとコマンドの挙動が変わってくると思われますが、Ubuntu は絞りすぎかも。bash についても同様で他の sh...
View Article直近一週間の日本地震XMLをjqで処理してCSVにする
何?NHKの地震情報API(XML形式)をjqでCSVに変換し書き出す.スクリプト言語で書くよりコマンドラインでjqを使うとシュッと終わるのでおすすめ.書き出したCSVはExcelで処理するなりPythonに食わせるなりできる.APIhttps://www3.nhk.or.jp/sokuho/jishin/data/JishinReport.xml素のままだとShift-JISなので扱いやすいUTF...
View ArticleGitHubの折り畳み構文を生成するコマンドラインショートカット
gh-details 関数.bashrc / .zshrc に追記function gh-details(){[-n"$1"]&&summary="<summary>$1</summary>\n\n"||summary=""echo"<details>\n\n${summary}\`\`\`console\n$(cat...
View ArticleFinderでファイルサイズを棒グラフ表示する
Finderの表示では、個々のファイルの大きさが直感的にとらえられない。サイズでソートすると今度はどのファイルが新しいのかがわからない。そこで、ファイルサイズをComment欄に棒グラフで表示するだけのスクリプトを作った。The Finder's display does not intuitively capture the size of individual files. If you...
View Articleディレクトリ配下全ファイルからファイル末尾が改行でないファイルを一覧表示するShell Script
作成経緯GitHubにファイル末尾が改行になっていないファイルをアップすると怒られます。なぜファイル末尾に改行を入れるのか入っていないと、エラーになる可能性もあるらしい。今やっているスクールでは必須要件なので、プロジェクト内のファイルが全て末尾改行になっていることを確かめるツールがあれば、後々楽になるだろうと思い、シェルスクリプトを書いてみることに。bashは一度も書いたことがなかったので練習も兼ね...
View Article定義した関数を export (Bash で export -f)
こんにちは。 bash では定義した関数を export -fできます(POSIX ではこの機能を持っていません)。xarg で定義した関数を使う場合に必要となります(下記例)。export_f_myfunc.sh#!/bin/bash myfunc(){ myfunc0 "$1";} myfunc0(){echo"$1";}export-f myfunc myfunc0 find .-type f...
View Articleshell変更の仕方
ターミナルからshellを変更するやり方起動シェルを確認echo $SHELL 結果/usr/local/bin/fish この場合fishを使っていることがわかるシェル一覧を呼び出すcat /etc/shells 結果現在このPCに入っているshellの一覧が表示される/bin/bash /bin/csh /bin/ksh /bin/sh /bin/tcsh /bin/zsh...
View Articlessh ログインをして、リモート先で sudo コマンドを一斉に行う方法
ssh ログインをして、リモート先で sudo コマンドを一斉に行う方法です。sshpass だけ必要になりますので先にインストールを行いますsudo apt install-y sshpass ;シェルファイルの作成gedit login_and_cmd.sh;以下のコードを保存します。login_and_cmd.sh#!/bin/bash#...
View ArticleGit Bashで対話モードのPythonのコマンド履歴と補完を有効化する
対処法以下のコマンドでpyreadlineをインストールします。$ pip install pyreadline これで上下矢印キーでの履歴参照とTab補完が効くようになります。 Anaconda環境の場合はpipをcondaに読み替えてください。
View Article仮想ホスト(ESXi)と仮想マシンの停止スクリプト
1.仮想マシンとESXiの停止ESXiにログインし、すべて仮想マシンを停止するのも面倒なため、スクリプトを組みました。また、普通ならpowershellで行うところを、ESXiに組込み、外部のLinuxサーバからsshでアクセスし、スクリプトを蹴っても実行できるようにしています。2.自動停止スクリプト仮想ホストはESXi6.7です。vmware-stop.sh#停止除外マシンのVMIDを取得EXCL...
View Article標準入力を受け付けながら処理を分岐するシェルの書き方
たまーに書くことがある標準入力を受け付けながら処理を分岐するシェルのサンプル。こういうやつ番号を入力したら入力された番号の処理を実行するってやつ。以下のサンプルでは 1 って入力したら 1って処理を実行してる。テンプレートread で標準入力を受け付けて、 Swith文で分岐する、みたいな感じ。#!...
View Article