ファイルを格納する場所のことをいいます
ディレクトリ フォルダ
特に、Unix系のファイルシステムでは「ディレクトリ」, Windows系のファイルシステムでは「フォルダ」といいます
ディレクトリはルートディレクトリという大本のディレクトリを根とした木構造をしています

出典: https://atmarkit.itmedia.co.jp/ait/articles/1604/08/news019.html
| 名前 | 記号 | 説明 |
|---|---|---|
| ルートディレクトリ | / | 基準となるディレクトリ |
| ホームディレクトリ | ~ | シェルへのログイン時のディレクトリ |
| カレントディレクトリ | . | 自分がいまいるディレクトリ |
| 親ディレクトリ | .. | カレントディレクトリの一つ上のディレクトリ |
目的のファイル・ディレクトリへの道筋のことです
「どこから道案内をするか?」で二通りの書き方があります
ルートディレクトリからの道筋を絶対パスといいます
例1
/home/shinkan/document/test.txt
カレントディレクトリからの道筋を相対パスといいます
例2 今、ホームディレクトリにいるとして・・・
./document/test.txt
プログラムが書かれたファイルをごにょごにょすると機械語のファイルにできます(詳しくはあとで部員に聞いてね!)
そういう実行ファイルをコマンドといいます。
たとえば...
コマンドを実行するときに、引数というものをとってもらうことができます。
引数はコマンドのあとにスペースをあけて入力します。
なお、この資料に書かれている$はコマンドを打ってください、という意味です。無視していただいて構いません。
$ (コマンド) (引数1) (引数2) (引数3) ...
例1. CコンパイラgccでC言語ファイルfile.cをコンパイルする gcc file.c
特に'-'(ハイフン)がついているものをオプションといいます。
例2. -v、--verboseをつけるとより詳細な出力をしてくれるよ
例3. -h、--helpをつけるとヘルプ画面を表示してくれます
この後のコマンドでも引数やオプションを使う場面は多く出てきます
引数に与えたものをそのまま出力する
$ echo hi
hi
$ echo run
run
いまいるディレクトリの場所を表示してくれます
こんな感じ:
$ pwd
/home/ricora/guidance/shinkan
ディレクトリに移動することができます
ここで引数が重要
引数なし cdはホームディレクトリ
$ cd
$ pwd
/home/ricora
引数つきcdはその場所があればそこへ
$ cd ../shinkan
$ pwd
/home/shinkan
.(ドット)はいまいるディレクトリ、..(二重ドット)は一つ上のディレクトリという意味
$ cd /home/shinkan
$ pwd
/home/shinkan
いまいるディレクトリにあるファイル一覧を表示してくれます
$ ls
a.out hi.txt shinkan.pdf
引数に-lや-aをつけると詳しい出力結果が得られる
$ ls -l
drwxr-xr-x (なんとか) (なんとか) ./
drwxr-xr-x (なんとか) (なんとか) ../
-rwxr-xr-x (なんとか) (なんとか) a.out ...
ディレクトリを作ります
$ mkdir ricora-shinkan
$ ls
... ricora-shinkan ...
ファイルを作ることができるコマンド
$ touch ricora-alg.hs
$ ls
... ricora-alg.hs ...
ファイルの作成日時はls -alとかで確認できる
ファイルを削除します
$ rm ricora-shinkan-0410.txt
ディレクトリを消すときは-dオプション、ディレクトリ内も削除するなら-rオプション
$ rm -rd ricora-shinkan-0410
コマンドのマニュアルを見るコマンド
$ man echo
マニュアルは英語だけど、ググるよりも欲しい情報が確実に載っている
/(スラッシュ)を打つと検索できる
シェルには環境変数というものがあります。printenvで出力してみよう。シェルの設定をする変数という感じです。
その中にPATHというものがあります。見つけられなかったらprintenv | grep -e '^PATH'と打ってみよう
コマンドを打つとき、この$PATHにある場所を探しにいっています。
新しいコマンドをインストールするとき、この$PATHにその場所を追記するなどしないと動きません。
これ重要なので覚えておいてください。
聞きっぱなしで飽きたと思うので、実際に手を動かしてみましょう!
スライドは(多分)配布するので、それを見つつやってください。
シェルで'Hello, world!'を出力してみる
出力例:
Hello, world!
ヒント: echo
gccのバージョンを確認しよう
C言語のコンパイラ、gccのバージョンを確認しましょう。
出力例:
$ gcc --version
gcc (...) 9.x.x
ファイルを作ってみよう
ファイルを作ったらlsを打ってファイルを確認しましょう。
出力例:
$ ls
.. (ファイル名) ..
ヒント: touch
ファイルを削除してみよう
ファイルを削除したらlsを打ってファイルがないことを確認しましょう。
出力例:
$ ls
.. (ファイル名) ..
ヒント: rm
ディレクトリをつくって、その中に移動してみよう
ディレクトリをまず作って、別のコマンドでそのディレクトリに移動しましょう。
出力例:
$ pwd
/home/(username)/.../(つくったディレクトリ名)
ヒント: mkdir cd
ファイルの中身を出力してみよう
ファイルの中身を出力するには、catというコマンドを使います。
出力例:
$ cat
(ファイルの中身)
ディレクトリの中からテキストファイルを検索してみよう
まず、拡張子が.txtのファイルを作りましょう。
その後、findというコマンドを使って拡張子が.txtのファイルを探してみましょう。
出力例:
$ find ...
a.txt ricora.txt ...
ヒント: man find ワイルドカード(*)
出力結果を標準出力以外に書き出します。
echoで一行のpythonプログラムを書き、ファイルにリダイレクトしてからpythonプログラムを実行しましょう。
出力結果を別のコマンドに与えます。
(さっきも出てた)例:
$ printenv | grep -e '^PATH'
lsで出てきたファイルをcatして、そのバイト数をカウントしてみましょう。
ヒント: xargs <- ググって、man wc
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のときに出力されないか考えてみましょう。
}