🔖

Linux(Ubuntu)コマンド簡易メモ

2022/09/12に公開


Linuxを使用していたのがかなり前なので思い出しついでにメモを作っておきます。".",".."や絶対,相対パス等は省略しています。また、深く理解していないため注意してください。Ubuntuのコマンドです。

基本

man commandcommand --help 等で使用方法を確認する。また、コマンドのオプションは明示がない限りコマンドのすぐ後ろに指定する想定。

  • cmdA | cmdB : cmdAの標準出力結果をcmdBの標準入力とする
  • cmdA > fileA : cmdAの標準出力結果をfileAに上書き出力する
    • cmdA | tee fileA : cmdAの標準出力結果を標準出力とfileAの両方に出力する
    • cmdA > /dev/null : cmdAの標準出力結果を捨てる
  • cmdA >> fileA : cmdAの標準出力結果をfileAに末尾追記出力する
  • cmdA < fileA : fileAの内容をcmdAの標準入力とする
  • varA=val : 一時変数varAにvalを格納する (valがスペースを含む場合は" v a l "のようにする)
  • $varA, ${varA} : 一時変数varAの内容を参照する
  • `cmdA`, $(cmdA) : cmdAの標準出力結果を用いる
    • varA=`date` : 'Mon Sep 10 00:00:00 JST 2022'がvarAに格納される
  • 'stringA' : stringAの中に変数が存在しても、全て単純な文字列とされる
  • "stringA" : stringAの中に変数が存在した場合、変数展開後の値が文字列として扱われる
  • cmdA ; cmdB : cmdAに続けてcmdBを実行する
  • cmdA && cmdB : cmdAが正常終了した場合、続けてcmdBを実行する
  • cmdA || cmdB : cmdAが正常終了しなかった場合、続けてcmdBを実行する
  • (cmdA ; cmdB) : cmdAとcmdBをひとまとまりとして実行する
  • 引数等で使用可能なメタキャラクタ
    • * : 0文字以上の文字列
    • ? : 任意の1文字
    • [a-z] : aからzいずれかの1文字
    • {a,bb} : aかbbのいずれか

簡易表示(出力)系

  • echo string1 : string1の最後に改行を付与して標準出力に表示
    • -n : 最後に改行を付けない
  • cat file1 : file1の内容を標準出力に表示
    • -n : 行番号を付与して表示
    • cat << EOF > fileAとすることでEOF入力までの複数行の入力をそのままfileAに出力可能
  • less file1 : file1の内容を標準出力に表示 (ページ送り可能)
    • -N : 行番号を付与して表示
      • qで終了, fで次ページ, bで前ページ, gで先頭, shift+gで末尾
  • head -n 7 : ファイル先頭7行を表示
  • tail -n 7 : ファイル末尾7行を表示

File,Dir単位操作系

  • pwd : カレントディレクトリの絶対パス表示
  • cd dir1 : カレントディレクトリをdir1に変更
  • ls dir1 : dir1の中のファイル一覧を表示
    • -a : 全て表示
    • -l : 詳細表示
    • --full-time : 詳細タイムスタンプ表示
    • -R : 再帰的に表示
    • -t : 更新時間順に表示
    • -S : ファイルサイズ順に表示
    • -r : 逆順に表示
  • mkdir dir1 : ディレクトリdir1を作成
    • -p : dir1作成に必要なディレクトリを同時に全て作成
  • touch file1 : file1として空ファイル作成
    • -t : file1を[[CC]YY]MMDDhhmm[.ss]形式で指定した日時に変更
  • cp file1 file2 : file1をfile2にコピー
    • -n : file2が存在した場合、上書きしない
    • -f : file2が存在した場合、強制上書き
    • -p : アクセス権,所有者,タイムスタンプを維持
  • mv file1 file2 : file1をfile2に移動
    • -n : file2が存在した場合、上書きしない
    • -f : file2が存在した場合、強制上書き
  • rm dir/file1 : dir/file1を削除
    • -f : dir/file1が存在しない場合は何もしない
    • -d : dir/file1が空のディレクトリの場合は削除
    • -r : dir/file1が中身が入っているディレクトリの場合でも削除
  • tar -f file1 dir1 : dir1をfile1としてアーカイブファイルにしたり、逆の操作をする
    • -f : アーカイブファイル名を指定
    • -c : 新しくアーカイブファイルを作成
    • -z : gzip圧縮解凍を同時に実行
    • -x : アーカイブファイルを展開
    • -t : アーカイブファイルに含まれるファイル一覧を表示
      • tar -czf archive.tgz source_dir
      • tar -xzf archive.tar.gz target_dir
  • chown user1:group1 dir/file1 : dir/file1のオーナーをuser1,group1に変更
    • -R : 再帰的に適用
  • chmod nnn dir/file1 : dir/file1をnnnの権限に変更
    • -R : 再帰的に適用
      • nnnはn,n,nとしてそれぞれオーナー,オーナーグループ,その他ユーザが設定対象
      • nには読取を4, 変更を2, 実行を1として付与したい権限を足し算した結果の数を設定
      • chmod 700 file1 とした場合、オーナーは全権限を持ち、オーナー以外は全権限が無い
      • chmod 755 file1 とした場合、オーナーは全権限を持ち、オーナー以外は読取と実行が可能
  • ln -s file1 link1 : file1のシンボリックリンクlink1を作成
  • find dir1 criteria action : dir1から再帰的にファイルを検索
    • criteria
      • -name string1 : ファイル名がstring1にマッチするファイル
      • -type f : ファイル
      • -type d : ディレクトリ
      • -perm -u=w : ユーザが書込権限所持
    • action
      • -ls : ファイル一覧表示
      • -print : ファイルパス一覧表示 (デフォルト)
        • find dir1 -type f | xargs chmod 600 でdir1内の全ファイルを一括権限変更
      • -exec cmd1 \; : ファイル一つ一つにcmd1を実行

テキストファイル操作系

  • sedについてはこの記事を追加
  • sed -e 'pattern1 operations' file1 : file1の中でpattern1にマッチした行にoperationsを実行
    • -E : -eを-Eに変えることで拡張正規表現が使用可
    • -i : ファイルを上書きで置換
    • -n : 標準出力への結果非表示
    • pattern1のオプション
      • 指定無し : 全行
      • /pattern2/ : 正規表現pattern2を含む行
        • ()や{}は\でエスケープが必要
      • num1 : num1の行 $指定で最終行
      • num1,num2 : num1からnum2の行 $指定で最終行
      • pattern3! : pattern3以外の行 pattern3には上記のpattern1のオプションが使用可能
    • operationsのオプション
      • 複数のoperationを順に実行する場合、{operation1;operation2;...}と記載
      • s/pattern4/string1/ : pattern4にマッチする文字列を1度だけstring1に置換
        • pattern4の指定には正規表現を使用可能
          • ()や{}は\でエスケープが必要
          • ()でグループ化した文字列はstring1の中で\1などとしてそのまま使用可能
        • pattern4やstring1に/が含まれる場合、/を:などの任意の記号に変更可能
        • 無制限に置換する場合、末尾の/の後にgを追加
        • Nで行追加後に複数行を同じpattern4で置換する場合、末尾の/の後にmを追加
      • a string1 : マッチした行の後にstring1の行を挿入
        • string1にスペースインデントがある場合、a \ string1とする
      • i string1 : マッチした行の前にstring1の行を挿入
        • string1にスペースインデントがある場合、i \ string1とする
      • d : マッチした行を削除
      • n : マッチした行の次行がマッチしたとみなす
      • N : マッチした行の次行も同時にマッチしたとみなす
      • p : マッチした行のoperation実行後の値を表示
      • PostgreSQLのpg_hba.confファイルのIPアドレスをallに設定する
        • sed -i 's:127.0.0.1/32:all:' /var/local/postgresql/db1/pg_hba.conf
      • OpenSSHのsshd_configファイルのPasswordAuthenticationをnoに設定する
        • sed -i '/^#PasswordAuthentication/ a PasswordAuthentication no' /etc/ssh/sshd_config
        • sed -i '/^#PasswordAuthentication/ {s/^\(.\)//;s/yes/no/}' /etc/ssh/sshd_config
      • Sambaのsmb.confファイルの[print$]設定をコメントアウトする
        • sed -i '/\[print\$\]/ {N;N;N;N;N;s/^\(.\)/;\1/gm}' /etc/samba/smb.conf
      • 作成したコマンドの処理部分の結果を確認する
        • sed -n '/^#PasswordAuthentication/ {s/^\(.\)//;s/yes/no/;p}' /etc/ssh/sshd_config
  • grep file1 -e pattern1 : file1の中でparttern1にマッチする行を表示
    • -E : -eを-Eに変えることで拡張正規表現が使用可
    • -C5 : マッチ行の前後の表示する行数 -C5であれば5行, -C2であれば2行
    • -n : 行番号表示
    • -i : 大文字小文字の違いを無視
    • -r : ディレクトリを再帰的に処理
    • -l : マッチしたファイルのファイル名のみ表示
  • diff file1 file2 : file1とfile2の差分を表示
    • -u : 差分をunified形式で表示
    • -U 5 : 差分の前後の表示する行数 -U 5であれば5行, -U 2であれば2行
    • -b : 連続する空白の長さの違いを無視
    • -B : 空行を無視
    • -i : 大文字小文字の違いを無視
    • -r : 2つのディレクトリを再帰的に処理し、全てのファイルを比較
    • -q : 差分のあったファイルのファイル名のみ表示

