Bash チートシート - Ubuntu、Mint、Debian 向けの Linux コマンド
一部ツールのコマンドラインパラメータ
非常に網羅的なリストではありませんが、私自身にとって有用な項目をいくつかまとめました

開発ツールとワークフローの詳細については、開発ツール:モダンな開発ワークフローの完全ガイド をご覧ください。
スクリプト内でインタラクティブなプロンプトパターンが必要な場合は、Bash、CMD、PowerShell、macOS でキーを押してスクリプトを一時停止する を参照してください。
Linux Ubuntu のバージョン確認方法
Ubuntu バージョンの確認の詳細については、Linux Ubuntu バージョンの確認 をご覧ください。
方法 1
lsb_release -a
これにより、以下のような出力が得られます。
No LSB modules are available.
Distributor ID: Linuxmint
Description: Linux Mint 22.1
Release: 22.1
Codename: xia
方法 2
cat /etc/os-release
これにより、以下のような出力が得られます。
NAME="Linux Mint"
VERSION="22.1 (Xia)"
ID=linuxmint
ID_LIKE="ubuntu debian"
PRETTY_NAME="Linux Mint 22.1"
VERSION_ID="22.1"
HOME_URL="https://www.linuxmint.com/"
SUPPORT_URL="https://forums.linuxmint.com/"
BUG_REPORT_URL="http://linuxmint-troubleshooting-guide.readthedocs.io/en/latest/"
PRIVACY_POLICY_URL="https://www.linuxmint.com/"
VERSION_CODENAME=xia
UBUNTU_CODENAME=noble
Tar を使った Bash でのアーカイブ作成と展開
圧縮
tar -zcvf archive-name.tgz directory-name
解凍
tar -zxvf archive-name.tgz
SSH と SCP を使った Bash でのリモートサーバーアクセス
ユーザーの ID をリモートサーバーにプッシュ
ssh-copy-id user@10.0.0.225
これにより、次回以降はパスワードなしでログインできるようになります。
ssh user@10.0.0.225
ファイルのアップロード
scp ~/file.ext user@host-ip:/home/user/file.ext
ネストされたフォルダを再帰的にダウンロード
scp -r user@host-ip:/home/user/dir ~/dir
Bash でのフォルダとファイルの管理
存在確認
# 存在しない場合は、中間フォルダも含めてフォルダを作成
[ -d $repdir ] || mkdir -p $repdir
# または
if [ -d $fname ]; then
echo "File doesn't exist: $fname"
return
fi
特定のユーザー用のフォルダ作成
sudo mkdir dir1
sudo chown specific_user dir1
sudo chown :specific_group dir1
フォルダ内のファイルをループ処理
# この例では、特定のフォルダ内のすべての jpg ファイルを fits 形式に変換します
for f in some-folder/*.jpg
do
convert "$f" "${f/.jpg/.fits}"
done
すべてのファイルを 1 つにマージ
cat ./* > merged.txt
Crontab にコマンドを追加する
(crontab -l 2>/dev/null | \
grep -v control-marker-1; \
echo '*/15 * * * * /bin/bash /home/user/stest/stest.sh /home/user/stest >> /home/user/stest/stest.log 2>&1 #control-marker-1') | \
crontab -
ここで:
- */15 - 15 分ごとに実行
- control-marker-1 - cron 設定内でこのコマンドを識別し、次回同じスクリプトで更新するための識別子
- /bin/bash - 実行するコマンド
- /home/user/stest/stest.sh - bash パラメータ - bash はこのスクリプトを実行します
- /home/user/stest - スクリプトパラメータ - $1 でアクセス可能
- /home/user/stest/stest.log - stest.sh のコンソール出力を含むログファイル
確認
grep /home/user/stest/stest.sh /var/log/syslog
crontab -e
Bash でのログファイルの監視
ログファイルをライブで監視
sudo tail -f /var/log/megalog.log
Bash で curl を使った HTTP ステータスコードの取得
response=$(curl --write-out '%{http_code}' --silent --output /dev/null servername)
# または
url='http://localhost:8080/'
status=$(curl --head --location --connect-timeout 5 --write-out %{http_code} --silent --output /dev/null ${url})
[[ $status == 500 ]] || [[ $status == 000 ]] && echo restarting ${url} # スタート/再起動ロジックを実行
ログアウト後に SSH コマンドを継続して実行する
プログラムをフォアグラウンドで実行している場合、以下の操作を行います。
- ctrl-Z を押すと:
[1]+ Stopped myprogram
- disown -h %1
- bg 1
[1]+ myprogram &
- logout
jo を使った Bash での JSON 生成
jo のインストール
sudo apt-get install jo
a="123"
b="456"
jo "model=a" "prompt=b" "stream=false"
以下のような出力が得られます。
{"model":"a", "prompt":"b", "stream":false}
少し複雑な例:
jo -p name=Jane point[]=1 point[]=2 geo[lat]=10 geo[lon]=20
{
"name": "Jane",
"point": [
1,
2
],
"geo": {
"lat": 10,
"lon": 20
}
}
jq を使った Bash での JSON 整形
使用法
| jq .
上記で生成した JSON を整形するには:
a="123"
b="456"
jo "model=$a" "prompt=$b" "stream=false" | jq .
整形された JSON は以下のようになります。
{
"model": 123,
"prompt": 456,
"stream": false
}
Bash での JSON パースとフィールド値の抽出
まず jq をインストールします
sudo apt-get install jq
使用法
| jq -r '.fieldName'
Ollama への呼び出し出力をパースする例:
curl http://localhost:11434/api/generate -d '{
"model": "llama3",
"prompt": "Why is the sky blue?",
"stream": false
}' | jq -r '.response'
Bash でのファイルの単語数カウント
単語数:
wc -w filename.txt
以下のような値が返されます。
261 filename.txt
整数のみを取得したい場合は、最初の単語(数字)を切り出します。
words=`wc -w filename.txt | cut -f1 -d' '`
echo "$words words"
または、wc を以下のように使用します:
words=`wc -w < filename.txt`
echo "$words words"
ディレクトリのディスク使用量の確認
du ~/dirname
Bash でのスクリプトディレクトリパスの取得
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
Bash でのスクリプト実行時間の測定
1 つのオプションとして time 関数を使用します。
time your_script.sh
もう 1 つの方法は、もう少し複雑ですが:
start=`date +%s`
# ここに非常に重要なコードが
# 入ります
end=`date +%s`
runtime=$((end-start))
VS Code を使った 2 つのファイルの比較
code -d <file 1> <file 2>
Ubuntu リポジトリでの利用可能なパッケージの確認
sudo apt-cache policy <packageName>