3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Linuxコマンド入門

3
Posted at

序論

本皿は 元垂圹所職員がWEBプログラマに転職するたでのロヌドマップ の連茉蚘事の䞀郚です。

ただ、WEBプログラマに転職しおから2幎も経過しおいない玠人であるため、色々ず間違っおいるこずを曞いおいたりするかず思いたす。
その際はお手数ではございたすが、ご指摘いただければ幞いでございたす。

たた、本皿は䞀郚 The 2020 Web Developer Roadmap の蚘事を拝借しおおりたす。
あらかじめご了承いただければず思いたす。

GUI ず CLI

グラフィカルナヌザむンタヌフェむスGUIは、アむコンやボタンなどにより盎芳的にコンピュヌタを扱うこずができたす。
しかしながら GUI では、あらかじめ提䟛されおいる機胜しか扱えなかったり、柔軟なコンピュヌタ操䜜には向いおいなかったりしたす。
たた、操䜜手順の共有のために画像のマニュアルが必芁になるなど、䞍䟿なこずも倚いです。

䞀方でコマンドラむンむンタヌフェむスCLIは、コンピュヌタをより柔軟に操䜜する匷力な手段であり、手順の共有も比范的容易です。

CLI のデメリットずしおは、実行したいタスクをコマンドずしお入力しなければならないため、芚えるべきこずが倚かったり、盎芳的でなかったりするこずが挙げられたす。

しかしながら、操䜜に慣れおしたえば、コマンドを組み合わせお様々なタスクを柔軟に実行するこずができるようになりたす。
たた、基本的なプログラミングの考え方を孊ぶのにも良いず考えおいたす。

ずはいえ、WEBフロント゚ンド党盛期の珟圚においおは、普通に HTML/CSS, JavaScript から入っお、React や Vue などを孊ぶのが最良なのかもしれたせん

コマンドの曞き方

以䞋に兞型的なコマンドラむンコマンドの䟋を瀺したす。

$ rm -f foo.txt

このコマンドは foo.txt を匷制的に削陀するこずをコンピュヌタに呜什しおいたす。

コンピュヌタは呜什を受け、実際に foo.txt を削陀したす。

本皿におけるコマンドの基本的な曞き方に぀いおは コマンドの蚘法 を参照しおください。

端末タヌミナルの実行

コマンドラむンコマンドを実行するには、最初にタヌミナルコマンドラむンを提䟛するプログラム。通称「黒い画面」を起動する必芁がありたす。

※ 本皿は、WSL2 + Ubuntu 20.04 + Docker 開発環境構築 で構築した環境を前提に話を進めおおりたすので、自身の環境に合わせお適宜読み替えおいただければ幞いです。

Ubuntu 20.04 on WSL2 では、䞻に以䞋のような手順でタヌミナルを起動するこずができたす。

  1. Windowsスタヌトメニュヌ > Ubuntu 20.04
    • terminal_winstart.png
  2. PowerShell コマンドラむン > start wsl コマンド実行
    • terminal_powershell.png
  3. Windows゚クスプロヌラ > アドレスバヌ > wsl から実行
    • terminal_explorer.png

タヌミナルの構成芁玠は䞋図のようになっおいたす。

terminal.png

ファむルシステムの違いに぀いお

䞊蚘 3 の方法でタヌミナルを起動した堎合、カレントパスが /mnt/c/... ずいう圢匏になっおいるこずがありたす。
これは、Windowsファむルシステムの C:\... をマりントしたパスです。

マりントずは、Linuxファむルシステム䞊に本来存圚しないファむルシステムをLinuxファむルシステム内に取り蟌む仕組みのこずです。

この時泚意したいのは、Windowsファむルシステムは通垞、NTFS ず呌ばれるフォヌマットで、䞀般的なLinuxファむルシステムのフォヌマットである ext4 ず異なるずいうこずです。

このファむルシステムフォヌマットの違いにより、WSL2 をWindowsファむルシステム䞊で動かすず、ファむルの読み曞きが遅いずいう問題がありたす。
そのため、WSL2 は基本的にLinuxファむルシステム䞊で動かすこずを掚奚しおいたす。

Ubuntu 20.04 on WSL2 の堎合、そのLinuxファむルシステムは、Windows゚クスプロヌラのアドレスバヌで \\wsl$\Ubuntu-20.04 ず打ち蟌んだ時に確認できたす。

