Open14

Linux勉強

KumaoKumao

ログイン時に最初に起動されるシェルをログインシェルという。

確認方法

$ echo $SHELL
KumaoKumao

シェルの種類

sh

もっとも古くから存在するシェル。Bourneシェル、もしくはBシェルと呼ばれる。
シェルスクリプトを書く際にはshを利用するのが一般的。
ただし対話型操作に向いていないため、ログインシェルとして使われることはほとんどない。

csh

通称Cシェル。
対話型操作が便利になる機能を実装したことで人気があったが、シェルスクリプトを書くには適していいない。
現在では後続のtcshがあるため、ほとんど使われない。

bash

shを基本として機能を拡張したシェル。
短話型操作を行う上で十分な機能を持ち、多くのLinux環境でデフォルトのログインシェルとして使われている。
シェルスクリプトにも向いている。

tcsh

cshの後続。しかしcshと同じくシェルスクリプトには向いていない。
Cシェル系では一般ユーザのプロント記号には$ではなく、%が一般的に使われる。
現在でもログインシェルとして使われているが、徐々に利用者は減少。
Mac OS X ver.10.2まではログインシェルにtcshが採用されていた。

zsh

比較的新しいシェル。
bashやtcshをはじめとした他のシェルの機能を積極的に取り込み、独自の拡張を加えたシェル。
慣れれば効率良く作業できることから人気が高い、
初心者向けではない。

KumaoKumao

カーソル移動

コマンド 内容
ctrl + b(back) 一つ前に移動する
ctrl + f(forward) 一つ後に移動する
ctrl + a 行頭に移動する
ctrl + e 行末にカーソルを移動する
esc + b 後方に単語1つ分移動する
esc + f 前方に単語1つ分移動する
KumaoKumao

文字の削除

コマンド 内容
BackSpace or ctrl + h カーソル位置の後方に1文字削除する
Delete or ctrl + d カーソル位置の1文字を削除する
ctrl + w 後方にスペース区切りで一単語分を削除する

コマンドラインに何も入力していない状態でctrl + dを入力すると、bashはログアウト操作と見做してしまう。ログインしてしまった場合は、再度ログインする。

KumaoKumao

カットとヤンク(ペースト)

コマンド 内容
ctrl + k カーソル位置から行末までを削除する
ctrl + u カーソル位置から行頭までを削除する
ctrl + y 最後に削除した内容を挿入する
KumaoKumao

その他

コマンド 内容
ctrl + s 画面表示をロック
ctrl + q 画面表示のロックを解除する
KumaoKumao

インクリメンタル検索時の操作

コマンド 内容
ctrl + r ひとつ前の検索結果へ移動
enterキー 現在の検索結果をそのまま実行
escキー 現在の検索結果を表示したまま、コマンドラインに戻る
ctrl + g 検索結果を破棄し、プロンプトに戻る
KumaoKumao

Linuxでは何台のディスクがあれど、システム全体で1つのディレクトリツリーしか持たない。
複数ディスクがある場合、Linuxではルートディレクトリディレクトリ配下のどこかに、ディスクをディレクトリとしてくっつける手法をとっている。
= これを「マウント」と呼ぶ。

Dockerでもマウントってあるけど、こういうことか?

KumaoKumao

Linuxのディレクトリ構成はFHS(Filesystem Hierarchy Standard)

KumaoKumao

チルダ展開

ホームディレクトリへの戻り方

$ cd  // 引数なしのcd
$ cd~ // チルダによるディレクトリの指定

コマンドラインの~はシェルによりユーザのホームディレクトリのパスへと自動的に置き換えられる。
これをチルダ展開という。

KumaoKumao

なぜdockerfileでは、apt-get updateを実行するのか

パッケージのリストは、時間の経過とともに変化する可能性があります。新しいパッケージが追加され、古いパッケージが削除されます。したがって、本当に古いキャッシュがあり、 apt-get install を実行しようとすると 、存在しないパッケージをダウンロードしようとする場合があります。

古いパッケージがリポジトリに保持される期間は、リポジトリメンテナ(ディストリビューション)次第です。そのため、dockerのようなものを使用している場合、キャッシュが非常に古くなっている可能性があるため、常に apt-get update を実行する必要があります。

https://tutorialmore.com/questions-163307.htm

KumaoKumao

ファイル名やブランチ名に日付をつけたい時に使うコマンド

date +%Y%m%d-%H%M%S