ホームへ  サイトマップ

Linuxコマンドを使ってみよう。

WindowsはGUI(グラフィック・ユーザー・インターフェース)ですが、LinuxはCUI(キャラクタ・ユーザー・インターフェース)です。
Linuxは基本的にCUIという事は、キーボードからのコマンド入力が主体となります。確かに以前のLinuxはコマンド入力主体で、入門者にとっては取っ付き難いものでした。しかし現在は、GUIも充実しており、殆どWindowsの様な操作で殆んどの事が出来ます。
Windowsで通常の使用中に、コマンド入力をする事は殆んど有りませんが、場合によっては必須となる場合があります。是と同様に、Linuxでもドライバーのインストールやソフトのダウンロード・インストールする場合など、端末からコマンド操作を行わなければならない場合があります。また、GUIで操作できる事でもコマンド入力で操作を行ったほうが、GUIによるマウス操作で行うより間単に早く行う事が可能です。そのためにも簡単なコマンドの使用方法を覚えましょう。

使用するディストロは、Ubuntuとして進めます。(ディストロの種類によって使用するコマンドが違ってきます。)

Windowsには、コマンド入力のための端末“コマンドプロンプト”が有りますが、Linuxでは“端末”(ターミナル)です。
通常は、端末を起動する事が多いのですが、“スーパーユーザモードターミナル”という物もあり、最初からroot権限でログインできる物です。

“端末”(ターミナル)の起動

アクセサリーに有ります。
Ubuntu11.10では、Dashホームをクリックし、開いた画面上部の検索窓に“端末”と入力し、表示されたアイコンをクリック。

   端末アイコン

  端末

  

  起動した端末の画面

若しくは、開いた画面で、“それ以外のソフト”をクリックし、開いた画面の右側にあるアクセサリをクリック。
右側に表示が無い場合は、画面上部の“結果の絞込み”をクリック
“結果の絞込み”は、オルタネートSWとなっており、クリックする度に分類 項目の表示・非表示が切り替わります。

パスワードの入力について。
端末操作をしているとき、パスワードの入力を求められる場面があります が、キーボードから入力しても、画面上何の変化も見られません。これは、キーボード入力がエコーバックされていないためです。しかし、きちんと認識されていますから、正しく入力して、[Enter]。

基本コマンドの説明

exit 
端末の終了

[形式]
〜$ exit



exitと入力して、「Enter]キーを押します。
端末が終了します。

*以下の説明で「Enter」は省略します。
コマンド入力後「Enter」してください。

man (manual)
各コマンドのマニュアルが表示されます。

[形式]
〜$ man コマンド名

例)
〜$ man pwd (pwdに付いては後述)



“man pwd”と入力後「Enter」



pwdに関する説明などが表示されます。(英文)
最上部を見ると、PWD(1)とページ1が表示されています。
次のページに移動するには、「スペース」キー、前のページに移動するには、「w」キーで移動。manを終了するには、「q」キーで終了。

*日本語版は、ソフトウェアセンターで、manpages-jaで検索。
“日本語版マニュアル(ユーザ用).manpages-ja”をインストール


q : man(マニュアル)を終了。



“q”を押し、manを終了すると、前の画面に戻ります。
端末は、$プロンプト後、空白で入力待ちとなっています。

*コマンド入力をして、実行する行は、あくまで最下行です。
同じ、もしくは、同様のコマンドラインが上方にあれば、コピペしても良いです。(マウス操作できます。)

用語)
ディレクトリ
ファイルを整理・管理するための、ツリー構造を持つ場所名で、Windowsで言うところのフォルダです。

カレントディレクトリ
現在作業中の場所


pwd (Print Working Directory)
現在(カレントディレクトリ)の場所を表示します。

[形式]
〜$ pwd



上図は、「Enter」前の図です。
「Enter」すると、下図のようになります。



現在のカレントフォルダが表示されました。(赤矢印の行))

