プログラミング初心者のためのLinuxコマンド練習方法　〜ファイル操作編（Mac.ターミナル）〜

# プログラミング初心者のためのLinuxコマンド練習方法　〜ファイル操作編（Mac.ターミナル）〜

# はじめに

エンジニア未経験の私がLinuxコマンドを覚えるにあたり

繰り返し実践したコマンド練習のフローとコマンドをアウトプットします。

まずはファイル操作編です。

同じ未経験の方の手助けになれば幸いです。


# 準備


1. 任意の場所に『test』フォルダ作成※この中でコマンド操作をしていきます。
2. 作成した『test』フォルダの上で右クリックし『フォルダに新規ターミナル』を選択してターミナルを開く

ここからコマンドを入力して操作を覚えていきましょう！

# 練習
でわ実際にコマンドを入力しながら覚えていきます。
これから新規フォルダやファイルを作成していきますが、任意の名前で構いません。

## 現在位置の確認
準備が完了している状態だと思いますので、まずは自分がどこにいるのか見てみましょう。

```:ターミナル
【コマンド入力】
pwd

#現在位置のカレントディレクトリが表示されます。
【結果】
/Users/ホームディレクトリ名/testフォルダを作ったフォルダ/test
```

---

## フォルダを新規作成

新しいフォルダを作成します。

```:ターミナル
【コマンド入力】

mkdir test_1st

#mkdirとはmake directlyの略です。
#続けて`test_2nd`と`test_3rd`フォルダを作ってみましょう！
#下記のように並べると一気に作れます。

mkdir test_2nd test_3rd
```

---

## フォルダ内を確認

`test`フォルダの中に３つの`test`フォルダが作られているはずです。

フォルダの中身をリスト一覧で確認します。

```:ターミナル
【コマンド入力】

ls

【結果】

test_1st test_2nd test_3rd
```

コマンドにはオプションをつけて条件付与ができます。lsの場合には下記のようなオプションが追加出来ます。

`ls -1`リストを縦に表示する

`ls -l`ファイルの詳細も表示する

`ls -t`更新時間順に表示する

`ls -s`サイズ順に表示する

など...

多くのオプションがありますので、興味がある方は調べてみて下さい。

---

## フォルダを削除

せっかく作成したフォルダですが、一つ削除してみましょう！

```:ターミナル
【コマンド入力】

rm -r test_2nd
ls

#rmとはremoveの略
#削除できているか`ls`で確認
#`rmdir`の場合はフォルダの中身が入っている場合エラー分を出してくれます。

【結果】

test_1st test_3rd

#削除されていますね！
```

---

## フォルダ（ディレクトリ）の名前変更

```:ターミナル
【コマンド入力】

mv test_3rd test_2nd
ls

#test_3rdをtest_2ndに名前変更します。

【結果】
test_1st test_2nd
```

---

## ディレクトリの移動

```ruby
【コマンド入力】

cd test_1st
pwd

【結果】
/Users/ホームディレクトリ/testフォルダを作ったフォルダ/test/test_1st
#一つ先のtest_1stディレクトリに移動出来ましたね！
`cd ..`で一つ上の階層に移動することができ、testディレクトリに戻ることもできます。
```

---

## ファイルの作成

test_1stのディレクトリ内で新規ファイルを作成します（テキストファイル）

```:ターミナル
【コマンド入力】

touch sheet1.txt
ls

【結果】

sheet1.txt
```

---

## ファイルの編集と内容確認

ファイルにテキストを入力します。

様々な操作が可能ですが、ここでは入力と保存のみ行います。興味がある方はvi(vim)の操作を調べてみてね

保存が終わったらファイルの中身を確認するcatコマンドを使用します。

```:ターミナル
①ファイルの編集
【コマンド入力】

vi sheet1.txt
#またはvimでもOK！

【結果】
空白のページが表示されます。
下記操作方法を参考に　Hello World と入力してみましょう。
#テキストを入力し保存しましょう

【操作方法】
#現在はコマンドモードですので、入力モードに切り替えて内容を編集しましょう。
a...入力モードに切り替え（他にも入力を開始するコマンドはあるが割愛）
esc...コマンドモードへ戻る
:wq...保存して終了

②ファイルの内容確認
【コマンド入力】
cat sheet1.txt

【結果】
Hello World
```

