Linux Bash コマンド一覧
いくつかのツールのコマンドラインパラメータ
目次
非常に包括的なリストではありませんが、私にとって役に立ついくつかの項目です
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 -zcvf archive-name.tgz directory-name
解凍
tar -zxvf archive-name.tgz
リモートサーバー
リモートサーバーにユーザーの認証情報を送信
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
フォルダとファイル
存在を確認
# 存在しない場合にフォルダを作成し、中間フォルダも作成
[ -d $repdir ] || mkdir -p $repdir
# または
if [ -d $fname ]; then
echo "ファイルが存在しません: $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
ログ
ログファイルをライブで表示
sudo tail -f /var/log/megalog.log
curlのステータスコード
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
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
}
}
JSONを整形
使用
| jq .
上記のJSONを整形するには:
a="123"
b="456"
jo "model=$a" "prompt=$b" "stream=false" | jq .
整形されたJSONは以下のようになります:
{
"model": 123,
"prompt": 456,
"stream": false
}
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'
ファイル内の単語数を確認する
単語数の確認:
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"
ディレクトリがHDD上に使用するスペースを確認する
du ~/dirname
実行中のスクリプトが存在するフォルダ名を取得する
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
スクリプトの実行時間を測定する
time関数を使用する方法の1つ
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>