端末を開いた状態では、ホームフォルダーのログイン
ユーザーがカレントフォルダーです。

参考)
現在のカレントフォルダ以外の場所をコマンド実行させるには、すべてディレクトリ部(パス)を記入する必要が有ります。


cd (Change Directory)
カレントディレクトリを移動します。
現在いる位置から指定するディレクトリに移動します。

[形式]
〜$ cd ディレクトリ

例)
現在の位置から、rootの下の“tmp”フォルダーに移動します。

〜$ cd /tmp ( cdと/の間をスペースで区切ります。)



:〜$から、:/tmp$に変わり、現在/tmpにいる事がわかります。



pwdで確かめても、同様ですね。

*cd <コマンド部分>
/tmp <ディレクトリ部分(パス部分)>

*上記の様に、コマンド、オプション(後述)、ディレクトリ(パス)の間は必ず半角スペースで区切ります。

*ディレクトリ部(パス)の“/”は、rootを示しています。
例えば、“/tmp/△△△”と有った場合は、最初の頭についている“/”がrootを示し、“tmp/△△△”とある場合の“/”はrootを示すものでは有りません。(Windowsでの、\と/を置き換えてみると解りやすいでしょう。)

現在自分の作業している場所と移動先に因って変わります。
自分の作業している場所と何処に移動したいのかを把握して下さい。

もし、指定フォルダに無い、ディレクトリを指定した場合は。



上図、1行目で、“cd /temp”とtempフォルダを指定していますが、rootの下のフォルダには、tempというフォルダは有りません。
従って、エラーとなり上図2行目のように表示されます。

また、例えば現在“/tmp”にいて、“root”下の“usr”下の“local”に移動したい時。
 〜$ cd /usr/local
とすべきですが、もし最初の“/”が無かった場合は、
 〜$ cd usr/local
とすると、
 〜$ cd /temp/usr/local
とした事と同じになってしまいます。
この場合、“temp”下に、ディレクトリ“usr/local”があれば、其処へ移動します。
この場合の、localは、root下のtmp下のusr下のlocalとなり、予定した、root下のusr下のlocalとは別の場所となってしまいます。
また、“temp”下に、ディレクトリ“usr/local”が無ければ、エラーとなり、上図の様に表示されます。

この様に、パスを指定する部分に、“/”が有るか無いかで指定している場所が変わってきます。

現在、どのディレクトリにいて、どのディレクトリに移動したいのか十分把握して下さい。

*オプション
コマンドによって色々なオプションを付加できます。

<cdのオプション>
.” カレントディレクトリ

..” 1つ上のディレクトリ

“~”(チルダ)ユーザーのホームディレクトリ

例) /usr/localとlocalにいた場合
 〜$ cd ..
1つ上のusrに移動します。

 〜$ cd ../../
2つ上のrootに移動します。

参考) オプションやパスを指定せずに、cdのみを実行すると、 ユーザーホームディレクトリに移動します。

*上記の様に、コマンド、オプション、ディレクトリ(パス)の間には必ず半角スペースで区切ります。

ls (List)
指定ディレクトリの中のリストを表示
  
[形式]
 ls <-オプション> ディレクトリ

例)
 〜$ ls /
rootディレクトリの内容を表示



/を付けないと、カレントディレクトリの内容を表示

<lsのオプション>
 -l(エル):詳細表示
 -a:隠しファイル(ドットファイル)の表示

例)
 〜$ ls -l /tmp (“l”は、“アイ”ではなく“エル”)で、tmp内を詳細リストします。



上記行で、色つきはフォルダ、色なしはファイル

*それぞれのオプションをつける場合は、コマンド“ls”とオプションの間に、半角スペースを入れます。
さらにオプション群の先頭に“-”をつけます。省略できる場合もありますが、基本的に付ける様にした方が良いでしょう。
また、Dir(パス)との間にも、スペースを入れます。

