Linux コマンド１

#はじめに
受業でLinuxを触れてから1週間です。
コマンドをいくつか教えてもらったものの、思うように使うことができないので覚えるのを兼ねて、まとめてみます。
*`[]`で記したところは無くても機能します。
パスと書かれたところは、ファイルやディレクトリの場所を指します。

##$

コマンドじゃないですけどここから。

~~~
[ユーザ名@端末名　~]$ 
~~~
見ての通りユーザ名と端末名が書かれています。
そのあとの`~`の部分は現在のカレントディレクトリを表していて、デフォルトは`~`となっています。
`~`はホームディレクトリを指します。
`$`部分は基本`$`ですが、rootユーザで入ると`#`となります。

 - 絶対パス  
 
~~~
/usr/bin/xxx
~~~

絶対パスはどこのカレントディレクトリから操作していても変わらない、`/`から指定するディレクトリやファイルまでのパスです。

 - 相対パス

~~~
./dir1/sample.txt
~~~

相対パスは現在のカレントディレクトリから、指定したディレクトリやファイルまでのパスです。
上記は、カレントディレクトリ内部のdir1のsample.txtを指定しているパスです。

##cd  -change directory-

~~~
 $ cd ディレクトリのパス
~~~

初期のホームディレクトリから作業ディレクトリを移動する為のコマンド。
直接パスを打ち込んで移動するときはこうします。
あとディレクトリ名ではなくパスとします。
散々名前だけ打つミスをしたので戒めとして。

~~~
$ cd
$ cd ..
$ cd /
$ cd /home
~~~

上から順にホームディレクトリに戻る。
一つ前に戻る。
ルートディレクトリに移動。
ディレクトリ「home」に移動。

Windowsでフォルダを開くイメージです。

##ls -list-

~~~
$ ls [オプション]  対象のパス
~~~

指定されたディレクトリの下のファイルとディレクトリ情報を、一覧を表示するコマンドです。
指定せず空欄の時は、カレントディレクトリの一覧を表示します。

 - オプション  
   - `-l` -long-   
 長形式で出力。名前だけじゃない情報も付与されて表示される。  
   - `-a` -all-  
 「.」を含む全てのファイルを表示。隠しファイルも表示されます。  
   - `-t` -time-  
 最終更新日時順に表示されます。  
   - `-r` -reverse-  
 古い順に表示。

~~~
$ ls -ltr
~~~

このように纏めてコマンドを使うこともできます。

##cp -copy-  

~~~
$ cp [オプション] コピー元パス コピー先パス
~~~
ファイル、ディレクトリをコピーします。

 - オプション  
   - `-i`  -interactive-  
   コピー先のファイルが既に存在する時に、上書きするか確認する。
   - `-r` -recursive-  
   再帰的にディレクトリ下ファイル、ディレクトリのコピーをする。
   - `-p` -preserve-  
   元ファイルのタイムスタンプごとコピー。

##mkdir -make directories-
~~~
$ mkdir [オプション] 新規ディレクトリ名のパス
~~~
指定したパスに新規ディレクトリを作成します。
パス無しでディレクトリ名を入れると、カレントディレクトリに直接新規ディレクトリが作成されます。

 - オプション  
  - `-p` -parents-   
  新規ディレクトリの階層の上にさらに階層を作成することができる。  

**例**  

~~~
$ mkdir -p ~/dir1/dir2/dir3
~~~

ホームディレクトリに「dir1」が新規で作成され、その中に「dir2」、さらに中に「dir3」がある形で作成されます。

##rmdir -remove empty directories-
~~~
$ rmdir [オプション] ディレクトリパス
~~~

ディレクトリを消すことができます。
が、ディレクトリの中が空でなければいけません。
`rm`コマンドでも消せるのであまり使わないのかも知れません。

 - オプション  
  - `-p` -parents-   
指定したディレクトリの階層のその階層までを一斉削除します。  
ただし、上記にあるようにそこまでのディレクトリ内部が空ではないと実行できません。

##rm -remove files or directories-

ファイル、ディレクトリの削除を行うコマンドです。

~~~
rm [オプション] 対象のパス
~~~

 - オプション  
  - `-i` -interactive-   
処理を実行する前に対話形式で削除してよいかの、確認をしてくれます。
  - `-f` -force-  
強制で処理を実行します。
  - `-r`、`-R` -recursive-(再帰)
ディレクトリを対象に削除を行う際に使います。  
`$ rmdir`と違い中身があっても削除します。

##mv -move-

~~~
$ mv [オプション] 移動元のパス 移動先のパス
~~~

そのままですが移動元から移動先へファイルを移します。
しかし特殊な点が一つあり移動先が新しいファイルの名前だと名前の置き換えになります。

~~~
$ mv 古い名前 新しい名前
~~~

ファイルやディレクトリの名前変更で使われます。
移動先が同じ階層でも大丈夫です。
ただディレクトリの場合、新しい名前が存在するディレクトリの際は、そのディレクトリに古い名前であったディレクトリが格納される形になるので注意が必要です。

 - オプション  
  - `-i`  -interactive-  
処理を実行する前に対話形式で削除してよいかの、確認をしてくれます。
  - `-f` -force-  
強制で処理を実行します。

##touch -change file timestamps-  

~~~
$ touch [オプション] 対象のパス
~~~

タイムスタンプ（最終更新日）を変えるコマンド。
なんですが、ファイルの作成に使用することができます。
上記の[対象のパス]にファイルやディレクトリが存在しない場合、その名前の新規ファイルが作成されます。

 - オプション  
  - `-t` -time stamp-  
本来のタイムスタンプを変える時に使うものです。  
**[[cc]YY]MMDDhhmm[.ss]**という書式を使い  
century,year,month,day,hour,minute,secondを表します。  
**[]**は省略できます。
  - `-d` (`--date=`)  
これは上記のものを2桁で表現せずに文字列で指定する形になります。  

**例**

~~~
$ touch -t 201809202130 ./sample
$ touch --date="2018/9/20 20:30" ./sample
~~~

このように表記します。
[[cc]YY]MMDDhhmm[.ss]表記の際は9月は09、0分は00など1桁のものも2桁で表すので注意です。

---
`cat`、`grep`などは別でまとめます。


---
###参考・引用
[初心者でもこれは使いこなしたい！Linuxコマンドまとめ](https://qiita.com/lrf141/items/4dadd107c1ac778260e5#cp)
[Linux die net](https://linux.die.net/man/1/)