Shellタイピングのコツ:コマンドライン構文をマスターしてスクリプト作成を高速化
シェルコマンドとスクリプトを素早く入力するためのコツを学びましょう。基本コマンドからパイプ、リダイレクト、ループまで、シェルスクリプトのタイピング速度と正確性を向上させます。
シェルスクリプト(Bash、Zshなど)は、システム管理、DevOps、自動化の基盤です。デプロイスクリプトの作成、サーバー管理、ワークフローの自動化など、シェルタイピングをマスターすることで効率を大幅に向上させることができます。
シェルタイピングスキルが重要な理由
シェルコマンドは開発ワークフローで常に使用されます。git操作からアプリケーションのビルドとデプロイまで。シェルコマンドを素早く正確に入力できれば、デバッグが速くなり、デプロイがスムーズになり、システム管理がより効率的になります。
マスターすべき重要なシェルコマンド
cd / ls / pwd
毎日何百回も使うナビゲーションの基本。
grep / find / xargs
ファイルの検索と処理に必須。
cat / head / tail / less
ファイル表示コマンド。
echo / printf
出力と変数の表示。
chmod / chown
権限管理。
基本的なコマンドパターン
これらの基本的なコマンドパターンを練習しましょう:
ls -la /var/loggrep -r "pattern" ./srcfind . -name "*.js" -type fパイプとリダイレクトのパターン
パイプとリダイレクトはシェルスクリプトの力です:
cat file.txt | grep "error" | wc -lls -la > output.txt 2>&1ループパターン
これらの一般的なループ構文をマスターしましょう:
for file in *.txt; do
echo "Processing $file"
donewhile read -r line; do
echo "$line"
done < input.txt条件分岐パターン
必須の条件構文:
if [ -f "$file" ]; then
echo "File exists"
fi[ -d "$dir" ] && cd "$dir"if [[ "$string" =~ ^[0-9]+$ ]]; then
echo "Is a number"
ficase文パターン
caseによる多方向分岐:
case "$1" in
start)
echo "Starting service"
;;
stop)
echo "Stopping service"
;;
*)
echo "Usage: $0 {start|stop}"
;;
esac関数パターン
再利用可能な関数の定義:
function log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
}cleanup() {
rm -rf "$tmpdir"
exit "${1:-0}"
}
trap cleanup EXIT配列パターン
bashでの配列操作:
files=("file1.txt" "file2.txt" "file3.txt")
for f in "${files[@]}"; do
echo "$f"
donedeclare -A map
map["key1"]="value1"
map["key2"]="value2"
echo "${map[key1]}"パラメータ展開
高度な変数操作:
filename="/path/to/file.tar.gz"
echo "${filename##*/}" # file.tar.gz
echo "${filename%.*}" # /path/to/file.tarname="hello"
echo "${name:-default}" # 空なら default を使用
echo "${#name}" # 長さ: 5sedパターン
テキスト処理のためのストリーム編集:
sed 's/old/new/g' file.txtsed -i '' 's/foo/bar/g' *.txtsed -n '10,20p' file.txt # 10-20行目を表示awkパターン
強力なテキスト処理:
awk '{print $1, $3}' file.txtawk -F',' '{sum += $2} END {print sum}' data.csvawk '/error/ {count++} END {print count}' log.txtxargsパターン
コマンドの構築と実行:
find . -name "*.log" | xargs rmcat urls.txt | xargs -I {} curl -O {}プロセス置換
コマンド出力をファイルとして使用:
diff <(sort file1.txt) <(sort file2.txt)ヒアドキュメント
複数行入力:
cat <<EOF > config.txt
host=localhost
port=8080
EOFエラーハンドリング
堅牢なスクリプトパターン:
set -euo pipefailcommand || { echo "Failed"; exit 1; }SSH・リモートコマンド
リモート実行パターン:
ssh user@host 'ls -la /var/log'scp -r ./dist user@host:/var/www/rsync -avz --delete ./src/ user@host:/backup/アーカイブと圧縮
一般的なアーカイブ操作:
tar -czvf archive.tar.gz ./directorytar -xzvf archive.tar.gz -C /destinationよく使うシェル記号
パイプ (|) - 出力を次のコマンドに渡す
リダイレクト (> >>) - ファイルに書き込む
アンパサンド (&) - バックグラウンドで実行
ドル記号 ($) - 変数参照
バッククォート () または $() - コマンド置換
セミコロン (;) - コマンド区切り
ダブルアンパサンド (&&) - 前のコマンドが成功したら実行
練習のコツ
1. 基本的なナビゲーションコマンドから始める
2. パイプとリダイレクトに進む
3. 変数構文($VAR, ${VAR}, "$VAR")を練習
4. クォートのルール(シングル vs ダブル)をマスター
5. 特殊文字(*, ?, [], {})に慣れる
DevTypeのShell練習問題で定期的に練習することで、これらのパターンを身につけ、自信を持ってコマンドを入力できるようになります。