例)
 〜$ ls ‐l /usr/local (localの詳細内容を表示)
 〜$ ls ‐a /usr/local  (隠しファイルを表示)
   両者を組み合わせる場合は、“-la”でも“?al”のどちらでも良いです。

cat
テキストファイルの内容表示

lsコマンドは、指定ディレクトリ内のディレクトリやファイルを表示しましたが、catコマンドは、テキストファイルの内容を表示します。テキストファイルでない場合は、文字化けを起こし正常に表示できません。

[形式]
 cat ?n /ディレクトリ(パス)/ファイル名

<catのオプション>
 -n : 頭に行番号をつける。
 ファイル名で指定されたテキストファイルに号番号を付けて表示

行番号が表示されない場所は、次の行番号行の前まで1行である事を示します。

注意) 長い行数の場合は、若い番号の方が表示されなくなるので、次のless コマンドを使いましょう。

例)
 /etc/default/にある”grub”というファイルの内容を表示してみます。

 〜$ cat /etc/default/grub



上記のように入力して、「Enter」キーを押します。



上記のように“grub”の内容が表示されます。

今度は、リストの行に番号を付けて表示してみましょう。



上記のように、〜$ cat -n /etc/default/grubと入力



結果は上記のように行の初めに番号が付加されます。
行番号の無い場所は、前行の続きです。

上記のように長いリストの場合は、前の方は表示されません。
長いリストを表示させるときは、次の“less”コマンドを使いましょう。

less 
catと同じようにテキストファイルの内容表示しますが、長い行の場合は、1ページ毎に表示します。

[形式]
 〜$ less <オプション> ディレクトリ

<lessのオプション>
 -N : 行番号を表示(Nは半角大文字を使用)


例)
前で行った“cat”コマンドの代わりに“less”コマンドを使って見ましょう。
序に、Nオプションで、行番号を付加して表示してみましょう。

 〜$ less -N /etc/default/grub



上記のように行番号が付加されて、最初のページが表示されます。

ページを進めるには、[スペース]キー、戻るには、[W]キーを押します。

上記表示から、[スペース]キーを押して、ページを進めます。



上記が、リストの最終ページです。

リスト表示終了
q : リスト表示の終了(lessの終了)をして、端末画面へ戻ります。

mkdir
ディレクトリを作成します。

[形式]
 〜$ mkdir <オプション> ディレクトリ

例)
* cd /tmpにより既にカレントディレクトリは、tmpであるとします。

tmpにtempとフォルダを作成してみましょう。
   
 〜$ mkdir ./temp



上図では、./tempと、./を付加して明示的に表示していますが、カレントディレクトリ(ここでは、tmp)内に、作成するのであれば、ディレクトリ名(ここでは、temp)のみでも良いです。



上図は、最初に“pwd”でカレントディレクトリがtmpに有る事を確認。
 〜$ mkdir ./tempでtempを作成しています。

既に同名ディレクトリが有る場合は。



作成先に既に同名ディレクトリが存在する場合は、上記のように表示され、エラーとなります。

作成した、tempが本当に指定場所に出来たか確認します。
カレントディレクトリ内に作成したので、単に
 〜$ ls
とすれば良いです。



上図の、赤下線のように、作成できました。

今度は、cdで今作成したtempに移動して、其処に、test1を作成して見ましょう。

 〜$ cd temp でtempに移動

 〜$ mkdir test1 とtest1を作成

 〜$ ls で作成した“test1”が正しく出来たか確かめます。



上記のように正しく作成できました。

<mkdirのオプション>
 -p : 再帰的に作成します。
 フォルダAを作り、其の中にフォルダBを作り、さらに其の中に
 という風に、複数のフォルダを入れ子状態で1回に作れます。

例として、test2を作り、さらに其の中にtest2-2というフォルダ
を作って見ましょう。

 〜$ mkdir -p test2/test2-2
正しく出来たか、lsコマンドで確認。
 〜$ ls : tempの中にtest2が有るか確認。
 〜$ ls test2 : test2の中に、test2-2が有るか確認。



