【超初学者向け:ターミナル修得編】プログラミング入門

プログラミング入門【初学者向け】



この記事では以下のような疑問および要望に答えていきます。

悩むペン銀

プログラミング初学者で、ターミナルについて学びたい

Linuxコマンドの基本的な使い方を学んでみたい







ターミナルって何?



MacBookユーザーであれば
ターミナルというアプリケーションが既にインストールされているでしょう。


このターミナルとはコマンドラインを利用し
MacOSをインタラクティブに操作するためのプラットフォームのことです。


もう少し噛み砕いて言い換えれば
ターミナルにコマンド(命令)を入力することで
MacBookの様々な動作を直接、かつ意図的に操作することが可能となります。
(さらに簡単な例を挙げると、マウスパットでファイルをdragしてフォルダにdropするといった動作がターミナルにコマンドを入力する事で簡単にできるという意味です)


よくクラッカー風の男(悪いことをするハッカー)が黒い画面に向かって
何やら文字をカタカタ入力している場面が映画等で放映されますが
ターミナルがそれに当たります。


LinuxOSとMacOSは共にUnixOSと親和性を持ったOSであるためLinuxでのコマンドのほとんどがmacでのcommand line interface(CLI)で利用できます。
これらの言語はshell(シェル)と呼ばれ、bashやzshなど多様な種類が存在しています。


bashやzshに関する詳しい説明はこちら↓



これから紹介するコマンドはbashのものですが、zshでも問題なく利用できます。
(恐らく設定を触った事がなけば、既にbashがインストールされているでしょう。)
以下のコマンドを入力し確認してみましょう。

[アカウント名$] bash  #[アカウント名$]は入力しません
bash-3.2$ 



このような出力が得られれば既にbashが用意されています。


エンジニアはこのターミナルに日常的に触れ
自分が開発しやすいようカスタマイズしている人が多いです。


それでは学んでいきましょう。



コマンドライン周りのTips



コマンドラインの具体的な学習に入る前に、事前に知っておくべき
ターミナルの基本的な機能について学んで起きましょう。



bashの一般的な構文


bashのコマンドは以下の構文で入力する事が一般的です。

[コマンド] [オプション] [ファイルもしくはディレクトリへのpath]



具体的には以下のような入力をします。

ls -la /Users/ユーザー名/Applications



ここではls がコマンド、-la がオプションとなっており、
/Users/ユーザー名/Applications がpathとなっています。
(重要:各入力間には半角スペースが挿入されていることを確認してください)


*ディレクトリとファイルとは
ディレクトリ:ファイル等を格納しておく箱の事(フォルダと同義)
ファイル:プログラム等、何かしらデータが記述されたものと覚えると良いでしょう




Path(パス)


pathというキーワードが出てきました。
pathとは直訳すると通り道、進路などと言った意味を持ちますが
ITの分野ではPC内での特定のディレクトリやファイルと言ったデータの所在地
(即ち住所)を表しています。


Macでのファイルシステムは木構造になっており
木構造の始まりはroot(ルート)と呼ばれます。(日本語に直訳すると木の根)


仮に例をあげるとすれば
以下のような構造でディレクトリおよびファイルが保存されます。
(青色:ディレクトリ 白色・赤色:ファイル)


左側が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の特徴は以下です。


  • GUIの代わり: Spotlight

  • コマンドfindを使う利点:Spotlightが検索しないファイルも検索する事ができ、何より検索速度が高速である。



  • SpotlightはmacOSのファイルシステムに対して検索する指定をしない限り
    検索をスキップする傾向にあります。
    反対にbashのコマンドであるfindは如何なる種類・格納場所のファイルの検索も行う事ができ、その格納場所をフルパスで示します。

    findのsyntax(構文)は以下の4つのパートに分けられます。

    [アカウント名$] ① ② ③ ④ 


  • find

  • ② 検索したいディレクトリ (e.g. /Applications/)

  • ③ オプション (e.g. -name) -nameはファイルの名称を検索対象とします。

  • ④ 検索する文字列 (e.g. google)
    オプションで-nameを指定した場合、ファイル名にgoogleという文字列があるファイルを検索します。


  • またfindはregex(正規表現)を使うと言うことも知っておくべきでしょう。
    正規表現については本記事においてトピックが大きくなりすぎるため深く説明しませんが
    正規表現において*(アスタリスク)の記号はワイルドカードとして利用されます。
    (ワイルドカードは全ての文字を指定すると思って構いません)


    mv


    コマンドmvの特徴は以下です。


  • 置き換え:フォルダやファイルを選択し、移動させること

  • コマンドmvを使う利点:高速にファイルやフォルダの移動を実現する



  • mvを使うことでファイルやフォルダといったデータを簡単に移動させる事ができます。加えてそれらデータの名称を変更することも可能です。


    構文は次のようになります。

    [アカウント名$] mv <元々のファイルpath> <新しいファイルpath>



    また、次のように入力する事で
    Documents下にあるfile_1のフォルダをDesktopに移動する事ができます。

    [アカウント名$] mv /Users/seimei/Documents/file_1 /Users/seimei/Desktop/file_1




    ls



    コマンドlsの特徴は以下です。


  • 置き換え:cmd+i

  • コマンドlsを利用する利点:更新記録などファイルおよびディレクトリに関する詳細な情報が即座に確認する事ができる

  • lsはディレクトリ( フォルダ)内にどのようなファイルが保管されているのか確認する事が出来る強力なコマンドです。多くのオプションが用意されており、ファイルに関する書き込み権限を始め多くの情報を迅速に提供します。
    例えば以下のようなオプションをよく利用する事でしょう。

  • -l: フォルダ内の各ファイルに関するパーミッション(操作権限)を確認するオプションです。
  • -a:  フォルダ内の隠しファイルを含むすべてのファイルを表示します。



  • mkdir



    コマンドmkdirの特徴は以下です。


  • 置き換え:ファインダー>ファイル>新しいフォルダの動作を実現

  • コマンドmvを利用する利点;新しいフォルダをダブルクリックして生成する手間を省き、迅速にフォルダを生成する


  • 新しいフォルダを以下のコマンドで簡単に生成する事ができます。

    [アカウント名$] mkdir /Users/seimei/Desktop/new_directory/


    上記のコマンドを打ち込む事で、デスクトップにて
    new_directoryと言う名前のフォルダを生成することができます。



    まとめ



    いかがだったでしょうか?
    本記事ではプログラミングを学びたい初学者に向けた
    ターミナル入門編において詳しく学んできました。


    この記事を読み込むことで
    最低限知っておくべきターミナルに関する知識を学ぶ事が出来ると思います。


    プログラミングを勉強したい方にとって
    ターミナルの操作を習得することは避けては通れない関門
    です。
    日常的にコマンドをターミナルに打ち込み
    ファイルやフォルダの操作を行ってみましょう。


    なんども繰り返すことで意識しないうちにコマンドを覚え
    workflowに取り込むことで、大幅な作業時間の短縮が見込めるでしょう。


    今回は以上です。
    ではでは




    人気記事【初学者必見】効率的なプログラミング勉強方法を紹介します








    このエントリーをはてなブックマークに追加

    data-ad-format="rectangle" data-ad-format="rectangle"

    コメントを残す