ボクココ

個人開発に関するテックブログ

Linux/UNIX操作のまとめ(1/4)

案の定これの勉強をしてると疲れてくるので途中経過を貼っておく。それを行うことでモチベーションを保とう。ある程度こういう操作は学校の授業で習ったんだけど、あの時はやらされてる感たっぷりで全くやる気が起きなかったのを覚えている。 それに比べて今回はしっかりと学習できてるんじゃないかな〜。 世間はGW真っ最中で休暇を楽しんでいるのを尻目に頑張っていきます。。
あ、ちなみに自分が後で見返してわかるようなまとめ方にしてるので、内容を省略している部分が多いです。詳しく知りたい方は本参照。


グラフィカルログインと緊急時の仮想端末
Linux画面で反応がおかしくなった時、いきなり電源を落とすのは好ましくない。
もしおかしくなったら、
1、Ctrl+Alt+F6でrootでログイン
2、psコマンドで動作しているプロレス番号を知る
3、kill プロセス番号でそれを終了させる
とすると正しくなることがある。

ファイルとディレクトリの基礎知識
ファイルの作成
・echo char > filename
追加で記入したい場合、echo char >> filename
・cat > filename
標準入力で追加できる。Ctrl+Dで終了
・touch filename
            ワイルドカードを使ったファイル指定
複数のファイルを指定するために、特殊記号が使われる。
* 任意の文字列。空の文字列でもよい
? 任意の1文字
[.] 内に含まれる任意の1文字
[!.]
内に含まれない任意の1文字
{..} {}内に含まれる任意の文字列

先頭に.が来るファイルは例外処理をするようになっている。
例えば、ls * の意味は「先頭が.でない全ファイル」という意味。
これを表示させるにはls -d .* などで指定する。
-dオプションが無いと、..や.のファイルも表示されてしまう。
-dはディレクトリ内容を展開させないオプション指定。
ファイル名の付与ルール
.は単なる文字。拡張子とか存在しない。
特殊記号もファイル名にできるが、予期せぬ混乱を招く。
ディレクトリ
パスの指定を容易にするための特殊なディレクトリ記号
. カレントディレクトリ
~ ホームディレクトリ
~- 直前にいたディレクトリ
ファイルの操作
cat op filename ファイル内容を表示する
-n 行番号
-v 非印字文字を特殊な形式で文字として表示
該当ファイルがテキストかどうかわからないときに使用

file filename ファイルの種類を調べる

cp op filename filename(dirname)
cp -r op dirname dirname
ファイルをコピー。
-r 指定するディレクトリ内容をコピー
-i 確認しながらコピーする
-p ファイル属性を維持したままコピー
ここで言う属性とは、タイムスタンプ、権限など。

mv op filename filename
mv op (filename) dirname
ファイルの移動とファイル名を変更する
-i 確認メッセージを表示
-f 強制書き込みをする

rm op filename
ファイルを削除する
-i 確認メッセージの表示。
-f 強制削除
-r ディレクトリまるごと削除

chmod -w smpfile
ファイルを削除不可にする+wで書き込み許可に戻る

find base-dir conditional_exp action
ファイルを探す
主な検索条件
-name filename 指定したファイル名。
   ワイルドカード使うには""で囲む
-user uname ファイル所有者がunameであるファイル
-size n 指定したサイズのファイル。単位はb,c,k
-type ftype 指定したタイプのファイル。
ftypeの種類
d ディレクトリ
f 通常のファイル
l シンボリックリンク
s ソケット
主なアクション
-print 検索結果をファイル名だけで表示(デフォ)
-printf 書式化して表示 サイズ、属性など
-ls ロング形式で表示
-exec command {} \; 検索結果を引数にしてコマンド実行
最も多いのは、ファイル名検索。基本的な用法は
find ~ -name myfile1 (-print)
基点をルートにすると、時間がかかるのである程度指定する。
独自の方法でファイルを探す
ルートから検索で来てしかも早くできる方法。
find / -name "*" -exec ls -sdF {} \; > allfiles &
s:サイズ付き d:ディレクトリは名前だけ F ファイル種別表示

locate string
先ほどの方式と同じのがLinuxである。でもファイル名のみ。
指定した文字列の含むものを表示する。ぴったり一致ではない。

touch op filename
ファイルの日付を変更する
実在しないファイルを指定すると、空のファイルを作成。

date
現在の日時を表示/設定する

ディレクトリの操作
ls op pass
ディレクトリの内容を表示する
-a .ファイルも表示
-l ロング形式で表示
-d ディレクトリの詳細情報を表示
-R サブディレクトリ内容も表示
-F ファイルタイプを表示する
なし 通常のファイル
* 実行可能ファイル
@ シンボリックリンク
/ ディレクトリ
-i iナンバの表示

mkdir op dirname
ディレクトリを作成する
-p 途中のディレクトリも同時に作成 

rmdir op dirname
ディレクトリを削除する
-p 途中のディレクトリも一気に削除

pwd カレントディレクトリを表示
cd ディレクトリを移動
pushd popd ディレクトリを行き来する。戻ってくると分かっている時、保存する
du ディスク使用容量を調べる
df ディスク空き容量を調べる

リンクとiノード
ln op exite_pass alias_pass
リンクを張る
-s シンボリックリンクをする
-i 別名のパス名が存在する時確認処理をする
-f 別名のパス名が存在する時強制実行する
windowsのショートカットの概念
ディレクトリも同じように作れる
-sを省略するとハードリンクとなるが、今はシンボリックリンクの方が良く使われる
同一名でよいときは、.をでできる。
リンク名を現在のディレクトリではない所に作る時は注意が必要。

リンクのメカニズム
ハードリンクとは、同じ実体ファイルにアクセスする。二つのノード
シンボリックリンクとは本名を参照してファイル実体を指す
これらに違いで、例えばハードリンク側の元ファイルを削除しても生き残る
だがシンボリックリンクでは指すものが無くなるのでエラー
同じ名前を復活させれば、シンボリックリンクはそれを指すようになる
シンボリックリンク、ハードリンク共にそのファイルから内容を追加できる。

iノードを理解する
ディレクトリはファイル名とiナンバの組みで構成されている。
ファイル名がしていされたら、それに対応するiナンバを知る。
その番号に対応したテーブルを参照する。
ハードリンクでは同じiナンバが二つできる。
被リンク数が0になった時、UNIXはそのファイル実体を開放する