WSL(Windows Subsystem for Linux)でLinuxのお勉強
はじめに
Windows 10ではWSL(Windows Subsystem for Linux)なる便利なものが使えるということで、この度導入してみました。
この機会に、今まで雰囲気でやってきたLinuxコマンド等の使い方について自分用のメモを残してみます。
# 新しく何か覚えたら随時更新していきたい。
WSLについて
Windows 10から簡単にLinux環境を動かすことができます。
導入方法は以下の記事等を参考にしてください:
起動方法
導入の際にはいくつかの選択肢の中から好きなディストリビューションを選ぶことができますが、ここではUbuntuを選択します。
無事インストールできたら、スタートメニューから「Ubuntu」のアイコンをクリックするとUbuntuのシェルが立ち上がります。
初めて立ち上げた場合はアカウントの設定が必要になるので、適当なユーザー名とパスワードを設定しておきましょう。
以降はこのアカウントでログインした状態で立ち上がります。
あるいは、コマンドプロンプトでwsl
を叩いても同じUbuntu環境に入ることができます。便利ですね。
あるいは、軽く1コマンドだけ実行したい場合は、wsl
に続いて実行したいコマンドを打つのでもOKです。
rootのパスワード設定
さて、何かのときにrootアカウントでログインしたくなるときがあるかもしれません。
が、WSLの仕様として、デフォルトのrootのパスワード自体を知ることは不可能なようです。
$ su - # rootに変更したい Password: # パスワードを聞かれる(わからない) su: Authentication failure
ただ、現在のアカウントからsudo
コマンドによってroot権限でコマンドを実行することは可能です。
そこで、以下のようにしてrootのパスワードを現在のアカウントから変更する形で初期設定しておくことができます。
$ sudo su - # rootに変更 [sudo] password for [ログイン中のユーザー名]: # ログイン中のアカウントのパスワードを入力 root@MyComputer:~# passwd Enter new UNIX password: # rootの新しいパスワードを入力 Retype new UNIX password: # rootの新しいパスワードを再度入力 passwd: password updated successfully
基本コマンド
ls
(list segments)
カレントディレクトリにあるフォルダ、ファイルの一覧を表示する。
-a
名前の先頭に「.」があるファイル、フォルダも表示する。
カレントディレクトリ(「.」)、親ディレクトリ(「..」)なんかも表示されるが、-A
オプションを使うとこの2つは表示されなくなる。-l
詳細情報も含めて表示する。-R
ディレクトリの中身も再帰的に表示する。
chmod
(change mode)
パーミッションを設定する。
パーミッション関連で困ったらとりあえずchmod 777 hoge.txt
で解決ですよね?*1。
vi
vi(エディタ)でファイルを編集する。
viエディタの使い方
source
コマンドを記入したファイルを引数に与えると、それを実行する。
$ echo echo abc > source_test.txt $ source source_test.txt abc
これまで、source .bashrc
とかおまじないのように打ってましたが、source
コマンド自体の働きはこれだけなんですね。
bash
コマンドも同様の働きをしますが、以下のような違いがあるようです:
qiita.com
リダイレクト
コマンドとファイル名を>
で繋ぐことで、標準出力をファイルに書き込むことができる。
>
ではファイルの中身がすべて上書きされ、>>
では末尾に追記される。
$ echo hello > test.txt $ cat test.txt hello $ echo bye > test.txt $ cat test.txt bye $ echo hello > test.txt $ echo bye >> test.txt $ cat test.txt hello bye
また、コマンドとファイル名を<
で繋げば、ファイルの中身をコマンドへの入力として与えられる。
$ cat test.txt abcd efgh test ijkl $ grep abc < test.txt abcd
その他のいろいろな使い方は以下を参照: eng-entrance.com
パイプライン
コマンドとコマンドを|
で繋ぐことで、1つ目のコマンドの出力を2つ目のコマンドの入力として与える。
$ cat test.txt abcd efgh test ijkl $ cat test.txt | grep test test
その他、詳細は以下を参照: eng-entrance.com
おわりに
その他、理解が曖昧な部分はいろいろあるので引き続きやっていきましょう。
etc...