未分類

Linuxコマンドで遊んでみよう!その一!

はい、どーもたかぽんです。

最近会社でMacのターミナルをいじいじする機会が増えてきて…

やっぱりLinuxコマンドを覚えていないとなんだかんだ効率が悪いなぁ〜って思い始めています。

そこで今回色々と検証を含めコマンド叩き倒してやろうと思います!

遊んでみようって書いてはいますが、割とファイル作ったり消したり、基本的なことを確認しながらやっていくだけなのでつまらないかもです…w

ただ、一通り見ていただければある程度のことはできるようになるかと思います!

僕もまだまだ知らない機能ばっかりなので、例を交えながらどんな動作をするのか一緒に勉強していきましょう!

全く知識のない人でも理解できるように念入りに解説、検証していこうと思いますっ!

また、僕の正確柄、結構寄り道していくと思います…w

気になったことはすぐ試してしまうと思うのでw

もしもあまり実用的に必要ではなさそうな項目には(余談)とつけておきます。

必要なさそうだったら読み飛ばしていってください。

 

1.そもそもMacのターミナルとは?

Windowsでいうコマンドプロンプトと同じなんですが、簡単にいうと、

”文字を入力することでPCに命令を出せる場所!”

です。

もともとPCはCUI(Character User Interface = 文字)で命令を出していました。

例えば、PCに”このフォルダのファイルを見せて!”という命令を伝えたい場合、

“ls”

と打つことでその命令を出せます。

