ファイルやディレクトリの操作 <- Linux覚書 <- TetraCalibers
TetraCalibers :
    -   for : science student & programmer
Linux覚書 - 2
ファイルやディレクトリの操作

    カレントディレクトリの操作

     

    • pwdでカレントディレクトリを表示
    • cdでカレントディレクトリを移動

     

    チルダ展開

     

    • ~はホームディレクトリを表す

     

    パス名展開

     

    • *は任意の文字列を表す
    • ?は任意の1文字を表す

     

    ファイルやディレクトリの一覧表示

     

    • ls ディレクトリ(複数でも可)でディレクトリ内のファイルやディレクトリを表示
    • ls ファイルでファイルのパスを表示

     

    -aオプション
    隠しファイルも合わせて表示

     

    ファイル名がドット(. )で始まる隠しファイルも合わせて表示される。

     

    -Fオプション
    ファイル種別も合わせて表示

     

    ファイル種別は、ファイル名の後ろに1文字の記号として付加される。
    • 記号なしなら通常ファイル
    • /ならディレクトリ
    • *なら実行可能ファイル
    • @ならシンボリックリンク

     

    -lオプション
    ファイルの詳細情報を表示

     

    表示される詳細情報は、次のような並びになっている。
    ls -l ファイルやディレクトリ
    ファイルタイプファイルモード リンク数 所有者 所有グループ サイズ タイムスタンプ ファイルorディレクトリ名
    

     

    このうち、ファイルタイプは1文字で表され、次のような意味をもつ。
    • -なら通常ファイル
    • dならディレクトリ
    • lならシンボリックリンク

     

    ファイルモードは9文字で表され、3桁区切りで左から
    • オーナーの権限
    • グループの権限
    • その他のユーザの権限
    を表している。

     

    パーミッション

     

    ファイルのパーミッション(権限)は次の3要素で表される。
    • r$\cdots$読み取り(read)
    • w$\cdots$書き込み(write)
    • x$\cdots$実行(excute)
    操作が許可されているときは上記のアルファベットが表示され、許可されていないときは-が表示される。

     

    ディレクトリのパーミッションは次の3要素で表される。
    • r$\cdots$ディレクトリに含まれるファイル一覧の取得
    • w$\cdots$ディレクトリ以下のファイルやディレクトリの作成・削除
    • x$\cdots$ディレクトリをカレントディレクトリにする

     

    シンボルでの権限変更
    chmod 誰にどうする何を ファイル名

     

    『誰に』の部分には、次の記号が入る。
    • uはオーナー
    • gはグループ
    • oはその他のユーザ
    • aはすべて

     

    『どうする』の部分には、次の記号が入る。
    • +は許可
    • -は禁止
    • =権限(rwx)は指定した権限のみ許可

     

    『何を』の部分には、権限種別を表すrwxが入る。

     

    数値での権限変更
    chmod 3桁の数 ファイル名

     

    各パーミッションは次の数値で表される。
    • 4$\cdots$読み取りr
    • 2$\cdots$書き込みw
    • 1$\cdots$実行x
    rwxをそれぞれ数値に置き換えて、それらを足した値を算出する。このとき、-0とみなす。

     

    得られた和を左からオーナー$\rightarrow$グループ$\rightarrow$その他のユーザの順に並べて、パーミッションを指定する。

     

    作成

     

    • mkdir ディレクトリ名でディレクトリを作成
    • mkdir -p ディレクトリへのパスで入れ子のディレクトリを一気に作成
    • touch ファイル名(複数可)で空のファイルを作成

     

    削除

     

    • rm ファイル(複数可)でファイルを削除
    • rm -r ディレクトリでディレクトリとその中身を削除
    • rmdir 空のディレクトリで空のディレクトリを削除

     

    ファイルの表示

     

    • cat ファイル(複数可)でファイルの中身を表示
    • cat -n ファイルで行番号をつけてファイルの中身を表示
    • less ファイル名でファイルの中身をスクロール表示

     lessコマンドでは、次のようにスクロール操作を行う。

    • fで1画面下にスクロール
    • bで1画面上にスクロール
    • jで1行下にスクロール
    • kで1行上にスクロール
    • qで閲覧終了

     lessコマンドでは、次のようにして文字列の検索を行うこともできる。

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

     

    コピー

     

    • cp コピー元ファイル コピー先ファイルでファイルをコピー
    • cp ファイル(複数可) ディレクトリでファイルをディレクトリ内にコピー
    • cp -r コピー元ディレクトリ コピー先ディレクトリでディレクトリを中身ごとコピー

     

    改名・移動

     

    • mv 元のファイル名 新しいファイル名でファイルを改名
    • mv ファイル(複数可) ディレクトリでファイルを指定したディレクトリ内に移動
    • mv 移動元ディレクトリ 移動先ディレクトリでディレクトリを中身ごと移動

     

    リンク(ファイルの別名)

     

    Linuxでは、ファイルに別名をつけることを『リンクを張る』と表現する。

     

    ハードリンク
    1つのファイルの実体に複数の名前をつける機能。ハリーポッターでいう分霊箱であり、ファイルの実体(ヴォルデモートの魂)は全てのハードリンク(分霊箱)がなくなった時に削除される。
    シンボリックリンク
    リンク先のパスが書かれた特殊ファイル。C言語でいうポインタ(参照)。実体は元のファイルただ一つだけ。

     

    リンクの作成方法は以下の通り。
    • ls リンク元ファイル名 リンク名でハードリンクを作成
    • ls -s リンク元ファイル名 リンク名でシンボリックリンクを作成

     

    リンクは、
    • 長いパス名を省略して、アクセスしやすくする
    などの用途で用いられる。

     

    エイリアス(コマンドの別名)

     

    Linuxでは、コマンドにも別名をつけることができる。

     

    例えば、rmコマンドを実行する時に必ず確認メッセージを表示して欲しいときは、次のようにエイリアス(別名)をつければ良い。
    alias rm='rm -i'
    

     

    • alias 名前='コマンド'でエイリアスを設定
    • unalias エイリアスでエイリアスを削除
    • type コマンドでコマンドなのかエイリアスなのかを確認
    • command コマンド or/コマンドでエイリアスではなく元のコマンドを実行

     

    ディレクトリツリーからファイル検索

     

    • find 検索開始ディレクトリ 検索条件 アクションでファイルを探す

     

    検索条件には、次のような指定ができる。
    • -name 名称$\cdots$正確なファイル名で検索
    • -iname 名称$\cdots$大文字小文字を区別せずファイル名で検索
    • -type f$\cdots$通常ファイルの中から検索
    • -type d$\cdots$ディレクトリの中から検索
    • -type l$\cdots$シンボリックリンクの中から検索

     

    検索条件を組み立てるときは、次のことに気をつける。
    • ワイルドカードを使うときは、シングルクォートで囲んで展開を無効化する
    • 複数条件を指定するときは、-aで条件を結ぶ(省略可)

     

    アクションはデフォルトでは-printとなり、検索結果がターミナルに表示される。

     

    ファイル名データベースからファイル検索

     locateコマンドがインストールされているかを確認

    locate --version
    

     

    コマンドが見つからなければ、OSに応じてインストールを行う。

     

    インストール直後には、rootユーザで次のコマンドを実行し、データベースを作成する。
    updatedb
    
    以降、ファイルパスデータベースは1日1回自動で更新されていく。

     

    • locate 文字列で文字列を含むパス名を検索
    • locate -i 文字列で大文字小文字を区別せずにパス名を検索
    • locate -b 文字列で文字列を含むファイル名を検索
    • locate 複数の文字列で文字列のいずれかにマッチするパス名を検索(OR検索)
    • locate -A 複数の文字列で指定した文字列すべてを含むパス名を検索(AND検索)

     

    コマンドの実行ファイル検索

     

    環境変数の一つである$PATHは、複数のディレクトリ名をコロン(:)で連結した文字列である。

     

    コマンドを実行する際は、システムがこの$PATHに含まれるディレクトリからコマンドの実行ファイルを自動で探し、ファイルを実行してくれている。

     $PATHに登録されているディレクトリ内のコマンドであれば、次のコマンドで実行ファイルの居場所を知ることができる。

     

    • which コマンド名で最初に見つかったコマンド実行ファイルのフルパスを表示
    • which -a コマンド名で見つかったすべてのコマンド実行ファイルのフルパスを表示