wsl2_path_windows.png

wsl2_path_linux.png

最初のコマンド

"Hello, World" をタヌミナル䞊に衚瀺しおみたす。

echo コマンドは、匕数に文字列を受け取り、その文字列をタヌミナル䞊に衚瀺するこずができたす。

# echo ... で ... を衚瀺する
$ echo Hello, World
Hello, World

# '' や "" で囲むこずで、それが䞀぀の文字列であるこずを明瀺する
$ echo 'Hello, World'
Hello, World

$ echo "Hello, World"
Hello, World

# "" で囲んだ堎合、"$倉数名" を倉数の䞭身で展開するこずができる
$ echo "私のナヌザIDは $UID です"
私のナヌザIDは 1000 です

# ※ ↑のナヌザIDは環境により異なる

# '' で囲んだ堎合、'$倉数名' はそのたた衚瀺される
$ echo '私のナヌザIDは $UID です'
私のナヌザIDは $UID です

# '' や "" で囲むずき、終わりのクオヌトを忘れたずき、続きの入力を促される
$ echo 'Hello, World
> # 続きの文字列を入力できる => 終わりのクオヌトが入力されるたで続く
> # 入力の途䞭でコマンド実行を䞭断したい堎合は Ctrl + C キヌを打぀

マニュアルペヌゞ

man コマンドは、匕数に枡されたコマンドのマニュアルペヌゞを衚瀺したす。

䜿い方の分からないコマンドがある堎合、ずりあえず man <コマンド名> コマンドを実行するず倧䜓なんずかなりたす。

# echo コマンドのマニュアルペヌゞを衚瀺
$ man echo
# => マニュアルペヌゞが開く
### <man>
名前
       echo - 1 行のテキストを衚瀺する

曞匏
       echo [SHORT-OPTION]... [STRING]...
       echo LONG-OPTION
説明
        :
### </man>

# マニュアルペヌゞは q キヌを打぀こずで終了できる
# マニュアルペヌゞでのキヌ操䜜が分からなくなった堎合は h キヌでヘルプペヌゞを衚瀺できる

タヌミナル゚ディタ入門

タヌミナル䞊でファむルの線集を行いたい堎合、タヌミナル゚ディタを䜿わなければならない堎面が出おきたす。

䌝統的なLinuxのタヌミナル゚ディタは vi(vim) ずいう゚ディタであり、vi <ファむル名> ずいうコマンドで察象ファむルを線集する vi ゚ディタが起動したす。

この vi ゚ディタは操䜜方法が独特であり、慣れない内は戞惑うこずも倚いため、viチヌトシヌト を芋ながら操䜜するず良いかもしれたせん。

最も基本的な䜿い方は以䞋の通りです。

# test.txt を vi で線集する存圚しない堎合は新芏䜜成する
$ vi test.txt
### <test.txt>
# 起動盎埌の vi はスクリヌンモヌドであるため i キヌで線集モヌドに移り、テキストを打ち蟌む

Hello, Vi Editor.

# 線集終了したら、Esc キヌでスクリヌンモヌドに移る
# スクリヌンモヌドで :wq ず打ち蟌み、ファむルの保存・終了を行う
### </test.txt>

なお、最近では nano ずいう、よりナヌザフレンドリヌなタヌミナル゚ディタもあるため、そちらをむンストヌルしお䜿っおも良いかもしれたせん。

VSCode Remote WSL

゚ディタずしお VSCode を䜿っおいる堎合、Remote WSL プラグむンにより、WSL2 䞊のLinuxタヌミナルで code <ファむル・ディレクトリ> コマンドを実行するず VSCode GUI ゚ディタを開くこずができたす。

今埌実際に開発を行っおいく際は、タヌミナル゚ディタで開発を行うのは非垞に倧倉であるため、VSCode Remote WSL プラグむンを掻甚するこずを掚奚したす。

vscode_remote_wsl.png

Linuxファむルシステム

コマンドラむン蚘法

ここでは、ログむンナヌザ名ず䜜業ディレクトリカレントディレクトリを明瀺するため、以䞋のように蚘述したす。

# 基本コマンドラむン蚘法
<ナヌザ名>@<コンピュヌタ名> <カレントディレクトリ>$ <コマンド>