上記のように、正しく作成できました。

*** tmp ***
ここで使用しているディレクトリ“tmp”について。
Windowsでは、tempですね。このフォルダは、一時的に使用されるファイル等が保存される場所です。
ここは、起動時に初期化されシステムが書き込んだディレクトリ以外は、無くなってしまいます。つまり、上記で、ここに作成したディレクトリ等は、次回起動時には無くなってしまいます。継続的に使用したい場合は、/homeの適当な場所に作成してください。其の場合は、/tmpを/homeと読み替えてください。
以下の説明にあった場合も同様です。

参考)tmp
(Ubuntu110.10まで。)
システムが一時使用していますが、YouTubeを保存しておきたい時に、Firefoxで、ストリームを見ているときに、画面下部にプレイ状況(プレイ箇所)とダウンロード状況が、バーグラフで示されていますが、ダウンロードが完了した時点で、tmpを見るとダウンロードしたファイルが在るのがわかります。このファイルの名前を変更して、別の場所に保存すれば良いです。ファイル名を変更しないと上書きされてしまいます。また、別の場所に移動しないと再起動時に無くなってしまいます。この方法は、Ubuntu10.10までしか使えません。
現在(Ubuntu11.10)で、Youtubeを保存したい場合は、Firefoxの場合なら、拡張機能のDownload Helperを使うと良いでしょう。


cp (copy)
ファイルをコピーします。

[形式]
 〜$ cp [コピー元] [コピー先]

例)
 〜$ cp /tmp/fileA /tmp/fileB
フォルダ”tmp”にある“fileA”を、フォルダ”tmp”に“fileB”と言う名前でコピーします。

同じカレントディレクトリ内なら
 cp コピー元 コピー先 のように指定します。

コピー元 コピー先の間は、スペースで区切ります。
上記例では、fileAと/tmpの間にスペースが有ります。

別のディレクトリから、別のディレクトリへコピーするなら、其々のパスを、例えば、cp /tmp/fileA /user/fileBのようにファイル名の前にパスを指定します。

rm
ファイルを削除

例)
 〜$ rm /tmp/fileA
 tmpにあるFileAを削除

カレントディレクトリにある場合は、ファイル名だけを記述すればよい。
複数ある場合は、〜$ rm fileA fileB の様に記述。
ワイルドカードも使用できます。

<オプション>
 -r : ディレクトリを削除

例) 〜$ rm ?r /tmp/directA
tmpにあるフォルダ“directA”を削除
ディレクトリの削除は、下位のディレクトリやファイルを削除しますので十分注意してください。

 -i : 削除確認があります

例) 〜$ rm ?i fileA fileB
 fileAとfileBを削除しますが、其々について削除確認があります
 -ir とすると、ディレクトリの確認・削除

rmdir
空のディレクトリを削除

例)
 〜$ rmdir directA
ディレクトリ名“directA”を削除
注)空のディレクトリを削除します。空で無い場合は削除できません。

susudo

sudo

通常の端末を起動した場合、ユーザーとしてログインする訳ですが、root権限を持たないと実行出来ないものがあります。
この場合、一時的にroot権限として実行させる事が出来るのが、sudoです。

次のように、コマンドの前に記述します。

 〜$ sudo コマンド ディレクトリ

連続してroot権限を使いたい場合は、次項の例を参照

su su -

多行に渡り“sudo”するのが面倒なときは、“sudo -i”又は“su”を使い、rootに昇格させる事が出来ます。

例)
次のようにします。
 〜$ sudo -i
又は、
 〜$ su 又は su -

パスワードを求められるので入力
コマンドプロンプトが“$”から“#”に代わります。
“#”は、root権限でログインしていると言う事で、以降は、sudoの必要は有りません。

注意)su と入力する場合と、su ? と入力する場合があります。
 - 無しは、ユーザー環境を引き継ぎます。
 - 有りは、ユーザー環境を引き継ぎません。

