StudyCS.log

ただの日記

シェル操作メモ1

概要

 Linuxbashによる基本的なコマンドライン操作をまとめている。説明や実行例は省き、チートシート的に参照することを想定している。Linux教科書を参考にしている都合上、網羅的ではないのでご注意を。オプション類もざっくりしか書かない。まぁ、詳しい説明はマニュアルを参照すればいい話なので。

動機

 単なるメモ書き。画面の端に置いといてチラチラ見るためのチートシートが欲しかった。

内容

 ・ディレクトリの移動
cd (移動先)

 絶対パス相対パスのいずれかで移動先を指定する。

また、ルートディレクトリやホームディレクトリなどは以下のように指定できる。

ルートディレクトリ  /

ホームディレクトリ ~

カレントディレクトリ .

一つ上のディレクトリ ..

 ・名前入力の補完

長いファイル名などを入力するとき、入力途中でTabキーを押すとファイル名が補完される。Tabキーを押した時点でファイル名が一つに特定されないときは重複しているファイル名の共通部分だけが補完される。

 ・カーソル移動
ctrl + A 行頭へ
ctrl + E 行末へ
ctrl + H カーソルの一つ前を削除
ctrl + D カーソルの一つ先を削除
ctrl + C 処理の中断
ctrl + S 画面出力の一時停止
ctrl + Q 画面出力の再開
ctrl + Z 処理のサスペンドする
ctrl + L 画面をきれいにする clearとだいたい同じ
変数の定義と削除
変数名=値

   変数を定義できる。=の前後でスペースを入れてはいけない点に注意する。

export 変数名

 シェル変数を環境変数にできる。

unset 変数名

 変数を消去する。

・変数を参照する
echo $変数

 変数の中身を表示する。

echo '文字列' 

 画面に文字列を出力する

echo "文字列"
echo "$変数名"

 ダブルクォーテーションでくくると、文字列の時はそのまま文字列が出力されるが、変数が含まれているときは変数の中身を展開して表示する。

env
printenv
 環境変数を一覧表示する
set
 シェル変数と環境変数の両方を表示する。
・コマンドを続けて実行する
コマンド1;コマンド2

コマンド1を実行し、そのあとにコマンド2を実行する。

コマンド1&&コマンド2

コマンド1を実行し、成功したらコマンド2を実行する。

コマンド1 || コマンド2

  コマンド1を実行し、失敗したらコマンド2を実行する。

 ・コマンドの履歴を参照する
history

 コマンド操作の履歴を確認する

!番号

  historyで対応している番号を入力することにより、そのコマンド操作を再度行う。

 ・マニュアルを参照する
man 参照したいコマンド名、キーワード

 指定したコマンド、キーワードのマニュアルを参照できる

 オプションで -aを指定するとすべてのセクションを検索し、 -f を指定するとwhitisコマンドと同等、-k を指定するとaproposコマンドと同等になる。

whatis 参照したいコマンド名、キーワード

 指定したキーワードと完全一致するマニュアルを検索する

apropos 参照したいコマンド名、キーワード

 指定したキーワードを含むマニュアルを検索する

ディレクトリ内のファイル、サブディレクトリを参照する

ls ディレクトパス 

指定したディレクトリに存在するファイル、サブディレクトリを表示する。オプションで-a を指定すると . から始まるファイルも含めて、-dで指定したディレクトリを含めて、 -i でiノード、-t で時間を含めて、 -F でファイルの種類も含めて、 -l で詳細な情報も含めて、一覧表示する。ほかにもいろいろオプションがある。

・コピーする
cp オプション コピー元 コピー先

コピー元のファイルをコピー先にコピーする。オプションで -f をつければ同名ファイルに上書き、 -r をつければディレクトリを再帰的にコピーする。ほかにもいくつかオプションがある。

・ファイルを移動する
mv オプション 移動元 移動先

指定元を指定先に移動する。移動元と移動先が同一ディレクトリであれば元ファイルの名前が変わるだけなので、名前の変更にもよく用いられる。オプションで -f をつければ同名ファイルに上書き、 -i を指定すると上書きの際に確認を求めるようになる。

ディレクトリの作成
mkdir オプション ディレクトリ名

シンプル。指定した名前で空のディレクトリを作成する。オプションで、-m を指定するとアクセス権を指定でき、-p を指定すると親ディレクトリも同時に作成できる。

