2022/04/20

コマンドライン入門講座

RICORA Programming Team

© 2022 RICORA Programming Team
2022/04/20

はじめに

  • 本日はRICORA Programming Teamの活動にお越し頂きありがとうございます🥳

  • 今回はCUIの使い方の基本を学びます📝

  • 本日使用するターミナルエミュレータ

    • Mac -> Terminal
    • Windows -> PowerShell
© 2022 RICORA Programming Team
2022/04/20

準備

Windows

  1. PowerShellを起動する
  2. 以下のコマンドを入力する(理科大Wi-Fi内で)
    なお、この資料に書かれている$はコマンドを打ってください、という意味です。無視していただいて構いません。
$ ssh (学籍番号)@tusedls00.ed.tus.ac.jp

はじめの英語文にyesを入力して、自分のパスワードを入力してください。パスワードは見えませんが、入力されています。

詳しい人は、wsl2, Git Bash, Cygwinなどをインストールしてみよう。

© 2022 RICORA Programming Team
2022/04/20

準備 つづき

MacOS

  1. Terminalを起動する
© 2022 RICORA Programming Team
2022/04/20

ディレクトリとは

ファイルを格納する場所のことをいいます

ディレクトリ \fallingdotseq フォルダ

特に、Unix系のファイルシステムでは「ディレクトリ」, Windows系のファイルシステムでは「フォルダ」といいます

© 2022 RICORA Programming Team
2022/04/20

ディレクトリの構造

ディレクトリはルートディレクトリという大本のディレクトリをとした木構造をしています

height: 150 画像の転載元

© 2022 RICORA Programming Team
2022/04/20

ディレクトリの基本知識

名前 記号 説明
ルートディレクトリ / 基準となるディレクトリ
ホームディレクトリ ~ シェルへのログイン時のディレクトリ
カレントディレクトリ . 自分がいまいるディレクトリ
親ディレクトリ .. カレントディレクトリの一つのディレクトリ
© 2022 RICORA Programming Team
2022/04/20

パスってなに?

目的のファイル・ディレクトリへの道筋のことです

「どこから道案内をするか?」で二通りの書き方があります

絶対パス

ルートディレクトリからの道筋絶対パスといいます

例1

/home/shinkan/document/test.txt
© 2022 RICORA Programming Team
2022/04/20

パスってなに? つづき

相対パス

カレントディレクトリからの道筋相対パスといいます

例2 今、ホームディレクトリにいるとして・・・

./document/test.txt
© 2022 RICORA Programming Team
2022/04/20

コマンドってなに?

プログラムが書かれたファイルをごにょごにょすると機械語のファイルにできます(詳しくはあとで部員に聞いてね!)

そういう実行ファイルをコマンドといいます。

たとえば...

  • echo echo コマンドの後に書いたことを出力してくれる
  • ls いまいるディレクトリのファイルを全て表示してくれるよ
© 2022 RICORA Programming Team
2022/04/20

コマンドの使い方

コマンドを実行するときに、引数というものをとってもらうことができます。
引数はコマンドのあとにスペースをあけて入力します。

なお、この資料に書かれている$はコマンドを打ってください、という意味です。無視していただいて構いません。

$ (コマンド) (引数1) (引数2) (引数3) ...

例1. CコンパイラgccでC言語ファイルfile.cをコンパイルする gcc file.c

© 2022 RICORA Programming Team
2022/04/20

コマンドの使い方 つづき

特に'-'(ハイフン)がついているものをオプションといいます。

例2. -v--verboseをつけるとより詳細な出力をしてくれるよ
例3. -h--helpをつけるとヘルプ画面を表示してくれます

この後のコマンドでも引数やオプションを使う場面は多く出てきます

© 2022 RICORA Programming Team
2022/04/20

echo

引数に与えたものをそのまま出力する

$ echo hi
hi
$ echo run
run
© 2022 RICORA Programming Team
2022/04/20

pwd (print working directory)

いまいるディレクトリの場所を表示してくれます

こんな感じ:

$ pwd
/home/ricora/guidance/shinkan
© 2022 RICORA Programming Team
2022/04/20

cd (change directory)

ディレクトリに移動することができます

ここで引数が重要

引数なし cdはホームディレクトリ

$ cd
$ pwd
/home/ricora
© 2022 RICORA Programming Team
2022/04/20

cd (change directory) つづき

引数つきcdはその場所があればそこへ

  • 相対パスの場合
$ cd ../shinkan
$ pwd
/home/shinkan

.(ドット)はいまいるディレクトリ、..(二重ドット)は一つ上のディレクトリという意味

© 2022 RICORA Programming Team
2022/04/20

cd (change directory) つづき

  • 絶対パスの場合
$ cd /home/shinkan
$ pwd
/home/shinkan
© 2022 RICORA Programming Team
2022/04/20

ls (list)

いまいるディレクトリにあるファイル一覧を表示してくれます

$ ls
a.out hi.txt shinkan.pdf

引数に-l-aをつけると詳しい出力結果が得られる

$ ls -l

