Linux勉強
ログイン時に最初に起動されるシェルをログインシェルという。
確認方法
$ echo $SHELL
シェルの種類
sh
もっとも古くから存在するシェル。Bourneシェル、もしくはBシェルと呼ばれる。
シェルスクリプトを書く際にはshを利用するのが一般的。
ただし対話型操作に向いていないため、ログインシェルとして使われることはほとんどない。
csh
通称Cシェル。
対話型操作が便利になる機能を実装したことで人気があったが、シェルスクリプトを書くには適していいない。
現在では後続のtcshがあるため、ほとんど使われない。
bash
shを基本として機能を拡張したシェル。
短話型操作を行う上で十分な機能を持ち、多くのLinux環境でデフォルトのログインシェルとして使われている。
シェルスクリプトにも向いている。
tcsh
cshの後続。しかしcshと同じくシェルスクリプトには向いていない。
Cシェル系では一般ユーザのプロント記号には$ではなく、%が一般的に使われる。
現在でもログインシェルとして使われているが、徐々に利用者は減少。
Mac OS X ver.10.2まではログインシェルにtcshが採用されていた。
zsh
比較的新しいシェル。
bashやtcshをはじめとした他のシェルの機能を積極的に取り込み、独自の拡張を加えたシェル。
慣れれば効率良く作業できることから人気が高い、
初心者向けではない。
カーソル移動
コマンド | 内容 |
---|---|
ctrl + b(back) | 一つ前に移動する |
ctrl + f(forward) | 一つ後に移動する |
ctrl + a | 行頭に移動する |
ctrl + e | 行末にカーソルを移動する |
esc + b | 後方に単語1つ分移動する |
esc + f | 前方に単語1つ分移動する |
文字の削除
コマンド | 内容 |
---|---|
BackSpace or ctrl + h | カーソル位置の後方に1文字削除する |
Delete or ctrl + d | カーソル位置の1文字を削除する |
ctrl + w | 後方にスペース区切りで一単語分を削除する |
コマンドラインに何も入力していない状態でctrl + dを入力すると、bashはログアウト操作と見做してしまう。ログインしてしまった場合は、再度ログインする。
カットとヤンク(ペースト)
コマンド | 内容 |
---|---|
ctrl + k | カーソル位置から行末までを削除する |
ctrl + u | カーソル位置から行頭までを削除する |
ctrl + y | 最後に削除した内容を挿入する |
その他
コマンド | 内容 |
---|---|
ctrl + s | 画面表示をロック |
ctrl + q | 画面表示のロックを解除する |
インクリメンタル検索時の操作
コマンド | 内容 |
---|---|
ctrl + r | ひとつ前の検索結果へ移動 |
enterキー | 現在の検索結果をそのまま実行 |
escキー | 現在の検索結果を表示したまま、コマンドラインに戻る |
ctrl + g | 検索結果を破棄し、プロンプトに戻る |
Linuxでは何台のディスクがあれど、システム全体で1つのディレクトリツリーしか持たない。
複数ディスクがある場合、Linuxではルートディレクトリディレクトリ配下のどこかに、ディスクをディレクトリとしてくっつける手法をとっている。
= これを「マウント」と呼ぶ。
Dockerでもマウントってあるけど、こういうことか?
Linuxのディレクトリ構成はFHS(Filesystem Hierarchy Standard)
チルダ展開
ホームディレクトリへの戻り方
$ cd // 引数なしのcd
$ cd~ // チルダによるディレクトリの指定
コマンドラインの~はシェルによりユーザのホームディレクトリのパスへと自動的に置き換えられる。
これをチルダ展開という。
gzip/gunzip
gzipはファイルを圧縮するコマンド、gunzipは伸張する(圧縮ファイルを元に戻す)コマンドです。複数のファイルをまとめるという“アーカイブ機能”はなく、1つ1つのファイルに対して機能します。
なぜdockerfileでは、apt-get updateを実行するのか
パッケージのリストは、時間の経過とともに変化する可能性があります。新しいパッケージが追加され、古いパッケージが削除されます。したがって、本当に古いキャッシュがあり、 apt-get install を実行しようとすると 、存在しないパッケージをダウンロードしようとする場合があります。
古いパッケージがリポジトリに保持される期間は、リポジトリメンテナ(ディストリビューション)次第です。そのため、dockerのようなものを使用している場合、キャッシュが非常に古くなっている可能性があるため、常に apt-get update を実行する必要があります。
ufw
ubuntu
ファイル名やブランチ名に日付をつけたい時に使うコマンド
date +%Y%m%d-%H%M%S