問題一覧
1
chmod a+x example.sh chmodコマンドはパーミッションを変更するコマンド。シンボルモードで「a+x」は、「すべてのユーザー(a)に実行権限(x)を追加する(+)」の意味。
2
chmod g-w file chmodは「change mode」の略。シンボルモードで「g-w」は、「所有グループに所属するユーザー(g)から書き込み権限(w)を削除する(-)」の意味。
3
chmod 775 file 数値モードで「775」は以下の意味 ・オーナーは「rwx」(4+2+1) ・所有グループに所属するユーザーは「rwx」(4+2+1) ・その他のユーザは「r-x」(4+0+1)
4
chmod 540 file 数値モードで「540」は以下の意味 ・オーナーは「r-x」(4+0+1) ・所有グループに所属するユーザーは「r--」(4+0+0) ・その他のユーザは「---」(0+0+0)
5
・シンボルモードは、書く手間が大きくなる可能性があるがミスしづらい。局所的な変更に向いている ・数値モードは、書く手間は少ないがミスが起こりやすい。まとめて変更する場合に向く
6
・スーパーユーザーとは、あらゆる操作が可能な最も強い権限を持つユーザーのこと。ユーザー名がrootであることから「rootユーザー(ルートユーザー)」とも呼ばれる ・一般ユーザーとは、通常の作業に利用するユーザーのこと。スーパーユーザーのような強い権限はない
7
普段は一般ユーザーの制限された権限で操作を行い、強い権限が必要な場面だけスーパーユーザーに切り替えて操作を行うようにする。スーパーユーザーのパスワードを知っていても、まずは一般ユーザーでログインする。
8
su - suコマンドは、本来はユーザーを切り替える(substitute user)ためのコマンドだが、主にスーパーユーザーに切り替える用途で使われる。suコマンドの引数に「-」を指定しないと、切り替え前の状態を引き継いでユーザーが切り替わる。切り替え前の状態を引き継ぐと、予期せぬ動作になることもあるので、基本的に「-」を付ける。
9
exitまたはCtrl+d exitは「外に出る」の意味、スーパーユーザーの外に出るということ。catコマンドの引数を省略したときのモードの終了と同じくCtrl+d。「end(終了)」のdと覚えよう。
10
sudo cat /etc/shadow sudoコマンドは、スーパーユーザーとしてコマンドを実行するために使われるコマンド。sudoは「substitute user do(代わりのユーザーが実行)」の略。sudoコマンドもsuコマンドと同様に、本来は別のユーザーとしてコマンドを実行するためのコマンドだが、スーパーユーザーとして実行するために主に使われる。「sudo コマンド」と書くと、現在ログインしているユーザーのパスワードが求められる。
11
・一般ユーザーのパスワードを入力するため、スーパーユーザーのパスワードを複数の人で共有する必要がない ・スーパーユーザーに切り替えないので、気づかないうちに強い権限を使ってしまう恐れがない ・「sudo」と毎回入力するので、スーパーユーザーの権限を使っていることを意識しやすい
12
Vimとは、多くのlinuxディストリビューションにデフォルトでインストールされているテキストエディタ…「Vi improved(改善されたVi)」が名前の由来で、その名のとおりVi(ヴィーアイ)というテキストエディタが改良されたもの。
13
vim newfileまたはvi newfile vimコマンドかViコマンドの引数に既存ファイルを指定するとVimでそのファイルを開くことができる。存在しないファイルの名前を指定すると、その名前のファイルを作成してから開く。
14
:q qは「quit(終了する)」の略。開いたファイルに変更がある場合は、「:q」では終了できない。変更を上書き保存して終了するなら「:wq」、変更を破棄して終了するなら「:q!」を入力する。
15
モードとは、システムが持つ状態のこと…モードを用意することで、同じ操作に複数の意味を持たせることができるようになり、ボタンなどインターフェースの部品の数を減らすことができるが、操作がわかりづらくなる。
16
・ノーマルモード デフォルトのモード…Escでノーマルモードに戻れる。 ・インサートモード Vimで開いているファイルに文字を入力するためのモード…ノーマルモードでaキーやiキーを押すとインサートモードになる。 ・コマンドラインモード Vimのコマンドを利用するためのモード…ノーマルモードで「:q」や「:w」というように、「:」のあとに文字列を入力することでコマンドを利用できる。 ・ビジュアルモード 範囲選択が可能になるモード…ノーマルモードでvキーやVキーを押すとビジュアルモードになり、カーソル移動で範囲を選択できるようになる。
17
: コマンドラインモードは、Vimのコマンドを利用するためのモード。ノーマルモードからコマンドラインモードに切り替えるには「:」を入力し、「:q」「:w」のようなコマンドを入力することでVimを操作できる。
18
:w wは「write(書き込む)」の略。
19
:q! 「!」は強制的に実行する際に使われることも多い記号。qは「quit(終了する)」の略なので、「:q!」で強制終了の意味になる。
20
w newname 上書き保存の「:w」に加えて、「:w ファイル名」というようにファイル名を指定すると、名前をつけて保存することができる。
21
:wq wは「write(書き込む)」の略で、qは「quit(終了する)」の略なので、「:wq」で「上書きして終了する」の意味になる。
22
i iは「insert(挿入する)」の略。iキーを押してインサートモード切り替えると、カーソル位置から文字入力を開始する。
23
Esc ノーマルモードは、Vimのデフォルトのモード。Escを押せばノーマルモードに戻れる。
24
hjklキーが矢印キーの←↓↑→に対応。矢印キーでも移動可能。
25
x 「x(エックス)」が「✖️(バツ)」に似ていて、ブラウザを閉じるときなど「✖️(バツ)」が削除を意味することから覚える。X(Shift+x)キーでカーソル位置の左の文字を削除できる。
26
uでUndo、Ctrl+rでRedo uは「undo(元に戻す)」の略。rは「redo(やり直す)」の略。
27
v vは「Visual(ビジュアル)」の略。行単位で選択できるビジュアルモードにするには「Shift+v」、長方形の形で選択できるビジュアルモードにするには「Ctrl+v」を押す。
28
y yは「yank(ヤンク)」の略。Vimにおいてヤンクとはコピーのこと。
29
p pは「put(プット)」の略。Vimにおいてプットとはペースト(貼り付け)のこと。
30
標準入出力とは、標準入力・標準出力・標準エラー出力の3つの総称‥コマンドは、標準入力からデータを受け取り、実行結果を標準出力に出力し、標準エラー出力にエラーを出力するだけで、標準入出力が何につながっているかは把握していない。
31
標準入出力という仕組みによって、入出力を何にするかといった設定をコマンドのプログラム中に書くのではなく、コマンドの利用者に担当させることができ、入出力を変えたとしてもコマンドのプログラムを書き換えなくてよくなる。
32
リダイレクトとは、標準入出力を切り替える機能のこと…リダイレクトは主に、標準出力と標準エラー出力を端末からファイルに変更する用途で使われる。
33
ls > ls.txt 「>」は標準出力をリダイレクトする記号。標準出力をデフォルトの端末から、ファイルに変更している。
34
echo Hello >> file 「>>」で標準出力をリダイレクトすると、リダイレクト先のファイルの末尾に内容を追加する。
35
find / -name log -type f > logs.txt 2> error.txt 「2>」は標準エラー出力をリダイレクトする記号。標準出力と標準エラー出力をデフォルトの端末から、ファイルに変更している。
36
/dev/nullは、入力に指定すると何もデータを返さず、出力に指定すると書き込まれたデータをすべて破棄する、という性質を持つ特殊なファイル。標準出力と標準エラー出力のどちらかだけを表示するようにして、デバッグなどの問題解決をしやすくするために使われる。
37
find ~ -name '*.sh' -type f 2 > /dev/null 標準エラー出力を/dev/nullにリダイレクトすれば、エラーメッセージを破棄できる。
38
パイプラインとは、コマンドの標準出力に別のコマンドの標準入力をつなぐ機能のこと…パイプ(|)を使ってコマンドをつなぐことで、複雑な機能を実現できる。
39
ls / | cat -n パイプ(|)によって「ls /」の標準出力に「cat -n」の標準入力をつないでいる。
40
フィルタ(コマンド)とは、標準入力からデータを受け取り、処理の結果を標準出力へ出力するプログラムのこと…フィルタを通すたびに、元のテキスト(データ)が加工されていく。それぞれのフィルタはとても小さな機能しか持たないが、パイプでつなげば大きな変更も可能。
41
テキスト処理によって、必要な情報だけを取り出すことで、コマンドの出力を解釈しやすくなる。また、集計作業などの複雑なデータ操作も可能になる。
42
wc file wcコマンドは、入力の行数や単語数(word count)などを出力するコマンド。オプションなしで実行すると、行数、単語数、バイト数などの順番で表示される。
43
ls / | wc -l wcコマンドの-lオプションは「lines」の略で、行数を数える。1行1データのファイルの場合、行数を数えることでデータ件数をカウントできる。
44
sort file sortコマンドは、テキストを行単位でソート(sort)するためのコマンド。オプションを付けないと、アルファベット順(昇順)に並べ替える。
45
ls -l / | sort -nrk2 -rオプションを使うと逆(reverse)順に並べ替える。-kオプションを使うと複数列からソートキー(sort key)を指定できる。-nオプションを使うと数値(number)順に並べ替えることができる。
46
sort file | uniq uniqコマンドは、連続する重複行を取り除いてただ1つの(unique)行にするためのコマンド。連続していない重複行を取り除くには、sortコマンドでソートしてからuniqコマンドを使う。sortコマンドの-uオプションを使ってもよい。
47
sort file | uniq -c | sort -rn -cオプションを使うと、重複した回数をカウント(count)できる。sortコマンドでは、-kオプションの引数が1の場合は省略可能。
48
cat file | tr a-z A-Zまたは tr a-z A-Z < file trコマンドは文字を置換する(translate)するためのコマンド。「tr 置換前の文字 置換後の文字」という書式で記述する。trコマンドだは引数にファイルを指定することができないので、パイプかリダイレクトで対応する。
49
cat file | tr -d User または tr -d User < file trコマンドの-dオプションを使えば、指定した文字の削除ができる。文字の置換の場合と同様に、「User」という文字列を削除するわけではなく、「U」「s」「e」「r」という4つの文字を削除する。
50
grep bash /etc/shells grepコマンドは、指定した文字列を含む行だけを出力するコマンド。
51
ls -l / | grep ^l grepコマンドの検索文字列は正規表現で指定することも可能。正規表現とは、メタ文字と呼ばれる特殊な文字を使って文字列をパターンとして指定できる機能のこと。「^」は行頭を意味するメタ文字。
52
ls /etc | grep -E 'bash|ssh' または ls /etc | egrep 'bash|ssh' … 正規表現には、基本正規表現(basic regular expression)と拡張正規表現(extended regular expression)の2種類がある。拡張(extended)正規表現を使用するには、grepコマンドに-Eオプションを付けるかegrepコマンドを使用する。「|」は「または」を意味する拡張正規表現のメタ文字。
53
ls -l / | awk '{print $2}' awkコマンドはさまざまな機能を持つコマンドで、指定した列だけを出力することもできる。
54
awk -F: '{print $1,$7}' /etc/passwd -Fオプションを使えば、指定した区切り文字で行を分割してから、その中から一部だけを取り出すこともできる。複数の列を取り出したり、取り出す順番を変えることもできる。
55
プロセスとは、メモリに格納されてCPUによって実行されているコマンドなどのプログラムのこと…プロセスは、実行されているプログラムに、プロセスIDなどのいくつかの情報を追加したまとまり。実行されているプログラムにいくつかの情報を追加することによって、プログラムの実行を管理しやすくなる。
56
・USER…実効ユーザー(effectiveuser)。誰の権限で実行されてあるプロセスかを管理している情報 ・PID…プロセスID。プロセスを一意に識別するための値 ・CMD…プロセスの元となったコマンド(プログラム)名
57
ps aux psは「process status」の略。psコマンドでは、BSDオプションと呼ばれるハイフンの付かないオプションが主に使われる。主なBSDオプションは以下の通り。 a…すべてのユーザーのプロセスを表示 u…詳細情報付きでプロセスを表示 x…端末を持たないプロセスを表示
58
デーモン(daemon)とは、端末が設定されておらずバックグラウンドで常時動作しているプロセスのこと…webサーバー内では、httpd(HTTPデーモン)のプロセスがバックグラウンドで常時動作しており、いつリクエストが送られてきても、レスポンスを返せるようにしている。
59
既存のプロセスの複製が上書きされることで、プロセスは新規作成される…扱うプロセスが変わっても、端末などの環境はプロセス間でさほど変わらないため、複製して再利用するほうが環境を共有しやすくて便利。
60
ps f fオプションは「forest(森)」の略。プロセスの親子関係を木構造で視覚的にわかりやすく表示できる。
61
シェルにおいてジョブとは、実行されているコマンドラインのこと…1つのジョブには1つ以上のプロセスが含まれる(コマンドラインは1つ以上のコマンドからなる)。プロセスはカーネルから見た処理(コマンドの実行)の単位であり、ジョブはシェル(ユーザー)から見た処理(コマンドラインの実行)の単位である。
62
Ctrl+z Ctrl+zでフォアグラウンドジョブを停止できる。停止したジョブは、fgコマンドやbgコマンドで再開できる。停止したジョブを修了するにはkillコマンドを使う。Ctrl+zを入力すると、暗黙的にジョブ内のプロセスにTSTPシグナルが送信される。
63
jobs [1]や[2]というジョブ番号付きでジョブが一覧表示される。ジョブ番号はシェル内で一意の番号なので、2つ以上のシェルを同時に使っているならジョブ番号は重複する。
64
jobs -l プロセスIDも含めて表示したい場合は「-l」オプションを用いる。-lオプションは「long」の略で、プロセスIDも含めて長く表示する。
65
fg %1 フォアグラウンド(foreground)とは、ユーザーからの入力を受け付け、対話的に操作できるジョブの状態のこと。引数に指定したジョブ番号のジョブをフォアグラウンドにするがfgコマンド。ジョブ番号を省略すると、カレントジョブ(jobsコマンドの出力で+がついているジョブ)がフォアグラウンドになる。
66
bg…バックグラウンド(background)とは、ユーザーからは見えず、ユーザーが対話的に操作できないジョブの状態のこと。引数に指定したジョブ番号のジョブをバックグラウンドにするのがbgコマンド。ジョブ番号を省略すると、カレントジョブ(jobsコマンドの出力で+がついているジョブ)がバックグラウンドになる。バックグラウンドジョブはjobsコマンドの出力において「&」が末尾に付く。
67
find ~ -type l > result.txt 2> /dev/null & man bash 「&」を末尾に付けたコマンドはバックグラウンドで実行され、フォアグラウンドジョブと同時に実行することができる。バックグラウンドジョブを活用することで、実行に時間がかかるジョブを実行しながら別の作業をシェルで行えるようになる。
68
kill 2907 killコマンドでプロセスを終了するには「kill プロセスID」というように書く。killは「プロセス・ジョブを殺す(終了する)」という意味。プロセスを終了させることができるのは、rootユーザーかプロセスの実効ユーザーのみ。
69
kill %1 killコマンドでジョブを終了するには「kill %ジョブ番号」というように書く。フォアグラウンドジョブを終了するには、Ctrl+cと入力する。
70
Ctrl+c Ctrl+cでフォアグラウンドジョブを終了できる。Ctrl+z(ジョブの停止)と混合しないように注意。Ctrl+cを入力すると、暗黙的にジョブ内のプロセスにINTシグナルが送信される。
71
kill -KILL 2912 または kill -9 2912 killコマンドはプロセスにシグナルを送信するためのコマンドで、引数に「どのシグナルを送るか?」と「どのプロセスに送るか?」を指定する。シグナルとはプロセスに送信される信号(signal)のことで、シグナルを送ることでプロセスを操作できる。9番のKILLシグナルはプロセスを強制終了するシグナルで、異常が発生してTERMシグナルでは終了しなくなってしまったプロセスに対して使用する。
72
エイリアス(alias)とは、コマンドに別名を付ける機能…エイリアスを使えば、常に指定したいオプションを省略したり、オリジナルのコマンドを作成したりできる。
73
alias mv='mv -i' aliasコマンドの引数に「別名='値'」と指定して実行することでエイリアスを設定できる。aliasコマンドでエイリアスを設定した上で「別名」を実行すると、「別名」の代わりに「値」が実行される。
74
alias aliasコマンドを引数なしで実行すると、設定されているエイリアスの一覧を表示できる。ディストリビューションごとにデフォルトでエイリアスがいくつか設定されている。
75
type ls typeコマンドは、コマンドの種類(type)を確認するコマンド。引数に指定したコマンドが、エイリアスかどうかを判別できる。
76
・組み込みコマンド‥ファイルとして用意されておらず、シェルに内蔵されているコマンド。cdコマンド、pwdコマンド、historyコマンドなど ・外部コマンド‥シェルの外部にファイルとして用意されているコマンド。lsコマンド、catコマンド、touchコマンドなど
77
type -a ls typeコマンドの-aオプションで、存在するすべて(all)の種類のコマンドを表示できる。エイリアス、組み込みコマンド、外部コマンドの中から存在するものをすべて表示する。typeコマンドで、外部コマンドのファイルのパスを確認することもできる。
78
優先度は以下の順に高い。 ①エイリアス ②組み込みコマンド ③外部コマンド したがって、外部コマンドであるlsコマンドにエイリアスが設定されていた場合はエイリアスが優先して実行される。
79
/usr/bin/lsまたは/bin/lsまたは\ls エイリアスでなくオリジナルのコマンドを実行する主な方法として以下の3つがある。 ①絶対パスで指定する(外部コマンドの場合) ②「\」を先頭に付ける ③エイリアスを削除する
80
unalias ls unaliasコマンドで、設定されているエイリアスを削除できる。unは「unfair(不公平)」のような言葉で使われ、「否定、反対」という意味。
81
x=23 変数とは、文字列や数値などの値を保存する機能。シェルはシェル変数という変数を持ち、シェル変数を定義するには「変数名=値」とする。「変数名 = 値」のように「=」の前後にスペースを空けるとエラーになるので注意が必要。
82
echo $x シェル変数を参照するには「$変数名」とする。コマンドラインに「$シェル変数名」と入力すると、シェル変数に入っている値に置き換わる。
83
set setコマンドを引数なしで実行すると、定義されているシェル変数を一覧表示できる。シェル変数だけでなく、シェル関数も表示される。
84
set | grep PWD PWDはカレントディレクトリのパス、OLDPWDには1つ前のカレントディレクトリのパスが記載されている。
85
環境変数とは、子プロセスにも変数の値が受け継がれるシェル変数のこと…シェルのプロセスに環境変数を設定しておけば、シェルで実行されるコマンドなどのプログラムすべてで、環境変数の値を利用できる。
86
printenvは「print environment variables(環境変数を出力する)」の略。
87
export x 既存のシェル変数を環境変数としても定義するには「export 既存のシェル変数」というように実行する。
88
export y=20 新しい環境変数を定義するには「export 環境変数名=値」というように実行する。このコマンドを実行すると環境変数としてだけでなく、自動的にシェル変数としても設定される。
89
ロケールとは、ソフトウェアにおける言語や国・地域の設定のこと…ロケールの設定によって言語や日付の書式が変わる。シェルにおいてロケールは環境変数LANGによって設定されている。
90
環境変数PATHに新たなパスを追加して、ファイル名だけで実行できるようになることを、「パスを通す」という。
91
export PATH=$PATH:~ PATHに新しいパスを追加するには、「新しいPATH=今までのPATH:追加するパス」という形で書く。もし「PATH=~」とした場合、デフォルトで設定されていたパスがすべて消えて、~だけになってしまう。
92
~/.bashrcとは、Bashの設定ファイルの1つで、bashプロセスの起動時に読み込まれて実行される…~/.bashrcに設定を記述しておけば、bashプロセスが起動するたびに設定を読み込んで自動的に反映してくれるので、実質的に設定を保存することができる。
93
~/.bashrcに以下のコマンドを記入する alias cp='cp -i' シェルの起動時に読み込まれる設定ファイルに、エイリアスや環境変数の設定などを書くことで、シェルの起動の度に再設定を自動で行うようにする。シェルの設定ファイルとして、bashなら「~/.bashrc」、zshなら「~/.zshrc」などがある。
94
シェルスクリプトとは、複数のコマンドラインを記述した、シェルで実行できるファイルのこと…コマンドラインを複数並べるだけでなく、プログラミング言語のように変数や制御構文を使って複雑な処理を実現することも可能。
95
一度シェルスクリプトを書いてしまえば、以降はそのファイルを実行するだけで同様の操作が可能なので、①操作の再利用性が高まり、②操作のミスも少なくすることができる。主にBashで実行されるので、③ほとんどのlinux環境で実行することができるというメリットもある。
96
shebang(シバン、シェバン)とは、シェルスクリプトなどのファイルの一行目に書かれている、そのファイルをどのシェルで実行するかを指定するための記述のこと…「#!」に続いてシェルスクリプトを実行するシェルの絶対パスを書く。「#!/bin/bash」なら「/bin/bashで二行目以降の記述を実行する」という意味。hash(#)とbang(!)なのでshebang。
97
空のシェルスクリプトは以下の手順で作成する ①touchコマンドやvimコマンドなどで空のテキストファイルを作成する ②1行目に「#!/bin/bash」のようなシバンを記入する ③chmodコマンドで実行権限を追加する
98
source ~/.bashrc sourceコマンドは、引数に指定したファイルを現在のシェルのプロセスで実行するコマンド。主に、~/.bashrcで行った設定を現在のシェルに反映する目的で使われる。sourceコマンドと「.」コマンドは同じ機能を持ち、代替が可能。
99
現在のシェルのエイリアスやシェル変数が、シェルスクリプトのプロセスに影響しない。また、シェルスクリプトの作者がシバンで指定したシェルで実行することができるため、最も互換性に優れている。
100
export PATH=$PATH:~/binまたは export PATH=$PATH:$HOME/bin シェルスクリプトの置き場にパスを通しておけば、絶対パスで指定せずとも実行できるようになる。環境変数HOMEにはホームディレクトリの絶対パスが記載されている。
AWSのしくみと技術がわかる 5
AWSのしくみと技術がわかる 5
サラリーマンサラリーマン · 61問 · 1年前AWSのしくみと技術がわかる 5
AWSのしくみと技術がわかる 5
61問 • 1年前AWSのしくみと技術がわかる 6
AWSのしくみと技術がわかる 6
サラリーマンサラリーマン · 44問 · 1年前AWSのしくみと技術がわかる 6
AWSのしくみと技術がわかる 6
44問 • 1年前AWSのしくみと技術が分かる 7,8
AWSのしくみと技術が分かる 7,8
サラリーマンサラリーマン · 73問 · 1年前AWSのしくみと技術が分かる 7,8
AWSのしくみと技術が分かる 7,8
73問 • 1年前AWS 基礎からのネットワークサーバー 1
AWS 基礎からのネットワークサーバー 1
サラリーマンサラリーマン · 8問 · 1年前AWS 基礎からのネットワークサーバー 1
AWS 基礎からのネットワークサーバー 1
8問 • 1年前AWS 基礎からのネットワークサーバー 2,3,4
AWS 基礎からのネットワークサーバー 2,3,4
サラリーマンサラリーマン · 75問 · 1年前AWS 基礎からのネットワークサーバー 2,3,4
AWS 基礎からのネットワークサーバー 2,3,4
75問 • 1年前AWS基礎からのネットワークandサーバー構築 5,6,7,8
AWS基礎からのネットワークandサーバー構築 5,6,7,8
サラリーマンサラリーマン · 61問 · 1年前AWS基礎からのネットワークandサーバー構築 5,6,7,8
AWS基礎からのネットワークandサーバー構築 5,6,7,8
61問 • 1年前AWS基礎からのネットワークandサーバー構築 9
AWS基礎からのネットワークandサーバー構築 9
サラリーマンサラリーマン · 15問 · 1年前AWS基礎からのネットワークandサーバー構築 9
AWS基礎からのネットワークandサーバー構築 9
15問 • 1年前AWSコンテナ入門1
AWSコンテナ入門1
サラリーマンサラリーマン · 100問 · 1年前AWSコンテナ入門1
AWSコンテナ入門1
100問 • 1年前AWSコンテナ入門1 続き
AWSコンテナ入門1 続き
サラリーマンサラリーマン · 19問 · 1年前AWSコンテナ入門1 続き
AWSコンテナ入門1 続き
19問 • 1年前AWSコンテナ入門2
AWSコンテナ入門2
サラリーマンサラリーマン · 47問 · 1年前AWSコンテナ入門2
AWSコンテナ入門2
47問 • 1年前AWSコンテナ入門3
AWSコンテナ入門3
サラリーマンサラリーマン · 100問 · 1年前AWSコンテナ入門3
AWSコンテナ入門3
100問 • 1年前AWSコンテナ設計・構築3 続き
AWSコンテナ設計・構築3 続き
サラリーマンサラリーマン · 17問 · 1年前AWSコンテナ設計・構築3 続き
AWSコンテナ設計・構築3 続き
17問 • 1年前AWSコンテナ入門4
AWSコンテナ入門4
サラリーマンサラリーマン · 60問 · 1年前AWSコンテナ入門4
AWSコンテナ入門4
60問 • 1年前AWSコンテナ入門5
AWSコンテナ入門5
サラリーマンサラリーマン · 23問 · 1年前AWSコンテナ入門5
AWSコンテナ入門5
23問 • 1年前インフラエンジニアの教科書2 1 改訂
インフラエンジニアの教科書2 1 改訂
サラリーマンサラリーマン · 49問 · 1年前インフラエンジニアの教科書2 1 改訂
インフラエンジニアの教科書2 1 改訂
49問 • 1年前インフラエンジニアの教科書2 2 改訂
インフラエンジニアの教科書2 2 改訂
サラリーマンサラリーマン · 100問 · 1年前インフラエンジニアの教科書2 2 改訂
インフラエンジニアの教科書2 2 改訂
100問 • 1年前インフラエンジニアの教科書2 改訂続き
インフラエンジニアの教科書2 改訂続き
サラリーマンサラリーマン · 75問 · 1年前インフラエンジニアの教科書2 改訂続き
インフラエンジニアの教科書2 改訂続き
75問 • 1年前AWSの全部わかる教科書 1,2,3
AWSの全部わかる教科書 1,2,3
サラリーマンサラリーマン · 71問 · 1年前AWSの全部わかる教科書 1,2,3
AWSの全部わかる教科書 1,2,3
71問 • 1年前AWSの全部わかる教科書 4
AWSの全部わかる教科書 4
サラリーマンサラリーマン · 21問 · 1年前AWSの全部わかる教科書 4
AWSの全部わかる教科書 4
21問 • 1年前ゼロからわかるlinuxコマンド1
ゼロからわかるlinuxコマンド1
サラリーマンサラリーマン · 100問 · 1年前ゼロからわかるlinuxコマンド1
ゼロからわかるlinuxコマンド1
100問 • 1年前問題一覧
1
chmod a+x example.sh chmodコマンドはパーミッションを変更するコマンド。シンボルモードで「a+x」は、「すべてのユーザー(a)に実行権限(x)を追加する(+)」の意味。
2
chmod g-w file chmodは「change mode」の略。シンボルモードで「g-w」は、「所有グループに所属するユーザー(g)から書き込み権限(w)を削除する(-)」の意味。
3
chmod 775 file 数値モードで「775」は以下の意味 ・オーナーは「rwx」(4+2+1) ・所有グループに所属するユーザーは「rwx」(4+2+1) ・その他のユーザは「r-x」(4+0+1)
4
chmod 540 file 数値モードで「540」は以下の意味 ・オーナーは「r-x」(4+0+1) ・所有グループに所属するユーザーは「r--」(4+0+0) ・その他のユーザは「---」(0+0+0)
5
・シンボルモードは、書く手間が大きくなる可能性があるがミスしづらい。局所的な変更に向いている ・数値モードは、書く手間は少ないがミスが起こりやすい。まとめて変更する場合に向く
6
・スーパーユーザーとは、あらゆる操作が可能な最も強い権限を持つユーザーのこと。ユーザー名がrootであることから「rootユーザー(ルートユーザー)」とも呼ばれる ・一般ユーザーとは、通常の作業に利用するユーザーのこと。スーパーユーザーのような強い権限はない
7
普段は一般ユーザーの制限された権限で操作を行い、強い権限が必要な場面だけスーパーユーザーに切り替えて操作を行うようにする。スーパーユーザーのパスワードを知っていても、まずは一般ユーザーでログインする。
8
su - suコマンドは、本来はユーザーを切り替える(substitute user)ためのコマンドだが、主にスーパーユーザーに切り替える用途で使われる。suコマンドの引数に「-」を指定しないと、切り替え前の状態を引き継いでユーザーが切り替わる。切り替え前の状態を引き継ぐと、予期せぬ動作になることもあるので、基本的に「-」を付ける。
9
exitまたはCtrl+d exitは「外に出る」の意味、スーパーユーザーの外に出るということ。catコマンドの引数を省略したときのモードの終了と同じくCtrl+d。「end(終了)」のdと覚えよう。
10
sudo cat /etc/shadow sudoコマンドは、スーパーユーザーとしてコマンドを実行するために使われるコマンド。sudoは「substitute user do(代わりのユーザーが実行)」の略。sudoコマンドもsuコマンドと同様に、本来は別のユーザーとしてコマンドを実行するためのコマンドだが、スーパーユーザーとして実行するために主に使われる。「sudo コマンド」と書くと、現在ログインしているユーザーのパスワードが求められる。
11
・一般ユーザーのパスワードを入力するため、スーパーユーザーのパスワードを複数の人で共有する必要がない ・スーパーユーザーに切り替えないので、気づかないうちに強い権限を使ってしまう恐れがない ・「sudo」と毎回入力するので、スーパーユーザーの権限を使っていることを意識しやすい
12
Vimとは、多くのlinuxディストリビューションにデフォルトでインストールされているテキストエディタ…「Vi improved(改善されたVi)」が名前の由来で、その名のとおりVi(ヴィーアイ)というテキストエディタが改良されたもの。
13
vim newfileまたはvi newfile vimコマンドかViコマンドの引数に既存ファイルを指定するとVimでそのファイルを開くことができる。存在しないファイルの名前を指定すると、その名前のファイルを作成してから開く。
14
:q qは「quit(終了する)」の略。開いたファイルに変更がある場合は、「:q」では終了できない。変更を上書き保存して終了するなら「:wq」、変更を破棄して終了するなら「:q!」を入力する。
15
モードとは、システムが持つ状態のこと…モードを用意することで、同じ操作に複数の意味を持たせることができるようになり、ボタンなどインターフェースの部品の数を減らすことができるが、操作がわかりづらくなる。
16
・ノーマルモード デフォルトのモード…Escでノーマルモードに戻れる。 ・インサートモード Vimで開いているファイルに文字を入力するためのモード…ノーマルモードでaキーやiキーを押すとインサートモードになる。 ・コマンドラインモード Vimのコマンドを利用するためのモード…ノーマルモードで「:q」や「:w」というように、「:」のあとに文字列を入力することでコマンドを利用できる。 ・ビジュアルモード 範囲選択が可能になるモード…ノーマルモードでvキーやVキーを押すとビジュアルモードになり、カーソル移動で範囲を選択できるようになる。
17
: コマンドラインモードは、Vimのコマンドを利用するためのモード。ノーマルモードからコマンドラインモードに切り替えるには「:」を入力し、「:q」「:w」のようなコマンドを入力することでVimを操作できる。
18
:w wは「write(書き込む)」の略。
19
:q! 「!」は強制的に実行する際に使われることも多い記号。qは「quit(終了する)」の略なので、「:q!」で強制終了の意味になる。
20
w newname 上書き保存の「:w」に加えて、「:w ファイル名」というようにファイル名を指定すると、名前をつけて保存することができる。
21
:wq wは「write(書き込む)」の略で、qは「quit(終了する)」の略なので、「:wq」で「上書きして終了する」の意味になる。
22
i iは「insert(挿入する)」の略。iキーを押してインサートモード切り替えると、カーソル位置から文字入力を開始する。
23
Esc ノーマルモードは、Vimのデフォルトのモード。Escを押せばノーマルモードに戻れる。
24
hjklキーが矢印キーの←↓↑→に対応。矢印キーでも移動可能。
25
x 「x(エックス)」が「✖️(バツ)」に似ていて、ブラウザを閉じるときなど「✖️(バツ)」が削除を意味することから覚える。X(Shift+x)キーでカーソル位置の左の文字を削除できる。
26
uでUndo、Ctrl+rでRedo uは「undo(元に戻す)」の略。rは「redo(やり直す)」の略。
27
v vは「Visual(ビジュアル)」の略。行単位で選択できるビジュアルモードにするには「Shift+v」、長方形の形で選択できるビジュアルモードにするには「Ctrl+v」を押す。
28
y yは「yank(ヤンク)」の略。Vimにおいてヤンクとはコピーのこと。
29
p pは「put(プット)」の略。Vimにおいてプットとはペースト(貼り付け)のこと。
30
標準入出力とは、標準入力・標準出力・標準エラー出力の3つの総称‥コマンドは、標準入力からデータを受け取り、実行結果を標準出力に出力し、標準エラー出力にエラーを出力するだけで、標準入出力が何につながっているかは把握していない。
31
標準入出力という仕組みによって、入出力を何にするかといった設定をコマンドのプログラム中に書くのではなく、コマンドの利用者に担当させることができ、入出力を変えたとしてもコマンドのプログラムを書き換えなくてよくなる。
32
リダイレクトとは、標準入出力を切り替える機能のこと…リダイレクトは主に、標準出力と標準エラー出力を端末からファイルに変更する用途で使われる。
33
ls > ls.txt 「>」は標準出力をリダイレクトする記号。標準出力をデフォルトの端末から、ファイルに変更している。
34
echo Hello >> file 「>>」で標準出力をリダイレクトすると、リダイレクト先のファイルの末尾に内容を追加する。
35
find / -name log -type f > logs.txt 2> error.txt 「2>」は標準エラー出力をリダイレクトする記号。標準出力と標準エラー出力をデフォルトの端末から、ファイルに変更している。
36
/dev/nullは、入力に指定すると何もデータを返さず、出力に指定すると書き込まれたデータをすべて破棄する、という性質を持つ特殊なファイル。標準出力と標準エラー出力のどちらかだけを表示するようにして、デバッグなどの問題解決をしやすくするために使われる。
37
find ~ -name '*.sh' -type f 2 > /dev/null 標準エラー出力を/dev/nullにリダイレクトすれば、エラーメッセージを破棄できる。
38
パイプラインとは、コマンドの標準出力に別のコマンドの標準入力をつなぐ機能のこと…パイプ(|)を使ってコマンドをつなぐことで、複雑な機能を実現できる。
39
ls / | cat -n パイプ(|)によって「ls /」の標準出力に「cat -n」の標準入力をつないでいる。
40
フィルタ(コマンド)とは、標準入力からデータを受け取り、処理の結果を標準出力へ出力するプログラムのこと…フィルタを通すたびに、元のテキスト(データ)が加工されていく。それぞれのフィルタはとても小さな機能しか持たないが、パイプでつなげば大きな変更も可能。
41
テキスト処理によって、必要な情報だけを取り出すことで、コマンドの出力を解釈しやすくなる。また、集計作業などの複雑なデータ操作も可能になる。
42
wc file wcコマンドは、入力の行数や単語数(word count)などを出力するコマンド。オプションなしで実行すると、行数、単語数、バイト数などの順番で表示される。
43
ls / | wc -l wcコマンドの-lオプションは「lines」の略で、行数を数える。1行1データのファイルの場合、行数を数えることでデータ件数をカウントできる。
44
sort file sortコマンドは、テキストを行単位でソート(sort)するためのコマンド。オプションを付けないと、アルファベット順(昇順)に並べ替える。
45
ls -l / | sort -nrk2 -rオプションを使うと逆(reverse)順に並べ替える。-kオプションを使うと複数列からソートキー(sort key)を指定できる。-nオプションを使うと数値(number)順に並べ替えることができる。
46
sort file | uniq uniqコマンドは、連続する重複行を取り除いてただ1つの(unique)行にするためのコマンド。連続していない重複行を取り除くには、sortコマンドでソートしてからuniqコマンドを使う。sortコマンドの-uオプションを使ってもよい。
47
sort file | uniq -c | sort -rn -cオプションを使うと、重複した回数をカウント(count)できる。sortコマンドでは、-kオプションの引数が1の場合は省略可能。
48
cat file | tr a-z A-Zまたは tr a-z A-Z < file trコマンドは文字を置換する(translate)するためのコマンド。「tr 置換前の文字 置換後の文字」という書式で記述する。trコマンドだは引数にファイルを指定することができないので、パイプかリダイレクトで対応する。
49
cat file | tr -d User または tr -d User < file trコマンドの-dオプションを使えば、指定した文字の削除ができる。文字の置換の場合と同様に、「User」という文字列を削除するわけではなく、「U」「s」「e」「r」という4つの文字を削除する。
50
grep bash /etc/shells grepコマンドは、指定した文字列を含む行だけを出力するコマンド。
51
ls -l / | grep ^l grepコマンドの検索文字列は正規表現で指定することも可能。正規表現とは、メタ文字と呼ばれる特殊な文字を使って文字列をパターンとして指定できる機能のこと。「^」は行頭を意味するメタ文字。
52
ls /etc | grep -E 'bash|ssh' または ls /etc | egrep 'bash|ssh' … 正規表現には、基本正規表現(basic regular expression)と拡張正規表現(extended regular expression)の2種類がある。拡張(extended)正規表現を使用するには、grepコマンドに-Eオプションを付けるかegrepコマンドを使用する。「|」は「または」を意味する拡張正規表現のメタ文字。
53
ls -l / | awk '{print $2}' awkコマンドはさまざまな機能を持つコマンドで、指定した列だけを出力することもできる。
54
awk -F: '{print $1,$7}' /etc/passwd -Fオプションを使えば、指定した区切り文字で行を分割してから、その中から一部だけを取り出すこともできる。複数の列を取り出したり、取り出す順番を変えることもできる。
55
プロセスとは、メモリに格納されてCPUによって実行されているコマンドなどのプログラムのこと…プロセスは、実行されているプログラムに、プロセスIDなどのいくつかの情報を追加したまとまり。実行されているプログラムにいくつかの情報を追加することによって、プログラムの実行を管理しやすくなる。
56
・USER…実効ユーザー(effectiveuser)。誰の権限で実行されてあるプロセスかを管理している情報 ・PID…プロセスID。プロセスを一意に識別するための値 ・CMD…プロセスの元となったコマンド(プログラム)名
57
ps aux psは「process status」の略。psコマンドでは、BSDオプションと呼ばれるハイフンの付かないオプションが主に使われる。主なBSDオプションは以下の通り。 a…すべてのユーザーのプロセスを表示 u…詳細情報付きでプロセスを表示 x…端末を持たないプロセスを表示
58
デーモン(daemon)とは、端末が設定されておらずバックグラウンドで常時動作しているプロセスのこと…webサーバー内では、httpd(HTTPデーモン)のプロセスがバックグラウンドで常時動作しており、いつリクエストが送られてきても、レスポンスを返せるようにしている。
59
既存のプロセスの複製が上書きされることで、プロセスは新規作成される…扱うプロセスが変わっても、端末などの環境はプロセス間でさほど変わらないため、複製して再利用するほうが環境を共有しやすくて便利。
60
ps f fオプションは「forest(森)」の略。プロセスの親子関係を木構造で視覚的にわかりやすく表示できる。
61
シェルにおいてジョブとは、実行されているコマンドラインのこと…1つのジョブには1つ以上のプロセスが含まれる(コマンドラインは1つ以上のコマンドからなる)。プロセスはカーネルから見た処理(コマンドの実行)の単位であり、ジョブはシェル(ユーザー)から見た処理(コマンドラインの実行)の単位である。
62
Ctrl+z Ctrl+zでフォアグラウンドジョブを停止できる。停止したジョブは、fgコマンドやbgコマンドで再開できる。停止したジョブを修了するにはkillコマンドを使う。Ctrl+zを入力すると、暗黙的にジョブ内のプロセスにTSTPシグナルが送信される。
63
jobs [1]や[2]というジョブ番号付きでジョブが一覧表示される。ジョブ番号はシェル内で一意の番号なので、2つ以上のシェルを同時に使っているならジョブ番号は重複する。
64
jobs -l プロセスIDも含めて表示したい場合は「-l」オプションを用いる。-lオプションは「long」の略で、プロセスIDも含めて長く表示する。
65
fg %1 フォアグラウンド(foreground)とは、ユーザーからの入力を受け付け、対話的に操作できるジョブの状態のこと。引数に指定したジョブ番号のジョブをフォアグラウンドにするがfgコマンド。ジョブ番号を省略すると、カレントジョブ(jobsコマンドの出力で+がついているジョブ)がフォアグラウンドになる。
66
bg…バックグラウンド(background)とは、ユーザーからは見えず、ユーザーが対話的に操作できないジョブの状態のこと。引数に指定したジョブ番号のジョブをバックグラウンドにするのがbgコマンド。ジョブ番号を省略すると、カレントジョブ(jobsコマンドの出力で+がついているジョブ)がバックグラウンドになる。バックグラウンドジョブはjobsコマンドの出力において「&」が末尾に付く。
67
find ~ -type l > result.txt 2> /dev/null & man bash 「&」を末尾に付けたコマンドはバックグラウンドで実行され、フォアグラウンドジョブと同時に実行することができる。バックグラウンドジョブを活用することで、実行に時間がかかるジョブを実行しながら別の作業をシェルで行えるようになる。
68
kill 2907 killコマンドでプロセスを終了するには「kill プロセスID」というように書く。killは「プロセス・ジョブを殺す(終了する)」という意味。プロセスを終了させることができるのは、rootユーザーかプロセスの実効ユーザーのみ。
69
kill %1 killコマンドでジョブを終了するには「kill %ジョブ番号」というように書く。フォアグラウンドジョブを終了するには、Ctrl+cと入力する。
70
Ctrl+c Ctrl+cでフォアグラウンドジョブを終了できる。Ctrl+z(ジョブの停止)と混合しないように注意。Ctrl+cを入力すると、暗黙的にジョブ内のプロセスにINTシグナルが送信される。
71
kill -KILL 2912 または kill -9 2912 killコマンドはプロセスにシグナルを送信するためのコマンドで、引数に「どのシグナルを送るか?」と「どのプロセスに送るか?」を指定する。シグナルとはプロセスに送信される信号(signal)のことで、シグナルを送ることでプロセスを操作できる。9番のKILLシグナルはプロセスを強制終了するシグナルで、異常が発生してTERMシグナルでは終了しなくなってしまったプロセスに対して使用する。
72
エイリアス(alias)とは、コマンドに別名を付ける機能…エイリアスを使えば、常に指定したいオプションを省略したり、オリジナルのコマンドを作成したりできる。
73
alias mv='mv -i' aliasコマンドの引数に「別名='値'」と指定して実行することでエイリアスを設定できる。aliasコマンドでエイリアスを設定した上で「別名」を実行すると、「別名」の代わりに「値」が実行される。
74
alias aliasコマンドを引数なしで実行すると、設定されているエイリアスの一覧を表示できる。ディストリビューションごとにデフォルトでエイリアスがいくつか設定されている。
75
type ls typeコマンドは、コマンドの種類(type)を確認するコマンド。引数に指定したコマンドが、エイリアスかどうかを判別できる。
76
・組み込みコマンド‥ファイルとして用意されておらず、シェルに内蔵されているコマンド。cdコマンド、pwdコマンド、historyコマンドなど ・外部コマンド‥シェルの外部にファイルとして用意されているコマンド。lsコマンド、catコマンド、touchコマンドなど
77
type -a ls typeコマンドの-aオプションで、存在するすべて(all)の種類のコマンドを表示できる。エイリアス、組み込みコマンド、外部コマンドの中から存在するものをすべて表示する。typeコマンドで、外部コマンドのファイルのパスを確認することもできる。
78
優先度は以下の順に高い。 ①エイリアス ②組み込みコマンド ③外部コマンド したがって、外部コマンドであるlsコマンドにエイリアスが設定されていた場合はエイリアスが優先して実行される。
79
/usr/bin/lsまたは/bin/lsまたは\ls エイリアスでなくオリジナルのコマンドを実行する主な方法として以下の3つがある。 ①絶対パスで指定する(外部コマンドの場合) ②「\」を先頭に付ける ③エイリアスを削除する
80
unalias ls unaliasコマンドで、設定されているエイリアスを削除できる。unは「unfair(不公平)」のような言葉で使われ、「否定、反対」という意味。
81
x=23 変数とは、文字列や数値などの値を保存する機能。シェルはシェル変数という変数を持ち、シェル変数を定義するには「変数名=値」とする。「変数名 = 値」のように「=」の前後にスペースを空けるとエラーになるので注意が必要。
82
echo $x シェル変数を参照するには「$変数名」とする。コマンドラインに「$シェル変数名」と入力すると、シェル変数に入っている値に置き換わる。
83
set setコマンドを引数なしで実行すると、定義されているシェル変数を一覧表示できる。シェル変数だけでなく、シェル関数も表示される。
84
set | grep PWD PWDはカレントディレクトリのパス、OLDPWDには1つ前のカレントディレクトリのパスが記載されている。
85
環境変数とは、子プロセスにも変数の値が受け継がれるシェル変数のこと…シェルのプロセスに環境変数を設定しておけば、シェルで実行されるコマンドなどのプログラムすべてで、環境変数の値を利用できる。
86
printenvは「print environment variables(環境変数を出力する)」の略。
87
export x 既存のシェル変数を環境変数としても定義するには「export 既存のシェル変数」というように実行する。
88
export y=20 新しい環境変数を定義するには「export 環境変数名=値」というように実行する。このコマンドを実行すると環境変数としてだけでなく、自動的にシェル変数としても設定される。
89
ロケールとは、ソフトウェアにおける言語や国・地域の設定のこと…ロケールの設定によって言語や日付の書式が変わる。シェルにおいてロケールは環境変数LANGによって設定されている。
90
環境変数PATHに新たなパスを追加して、ファイル名だけで実行できるようになることを、「パスを通す」という。
91
export PATH=$PATH:~ PATHに新しいパスを追加するには、「新しいPATH=今までのPATH:追加するパス」という形で書く。もし「PATH=~」とした場合、デフォルトで設定されていたパスがすべて消えて、~だけになってしまう。
92
~/.bashrcとは、Bashの設定ファイルの1つで、bashプロセスの起動時に読み込まれて実行される…~/.bashrcに設定を記述しておけば、bashプロセスが起動するたびに設定を読み込んで自動的に反映してくれるので、実質的に設定を保存することができる。
93
~/.bashrcに以下のコマンドを記入する alias cp='cp -i' シェルの起動時に読み込まれる設定ファイルに、エイリアスや環境変数の設定などを書くことで、シェルの起動の度に再設定を自動で行うようにする。シェルの設定ファイルとして、bashなら「~/.bashrc」、zshなら「~/.zshrc」などがある。
94
シェルスクリプトとは、複数のコマンドラインを記述した、シェルで実行できるファイルのこと…コマンドラインを複数並べるだけでなく、プログラミング言語のように変数や制御構文を使って複雑な処理を実現することも可能。
95
一度シェルスクリプトを書いてしまえば、以降はそのファイルを実行するだけで同様の操作が可能なので、①操作の再利用性が高まり、②操作のミスも少なくすることができる。主にBashで実行されるので、③ほとんどのlinux環境で実行することができるというメリットもある。
96
shebang(シバン、シェバン)とは、シェルスクリプトなどのファイルの一行目に書かれている、そのファイルをどのシェルで実行するかを指定するための記述のこと…「#!」に続いてシェルスクリプトを実行するシェルの絶対パスを書く。「#!/bin/bash」なら「/bin/bashで二行目以降の記述を実行する」という意味。hash(#)とbang(!)なのでshebang。
97
空のシェルスクリプトは以下の手順で作成する ①touchコマンドやvimコマンドなどで空のテキストファイルを作成する ②1行目に「#!/bin/bash」のようなシバンを記入する ③chmodコマンドで実行権限を追加する
98
source ~/.bashrc sourceコマンドは、引数に指定したファイルを現在のシェルのプロセスで実行するコマンド。主に、~/.bashrcで行った設定を現在のシェルに反映する目的で使われる。sourceコマンドと「.」コマンドは同じ機能を持ち、代替が可能。
99
現在のシェルのエイリアスやシェル変数が、シェルスクリプトのプロセスに影響しない。また、シェルスクリプトの作者がシバンで指定したシェルで実行することができるため、最も互換性に優れている。
100
export PATH=$PATH:~/binまたは export PATH=$PATH:$HOME/bin シェルスクリプトの置き場にパスを通しておけば、絶対パスで指定せずとも実行できるようになる。環境変数HOMEにはホームディレクトリの絶対パスが記載されている。