drwxr-xr-x (なんとか) (なんとか) ./
drwxr-xr-x (なんとか) (なんとか) ../
-rwxr-xr-x (なんとか) (なんとか) a.out ...
© 2022 RICORA Programming Team
2022/04/20

mkdir (make directory)

ディレクトリを作ります

$ mkdir ricora-shinkan 
$ ls
... ricora-shinkan ... 
© 2022 RICORA Programming Team
2022/04/20

touch (change file timestamp)

ファイルを作ることができるコマンド

$ touch ricora-alg.hs
$ ls
... ricora-alg.hs ...

ファイルの作成日時はls -alとかで確認できる

© 2022 RICORA Programming Team
2022/04/20

rm (remove)

ファイルを削除します

$ rm ricora-shinkan-0410.txt

ディレクトリを消すときは-dオプション、ディレクトリ内も削除するなら-rオプション

$ rm -rd ricora-shinkan-0410
© 2022 RICORA Programming Team
2022/04/20

man (manual)

コマンドのマニュアルを見るコマンド

$ man echo

マニュアルは英語だけど、ググるよりも欲しい情報が確実に載っている

/(スラッシュ)を打つと検索できる

© 2022 RICORA Programming Team
2022/04/20

環境変数と$PATHのはなし

シェルには環境変数というものがあります。printenvで出力してみよう。シェルの設定をする変数という感じです。

その中にPATHというものがあります。見つけられなかったらprintenv | grep -e '^PATH'と打ってみよう

コマンドを打つとき、この$PATHにある場所を探しにいっています。

新しいコマンドをインストールするとき、この$PATHにその場所を追記するなどしないと動きません。

これ重要なので覚えておいてください。

© 2022 RICORA Programming Team
2022/04/20

やってみよう

聞きっぱなしで飽きたと思うので、実際に手を動かしてみましょう!

スライドは(多分)配布するので、それを見つつやってください。

  1. シェルで'Hello, world!'を出力してみる

    出力例:

    Hello, world!
    

    ヒント: echo

© 2022 RICORA Programming Team
2022/04/20

やってみよう

  1. gccのバージョンを確認しよう

    C言語のコンパイラ、gccのバージョンを確認しましょう。

    出力例:

    $ gcc --version
    gcc (...) 9.x.x 
    
© 2022 RICORA Programming Team
2022/04/20

やってみよう

  1. ファイルを作ってみよう

    ファイルを作ったらlsを打ってファイルを確認しましょう。

    出力例:

    $ ls
    ..  (ファイル名) ..
    

    ヒント: touch

© 2022 RICORA Programming Team
2022/04/20

やってみよう

  1. ファイルを削除してみよう

    ファイルを削除したらlsを打ってファイルがないことを確認しましょう。

    出力例:

    $ ls
    ..  (ファイル名) ..
    

    ヒント: rm

© 2022 RICORA Programming Team
2022/04/20

やってみよう

  1. ディレクトリをつくって、その中に移動してみよう

    ディレクトリをまず作って、別のコマンドでそのディレクトリに移動しましょう。

    出力例:

    $ pwd 
    /home/(username)/.../(つくったディレクトリ名)
    

    ヒント: mkdir cd

© 2022 RICORA Programming Team
2022/04/20

やってみよう

  1. ファイルの中身を出力してみよう

    ファイルの中身を出力するには、catというコマンドを使います。

    出力例:

    $ cat 
    (ファイルの中身)
    
© 2022 RICORA Programming Team
2022/04/20

やってみよう

  1. ディレクトリの中からテキストファイルを検索してみよう

    まず、拡張子が.txtのファイルを作りましょう。
    その後、findというコマンドを使って拡張子が.txtのファイルを探してみましょう。

    出力例:

    $ find ...
    a.txt ricora.txt ...
    

    ヒント: man find ワイルドカード(*)

© 2022 RICORA Programming Team
2022/04/20

もっと知りたい人へ

© 2022 RICORA Programming Team
2022/04/20

リダイレクト

出力結果を標準出力以外に書き出します。

やってみよう

echoで一行のpythonプログラムを書き、ファイルにリダイレクトしてからpythonプログラムを実行しましょう。

© 2022 RICORA Programming Team
2022/04/20

パイプ

出力結果を別のコマンドに与えます。

(さっきも出てた)例:

$ printenv | grep -e '^PATH'

やってみよう

lsで出てきたファイルをcatして、そのバイト数をカウントしてみましょう。
ヒント: xargs <- ググって、man wc

© 2022 RICORA Programming Team
2022/04/20

ファイルディスクリプタ

Linuxでファイルを開くとき、ファイルディスクリプタという数字が与えられます。以下のCプログラムを入力してみてください。

#include<unistd.h>

int main() {
  const char buffer[6] = "head\n";
  
  // 0, 1, 2, 3番目のfdに書き込んでみましょう
  for (int fd = 0; fd <= 3; fd++) {
    write(fd, buffer, 6);
  }
  // なぜfd = 3のときに出力されないか考えてみましょう。
}
© 2022 RICORA Programming Team
2022/04/20

ほんとのほんとにおわり

© 2022 RICORA Programming Team
2022/04/20

ご清聴ありがとうございました

© 2022 RICORA Programming Team