rootパスワード
Ubuntuでは、rootパスワードが設定されていません
このため、前もってrootのパスワードを設定しておかなければなりません。
rootパスワードを設定しないまま使うと、“su” または“su -”時にrootパス
ワード入力が必要ですが、このパスワード入力から先に進めません。
Ubuntuの場合のrootパスワードの設定は。

 〜$ sudo passwd root 

後は、画面の要求に従い、新パスワード、パスワード再入力を行えば、rootパスワードの設定が出来ます。

パーミッション(アクセス権)

Linuxでは、各フォルダやファイルなどの所有者、所有者グループ、アクセス権等が規定されています。
是に逆らってファイルの操作は出来ません。つまり、設定内容に逆らった操作が出来ないということは、勝手にファイルの削除や変更が出来ないと言う事です。

この辺が、ウィルスに感染し難いと言う事の一因でもないでしょうか。
勿論、Linuxの使用者が少ないと言う事もあるでしょうが。
(作る方は、沢山の人(PC)に感染しなければ面白くないでしょうから。)

*以下の操作は、端末から行ってます。端末を起動しておいてください。
特別に指定が無い限り、端末の画面です。

  〜$ pwd 現在位置の確認
  /tmp とtmpが表示

tmpで無い場合は、tmpディレクトリに移動しておいて下さい。

 〜$ ls -l  


    
上図の下から4行目を見ると
 drwxrwxr-x 2 kazu kazu ・ ・ ・ ・ ・ temp と有ります。

d : 最初の一文字目は、ディレクトリかファイルかを示しています。
d:ディレクトリ(フォルダ) 例) drwxr-xr-x
-:ファイル 例) -rwxr-xr-x

rwxrwxr-x : パーミッション(アクセス権)

kazu(左側) : 所有者

kazu(右側) : 所有グループ

temp : ディレクトリ名/ファイル名

を示しています。

drwxrwxr-xの部分は、“d rwx rwx r-x”の様に区切って考えます。
最初の“d”は、ディレクトリ/ファイルの種類

2つ目の文字列からは、3桁ごとに区切って考えます。
例)rwx rwx r-x 

其々、左から(rwx)所有者、(rwx)所有グループ、(r-x)その他のユーザーの権限を表します。

其々の3桁の(上記例の所有者の場合“rwx”、所有グループなら“r-x” )の意味

 
  ディレクトリ   ファイル
r  読み出し権限有り  読み出し権限
W  書き込み権限  書き込み・削除権限
X  ディレクトリ移動権限  実行権限
-  権限を付けない  権限を付けない

 例)rwxr-xr-x を例にとって説明します。

ファイルの場合、上記例で、その他のユーザーに、何の権利も与えない様にする
rwxr-xr-x → rwxr-x--- とする

逆にすべての権利を与えるなら
rwxr-xr-x → rwxr-xrwx

読み出し権限のみ与えるなら
(上記例から、実行権限を無くして読み出し権限のみ)
rwxr-xr-x → rwxr-xr--

所有者の実行権限を無くするのなら
rwxr-xr-x → rw-r-xr-x

所有者、グループ、その他のすべてに、実行権限を付けないのなら
rwxr-xr-x → rw-r--r--

上記例で、グループ、その他にも書き込み権限を付加したいなら
rwxr-xr-x → rwxrwxrwx

パーミッションの変更方法

説明)

上記例で、rwxr-xr-x は、其々数値に対応しています。
それぞれを、rwx(所有者) r-x(所有者グループ) r-x(その他のユーザ)の様に、其々所有者、グループ、その他として考えます。

そして、3桁のコードを数値に対応させます。

例)  所有者の場合
ex1)
 
r w x
4 + 2 + 1  =7(全部足すと)
上記のように、左から順に、4、2、1と対応させます。
アクセス権をつけない場所は、0 とします。

若し、所有者の書き込み削除と実行権限が付加されていない場合は

ex2)
 