(正確には現在自分のいるフォルダの位置があっていないとだめですが…後ほど詳述します。

 

しかし、時代が進むにつれて、より視覚的に分かりやすいGUI(Graphical User Interface = 画像)で命令を出す手法が生まれ、現在の主流はGUIになっています。

同じくPCに”このフォルダのファイルを見せて!”という命令を出す場合、Windowsならエクスプローラ、MacならFinderというファイル管理システムでみたいフォルダを見つけ、ダブルクリックすると、そのフォルダ内のファイルの一覧が出ますね。

 

Macのターミナルは前者のCUIに分類されます。

要するに、文字でPCにいろんな命令を出していくわけです!

 

2.Linuxコマンドとは?

最初にLinuxコマンドと書きました。

Linuxとは、MacやWindowsと同じOS(Operating System)の一種です。

もともとMacOSはUNIXをベースに作られていて…と話し始めると長くなってしまいそうですね…

LinuxとMacOSはそれぞれUNIXというOSを参考にして作られています。

そして、Linuxはオープンソースソフトウェア(誰でも無料で使えて皆んなで改良できる)ようになっているため、広く普及しています。

そんななかMacOSは…

”LinuxというOSと同じコマンドが使える”

んです。

 

ちなみに、LinuxとUNIXもとても似ていますが、その違いについてはこちらのサイトがとても分かりやすいので是非気になった方は見てみてください。

3分間で人に説明できるようになるUnixとLinuxの違い

 

3.ターミナルを触ってみよう!

ではでは!早速Macのターミナルを触ってみましょう!

まずはターミナルを起動します!

Launchpadをクリック。

こんなやつですね。

すると検索窓といろんなアプリが表示されるので、検索窓に”ターミナル”と打ち込んでください。

すぐ下に出てきたターミナルをクリックすることでターミナルを起動できます。

こんな感じの画面が出てきたら起動ができています。

一行目は前回ログインした時の時間(Sat Apr 6 23:16:59 = 土曜日 4月 6日 23時16分59秒)とその時の端末の名前(ttys000)が表示されます。

そして、TakaponはPCの名前、takaは現在いるフォルダ名になっています。

つまり、”今Takaponと言う名前のPCでこの端末を開いていて、takaという名前のフォルダをみていますよ〜”という感じです。

 

コンピュータの名前を変えてみる(余談)

ちなみに、余談ですが、左上のリンゴマークのシステム環境設定⇨共有⇨コンピュータ名をいじって端末を開きなおすとちゃんと名前が変わります。

開いた画面から共有を探し、クリックします。

すると、コンピュータ名と言う場所が有ると思います。

ここを変更すると端末上のPCの名前も変わります。

試しにコンピュータ名を’hogehogehoge’にした場合

バッチリ変わりました。

さらに日本語名を試してみます。

お、勝手に変換されるようです。

また、”〜!”の箇所は省略されていますね。

端末を使う上で、個人的には短めでスッキリした名前を推奨しておきます。

ただし、私用ならあまり問題ないのですが、会社で使っているPC等ではPC名を変更しない方がいい場合も有るので、確認をした上で変更してください。

 

端末名ttys00*の割り当てについて(検証)

さて、初心者の方にはほぼ必要ないのですが…気になってしまったので検証してみます。

(もしも無駄な情報はいらんわぁ!って方は次の”ls”コマンドまで読み飛ばしてくださいw

端末の名前(ttys00*)はどういう風につけられるのか…?

試しに今開いていた端末を閉じてから、複数の端末を開いてみます。

一つ目の端末では”last login”が”ttys000″になっていますね。

そして、次の行の”tty”というコマンドは今の自分の端末がどんな名前かを知ることができます。

そのことから、一つ目の端末の名前は”/dev/ttys000″,二つ目は”/dev/ttys002″,三つ目は”/dev/ttys003″そして四つ目は”/dev/ttys004″となっているのが分かりました。

ちなみに、厳密には”/dev/ttys00*”が端末を表しますが、”/dev/”は共通部分であるため、Last loginでは”ttys00*”の部分のみ表示されているんだと思います。

そしてなぜか…”ttys001″が無い…

また、Last loginがない場合…(PCを閉じたらリセットされる)どうやらそこにon consoleが表示されるみたいです。

そしてこっちは”ttys000″が無い…w

この間にメモリ不足解消のためにちょっと色々と消したからそれのせいもあるのかな…

ちょっと原因はよく分かりませんでしたorz…

ただ、端末を起動するとその度に”/dev/ttys00*”という名前が順番に割り当てられるということが分かりました。

 

さて、とても蛇足ですみません…w

それでは次は基本の’き’であるコマンドをみていきましょう!

4.”ls”コマンド

はい、では早速先ほどのターミナルに”ls”と打ってエンターを押してみてください。

(ダブルクォーテーションは要りません。

一番上の行の”ls”が僕が打ったところです。

エンターを押すと文字がドドドッと出てきたんじゃないでしょうか?

これは”taka”というディレクトリ(フォルダ)の中に”Applications”や”Dropbox”といったディレクトリまたはファイルが有りますよ〜と言う意味です。

つまり、”ls”コマンドは”PCさ〜ん、takaディレクトリにはこんなデータが入ってるよ〜”って教えてくれてるわけですね。

また、そしてさっき例でもお伝えしたんですが、ターミナルにはカレントディレクトリという言葉があります。

今現在自分がどこのディレクトリをみているのか?を表しているものがカレントディレクトリです。

上記画像では”taka”がそれに当たります。

GUIだとファインダーの左側のディレクトリ一覧からみたいところをダブルクリックしますよね?

そのとき”taka”をダブルクリックしたらカレントディレクトリが”taka”になるといった感じです。

ただし、GUIの場合は”ls”を打たずともディレクトリが選択されたら即一覧がみれますね。

また、GUIの方ではデフォルトで用意されているディレクトリはカタカナ表記になっているようです。

この画像のように、先ほどのCUIの状態はこのGUIの”taka”ディレクトリが選択されている状態と似ています。

また、その時今いるカレントディレクトリは”taka”であると言えます。

では次はターミナルに”ls -a”と打ってみます。

.から始まるやつがたくさん増えましたね…

ちなみに、GUIの方ではみたい場所を選択した状態で

” command + Shift + . “

を押せば見れると思います。

“-a”はオプションと呼ばれていて、オプションにはたくさんの種類があります。

大元の”ls”の機能に対してオプションで追加機能を持たせてあげるんです。

今回、”ls -a”だと”takaディレクトリの中身を隠しフォルダ・ファイルも含めて表示する”となります。

また、CUIとGUIを比較しましたが、やはりGUIだと視覚的に分かりやすいなぁっていうのがわかるかと思います♩

さて、ではもう少しオプションをみていきましょう!

次は”ls -l”と打ってみましょう!

(よく間違われやすいですが、”ls -l”はどちらも数字の”1″ではなく、エルの小文字の半角です。

またうじゃっと出てきますが…

一番左の “d” がディレクトリを表しています。

普通のファイルだったら “-” になっています。

 

そして直後の”rwx——“はパーミッション、つまり、そのフォルダやファイルに誰がアクセスできるのかを表しています。

特に、左から “rwxrwxrwx”となっていて、”rwx”は読み、書き、実行のそれぞれを表しています。

また、ここでの”-“は場所によってその権限が無いことを表しています

そして3桁づつで区切られており、最初の3桁は所有者ができる事、真ん中の3桁はグループのメンバー、最後の3桁はその他のユーザーができることを表しています。

例えば、Applicationsの場合、 “rwx——“なので、所有者は読み書き実行が可能ですが、他のユーザーは何も操作ができないようになっています。

また、ファイルの場合、

  • 読み:”ファイルの中身を読み出すことが可能”
  • 書き:”ファイルの中身を書き換えることが可能”
  • 実行:”ファイルをプログラムとして実行することが可能”

となっていて、ディレクトリの場合、

  • 読み:”ディレクトリのファイル一覧のみ取得することができる(アクセスは不可)”
  • 書き:”ディレクトリの中身を書き換え(ファイルの作成や削除)ができる”
  • 実行:”ディレクトリに移動、ファイルへのアクセスが可能”

となっています。

末尾にくっついている@マークに関してですが、これまた奥が深いようで…

Macbookで使用される付加情報を表しており、Extended Attributesとよばれているようです。

あまり初心者の方には必要ないと思うので、僕はとりあえずさらっと見る程度にしておきますw

気になった方は以下ご覧ください。

Leopard解体新書(4) ~拡張された拡張属性~
-rw-r–r–@って? Mac OSXのExtended Attributesを除去する

 

次はハードリンクの数になっています。

ハードリンクの数とは、ファイルやディレクトリのデータに対して名前をつけ、その名前とデータを結びつけること、また、その結びつきのことを言います。

実際のところ、macOS(Unix系OS)ではファイルやディレクトリの管理をinodeというものを使用して管理しています。

inodeにはファイルのサイズや所有者といった情報も含まれているようです。

そのinodeと実データ(実際のメモリの中にあるデータ)の組み合わせがファイルやディレクトリになっています。

また、inodeには番号が割り振られており、その番号を使ってデータにアクセスします。

そして、おそらくですが、管理がしやすいようにさらにその番号に対して名前を割り振れるようになっています。

それがハードリンクみたいです。

では、早速少し遊んでみましょう!

まず、今いるディレクトリは”Test”というディレクトリです(ディレクトリをCUI上で移動する方法は後ほど…ちなみに、cdコマンドと言われます。

まず最初にlsコマンドでどんなディレクトリやファイルがあるのかを確認しています。

これだけだとディレクトリかファイルかわかりません、さらに、ついでにinode番号も確認しちゃいましょう。

“ls -lia”と打つことで、今のディレクトリ下の全てのデータのinodeといろんな情報が見れるようになります。

どうやら全て”d”になっているのでディレクトリのようですね。

そしてinodeに着目してみます。すごい大きい数がたくさんありますが、今回は”yahoo”ディレクトリのinodeに注目します。

inode番号は”23484698″となっており、ハードリンクの数は2本です。つまり、Testディレクトリにあるyahooと言うハードリンクは、”23484698″というinodeと結び付けられており、そのinodeは実際のディレクトリの実データに結びついています。

 

ではもう一つのハードリンクはどこに…?

試しに探してみましょう。

ちょっと難しいコマンドが出てきますが、今は無視してください。

“find . -inum 23484698″とすることで、そのinodeの番号に結び付けられているハードリンクをみることが出来ます。

その後ハードリンクをinodeから探し、.とyahooとわかったので、そちらも確認してみます。

yahooディレクトリ下で”ls -lia”コマンドを使用すると、出ましたね。”.”が”23484698″のinodeと結び付けられています。

これは、”.”はディレクトリ自身(今回で言うならば、yahoo下での”.”は”yahoo”, Test下での”.”は”Test”)を表しています。

つまり、Test下における”yahoo”とyahoo下における”.”は同じinode、つまり同じ実データを表すハードリンクなんです。

深くやるとこれまた長くなってしまいそうなので、短めにしておこう…

lsコマンドだけでだいぶんお腹いっぱいになってしまいましたね…w

ハードリンク周りでここら辺みながらわかりやすいと思ったのを貼っておきます。

シンボリックリンクとハードリンクの違い

ディレクトリ自体のハードリンクに関しての覚え書き

5.”cd”コマンド

はい、それでは先ほど少しだけ触れましたが、ディレクトリを移動するための”cd”コマンドをみていきましょ!

こちらは簡単にいきましょう!(疲れちゃったw

まず、CUIでディレクトリを移動するためには…!

どこに行くかを教えてあげないといけません。

例えば ”移動したいです!北海道まで!”

こんな感じ。

そして面倒臭いことに距離が離れてしまうと細かい経路もしっかりと教えてあげないといけないんですね…

 

”移動したいです!東京から埼玉に行って、埼玉から栃木にいって、…そして北海道まで!”って感じ。

これをそのまま適応します。

移動したいです!っていう意思表示が”cd”です。

そして、今自分のいるディレクトリ下の”yahoo”ディレクトリに移動したい場合は、途中の経由がないので”yahooまで!”ですね。

これをCUIに打ち込む形にするとこうです。

“cd yahoo”

これで移動ができるようになります。

逆に、戻りたい場合は少し特殊なんですが、”一個前に戻りたいです!”は”..”です。

最初にlsでどんなディレクトリがあるのか確認しています。

そして、yahooディレクトリがあるので、cd yahooで移動していますね。

その次の行で”Takapon:yahoo taka $”となっていて、確かに今見ているディレクトリがTestから変わっていることがわかります。

また、lsの中身も変わりました。

そして、その後やっぱり戻りたい!と思ったので戻りました。

Testに戻り、lsも元と同じようになりました。

このようにして、行き来をしていきます。

では、複数またいで行ったり戻ったりしたい場合はどうなるのでしょうか?

こちらは試しにTest->yahoo->1->2->3という順番でディレクトリを作成しています。

確かに、Testの中にyahooが、yahooの中に1が、1の中に2が…と言う風になっています。

そして、一個ずつ戻っていくと戻ってこれました。

そして、その次に行っている”cd yahoo/1/2/3″というのが、先ほど少しふれましたが、”移動したいです!yahooの次1にいって、そのあと2に行ってから3に!”

っていう感じです。

県境では区切りの”/”を書いてあげないといけないんです。

そして、戻るときも一緒です。

このようにして複数行ったり戻ったりが出来ました!

また、今回使ったのは”相対パス”と呼ばれるパスを用いての移動でした。

実はさらに絶対パスと言うものがあるのですが…

初心者の方はとりあえず相対パスだけ使えれば十分な気がします…

余裕が出てきたらぜひ調べてみてください。

絶対パスと相対パスの違いについて解説

 

 

 

さて、とりあえずこんな感じで進めていこうかなと思います!正直だいぶん無駄なことしまくっていますが…w

でもでも、気になったこととかはとことん調べながらいこうと思います。

それでは!

その2もまったりやっていこうと思いますので!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください