- シェル
- カーネルのインタフェース
-
dateなら/usr/bin/dateを探す
-
- なぜシェルがあるのか
- シェルだけ変更できる
- OSが違っても操作できる
- エラー時にカーネルの影響を減らす
- カーネルのインタフェース
- 「1つのプログラムには、1つのことをうまくやらせる」
- 「小さなコマンドを組み合わせて複雑な処理ができる」
- ターミナル
- ユーザがコンピュータへ入出力するときに使うハードウェア
- エミュレータが使われている
- 入出力の画面があるだけ
- エミュレータが使われている
- ユーザがコンピュータへ入出力するときに使うハードウェア
- コマンドラインの編集
- Esc 押してから b で単語1つぶん移動
- Ctrl + h で1文字削除
- Ctrl + w で1単語削除
- Ctrl + y で最後に削除した内容を挿入
- トラブル時
- Ctrl + s
- 画面表示のロック
- Ctrl + q
- ロック解除
- Ctrl + l
- 画面を消去する
- Ctrl + s
- コマンド履歴
- Ctrl + p
- 1つ前のコマンド
- Ctrl + n
- 次のコマンド
- Ctrl + p
- インクリメンタルサーチ
- Esc
- 検索結果を残したままコマンドラインに戻る
- Ctrl + g
- 検索結果を破棄
- Esc
- Linux では全てがファイル
- Linux はシステム全体で1つのディレクトリツリーのみ
- Linux のディレクトリ
- FHS(Filesystem Hierarchy Standard)
- /bin
- Linuxシステムの動作に最低限必要なコマンド
- /dev
- デバイスファイルを格納する
- /etc
- 設定ファイル
- /home
- ユーザごとに割り当てられる
- /sbin
- 管理者ユーザ向けコマンド
- shutdownなど
- 管理者ユーザ向けコマンド
- /tmp
- 一時ファイル
- /usr
- 各種アプリと付属ファイル
- 下に bin,sbin,etc などを持つ
- 各種アプリと付属ファイル
- /var
- 変化するデータを置く
- ログや電子メール
- 変化するデータを置く
- /bin
- FHS(Filesystem Hierarchy Standard)
- コマンド
- touch
- 既存ファイルがあっても上書きされない
- cat
- 引数なし
- キーボードからの入力を待つ
- 引数なし
- less
- ファイルを1画面で見る
-
/etc,?etcで検索できる-
nで次の検索結果へ
-
-
- ファイルを1画面で見る
-
mv file1 file2でファイル名変更する -
ln -s file1 file2でシンボリックリンクをつける- 活用法
- 深すぎるファイルにつける
- バージョンに
latestのリンクをつける
- 活用法
- touch
- 探す
-
find . -name file-1.txt -print- カレントから下りながら探してパスを表示する
-
-iname- 大文字小文字区別しない
- ワイルドカードを使うときは
''を使う- パス名展開されてしまうから
-
-type dでディレクトリに絞りこむ-
fは通常ファイル -
lはシンボリックリンク
-
-
- カレントから下りながら探してパスを表示する
-
locate- 作成してしばらくたったファイルの検索
-
locate -b pythonで名前を含むファイルを検索できる- ディレクトリは表示されない
- 複数入れるとOR検索になる
- AND検索は
-Aを入れる
-
- 作成してしばらくたったファイルの検索
-
- Vim
- コマンド入力ができない時
- Escを何度か押す
- 保存せず終了
:q!
- 単語一つ分移動する
wb
- 行頭へは
0 - 行末へは
$ -
ggで冒頭 -
Gで末尾-
oで次の行から編集する
-
- カットやコピーペースト
- カットは
dと範囲を指定 - ヤンクは
yと範囲を指定 -
pでプット
- カットは
- アンドゥは
u - リドゥは
Ctrl + r
- コマンド入力ができない時
- bash
- エイリアス
alias <名前>='<コマンド>'
- シェル変数
-
var1='test variable'-
$var1で参照できる - スペースは入れない
-
-
- 環境変数の設定
-
export LESS='--no-init'- 以降lessコマンドで
--no-initが自動で付くようになる
- 以降lessコマンドで
-
- カスタマイズ
-
~/.bashrcに書く -
source ~/.bashrcで即時反映
-
- コメントは
#
- エイリアス
- ファイルのパーミッション
-
-は通常ファイル、dはディレクトリ、lはシンボリックリンク -
rwxr-xr-xなどの9文字はオーナー、グループ、その他のユーザのパーミッション - chmod
- シンボルモード
-
chmod u+w file.txt-
uはオーナー、gグループ、oその他のユーザ、augoすべて -
+権限を追加、-禁止する、=指定した権限と等しくするchmod go=r file.txt
-
-
- 数値モード
-
4は読み取り(r)、2は書き込み(w)、1は実行(x)-
chmod 755 file.txt- 各行はオーナー、グループ、その他の足し算になっている
-
-
- シンボルモード
-
- 環境変数を引き継がないでスーパーユーザになる
su -
-
ps aus- すべての実行プロセス確認する
-
kill <PID>で止める- 終了できるのは実行ユーザのみ
- 本当はシグナルを送信するコマンド
- 途中で止めたい時
- Ctr + z
- リダイレクトとは
- 標準入出力先を変更する機能
- 入力リダイレクト
cat < /etc/crontab
- 出力リダイレクト
-
ls -l / > list.txt- 標準出力先が
list.txtになる
- 標準出力先が
-
- 入力リダイレクト
-
>>と書くことで追記になる- 上書きしない
- 出力を捨てたいとき
cat /etc/crontab > /dev/null-
ls / /xxxx 2> /dev/null- エラー
2は捨てて通常出力だけを見たいとき
- エラー
- 標準もエラーも捨てる
ls / /xxxx > /dev/null 2>&1
- 標準入出力先を変更する機能
- ファイルの頭だけ表示する
head /etc/crontab
- 出現回数ランキング作成する
sort file1 | uniq -c | sort -rn
- 正規表現
-
grep 'mail[1-4] example.txt'- 1-4 にマッチ
-
[^13]は1か3以外 -
grep '^B[ea]*r$' drink.txtなどもできる
-
.は任意の1文字 -
'^net'は頭がnet -
'net$'は終わりがnet -
'Be*r'は0回以上の繰り返し
-
- 拡張正規表現
grep -E 'Be+r' drink.txt- 郵便番号の3桁-4桁
[0-9]{3}-[0-9]{4}
- ウォッカかワインか
grep -E 'My (Vodka|Wine)' drink.txt
- sed
- 削除する
sed 1d drink2.txt
- 置換する
sed 's/Beer/Whisky/g' drink2.txt
- 削除する
- awk
- ls の出力から5列目と9列目を取り出す
ls -l /usr/bin/ | awk '{print $5,$9}'- 最後の2列を表示する
ls -l /usr/bin/ | awk '{print $(NF-1),$NF}'
- 9列目の頭がcpを表示する
ls -l /usr/bin/ | awk '$9~ /^cp/ {print $5,$9}'
- csvの最後の列の総和を出す
-
wk -F, '{sum += $NF} END{print sum}' score.csv- 行数
$NRで割って平均値を出すwk -F, '{sum += $NF} END{print sum}' score.csv
- 行数
-
- ls の出力から5列目と9列目を取り出す
- シェルスクリプト
-
#!シバンを頭に書く-
sourceで実行でも良い-
. ./homesize-noshebang.shのドットコマンドでも同じ意味 - aliasの設定の違いなどで想定しない動作をしたりする
- ファイル名指定で実行の方がいい
-
source ./homesize.shのように相対パスか絶対パスで書く- パス指定がないとサーチパス内からも探してしまうから
-
-
-
;で繋げられて、\で改行できる -
$で変数の値を取得するイメージ -
=前後にはスペースを入れない - 使えるのはアルファベットと数値と
_のみ -
""は変数展開できる -
./parameters.sh aaa bbb ccc-
$1, $2, $3に引数が入る
-
-
$#で引数の個数を取れる -
$@で全ての引数を受け取る -
[はコマンド-
if [ "$1" = "bin" ]; thenでは"$1や=が引数となる-
[は引数の条件式を判定するコマンド- 正であれば0を、そうでなければ0以外を終了ステータスとして返す
- 終了ステータスは
$?でわかる
- 終了ステータスは
-
test "$1" = "bin"; thenでもほぼ同じ -
&&は終了ステータスが0で正常な時、次のコマンドを実行する[ -f file.txt ] && cat file.txt
- 正であれば0を、そうでなければ0以外を終了ステータスとして返す
-
-
-
$((i + 2))で計算できる- bashの算術式展開
-
- アーカイブ
- アーカイブする
-
tar cf dir1.tar dir1- cfはcreate file
- ファイル属性もそのままアーカイブされる
- バックアップにはcpよりもいい
- rootで実行する
- バックアップにはcpよりもいい
-
- アーカイブできたら内容確認する
tar tf dir1.tar
- 展開する
tar xf dir1.tar
- アーカイブする
- 圧縮
- 圧縮する
gzip ps.txt
- 展開する
gzip -d ps.txt.gz
- 圧縮する
-
tarとgzipを一緒に使うtar czf dir1.tar.gz dir1tar xzf dir1.tar.gz
- SSH先のディレクトリdir1を
tar+gzファイルとして転送するssh osumi@serverB 'tar czf - dir1' | tar xzf -
-
bzipはより圧縮率が高い-
xzはさらに高い- Linuxカーネルなど
-
- git
-
git diffはワークツリーとインデックスの差分 -
git diff --cachedはインデックスとリポジトリの差分 -
git diff HEADはワークツリーとリポジトリの差分
-
More than 3 years have passed since last update.
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme