🐵

Vimmerを目指して、改めて覚えるLinuxコマンド

に公開

はじめに

よく使うLinuxコマンドと書きましたが、実務ではWindowsでLinuxを触る機会はほぼありません笑
どちらかというと、自宅で開発や勉強をする際に覚えて、活用していきたいコマンドです!
(自宅ではMac bookを使ってます。早くマウスを使わなくなりたい...)

目的

  1. コンテナ内部のフォルダの中身を確認する
  2. DBサーバーの設定ファイルを確認する
    これらをLinuxコマンドでできるようになるために、引き出しとして覚えておきたいコマンドを、まとめます。実際に職場の強いエンジニアの人がでDBサーバーをコマンドプロンプトで設定ファイルを探していて、カッコ良いと思ったので、自分できるようになりたいと思い、書きました笑

Linuxコマンド

lsコマンド

一覧表示を行う

ls -l パス名
ls -la パス名

指定した/パス名のディレクトリ、ファイルを表示する

オプション

  • -l 詳細モード
  • -a 隠しファイルも表示
  • -la 詳細 + 隠しファイル

cat

ファイル内容を確認

cat /path/ファイル名

ファイルの中身をそのまま表示するコマンド

オプション

  • -n 行番号をつけて表示

  • cat > file.txt シェルから入力した内容をそのままファイルに書き込む

    cat > file.txt
    hello world
    

    と入力した後にCtrl + Dを押下すると、ファイルに書き込まれる
    他の方法として

    sh -c "echo hello world > file.txt"
    
    echo hello world > file.txt
    

    これを実行すると、ファイルに書き込まれる

  • cat file1 file2  複数ファイルを連結して表示
    ファイルに改行文字が含まれていない場合は、そのまま改行がされずに表示される
    改行をしたい場合は

    cat file1
    echo
    cat file2
    
    printf "%s\n" "$(cat file1)" "$(cat file2)"
    

    %sは文字列を出力する指定
    $()はコマンド置換をしている。コマンドを実行して、その出力に置き換える
    中で実行したコマンドの出力結果をそのまま文字列として返す機能

    echo "結果: $(date)"
    

    これを実行すると、$(date)をシェルが見つけて、dateコマンドを実行している
    その実行結果を文字列に置き換えている
    最終的に

    echo "結果: Mon Nov 18 23:11:22 JST 2025"
    

    というコマンドとして実行される

    sed -e '$a\' file1 file2 (←ここまで)'
    

    ストリームエディタといい、テキストを処理・変形するコマンド
    $aの意味
    $: 最終行
    a: その後に行を追加する

    sed 'コマンド' ファイル名
    sed 's/foo/bar/' file.txt
    

    この場合だと、file.txtの中の最初のfooをbarにして出力
    ※s/.../.../で置換コマンド 例の場合だとfooが置き換えたい文字、barが置き換え後の文字
     複数置換をしたい場合はs/.../.../gと記載する
    ~よく使う使い方~

  1. 文字列置換は上記の通り
  2. 行削除
    sed '3d' file.txt
    
    これで三行目を削除
    sed '5,10d' file.txt
    
    複数行の削除
    sed '/ERROR/d' file.txt
    

特定の文字を含む行を削除する
3. 行追加

sed '$a\追加する文章' file.txt

最終行に行を追加
bash sed '3a\Hello world' file.txt
3行目の後ろに行を追加
4. 行の前に挿入

sed '3i\Hello world' file.txt

三行目の前に追加
5. 特定の行を置き換える

sed '5c\この行に置き換える' file.txt
  1. その場で編集(ファイルを書き換える)
    sed -i 's/foo/bar/g' file.txt
    sed -i '' 's/foo/bar/g' file.txt (macの場合)
    

find

ファイル探索

find /path -type -f -name "*secret*"
find <検索開始ディレクトリ> <条件> <アクション>

オプション

  • -name
    名前で検索
    ワイルドカードが使用可能
    find /path -name "file.txt"
    find /path -name "*.log"
    find /path -name "secret*"
    
  • -type
    タイプで検索
    find /var -type f   # ファイル
    find /var -type d   # ディレクトリ
    
    • -user
      所有者で検索
  • -size
    ファイルサイズで検索
    find /var/log -size +10M   # 10MBより大きい
    find /var/log -size -10k   # 10KBより小さい
    
  • -perm
    パーミッションで検索
    find /path -perm 644
    find /path -perm -u+x   # 実行可能
    
  • -mtime
    変更日で検索
    find /var/log -mtime -1  # 24時間以内に更新
    

アクション

  1. 見つけたもののパスを表示

    find /var -name "*.log"
    
  2. ファイル内容を表示

    find /var -name "*.log" -exec cat {} \;
    

    {}は見つけたファイルのパス

  3. chmod/chown

    find /var/www -type f -exec chmod 644 {} \;
    

    Linuxのパーミッションは3桁で表示される
    r = 読む(4) w = 書く(2) x = 実行(1)
    権限は所有者、グループ、その他に分かれる
    数字644を展開すると rw-r--r--

    • 644
      一般ファイル用
      rw-r--r--
    • 755
      実行可能なディレクトリやスクリプト
      rwxr-xr-x
    • 600
      秘密情報
      rwxr-xr-x

    -u+xはchmodで使う権限追加の書き方
    ユーザー(所有者)に “実行権” を追加する

複数条件

  • AND条件
    find /var -type f -name "*.log" -user root
    find /var -type f -a -name "*.log" -a -user root
    
    二つは同義である。-aでAND条件
  • OR条件
    find /var \( -name "*.log" -o -name "*.txt" \)
    
    -oでOR条件。()は\でエスケープ処理が必要
  • 見つけたファイルだけlsしたい
    find /var/log -name "*.log" -exec ls -l {} \;
    
  • 深さを制限したい
    find /var -maxdepth 1
    

最後に

ファイル探索に使うLinuxコマンドをまとめました。
これらを知っているだけでもDockerでの内部理解に役立てるんじゃないかと思います!
コマンドをどんどん覚えて、マウスからの卒業を目指していきます笑
目標は一人前のVimmerになることです!

Discussion