ディレクトリの削除
rmdir オプション ディレクトリ名

 空のディレクトリを削除する。オプション -p で複数階層まとめて削除できる。ただ、空でないディレクトリは削除できないので注意したい。

rm オプション ファイル名あるいはディレクトリ名

 ファイル・ディレクトリを削除するコマンド。オプションで -r を指定すればディレクトリも削除できる。-f で確認なし、-i で確認して削除する。安全を考えれば -i を指定して運用するのがよいだろう。

・ファイルの作成、タイムスタンプの変更
touch オプション ファイル名

タイムスタンプを変更する。でもファイルを作成するのにも使える。便利。オプションで -t を指定すると、指定した時間にタイムスタンプを変更できる。 -a だとアクセス時間だけ、 -m で修正時間だけ変更する。

 ・ファイルの種類を確認する。
file ファイル名

指定したファイルの種類を確認する。通常はcatする前にfileでファイルの種類を確認するのが良いとされている。(らしい)

ファイルの中身を表示する

cat ファイル名

指定したファイルの中身をのぞき見れる。オプションで -n を指定すると行番号も付与できる。よく使う。

・テキストの一部を見る
nl オプション ファイル名

テキストの一部を参照、あるいはすべてに行番号を付与して表示できる。オプションで形式と選択範囲を指定できる。

head オプション ファイル名

ファイル先頭部分を表示する。-n オプションを指定して、行番号を与えれば指定行分だけ表示できる。 -c で指定バイト分だけの表示もできる。

tail オプション ファイル名

headコマンドの逆。末尾からの行数、バイト数を指定して表示できる。

cut オプション ファイル名

指定した文字数、区切り文字、フィールドを指定して取り出せる。 -c で文字数、 -d で区切り文字 -f でフィールドを指定できる。

・8進数、16進数で表示してみる
od オプション ファイル名

ファイルをいろいろな形式で表示できる。-c ではASCII、-o では8進数、 -x では16進数での表示になる。デフォルトでは8進数。

・ファイルを連結する
paste オプション ファイル名1 ファイル名2 ....

いくつかのファイルを読み込んで連結できる。-d オプションを指定すれば、区切り文字を指定できる。

・文字列の変換、削除
tr オプション 文字列 (文字列2)

文字列を変換したり、削除したりできる。-dオプションを指定すれば文字列と合致するものを削除できる。-sで連続する文字を1文字に圧縮できる。また、クラスを指定することで文字列の変換を行うことができる。

sed オプション コマンド ファイル名

オプションを指定してテキストストリームを編集できる。オプションコマンドをそれぞれ指定するが、-fオプションを付与すればあらかじめ書いておいたコマンドを使うこともできる。使い方がややこしいのでマニュアルの参照を推奨。

・文字列のカウント
wc オプション ファイル名

ファイルの行数、単語数、文字数を表示数する。-c で文字数のみ、-l で行数のみ、-w で単語数のみの出力にもできる。

ハッシュ関数
md5sum ファイル名
sha1sum ファイル名
sha256sum ファイル名
sha512sum ファイル名

ファイルのハッシュ値を取得できる。ハッシュ値はすこしのファイル編集でも大きく変化するため、ファイルが改ざんされていないことを示す証明につかえる。

・文字列検索
grep オプション 検索パターン

入力ストリームの中から検索パターンに合致するものを表示できる。表示するものに関してはオプションで色々変えられる。一応検索パターンの後にファイル名を指定すればファイル内を検索することもできる。まぁでも使い方としてはlsやcatの出力をパイプして吐かせるのが一般的だろう。

・長い文章を眺める。
less ファイル名

長いファイルの中を参照したりできる。manで標準になっているもので、moreの上位互換。一般的な利用法としては入力ストリームをパイプして吐かせる方法。catやlsなどの出力を渡す。操作は以下のように行う。

k 上方向に1行スクロール
j 下方向に1行スクロール
b 上方向に1画面スクロール
f 下方向に1画面スクロール
q 終了
/文字列 下方向で入力した文字列を検索する
?文字列 上方向で入力した文字列を検索する
h  ヘルプ

まとめ

  bashには便利なコマンドがたくさん備わっている。

 ここに乗せているコマンド以外にもたくさんコマンドがある。詳しい説明はmanでマニュアルを検索して調べよう。

参考文献

Linux教科書 LPIC level1 version5.0対応 3章