【Linux第3回】ファイルの操作

【Linux第3回】ファイルの操作

Linuxの再学習をしたので備忘録としてまとめていきます。

第3回はファイルの操作についてです。

再学習の理由

  • Dockerに入門した際に、改めてLinuxの基礎から整理をする必要が出てきたから
  • Ubuntuを触ってみたかったから
  • Webサービス系のシステムのOSの大半はLinuxのため

学習内容をまとめるにあたって、以下のUdemy教材を参考にさせていただきました。筆者は15年以上実務でLinuxを使っていますが、新しい発見がたくさんありました。初学者の方にも、ミドル以上のエンジニアの方にもおすすめの教材です。


【参考資料/Udemy】


【参考資料/書籍など】


【参考資料/ChatGPT】
また、情報収集にChatGPTを使用しました。

かなり強力な情報収集ツールになるという印象です。

(ただし、出力結果は鵜呑みにせず、随時公式ドキュメントなどで裏どりする必要があります)


【関連記事】

cat

  • concatenate
  • コンテンツを表示
  • 40行程度までのコンテンツの行数が少ないファイルに使用
# option
-n ファイルの行番号を表示

一度に複数のファイルを指定することも可能
cat file1 file2

less

  • less – opposite of more
  • コンテンツをスクロール
  • 長いファイルの中身を見たい時に使う(コンテンツの行数が50行以上が目安

スクロールの操作

space, f    # 一画面下にスクロール
b           # 一画面上にスクロール
j           # 一行下にスクロール
k           # 一行上にスクロール
q           # lessコマンドを終了

検索の操作

/<文字列>  # 下方向に向かって検索
?<文字列>  # 上方向に向かって検索
n         # 次の検索結果に移動
N         # 前の検索結果に移動

テキストファイル

  • 文字コードで定められた文字だけが並んで格納されているファイル
  • 文字コード:文字をコンピュータで処理したり通信したりするために文字の種類に数字を割り振ったもの
  • Linuxではテキストファイルは重要
  • OSに関わるほとんどの設定情報をテキストファイルとして管理しているため

バイナリファイル

  • 文字コード以外の数値を含むファイル
    ex) 画像ファイル、音声ファイル、実行ファイルなど
  • テキスト以外のファイルはバイナリファイルと考えてOK

catコマンドでバイナリファイルが文字化けする理由

無理やりテキストファイルとして解釈しようとして、文字コードに該当する部分をその文字に置き換えるため発生する


touch

  • 空のファイルを作成
  • ファイツ名が存在していない場合:空のファイルを作成
  • ファイル名が存在している場合:タイムスタンプを更新

rm

  • remove
  • ファイルを削除
  • 注意点:ファイルをrmするとゴミ箱を経由せず、原則戻せないので注意
# option
-r <dir-name>  # ディレクトリも併せて削除
-f             # ファイル削除時に警告を表示しない 強制実行
-i             # ファイル削除前に確認あり

mv

  • move
  • ファイルの移動
  • ファイル名の変更
# option
-i            # 上書きする前に確認する

cp

  • copy
  • ファイル・ディレクトリをコピー
  • コピー先のファイルが既にある場合、上書きするので注意
# option
-i          # 上書きする前に確認する
-r          # ディレクトリをコピーする

ln

  • link
  • リンクを貼る

リンクとは?

ハードリンク

  • 一つのファイルの実体に複数の名前を付ける方法
  • もとのファイルを削除しても消えない
  • 全てのハードリンクがなくなったら削除される

シンボリックリンク

  • リンク先のパスが書かれた特殊ファイル
  • リンク先がファイルの実体
  • シンボリックリンクを残したままファイルの実体を削除したり、ファイルを移動するとファイルを参照できなくなる
  • Windowsのショートカットと似ている
ln <file1> <file2>    # オプションなし ハードリンク
ln -s <file1> <file3> # シンボリックリンク

 

リンクの用途

  • 長いパス名を省略したい時
  • 複数バージョンを共存させて最新を区別したい時
  • シンボリックリンクの方が使用頻度が高い(制限がないため)

※ハードリンクの制限

  • 異なるディスクを跨いで作成できない
  • ディレクトリに対して使えない

find

  • find
  • ファイルを検索する

書式

find <検索開始ディレクトリ> <検索条件> <アクション>
fing . -name test.txt -print

# option
-name
ファイル名の大文字小文字を区別する
ワイルドカードが使用可能’’ ”” で囲うこと
find . -name '*.html' -print

-iname
ファイル名を指定してファイルを検索
ファイル名の大文字小文字を区別しない

よく使われる検索条件

# -type
# -type d : ディレクトリ
find . -type d -print

# -type f : 通常ファイル
find . -type f -print

# -type l : シンボリックリンク
find . -type l -print

# -a
複数の検索条件を指定
find . -type d -a -name images -print

練習ハンズオン(執筆中)

# 空ファイルを作成
# ファイル名を変更
# ディレクトリを作成し、配下にファイルを作成
# シンボリックリンクを貼る
# ファイルを検索する
# 作成したファイルを削除