30歳 独学で始めるプログラミング ~WEBデザイン・アプリ開発~

ITスキルに興味がでたので、codeを書いてみたら面白くてハマってしまいました!日々何をやったのかを中心に、記事を書いていきたいと思います。

36日目:Command Line学習:一通りの基本的なコマンドと階層構造について学ぶ

<学習日>

36日目

<学習内容>

① Command Line (0-100%):一通りの基本的なコマンドと階層構造について学ぶ

<参考>

Progateレベル:154

 

<学習内容詳細>

f:id:yakuzen_kokoro:20200810001423p:plain

 

本日は一転して「Command Line」について勉強しました^^

 

これは「cmd」とか打ち込むと出てくる「真っ黒い背景」のウィンドウで実行するものになってきます。

 

windowsだと「コマンドプロンプト」と呼ばれるやつですね。

 

完全にcodeのみで色々な作業を実行するので、かなり取っつきにくい部分となります。

レッスン一覧を見ていたら、Progateでも取り扱っていたので、どんなもんかと手を出してみました^^

 

結論からいうと、初歩の初歩というのか、かなり基本的な内容となっておりましたが、導入としては良いかなと思います。

(時間もあまりかからないので)

 

 

① Command Line (0-100%):一通りの基本的なコマンドと階層構造について学ぶ

f:id:yakuzen_kokoro:20200810001450p:plain

f:id:yakuzen_kokoro:20200810001504p:plain

ということで、さーっと一通りProgateの単元は完了させてしまいました^^

 

では、実際のcodeも記載しながら、本日勉強したことを振り返っていきます! 

 

・新しいファイルを作成する場合

「touch ファイル名」でそのファイルを作成することができる。具体的に、get.txtというファイルを作成したい場合には以下のとおり。

 

$ touch get.txt


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

「cat ファイル名」でそのファイルの中身を表示させることができる。具体的に、get.txtというファイルを作成したい場合には以下のとおり。

 

$ cat get.txt

 

なお、指定したファイルが見当たらない場合には、「cat: get.txt: No such file or directory」というエラーメッセージがでる。

また、TABボタンを押すことで、実際に存在するファイル名を予測で出すことができる(補完機能)。


・フォルダを新規作成する場合

「mkdir フォルダ名」でそのフォルダを作成することができる。具体的に、sampleというフォルダを作成したい場合には以下のとおり。

 

$ mkdir sample

 

ちなみに、我々が良く使うフォルダという名称だが、プログラミングの世界ではディレクトリと呼ばれる。「フォルダ = ディレクトリ」という認識をもつべし。

また「touch」コマンドではディレクトリは作れないので注意。ファイルとディレクトリは明確に区別されている。


・Command Lineでの作業は、常に「どこの場所で作業をしているのか」を意識する必要がある

例えば、我々がデスクトップで新しいフォルダを作成するときはデスクトップで、他の階層のフォルダ内にファイルをコピーする場合はそのフォルダ内で実施する。それと同じで、Command Lineで作業を指示する場合でも、「この命令はどの場所に対して実行してるのか」を明確にしないと、正しい作業が出来ない。

 

この時、作業したい場所まで行くときには「cd アクセスしたいディレクトリ名」と指定指定する。

例えば、sampleというフォルダ内で作業したい場合には、以下のとおりのcodeとなる。

 

$cd sample

 

上記のコマンドを実行すると、次の行から「sample $」が頭に表示された状態になる。この表示を持って、次回の命令は「sample」というディレクトリ上で実行するぞ、という意味になる。


・今いるディレクトリの場所が全体の構造のどこにあるのかを表示する方法
フォルダの構造は樹形図のようになっており、大元のディレクトリから辿って、どの位置にいるのかを正しく把握しておく必要がある。

その時には「pwd」というコマンドを用いる。main⇒example⇒sampleという構造になっていた場合のcodeと、リプライは以下のとおり。

 

sample $ pwd
/main/example/sample

 

ちなみに、一番おおもとのディレクトリを「ルートディレクトリ(/)」というので覚えておくこと。


・今いるディレクトリに属している1つ下の階層をリストで表示する場合

