- シェル
- カーネルのインタフェース
-
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!
- 単語一つ分移動する
w
b
- 行頭へは
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
その他のユーザ、a
ugoすべて -
+
権限を追加、-
禁止する、=
指定した権限と等しくする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 dir1
tar 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
List of users who liked
14