r - -
4 + 0 + 0  =4(全部足すと)
4+0+0 = 4(全部を足すと)
アクセス権をつけない場所は、“-”(=0)とします。

(rwx)其々を、ビットと考え、10進数に置き換える方法と同じですね。

例えば、所有者、グループ、その他が(rwx r-x r-x)のときは、
其々、7、5、5、となります。

変更する場合は、其々を左から順に並べ、755と記述します。
    
全員に、全部のアクセス権をつけるなら、rwx rwx rwx となり、
其々、(4+2+1=)7、(4+2+1=)7、(4+2+1=)7となり、777となります。

実際のパーミッションの変更 (chmodで行います。)

[形式] chmod nnn ディレクトリ(変更対象のパス) (n=数値)

例)
/tmp/testfl : tmpフォルダにtestflファイルが有るとします。
カレントフォルダは、tmpとし、testflのパーミッションを変更します。
testflの現在のパーミッションは、所有者(rwx)、グループ(r-x)、その他ユーザー(r-x)、とします。
(/tmp/testfl : 現在のパーミッションは、rwxr-xr-x(755))

所有者(rwx)、グループ(r-x)、その他(r-x)から、グループとその他ユーザーの実行権限を失くしてみましょう。
つまり、rwxr-xr-x(755)を、rwxr--r--(744)に変更します。

実行)
chmod 744 ./testfl (現在、/tmpにいる場合)
(./は無くても可。カレントディレクトリである事を明示的に表示しました。)

フルパスで指定するには
 chmod 744 /tmp/testfl

変更対象が、ディレクトリの場合は。

/tmp/testdr : tmpフォルダにtestdrディレクトリが有るとします。
カレントフォルダは、testdrとし、testdrのパーミッションを変更します。
testdrのパーミッションは、所有者(rwx)、グループ(r-x)、その他(r-x)とします。

是を、所有者(rwx)、グループ(r--)、その他(r--)に変更します。
つまり、drwxr-xr-x(755)を drwxr--r--(744)に変更します。

実行)
 chmod 744 testdr/

もし、testdr の中に testdr2、testdr3と言うフォルダが有って、それらも一緒に変更したい場合は、Rオプションを付けます。
 chmod -R 744 testdr/ 
と言う様に、-Rオプションを付けます。

この場合、testdr の中の testdr2、testdr3のパーミッションも同様に変更されます。

スティッキー・ビット
 drwxr--r-- 2 user group 0 2000-12-12 12:12 フォルダ
上記のアクセス権を次のように変更したとします。
 rwxrwxrwx 2 user group 0 2000-12-12 12:12 フォルダ
上記のように変更すると、所有者以外もファイルの削除が可能となります。
この場合、所有者以外の人から、勝手にファイルを削除されては困りますね。
この様に、勝手に削除されないようにするのがスティッキー・ビットという物です。
 # chmod 777 フォルダ  −−1

 # chmod
1777 フォルダ  −−2

 # chmod
+t フォルダ   −−3
今まで、全てのアクセス権をつける場合は、上図の1のようにしましたが、
スティッキー・ビットを付加しながら、全てのアクセス権を付加するには、上図の2の様にします。
全てにアクセス権を設定するには、777としますが、スティッキービットを付加する場合は、先頭に1をつけ、1777とします。
また、全てのアクセス権を付加してある物に、スティッキー・ビットを付加するには、上図の3の様にします。
 rwxrwxrwx 2 user group 0 2000-12-12 12:12 フォルダ

 # chmod +t フォルダ  ---を実行すると。

 rwxrwxrw
t 2 user group 0 2000-12-12 12:12 フォルダ
スティッキー・ビットが付加されると、パーミッションが(所有者)(グループ)(その他)と有りますが、(その他)の場所が、rwxからrwtに変わります。最後のxがtとなりスティッキー・ビットが付加されているのがわかります。

SUIDとSGIDについては工事中

このページは追記予定です。


Vimについては、ここから開きます。

ページトップ
inserted by FC2 system