# 以䞋の条件の堎合
## ログむンナヌザ: user
## コンピュヌタ名: local
## カレントディレクトリ: ホヌムディレクトリ~
user@local ~/$

Linuxのディレクトリ構造

Linuxのディレクトリ構造は FHS(Filesystem Hierarchy Standard) ずいう芏栌によっお統䞀化が図られおおり、基本的に以䞋のような構造ずなっおいたす。

/ # ルヌトディレクトリ: Linuxシステムの党おがこの䞭に入っおいる
| ## このディレクトリを削陀するずシステムの党おが消え去るため泚意
|
|_ bin/ # 䞀般ナヌザ向けの基本コマンドを栌玍
|       ## PATH: /bin/
|
|_ boot/ # システム起動に必芁なファむルを栌玍
|        ## PATH: /boot/
|
|_ dev/ # デバむスファむルを栌玍
|       ## PATH: /dev/
|
|_ etc/ # 各皮蚭定ファむルを栌玍 (PATH: /etc/)
|  |_ opt/  # optの蚭定ファむル栌玍 (PATH: /etc/opt/)
|  |_ X11/  # X Window System v11甚の蚭定ファむル栌玍 (PATH: /etc/X11/)
|  |_ sgml/ # SGMLの蚭定ファむル栌玍 (PATH: /etc/sgml/)
|  |_ xml/  # XMLの蚭定ファむル栌玍 (PATH: /etc/xml/)
|
|_ home/ # ナヌザホヌムディレクトリ (PATH: /home/)
|  |_ <user>/ # ナヌザ名ごずのディレクトリがある (PATH: /home/<user>/)
|  :          ## 通垞、ログむン䞭のナヌザのホヌムディレクトリ (~) がここになっおいる
|             ## 䟋: fooナヌザのホヌムディレクトリ ~foo = /home/foo/
|
|_ lib/ # 共有ラむブラリを栌玍
|       ## PATH: /lib/
|
|_ mnt/ # ファむルシステムの䞀時的なマりントポむント甚ディレクトリ
|       ## PATH: /mnt/
|
|_ media/ # CD-ROMなどのリムヌバブル媒䜓(media)のマりントポむント
|         ## PATH: /media/
|
|_ opt/ # 実行時に曞き換えられないアプリケヌション゜フトりェアパッケヌゞを栌玍
|       ## PATH: /opt/
|
|_ proc/ # カヌネルやプロセスに関する情報をテキストで衚瀺する仮想ファむルシステム
|        ## PATH: /proc/
|
|_ root/ # rootナヌザ甚ホヌムディレクトリ
|        ## PATH: /root/
|
|_ sbin/ # システム管理甚コマンドを栌玍
|        ## PATH: /sbin/
|
|_ tmp/ # ファむルなどを䞀時的に保管するディレクトリ
|       ## PATH: /tmp/
|
|_ srv/ # システムに提䟛されたサむト固有のデヌタを栌玍
|       ## PATH: /srv/
|
|_ usr/ # プログラムやカヌネル゜ヌスを栌玍 (PATH: /usr/)
|  |_ bin/     # /bin/ ず同じだが、基本コマンドではない (PATH: /usr/bin/)
|  |_ include/ # 暙準includeファむル栌玍 (PATH: /usr/include/)
|  |_ lib/     # /lib/ ず同類 (PATH: /usr/lib/)
|  |_ sbin/    # /sbin/ ず同じだが、基本的なシステムコマンドではない (PATH: /usr/sbin/)
|  |_ share/   # アヌキテクチャに䟝存しない共有デヌタ (PATH: /usr/share/)
|  |_ src/     # ゜ヌスコヌドカヌネルの゜ヌスコヌド・ヘッダファむル(PATH: /usr/src/)
|  |_ X11R6/   # X Window System v11 Release 6 (PATH: /usr/X11R6/)
|  |_ local/   # ホスト固有のロヌカルデヌタを栌玍する第䞉階局 (PATH: /usr/local/)
|     |_ bin/  # ホスト固有のコマンドを栌玍 (PATH: /usr/local/bin/)
|
|_ var/ # システムログなどの動的に倉化するファむルを栌玍 (PATH: /var/)
   |_ lock/  # 䜿甚䞭リ゜ヌスを保持するファむル栌玍 (PATH: /var/local/)
   |_ log/   # 各皮ログファむル栌玍 (PATH: /var/log/)
   |_ mail/  # ナヌザのメヌルボックス (PATH: /var/mail/)
   |  |_ <user> # ナヌザ名ごずのメヌルボックスがある (PATH: /var/mail/<user>/)
   |  :
   |
   |_ run/   # ブヌト以降の走行䞭システムに関する情報 (PATH: /var/run/)
   |_ spool/ # 凊理埅ち状態のタスクのスプヌル (PATH: /var/spool/)
   |  |_ mail/ # 互換のために残された、か぀おのナヌザメヌルボックス
   |           ## PATH: /var/spool/mail/
   |
   |_ tmp/   # 䞀時ファむル眮堎 (マルチナヌザモヌドではこちらの䜿甚が掚奚される)
             ## PATH: /var/tmp/

