5. Learning the shell — Lesson 2: Navigation

Tatsuya Asami
8 min readJun 29, 2018

--

【学習時間】1時間27分(2018年6月29日)

【概要】
pwd, cd, lsコマンドを学ぶ。

【要約・学んだこと】

・File System Organization

Linuxシステムはhierarchical directory structure(階層的ディレクトリ構造)をしている。
システムファイルの最初のdirectoryがroot directoryと言われる。(この前rootの意味がはっきりわからなかった。)
root directoryはファイルやたくさんのsubdirectoriesを含んでいる。

legacy operating systemと LinuxなどのUnix-like operating systemsの違いは、Linuxはdrive lettersを採用していないこと。
drive lettersはファイルシステムを一つなぎの別のtreeに一つずつ分割するが、Linuxは一つのtreeに保存する。
異なるストレージデバイスには異なるブランチを持つが、常に一つのtreeになっている。

・pwd

command line interfaceはファイルシステムの構成を視覚的に示さない。
いつもに一つのdirectoryにいる。directoryでは今いるdirectoryのファイルや親diretory、subdirectoryをみることができる。

directoryを移動して何度かやってみた。

Tats-MacBA-3:~ AsamiTasuya$ pwd
/Users/AsamiTasuya
Tats-MacBA-3:~ AsamiTasuya$ cd Demo
Tats-MacBA-3:Demo AsamiTasuya$ pwd
/Users/AsamiTasuya/Demo
Tats-MacBA-3:Demo AsamiTasuya$ cd directory1
Tats-MacBA-3:directory1 AsamiTasuya$ pwd
/Users/AsamiTasuya/Demo/directory1
Tats-MacBA-3:directory1 AsamiTasuya$

・cd

自分のworking directoryを代えるときにcdコマンドを使う。
cd+”移動したいpathname”で移動できる。方法はabsolute pathnamesとrelative pathnamesの2通り。

・absolute pathname
absolute pathnameはroot directoryから始まり、目的のdirectoryかファイルが完成するまでbranchを一つずつ追って行くこと。
試しに”/usr/bin”に移動してみる。

Tats-MacBA-3:~ AsamiTasuya$ cd /usr/bin
Tats-MacBA-3:bin AsamiTasuya$ pwd
/usr/bin
Tats-MacBA-3:bin AsamiTasuya$ ls
2to3- manpath
2to3–2.7 mcxquery
AssetCacheLocatorUtil mcxrefresh
AssetCacheManagerUtil mddiagnose
AssetCacheTetheratorUtil mdfind
BuildStrings mdimport
CpMac mdimport32
DeRez mdls

pwdコマンドを打つとusr directoryの下層にあるbin directoryにいることがわかる。
lsでbin directoryにあるファイルを見ると、沢山のファイルが表示された。

・relative pathname
absolute pathnameはroot directoryから目的のdirectoryまで移動したのに対し、relative pathnameは、working directoryから移動をする。
“.”はworking directory自体を示す。
“..”は親directoryに移動するコマンド。

Tats-MacBA-3:~ AsamiTasuya$ cd /usr/bin
Tats-MacBA-3:bin AsamiTasuya$ pwd
/usr/bin
Tats-MacBA-3:bin AsamiTasuya$ cd ..
Tats-MacBA-3:usr AsamiTasuya$ pwd
/usr

bin directoryから”cd ..”コマンドで、親directoryにあたるusr directoryに移動したことがわかる。

absolute pathnameで同じことをすると

Tats-MacBA-3:usr AsamiTasuya$ cd /usr/bin
Tats-MacBA-3:bin AsamiTasuya$ cd /usr
Tats-MacBA-3:usr AsamiTasuya$ pwd
/usr

となり、usr directoryに移動したことがわかる。

実際にrelative pathnameとabsolute pathnameどちらを使うかは、タイピング数が少ない方を使えば良い。

・次にusr directoryからusrの下層にあるbin directoryに移動する方法。

absolute pathnameでは同様に

Tats-MacBA-3:usr AsamiTasuya$ cd /usr
Tats-MacBA-3:usr AsamiTasuya$ cd /usr/bin
Tats-MacBA-3:bin AsamiTasuya$ pwd
/usr/bin

“cd /usr/bin”とコマンド入力すればよい。

relative pathnameでは

Tats-MacBA-3:bin AsamiTasuya$ cd /usr
Tats-MacBA-3:usr AsamiTasuya$ cd ./bin
Tats-MacBA-3:bin AsamiTasuya$ pwd
/usr/bin

“cd ./bin”コマンドでbin directoryに移動したことがわかる。

このコマンドは”./”を省略しても同様に機能する。

Tats-MacBA-3:directory1 AsamiTasuya$ cd /usr
Tats-MacBA-3:usr AsamiTasuya$ cd bin
Tats-MacBA-3:bin AsamiTasuya$ pwd
/usr/bin

できた。

例外もあるが、とりあえずは出会わないとのこと。

・A Few Shortcuts

“cd”コマンドでhome directoryに移動
“cd ~user_name.”で指定したユーザーのhome directoryに移動

・Important facts about file names

1.ファイル名が”.”で始まるものは表示されない。
表示させる場合は”ls -a”を入力。

Tats-MacBA-3:~ AsamiTasuya$ cd Demo
Tats-MacBA-3:Demo AsamiTasuya$ ls
directory1 file1
Tats-MacBA-3:Demo AsamiTasuya$ touch .file2
Tats-MacBA-3:Demo AsamiTasuya$ ls -a
. .. .file2 directory1 file1
Tats-MacBA-3:Demo AsamiTasuya$ ls
directory1 file1

Demo directoryに”.file2"を作って見ると、”ls -a”では表示されるが、”ls”では表示されない。

2. ファイル名はセンシティブ。大文字と小文字も区別される。

3. Linuxにはlegacy operating systemsの”file extension”のような概念はない。
好きなファイル名をつけられるが、Linux自体はfile extensionを気にしない。

file extensionとは?→拡張子のこと

4. Linuxはembedded spaceや”.” “-” “_”を含む長いファイル名をサポートしているが、embed spaceはファイル名に入れない方が良い。
ファイル名にspaceを入れたいときは”_”を使った方がいい。

【わからなかったこと】
最初のFile System Organizationの項目で、legacy operating systemとの違いがよく何かわからなかったが、関係なさそうなのでそのまま進んだ。

【感想】
・全く馴染みのない内容を学んでいたので、理解できているのか不安な部分があったが、同じような内容を数種類のアプローチで学んだことで、すっきりした感じがする。

--

--

Tatsuya Asami
Tatsuya Asami

Written by Tatsuya Asami

Front end engineer. React, TypeScript, Three.js

Responses (1)