プログラミング入門【初学者向け】
この記事では以下のような疑問および要望に答えていきます。
悩むペン銀
プログラミング初学者で、ターミナルについて学びたい
Linuxコマンドの基本的な使い方を学んでみたい
目次
ターミナルって何?
MacBookユーザーであれば
ターミナルというアプリケーションが既にインストールされています。
このターミナルとはコマンドラインを利用し
MacOSをインタラクティブに操作するためのプラットフォームのことです。
(↓これです。黒いやつ。
このターミナルに『コマンド(命令)』を入力することで
MacBookの様々な動作を意図的に操作することが可能となります。
よく悪いことをするハッカーが黒い画面に向かって
何やら文字をカタカタ入力している場面が映画等で放映されますが
ターミナルがそれですね。
ここで利用するコマンドとはshell(シェル)と呼ばれるスクリプト言語の事です。
この言語を操ることでオペレーティングシステム(OS)に直接命令する事ができます。
Windowsはコマンドプロンプト、Macはターミナルでshell(シェル)を記述することによってOSに命令を出せます。
(OSがまだ分からない人はパソコンと置き換えても大丈夫です
ここで命令ってなんだろう?と思う方もいるでしょう。
でもパソコンに詳しくない人も
パソコンを使うときは無意識にOSに命令を出しまくっているんです。
例えばファイルやディレクトリの中身をみたり、Spotifyの音楽を聞いたりといった操作はアイコンをマウスでクリックしたりしますよね?
ここでは『クリック』が命令になっています。
動画を削除したりするときは動画ファイルのアイコンをドラックしてゴミ箱アイコンのところでドロップしているはずです。これも命令です。
こんな感じでパソコンに詳しくない人でも直感的にグラフィカルな情報からパソコンを操作できるように開発されてきました。(GUIと呼ばれます)
一方でプログラマはShell(シェル)を学んで、ターミナルにコマンドを入力する事で直接パソコンに命令し、上記したことと同じ事そしてそれ以上の事を行えます。
プログラマがターミナルを使ってパソコンを操作する大きな理由は
-慣れるとコマンドを使う方が圧倒的に素早くコンピュータに命令できる
-コマンドを使う方がより圧倒的に多くの種類の命令ができる
からです。
スクリプト言語にはbashやzshなど多様な種類が存在していますが
今回はこの中でも『bash』についてざっくり話していきます。
(*bashやzshに関するさらに詳しい説明はこちら↓
それでは早速ターミナルにコマンドを入力してパソコンに命令してみましょう。
恐らく設定を触った事がなけば、既にbashがインストールされているはず)
以下のコマンドをターミナルに入力し確認してみましょう。
[アカウント名$] bash #[アカウント名$]は入力しません bash-3.2$
このような出力が得られれば既にターミナルにbashが用意されています。
ターミナルでOSに命令してみよう
コマンドラインの具体的な学習に入る前に、事前に知っておくべき
ターミナルの基本的な機能について学んで起きましょう。
bashの一般的な構文
bashのコマンドは一般的に以下の構文で入力します。
[コマンド] [オプション] [ファイルもしくはディレクトリへのpath]
具体的には以下のような入力をします。
ls -la /Users/ユーザー名/Applications
ここではls がコマンド、-la がオプションとなっており、
/Users/ユーザー名/Applications がpathとなっています。
(重要:各入力間には半角スペースが挿入されていることに注意しましょう)
ディレクトリ:ファイル等を格納しておく箱の事(フォルダと同義)
ファイル:プログラム等、何かしらデータが記述されたものと覚えると良いでしょう
ちなみにこのlsと言うコマンドは『ディレクトリの中身のファイルにはどんなものがあるのか確認するときに使うコマンド』です。
めちゃくちゃ使うので覚えておきましょう。
Path(パス)
さっきpathというキーワードが出てきましたが
pathとは直訳すると通り道、進路などと言った意味ですが
ITの分野ではPC内での特定のディレクトリやファイルと言ったデータの所在地
(現実世界で例えるなら住所)を表しています。
Macでのファイルシステムは木構造になっており
木構造の始まりはroot(もしくはルートディレクトリ)と呼ばれ、
パソコンにとって最も重要なディレクトリが格納されています。
ターミナルで『pwd』とコマンドを入力してみましょう。
/Users/tarou
こんな出力がされるはずです。
pwdは「Present working directory」と呼ばれ、『今いるディレクトリのパス』これを表示してくれるコマンドです。
自分が今どの階層にいるのかを知る事ができます。
/はルートディレクトリを意味しています。
出力結果は自分がUsersディレクトリの中の、tarou(ユーザー名)デイレクトリの中に現在いることを示しています。
この/Users/ユーザー名 の場所はホームディレクトリと呼ばれます。
ホームディレクトリでlsコマンドを入力してみましょう。
Applications
Desktop
Downloads
Documents
Library
Music
Picture
Public
….
こんな表示が出力されるはずです。ホームディレクトリにはデフォルトで
このようにたくさんのデイレクトリが格納されています。
例えばデスクトップに置いてあるファイルはホームディレクトリの下の
/Users/tarou/Desktop/
ここに格納されています。
インターネットからダウンロードされたファイルは
/Users/tarou/Download/
ここに格納されています。
こんな感じでコンピュータではデータが保管されます。
ここでこのディレクトリ間を行き来できるコマンドとして
cd「change directory」と言うコマンドが用意されています。
例えばpwdを入力して今ホームディレクトリ(/Users/tarou/)にいて
Desktopのディレクトリへ行きたいのであれば
cd Desktop
と入力するだけで/Users/tarou/Desktop/ に入る事ができます。
lsコマンドで中に含まれるファイルを確認してみましょう。
デスクトップに置いているファイルと同じファイル名のものが
全て確認できるはずです。
もっと木構造が分かりやすいように画像で説明すると
パソコンでは以下のような構造で
ディレクトリおよびファイルが保存されます。
(青色:ディレクトリ 白色・赤色:ファイル)
左側がrootに近くなり
右側へ行く程、階層が深くなっていきます。
(ここではディレクトリ(青文字)の中に、ファイル(赤・白)やディレクトリが格納されている。と言うことがザックリと理解できれば問題ないです。ファイル名や拡張子について深く理解しようとする必要はありません。)
この画像の最上部の.( ドット) がrootを表しています。
次に続く階層のsrcのディレクトリ内に全てのディレクトリおよびファイルが格納されている構造です。
仮にこの中のファイルVOC_test.pklを
pathで表すとした場合、以下のように表すことができます。
/src/VOC_test.pkl
続いてtraining.logは以下のように表すことができます。
/src/checkpoints/training.log
このように階層的にディレクトリやファイルが保存されている。
この事を頭に入れておくようにしましょう。
空白を挿入する
先ほども少し言及しましたが、ターミナルが適切に動作するには
コマンドやオプション、パスといった各入力の間には
半角で空白を入れる必要があります。
注意して確認しておくようにしましょう。
初学者の方がエラーでstackする場合、この理由のケースが多いです。
Sudo
これから学ぶ多くのコマンドは「管理者権限」が必要なアクセス
を行うものである場合があります。
そこで登場するのが管理者権限を付与するキーワードsudo(single user doの略)です。
以下のようにして適用します。
[アカウント名$] sudo コマンド
この管理者権限とは、言い換えるのであればアパートを貸す大家さん
が持っているマスターキー(どの部屋の鍵も開けることが可能)と同義です。
使い方次第では如何なる操作を行うことができるコマンドを制限するため
間違えて大切な設定が変更されないよう、特に重要な操作自体に
鍵がかけられていると考えて構いません。
管理者権限を持つアカウントは如何なるコマンドも
パスワード等、入力する事なくダイレクトに利用することができますが
一方で管理者権限を持たないアカウントでサインインしている場合でも
sudoというキーワードをコマンドの前で宣言することで
設定したパスワードを知って入れば
管理者権限を持つアカウントと同等の操作を行うことができます。
また、一般的にpcの所有者は管理者権限を持つことが可能ですが
間違えてコマンドを入力してしまうなどの危険性防止等を理由に
一般ユーザーでログインしておき必要な時にsudoコマンドを利用する
ということが推奨されます。
もし、自分がどのユーザでログインしているのか確認したい場合は
以下のコマンドを入力する事で確認できます。
[アカウント名$] id uid=501(seimei) gid=20(staff) ....
管理者権限を持って入れば(root)
持っていなければ(ユーザー名)がuidに表示されます。
知っておくべきbashコマンド
これでbashに対し必要最低限の知識は学べました。
ついでにとても便利で役立つコマンドもいくつか学んでおきましょう。
もしも今から学ぶコマンドをもっと深く知りたくなったなら
以下のコマンドを入力する事で各コマンドの詳細な説明を取得することができます。
[アカウント名$] man コマンド
現在インターネット上の英語話者の人口は10億人
日本語話者の人口は1億人~2億人の間であり
IT関連の最新の情報は必ず英語で発行される上、web上に出回っている情報量・質共に日本語のものと比べ、圧倒的に異なります。 詳細はこちら
学びの質や幅が顕著に増加するので、話す事はできなくとも、せめて英語で文章を理解できる状態にある事が好ましいでしょう。
find
コマンドfindの特徴は以下です。
SpotlightはmacOSのファイルシステムに対して検索する指定をしない限り
検索をスキップする傾向にあります。
反対にbashのコマンドであるfindは如何なる種類・格納場所のファイルの検索も行う事ができ、その格納場所をフルパスで示します。
findのsyntax(構文)は以下の4つのパートに分けられます。
[アカウント名$] ① ② ③ ④
オプションで-nameを指定した場合、ファイル名にgoogleという文字列があるファイルを検索します。
またfindはregex(正規表現)を使うと言うことも知っておくべきでしょう。
正規表現については本記事においてトピックが大きくなりすぎるため深く説明しませんが
正規表現において*(アスタリスク)の記号はワイルドカードとして利用されます。
(ワイルドカードは全ての文字を指定すると思って構いません)
mv
コマンドmvの特徴は以下です。
mvを使うことでファイルやフォルダといったデータを簡単に移動させる事ができます。加えてそれらデータの名称を変更することも可能です。
構文は次のようになります。
[アカウント名$] mv <元々のファイルpath> <新しいファイルpath>
また、次のように入力する事で
Documents下にあるfile_1のフォルダをDesktopに移動する事ができます。
[アカウント名$] mv /Users/seimei/Documents/file_1 /Users/seimei/Desktop/file_1
ls
コマンドlsの特徴は以下です。
lsはディレクトリ( フォルダ)内にどのようなファイルが保管されているのか確認する事が出来る強力なコマンドです。多くのオプションが用意されており、ファイルに関する書き込み権限を始め多くの情報を迅速に提供します。
例えば以下のようなオプションをよく利用する事でしょう。
mkdir
コマンドmkdirの特徴は以下です。
新しいフォルダを以下のコマンドで簡単に生成する事ができます。
[アカウント名$] mkdir /Users/seimei/Desktop/new_directory/
上記のコマンドを打ち込む事で、デスクトップにて
new_directoryと言う名前のフォルダを生成することができます。
まとめ
いかがだったでしょうか?
本記事ではプログラミングを学びたい初学者に向けた
ターミナルとは何か、コマンドとは何か。
どうやってターミナルからOSを操作するのかを学びました。
プログラミングを勉強したい方にとって
ターミナルの操作を習得することは避けては通れない関門です。
日常的にコマンドをターミナルに打ち込み
ファイルやフォルダの操作を行ってみましょう。
なんども繰り返すことで意識しないうちにコマンドを覚え
workflowに取り込むことで、大幅な作業時間の短縮が見込めるはずです。
今回は以上です。
ではでは
人気記事 CS学位取得者がガチでプログラミングスクールを調査してみた件【おすすめのスクール】