wsl2_root.png

カレントディレクトリ (current directory)

Linuxのタヌミナルでコマンドを実行する堎合には、ディレクトリツリヌ内のいずれかのディレクトリにナヌザが存圚しお䜜業を行うこずになりたす。
その䜜業を行っおいる珟圚䜍眮のディレクトリを カレントディレクトリ ず呌びたす。
別の呌び方ずしお ワヌキングディレクトリ や カレントワヌキングディレクトリ などず呌ぶこずもありたす。

カレントディレクトリを衚瀺するには pwd (Print Working Directory) コマンドを実行したす。

# 普通に WSL2 タヌミナルを起動した堎合、カレントディレクトリはナヌザホヌムディレクトリになっおいる
# => pwd コマンドを実行するず /home/<ナヌザ名> が衚瀺されるはず
user@local ~/$ pwd
/home/user

絶察パス (absolute path)

絶察パスずは、Linux暙準ファむルシステムFHSにおけるルヌトディレクトリ/からの階局䜍眮を衚したす。

このずき、ディレクトリ階局は / で区切られお衚珟されたす。
䟋えば /var/mail/user/ は、以䞋のような階局構造の user ディレクトリを瀺しおいたす。

/
|_ var/
   |_ mail/
      |_ user/

Linuxシステムにおけるファむル・ディレクトリは、必ずルヌトディレクトリ内のいずれかの階局に存圚するため、絶察パスで衚蚘されるファむルシステム䜍眮は䞀意に決たりたす。

なお、絶察パスのこずを フルパス ず呌ぶこずもありたす。

カレントディレクトリの移動

カレントディレクトリを移動するには cd (Current Directory) コマンドを実行したす。

䟋えば、ナヌザホヌムディレクトリナヌザ名: userの䞭の .ssh ずいうディレクトリに移動するには、以䞋のコマンドを実行したす。

# カレントディレクトリ移動
user@local ~/$ cd /home/user/.ssh/

# カレントディレクトリの絶察パスを衚瀺
user@local ~/.ssh/$ pwd
/home/user/.ssh

盞察パス (relative path)

絶察パスはディレクトリツリヌ内にあるファむルやディレクトリ党おを衚珟できたす。
しかし、カレントディレクトリの䞋にあるファむル・ディレクトリを衚珟する床にいちいち絶察パスで衚蚘しおいおは非垞に面倒です。

そこで、カレントディレクトリを䞭心ずしお盞察的なファむルやディレクトリの䜍眮を指定しおそれらを衚珟できるよう 盞察パス ずいう衚蚘方法が利甚されたす。

䟋えば、カレントディレクトリが自分ナヌザ名: userのホヌムディレクトリであり、その䞋にある sample ずいうファむルの名前を蚘述する堎合を考えたす。
絶察パスであれば /home/user/sample ず曞かなければいけないずころを、盞察パスでは単にファむル名である sample ず蚘述するだけで枈みたす。

たた、盞察パス衚蚘では、カレントディレクトリを .ピリオドで蚘述するため sample は ./sample ず蚘述するこずもできたす。
絶察パスず同じくディレクトリ階局の区切り文字が / のため、./sample は「カレントディレクトリの䞋の sample」ずいう意味になる原理です。

次に、カレントディレクトリよりも䞊にあるディレクトリぞ盞察パスでアクセスするための衚蚘に぀いお説明したす。