---

## ファイルのコピー

ファイルを複製して行きます。

```:ターミナル
【コマンド入力】
cp sheet1.txt sheet2.txt
ls
#cpの後にコピーしたいファイル名、次にコピー後のファイル名を入力します

【結果】
sheet1.txt sheet2.txt

```

---

## ファイル内のテキストを検索

ファイル内のテキストを検索できます。

```:ターミナル
【コマンド入力】

grep Hello sheet1.txt sheet2.txt

【結果】

sheet1.txt:Hello World
sheet2.txt:Hello World

#またはディレクトリ内のファイル全てを検索する場合
#上のディレクトリに戻って下記コマンドで全て検索可能

【コマンド入力】

grep Hello test_1st/*

【結果】

test_1st/sheet1.txt:Hello World
test_1st/sheet2.txt:Hello World
```

---

## ファイル移動

test_1st のディレクトリ内にsheetを移動するフォルダを作成します。

各ファイルそれぞれのフォルダに移動します。

フォルダの名前を変更した時に使用した mv でファイルの移動ができます。

```:ターミナル
①フォルダの作成
【コマンド入力】

mkdir sheet1 sheet2
ls

【結果】
sheet1 sheet1.txt sheet2 sheet2.txt

②ファイルの移動
【コマンド入力】

mv sheet1.txt sheet1
mv sheet2.txt sheet2
ls
#mv 移動したいファイル　移動先のディレクトリ名

【結果】
sheet1 sheet2

sheet.txtがsheetフォルダに収納されました！
```

---

## ファイルの削除

今まで作成したディレクトリ・ファイルを全て削除してもう一度上から順に操作してみましょう！！

３〜５回も行えば視覚的にも感覚的にも覚えることができるでしょう！！

```:ターミナル
#testフォルダまで戻って削除コマンドを実行しましょう。
【コマンド入力】

cd ..
#前のディレクトリに戻る
#testディレクトリ内で下記コマンドを実行
rm *
#ディレクトリ内の全てのデータを削除するコマンド

【結果】

zsh: sure you want to delete all 2 files in /Users/HomeDirectory/Documents/test/test_1st [yn]? y
#本当に削除しますか？というニュアンスです。yesかnoを求められていますので、yをクリックしましょう。
#削除を中止する場合はnoのnをクリック

【結果】

rm: sheet1: is a directory
rm: sheet2: is a directory
```

---

## おまけ

実際に試して遊んでみてください！

```:ターミナル

①コマンドのレファレンスマニュアルを表示できます（英語）
【コマンド入力】
man コマンド名
#例：man ls
#例：man rm
#など
#q　で終了

②日時を確認
【コマンド入力】
date

③入力したコマンド履歴を表示する
【コマンド入力】
history

④ウィンドウの入力履歴表示を綺麗にする
【コマンド入力】
clear
#履歴は残っているので再度historyを入力しても問題ありません。
```

---

## まとめ

【使用したコマンド一蘭】

pwd .....カレントディレクトリの表示

mkdir .....ディレクトリの作成

ls .....ディレクトリ内一覧表示

rm .....フォルダ・ファイルの削除

mv .....名前変更・移動

cd .....ディレクトリの移動

touch .....ファイル作成

vi .....ファイル内編集

cat .....ファイル内容表示

cp .....コピー

grep .....検索

man .....コマンドマニュアルを表示

date .....日時を表示

history .....コマンド履歴表示

clear .....入力履歴表示を綺麗にする

---

これで１５個のコマンドを使うことができました。

細かい使い方は省略しているので、manでマニュアルを表示しながらや調べながら複雑な操作も遊んでみてください！

操作の流れで学べば覚えやすいと思いますのでぜひ何度か試してみていただけたら幸いです。

---