「ls」を使用する。例えば、sampleディレクトリに属する、1つ下の階層の一覧を表示する場合には、いかのとおり。

 

sample $ ls

 

これで、このディレクトリに属している「ファイル/ディレクトリ」がリストで表示される


・1つ上の階層のフォルダに行く場合

「cd ディレクトリ名」がエラーになってしまう。sampleディレクトリから、exampleディレクトリに移動する場合は、以下のとおり(main⇒example⇒sampleとして)。

 

sample $ cd ..


cdコマンドは、1つ下の階層にしか行けないみたい。同一階層での移動も、1つ飛ばしての移動も試したけど出来なかった。


・cdの後にディレクトリ名を指定しないとどうなるなるのか⇒「homeディレクトリ」に移動できる

ユーザーが開発時に起点とするディレクトリを「homeディレクトリ」として設定することができる。

cdのあとにディレクトリ名を指定しないと、設定された「homeディレクトリ」に移動することができる。

 

・ファイルやディレクトリを移動したい場合

「mv 移動したいファイル名/ディレクトリ名 移動先のディレクトリ名」でファイルやディレクトリを移動することが出来る。

例えば、sampleファイルを、subディレクトリに移動したい場合は以下のとおり

 

$ mv sample sub

 

ちなみに、移動したい先のディレクトリよりも上層のディレクトリからでないと、正しくコマンドが実行されないっぽい。


・ファイル名を変更したい場合

この時も「mv」を使用する。「mv 名前を変更したいファイル名 変更後のファイル名」で実行できる。

たとえばsample.txtというファイル名を、ttt.txtという名前に変更したい場合は以下のとおり

 

$ mv sample.txt ttt.txt

 

ちなみに、このファイル名を変更する命令は、そのファイルが格納されているディレクトリにいないと実行できないっぽい。
(すごく上のディレクトリからだとだめ。ちなみにTABによる補完も、今いるディレクトリに直接紐づいているファイル名しか補完されない)


・ファイルをコピーしたい場合

「cp ファイル名 コピー後のファイル名」でコピーできる。またディレクトリをコピーしたい場合は「cp -r ディレクトリ名 コピー後のディレクトリ名」でコピーできる。

例えば、samle.txtをコピーして、ttt.txtという名前にする場合は以下のとおり。

 

$ cp sample.txt ttt.txt

 

また、mainというディレクトリをコピーして、subという名前を付けたい場合は以下のとおり。

 

$ cp -r main sub

 

このコマンドも、1つ上のディレクトリから実行しないとだめっぽい。


・ファイルを削除したい場合

「rm ファイル名」で削除できる。またディレクトリを削除したい場合は「rm -r ディレクトリ名」で削除できる。

例えば、samle.txtを削除する場合は以下のとおり。

 

$ rm sample.txt

 

また、mainというディレクトリを削除したい場合は以下のとおり。

 

$ rm -r main

 

このコマンドも、1つ上のディレクトリから実行しないとだめっぽい。


・最近使ったコマンドをもう一度実行したい場合⇒「矢印キーの↑ボタン」で、最近実行したコマンドが呼び出せるので便利

 

ということでつらつらと書きましたが、超導入編であり、複雑な概念や内容はありませんでした。

 

ただ、ちょっと触ってみるとわかる仕様は結構大事で、ディレクトリの移動なんて何階層分もすっとばしていけるだろうと思っていたら、一つずつしか移動できなかったりとかはやってみないと気付けませんでした^^;;

 

これもなぜだろうと考えてみると、実は答えは明確で「同じファイル名/ディレクトリ名が階層が違えば許されるから」だと思います。

 

つまり、「メイン」というディレクトリに行って欲しいという命令を出しても、「デスクトップにあるメインというディレクトリ」なのか、「ダウンロードにあるメインというディレクトリ」なのかが判別できないから、一気に移動しようがないということですね。

 

同様の理由で、今いるディレクトリに直接続しているファイル/ディレクトリにしか、命令を実行することは出来ない仕様になっていると考えています!

 

 

ではでは、1日でも長く続けられるように頑張っていきます^^

同志の方、一緒に頑張っていきましょう!