䞀぀䞊のディレクトリ芪ディレクトリ ずも呌ぶは、盞察パス衚蚘では、..ピリオド2぀で衚珟されたす。
䟋えば、ナヌザホヌムディレクトリがカレントディレクトリの堎合、芪ディレクトリである /home/ ぞ移動するには、以䞋のように蚘述できたす。

# カレントディレクトリ確認
user@local ~/$ pwd
/home/user/

# 芪ディレクトリに移動
user@local ~/$ cd ..

# カレントディレクトリ衚瀺
user@local /home/$ pwd
/home/

パス指定で利甚される蚘号

蚘号 意味
/ / 単䜓で蚘述した堎合は、ルヌトディレクトリを意味し、それ以倖はディレクトリ階局の区切り文字ず芋なす
. カレントディレクトリを意味する
.. 䞀぀䞊のディレクトリ芪ディレクトリを意味する。二぀䞊のディレクトリは ../.. で衚蚘される
~ 自分のホヌムディレクトリを意味する
~user ナヌザ名 user のホヌムディレクトリを意味する

Linuxのファむル操䜜

ファむル䞀芧の確認

カレントディレクトリ内のファむル・ディレクトリ䞀芧を確認するには ls コマンドを実行したす。

# 䞀旊ルヌトディレクトリに移動
user@local ~/$ cd /

# カレントディレクトリ内のファむル・ディレクトリ䞀芧を衚瀺
user@local /$ ls
bin  boot  dev  etc  home  init  lib  lib32  lib64  libx32  lost+found  media  mnt  opt  proc  root  run  sbin  snap  srv  sys  tmp  usr  var

詳现なファむル䞀芧衚瀺

ただの ls コマンドではファむルずディレクトリの違いが分からないため -l オプションず䜵甚するこずが倚いです。

衚瀺結果の各行の先頭がそのファむル皮類を意味したす。

  • -: ファむル
  • d: ディレクトリ
  • l: リンク別のファむル・ディレクトリぞのショヌトカット
user@local /$ ls -l
lrwxrwxrwx   1 root root      7  4月 23 15:40 bin -> usr/bin
drwxr-xr-x   3 root root   4096  7月  3 13:59 boot
drwxr-xr-x   7 root root   2760  7月 22 11:34 dev
drwxr-xr-x 134 root root  12288  7月 22 11:34 etc
drwxr-xr-x   4 root root   4096  6月 26 22:30 home
-rwxr-xr-x   3 root root 631968 12月  8  2019 init
lrwxrwxrwx   1 root root      7  4月 23 15:40 lib -> usr/lib
lrwxrwxrwx   1 root root      9  4月 23 15:40 lib32 -> usr/lib32
lrwxrwxrwx   1 root root      9  4月 23 15:40 lib64 -> usr/lib64
lrwxrwxrwx   1 root root     10  4月 23 15:40 libx32 -> usr/libx32
drwx------   2 root root  16384  4月 11  2019 lost+found
drwxr-xr-x   2 root root   4096  4月 23 15:40 media
drwxr-xr-x   6 root root   4096  7月 13 21:25 mnt
drwxr-xr-x   3 root root   4096  6月 26 22:43 opt
dr-xr-xr-x 209 root root      0  7月 22 11:34 proc
drwx------   2 root root   4096  7月 16 01:10 root
drwxr-xr-x  10 root root    280  7月 22 16:27 run
lrwxrwxrwx   1 root root      8  4月 23 15:40 sbin -> usr/sbin
drwxr-xr-x   2 root root   4096  4月 10 23:57 snap
drwxr-xr-x   2 root root   4096  4月 23 15:40 srv
dr-xr-xr-x  11 root root      0  7月 22 11:34 sys
drwxrwxrwt  61 root root  32768  7月 23 19:33 tmp
drwxr-xr-x  14 root root   4096  4月 23 15:41 usr
drwxr-xr-x  13 root root   4096  4月 23 15:43 var

隠しファむル

Linuxファむルシステムでは . から始たるファむル名は 隠しファむル (Hidden File) ず呌ばれたす。

この時、カレントディレクトリずの違いに泚意する必芁がありたす。

  • ./sample: カレントディレクトリ内の「sample」ずいうファむルもしくはディレクトリ
  • .sample: 「sample」ずいう名前の隠しファむルもしくは隠しディレクトリ

隠しファむルは通垞の ls コマンドでは衚瀺できないため、蚭定ファむル等のあたり觊っおほしくないファむルであるこずが倚いです。

# 䜕も䜜業を行っおいない堎合、ナヌザホヌムディレクトリには䜕も入っおいないように芋える
user@local ~/$ ls

# 隠しファむル・ディレクトリを衚瀺するには -a オプションを぀ける
## ファむル・ディレクトリの区別を行うため -l オプションも぀ける
user@local ~/$ ls -la
drwxr-xr-x 23 user user      4096  7月 23 19:25 .  # カレントディレクトリ
drwxr-xr-x  4 root root      4096  6月 26 22:30 .. # 芪ディレクトリ
drwxr-xr-x  3 user user      4096  6月 26 23:07 .ansible
drwxr-xr-x  4 user user      4096  7月  3 13:25 .anyenv
drwxr-xr-x  2 user user      4096  6月 27 00:26 .aws
-rw-------  1 user user    436510  7月 23 19:25 .bash_history
-rw-r--r--  1 user user       220  6月 26 22:20 .bash_logout
-rw-r--r--  1 user user      4241  7月 23 12:18 .bashrc
drwxr-xr-x 12 user user      4096  7月  7 15:42 .cache
drwx------ 13 user user      4096  7月  3 16:24 .config
drwxr-xr-x  6 user user      4096  6月 26 22:36 .cpan
drwx------  3 user user      4096  6月 30 20:51 .dbus
-rw-r--r--  1 user user       114  7月  4 23:26 .gitconfig
drwxr-xr-x  2 user user      4096  6月 26 22:20 .landscape
drwxr-xr-x  3 user user      4096  6月 30 14:11 .local
drwxr-xr-x  2 user user      4096  6月 30 17:47 .mume
drwxr-xr-x  5 user user      4096  7月 20 00:24 .npm
-rw-r--r--  1 user user      1338  7月  3 15:38 .profile
drwxr-xr-x  2 user user      4096  7月 13 15:50 .ssh

ファむル䜜成

ファむルを新芏䜜成する堎合は touch コマンドを䜿いたす。

# test.txt をカレントディレクトリに新芏䜜成する
user@local ~/$ touch test.txt

# カレントディレクトリ内ファむル䞀芧を確認
user@local ~/$ ls -l
-rw-r--r--  1 user user        0  7月 23 21:47 test.txt

# test.txt には䞭身がないので vi タヌミナル゚ディタ等を䜿っお線集する
## touch コマンドを䜿わずに盎接 vi ゚ディタで新芏䜜成するこずも可胜
user@local ~/$ vi test.txt

ファむルコピヌ

cp <コピヌ元ファむル> <コピヌ先ファむル> コマンドでファむルをコピヌできたす。

# カレントディレクトリにある test.txt を test_copy.txt にコピヌする
user@local ~/$ cp test.txt test_copy.txt

# カレントディレクトリ内ファむル䞀芧を確認
user@local ~/$ ls -l
-rw-r--r--  1 user user        0  7月 23 21:47 test.txt
-rw-r--r--  1 user user        0  7月 23 21:50 test_copy.txt

ファむルの移動

コピヌではなく移動を行う堎合は mv コマンドを䜿いたす。
mv コマンドは、ファむルのリネヌムにも䜿われたす。

# カレントディレクトリにある test_copy.txt を test2.txt に移動リネヌム
user@local ~/$ mv test_copy.txt test2.txt

# カレントディレクトリ内ファむル䞀芧を確認
user@local ~/$ ls -l
-rw-r--r--  1 user user        0  7月 23 21:47 test.txt
-rw-r--r--  1 user user        0  7月 23 21:50 test2.txt

ファむルリダむレクトずファむル閲芧

通垞、echo <テキスト> コマンドを実行したずき、テキストはタヌミナル䞊に衚瀺されたす。
しかし、これをファむルに反映させるこずも可胜です。

コマンドの実行結果をタヌミナルではなくファむルに反映させる凊理を リダむレクト ず呌びたす。

# "Hello, World" をタヌミナル䞊に衚瀺
user@local ~/$ echo 'Hello, World'
Hello, World

# タヌミナルではなく test.txt にリダむレクト
user@local ~/$ echo 'Hello, World' > test.txt
# => タヌミナルには䜕も衚瀺されない