ユーザ操作,確認系

  • adduser user1 : ユーザuser1をホームディレクトリと共に作成
    • -d : ホームディレクトリを指定して作成
  • deluser user1 : ユーザuser1を削除
    • --remove-home : ホームディレクトリと共に削除
  • gpasswd -a user1 group1 : ユーザuser1をグループgroup1に追加
    • gpasswd -a user1 sudo でuser1をsudoユーザに追加
  • gpasswd -d user1 group1 : ユーザuser1をグループgroup1から削除
  • groups user1 : user1が所属しているグループを表示
  • cat /etc/passwd : ユーザ一覧を表示
  • cat /etc/group : グループ一覧を表示
  • passwd user1 : ユーザuser1のパスワードを変更
    • インタラクティブに操作しない場合はecho user1:pass1 | chpasswd
  • su - user1 : 環境変数を維持せずユーザuser1に切り替える
    • -が環境変数を維持しない意味のため省略可能だが、その場合でも$HOME等の環境変数は置き換わる
  • sudo -s : ユーザrootに切り替える

パッケージ管理系

  • apt update : パッケージリスト更新
  • apt upgrade : インストール済パッケージを更新
  • apt install package1 package2 : package1, package2をインストール
  • apt remove package1 package2 : package1, package2を設定ファイルを残してアンインストール
  • apt purge package1 : package1を設定ファイルを含めてアンインストール
  • apt autoremove : 不要な依存パッケージを削除
  • apt clean : パッケージキャッシュ削除
  • apt list string1 : string1でパッケージを検索
  • apt search string1 : string1を含むパッケージを検索
  • apt show package1 : package1の詳細を表示
  • apt list --installed : インストール済パッケージを表示
  • apt depends package1 : package1が依存しているパッケージを表示
  • apt rdepends package1 : package1が依存されているパッケージを表示
  • apt changelog package1 : package1の更新ログを表示

サービス操作系

systemd系

  • systemctl start service1 : service1起動
  • systemctl stop service1 : service1停止
  • systemctl restart service1 : service1再起動(再起動失敗時に停止状態となる)
  • systemctl reload service1 : service1設定再読み込み(再読込失敗時に稼働状態を維持)
  • systemctl enable service1 : OS起動時service1自動起動オン
  • systemctl disable service1 : OS起動時service1自動起動オフ
  • systemctl status service1 : service1稼働ステータス確認
  • systemctl is-enabled service1 : service1自動起動ステータス確認
  • systemctl list-units -t service : 全サービス稼働ステータス確認
    • LOAD
      • loaded : 定義が正しく読み込めている
    • ACTIVE
      • active : 起動中
      • inactive : 停止中
      • failed : 起動失敗中
    • SUB
      • running : 常時起動状態 (即時応答可能)
      • exited : 呼出時起動状態
  • systemctl list-unit-files -t service : 全サービス自動起動ステータス確認
    • STATE
      • enable : 自動起動オン
      • disable : 自動起動オフ
      • masked : 自動起動オフ (依存サービスとしても起動禁止)
      • static, indirect : 他サービス依存サービス
      • alias : シンボリックリンク (実体に依存)
  • systemctl daemon-reload : systemd自体リロード(/etc/systemd/system/以下変更時等)
  • systemctl mask service1 : service1の起動禁止
  • systemctl unmask service1 : service1の起動禁止解除
  • systemctl poweroff : コンピュータ電源オフ
  • systemctl reboot : コンピュータ再起動

/etc/init.d/系

実体はシェルスクリプト

  • service service1 start : service1起動
  • service service1 stop : service1停止
  • service service1 restart : service1再起動
  • service service1 status : service1稼働ステータス確認
  • service --status-all : 全サービス稼働ステータス確認

HTTP系

  • curl url1 : url1のコンテンツを取得
    • -f : 400番台のレスポンスコードの場合異常終了とする
    • -I : HEADメソッドを使用
    • -o file1 : 取得結果をfile1に保存
    • -s : 進捗とエラーメッセージを表示しない
    • -Ss : 進捗を表示しない
  • wget url1 : url1のコンテンツを取得
    • -i file1: ダウンロードURL一覧をfile1から読込
    • -O file1: ダウンロードファイルの保存先
    • -q : 進捗を表示しない
    • -r : 再帰的ダウンロード
    • -l5 : リンクをたどる最大回数 l5であれば5回, l3であれば3回
    • -w5 : ダウンロード間隔秒数 w5であれば5秒, w3であれば3秒
    • -A ext1 : ext1の拡張子をダウンロード
    • -R ext1 : ext1の拡張子以外をダウンロード

その他確認系

  • lsb_release : OSバージョン確認
  • cat /etc/issue : OSバージョン確認
  • which cmd1 : cmd1コマンドの存在確認
  • free -h : メモリ容量確認
  • df -h : ディスク容量確認
  • du -sh : ディレクトリ容量確認
  • ps auxf : 実行中プロセス一覧確認
  • blkid : パーティションUUID確認
  • nmcli c : NICデバイス名確認
  • ip -4 addr show : IPv4アドレス確認
    • hostname -i : IPv4アドレス確認 (非推奨)
  • ss -antu : ポート確認
  • lsof -i : ポート使用状況確認
  • crontab -l : スケジュール設定表示
    • -e : 設定編集
    • -r : 設定全削除
  • man hier : 標準ディレクトリ構成(FHS)確認

参考文献

Discussion