Linux覚書 - 2
ファイルやディレクトリの操作
- 1 => コマンドラインの操作
- 2 => ファイルやディレクトリの操作現在地
- 3 => Vimの操作
- 4 => 標準入出力とパイプライン
- 5 => フィルタによるテキスト処理
カレントディレクトリの操作
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)は指定した権限のみ許可
『何を』の部分には、権限種別を表す
r・w・xが入る。
- 数値での権限変更
chmod 3桁の数 ファイル名
各パーミッションは次の数値で表される。
4$\cdots$読み取り2$\cdots$書き込み1$\cdots$実行
0とみなす。
得られた和を左からオーナー$\rightarrow$グループ$\rightarrow$その他のユーザの順に並べて、パーミッションを指定する。
作成
mkdir ディレクトリ名でディレクトリを作成mkdir -p ディレクトリへのパスで入れ子のディレクトリを一気に作成
touch ファイル名(複数可)で空のファイルを作成
削除
rm ファイル(複数可)でファイルを削除rm -r ディレクトリでディレクトリとその中身を削除rmdir 空のディレクトリで空のディレクトリを削除
ファイルの表示
cat ファイル(複数可)でファイルの中身を表示cat -n ファイルで行番号をつけてファイルの中身を表示less ファイル名でファイルの中身をスクロール表示
コマンドでは、次のようにスクロール操作を行う。
- fで1画面下にスクロール
- bで1画面上にスクロール
- jで1行下にスクロール
- kで1行上にスクロール
- qで閲覧終了
コマンドでは、次のようにして文字列の検索を行うこともできる。
/文字列で下方向に向かって検索?文字列で上方向に向かって検索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
locate 文字列で文字列を含むパス名を検索locate -i 文字列で大文字小文字を区別せずにパス名を検索locate -b 文字列で文字列を含むファイル名を検索locate 複数の文字列で文字列のいずれかにマッチするパス名を検索(OR検索)locate -A 複数の文字列で指定した文字列すべてを含むパス名を検索(AND検索)
コマンドの実行ファイル検索
環境変数の一つである
$PATHは、複数のディレクトリ名をコロン(:)で連結した文字列である。
コマンドを実行する際は、システムがこの
$PATHに含まれるディレクトリからコマンドの実行ファイルを自動で探し、ファイルを実行してくれている。
$PATHに登録されているディレクトリ内のコマンドであれば、次のコマンドで実行ファイルの居場所を知ることができる。
which コマンド名で最初に見つかったコマンド実行ファイルのフルパスを表示which -a コマンド名で見つかったすべてのコマンド実行ファイルのフルパスを表示
参考文献
新しいLinuxの教科書