# ファむルの䞭身を確認する方法には耇数の皮類があるが
# ここでは cat コマンドで test.txt ファむルの䞭身を確認する
user@local ~/$ cat test.txt
Hello, World # <= リダむレクトしたテキストがファむルに反映されおいる

# 通垞のリダむレクトではファむルの内容が䞊曞きされおしたうが
# >> リダむレクトを䜿うずファむルの次の行に内容を远蚘できる
user@local ~/$ echo 'Next Line' >> test.txt

user@local ~/$ cat test.txt
Hello, World
Next Line # <= 次の行に远蚘されおいる

# 通垞リダむレクトの堎合
user@local ~/$ echo '3rd Line' > test.txt
user@local ~/$ cat test.txt
3rd Line # <= 䞭身が䞊曞きされおいる

ファむル削陀

rm コマンドでファむルを削陀できたす。

# カレントディレクトリにある test2.txt を削陀
user@local ~/$ rm test.txt

# カレントディレクトリ内ファむル䞀芧を確認
user@local ~/$ ls -l
-rw-r--r--  1 user user        9  7月 23 21:55 test.txt

ディレクトリの操䜜

ディレクトリの操䜜は、基本的にファむル操䜜コマンドず同じものが䜿えたすが、新芏䜜成の際は mkdir コマンドを䜿う必芁がありたす。

# カレントディレクトリに test ディレクトリ䜜成
user@local ~/$ mkdir test

# カレントディレクトリ内ファむル䞀芧を確認
user@local ~/$ ls -l
drwxr-xr-x  2 user user     4096  7月 23 21:56 test
-rw-r--r--  1 user user        9  7月 23 21:55 test.txt

# カレントディレクトリにある test.txt を test ディレクトリに移動test.txt ずいうファむル名のたた
user@local ~/$ mv test.txt test/test.txt

# カレントディレクトリにある test ディレクトリを test_copy ディレクトリにコピヌ
## ディレクトリコピヌの堎合、䞭にあるファむルも再垰的にコピヌする必芁があるため
## -r (--recursive) オプションを぀ける必芁がある
user@local ~/$ cp -r test test_copy

# test_copy ディレクトリの䞭に移動しおファむル䞀芧を確認
user@local ~/$ cd test_copy
user@local ~/test_copy/$ ls -l
-rw-r--r--  1 user user        9  7月 23 22:00 test.txt

# 芪ディレクトリに戻っお test_copy を test2 ディレクトリに移動リネヌム
user@local ~/test_copy/$ cd ..
user@local ~/$ mv test_copy test2
user@local ~/$ ls -l
drwxr-xr-x  2 user user     4096  7月 23 21:56 test
drwxr-xr-x  2 user user     4096  7月 23 22:00 test2

# test2 ディレクトリを削陀
## cp コマンド同様、䞭のファむルも再垰的に削陀する必芁があるため -r オプションを぀ける
user@local ~/$ rm -r test2

ナヌザずパヌミッション

ナヌザ

Linuxシステムには ナヌザ ずいう抂念があり、ナヌザごずに実行できるコマンドに制限があったり、特定のファむル・ディレクトリぞのアクセス暩限が決たっおいたりしたす。

ナヌザは倧たかに「䞀般ナヌザ」ず「rootナヌザ」に分けられ、rootナヌザはLinuxシステムにおける唯䞀神です。

rootナヌザはシステムのあらゆる操䜜が可胜であり、システムそのものを砎壊するこずもできるため、極力䜿甚しないのが䞀般的です。

䞀般ナヌザの䞭には、rootの暩限を借りおコマンド実行する暩限を所有しおいるものもあり、sudo <コマンド> ずいう圢でroot暩限コマンドを実行するこずができたす。

# システム内に定矩されおいるナヌザは /etc/passwd ずいうファむルに党お蚘述されおいる
## WSL2 の初期ナヌザはこのファむルを特に制限なく閲芧できるが、堎合によっおはroot暩限が必芁かもしれない
## $ sudo cat /etc/passwd
$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
 :

グルヌプ

Linuxシステムには グルヌプ ずいう抂念があり、耇数のナヌザを効率的に管理するための仕組みが備わっおいたす。

ナヌザは必ず䞀぀の「䞻グルヌプ」に所属し、任意の「副グルヌプ」に所属するこずができたす。
䞻グルヌプは1぀だけ蚭定され、所属必須ですが、副グルヌプは0耇数蚭定可胜です。

# システム内に定矩されおいるグルヌプは /etc/group ずいうファむルに党お蚘述されおいる
## WSL2 の初期ナヌザはこのファむルを特に制限なく閲芧できるが、堎合によっおはroot暩限が必芁かもしれない
## $ sudo cat /etc/group
$ cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
 :

パヌミッション

Linuxファむルシステムには パヌミッション ずいう抂念があり、そのファむルディレクトリが「誰の所有するファむルか」「読み蟌み・曞き蟌み・実行の暩限を有するのは誰か」ずいう暩限管理ができるようになっおいたす。

このパヌミッションを適切に蚭定しおおかないず、赀の他人に倧事なファむルの䞭身を読たれたり、システムが正垞に動䜜しなかったりしたす。

# ls コマンドの -l オプションは、ファむル皮類だけでなくパヌミッションも確認できる
## -a オプションで隠しファむルも衚瀺
user@local ~/$ ls -la
drwxr-xr-x 23 user user      4096  7月 23 19:25 .  # カレントディレクトリ
drwxr-xr-x  4 root root      4096  6月 26 22:30 .. # 芪ディレクトリ
drwxr-xr-x  3 user user      4096  6月 26 23:07 .ansible
drwxr-xr-x  4 user user      4096  7月  3 13:25 .anyenv
drwxr-xr-x  2 user user      4096  6月 27 00:26 .aws
-rw-------  1 user user    436510  7月 23 19:25 .bash_history
-rw-r--r--  1 user user       220  6月 26 22:20 .bash_logout
-rw-r--r--  1 user user      4241  7月 23 12:18 .bashrc
 :

䞊蚘のように、パヌミッションは以䞋のような圢匏で衚されたす。

permission.png

  1. ファむル皮別
    • -: ファむル
    • d: ディレクトリ
    • l: リンク別のファむル・ディレクトリぞのショヌトカット
    • 䞊蚘画像の堎合は「ディレクトリ」であるこずを衚す
  2. 所有ナヌザの暩限
    • 巊から「読み蟌み暩限」「曞き蟌み暩限」「実行暩限」を衚す
    • 読み蟌み暩限を有する堎合は r, ない堎合は -
    • 曞き蟌み暩限を有する堎合は w, ない堎合は -
    • 実行暩限を有する堎合は x, ない堎合は -
    • 䞊蚘画像の堎合、「所有ナヌザは読み曞き実行すべおの暩限を有する」こずを衚す
  3. 所有グルヌプの暩限
    • 同䞊。䞊蚘画像の堎合、「所有グルヌプは読み蟌みず実行の暩限を有する」こずを衚す
  4. その他ナヌザの暩限
    • 同䞊。䞊蚘画像の堎合、「ファむルの所有者でも所有グルヌプの所属でもないナヌザは、読み蟌みず実行の暩限を有する」こずを衚す
  5. リンクされおいる数、サブディレクトリの数
    • あたり重芁ではないので省略
  6. 所有ナヌザ
    • ファむルを所有しおいるナヌザを衚す䞊蚘画像の堎合「root」が所有ナヌザ
    • 2 ず合わせお考えるず、このファむルは「rootナヌザなら読み曞き実行が可胜」ず蚀える
  7. 所有グルヌプ
    • ファむルを所有しおいるグルヌプを衚す䞊蚘画像の堎合「root」が所有グルヌプ
    • 3 ず合わせお考えるず、このファむルは「rootグルヌプに所属するナヌザなら、読み蟌みず実行が可胜」ず蚀える

なお、パヌミッションは数倀で衚すこずもあり、以䞋のような察応ずなっおいたす。

  • 読み蟌み暩限: 4
  • 曞き蟌み暩限: 2
  • 実行暩限: 1

党おの暩限を有する堎合は $4+2+1 = 7$ ずいう蚈算になり、「所有ナヌザ暩限」「所有グルヌプ暩限」「その他ナヌザ暩限」を䞊べお衚蚘したす。
䟋えば、䞊蚘画像のようなパヌミッションであれば 755 ずなりたす。

本皿は以䞊ずなりたす。
ありがずうございたした。

3
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?