grepの拡張正規表現
grepコマンドの-Eオプションを利用することで、拡張正規表現を用いることが出来る
- 1回以上の繰り返し
‘+'で直前の文字の一回以上の繰り返しを意味する
例grep -E 'Be+r'
= Ber,Beer,Beeeer …
- 0回または1回の繰り返し
‘?'は直前の文字の0または1回の繰り返しを意味する
例grep -E 'Be?r'
= Br or Ber
- 特定回数の繰り返し
{m,n}でm回以上n回以下の繰り返しを意味する
{n}はちょうどn回の繰り返しを意味する
{n,}はn回以上の繰り返しを意味する
例:10桁の数字を抽出
grep -E '[0-9]{10}'
- 正規表現をグループ化する
()で囲うとその単語をグループ化出来る
(abc|def)でabc または defにマッチする文字列を検索できる
grepやvimで使える正規表現
$ grep [オプション] <検索パタン> <ファイル名>
で、ファイルからパタンに一致する内容がある行を抽出
例: /etc ディレクトリから'cron'に一致する内容を抽出
$ ls /etc | grep cron anacrontab cron.d cron.daily cron.hourly cron.monthly crontab cron.weekly
正規表現まとめ
- 任意の一文字にマッチ
‘.’(ドット) で任意の一文字にマッチングする
‘.'自体を検索したい場合は’\.‘を用いる
例:/etc 内にある ’.conf'ファイルを検索
$ ls /etc | grep '\.conf' adduser.conf apg.conf appstream.conf brltty.conf ca-certificates.conf debconf.conf
- 特定の一文字にマッチ
[]で囲った中に文字を入れると、その中いずれか一文字に一致するものを検索する。
例えば kato と sato を同時に検索したければ
[ks]ato になる。
[a-z]でa,b,c…zのいずれか一文字
[^ ]で [ ] の中に含まれない一文字
- 行頭・行末でマッチ
‘^'で行頭、’$‘で行末にあるパタンを検索できる
例:ホームディレクトリにある隠しファイル(行頭が’.‘)を抽出
$ ls ~ | grep '^\.' . .. .adobe .bash_history .bash_logout .bashrc .cache
grep ^$
で空行を抽出
- 繰り返しをマッチ
‘*'で前の文字の任意回の繰り返しを意味する
例:Be*r = Ber,Beer,Beeeeer,Beeeeeeeeeeeeeeeer…
.*
はあらゆる文字列にマッチする
便利なフィルタコマンド覚え書き
- head
標準入力の先頭数行を表示
-n <数字> : 指定した行数を出力
- tail
標準入力の末尾数行を出力
-n <数字> : 指定した行数を出力
-f <ファイル名> : 指定したファイルにリダイレクトで追記(>>)があるとリアルタイムで表示
- grep
指定した検索パタンに一致する行を出力
-n:行番号付きで結果を出力
-i:大文字・小文字を区別せずに検索
-v:一致しなかった行を出力
-o:一致した部分のみを表示
- sort
入力をアルファベット順に並び替える
-n:数字順に並び替える
-k <数字>:<数字>番目のフィールドをソートに用いる
-r:逆順にソート
- tac
入力を逆順に出力する
- wc
行数・単語数・バイト数を出力する
-l:行数のみ出力
-w:単語数のみ出力
-c:バイト数のみ出力
- uniq
入力から、隣り合った重複する行を取り除いて出力
-c:重複がいくつあるか数えて表示
- cut -d <区切り文字> -f <フィールド番号> <ファイル名>
<区切り文字>で指定した文字で入力を分割し、<フィールド番号>で指定したフィールドの内容だけを出力
例 環境変数 $PATH のうち10個目を表示
$ echo $PATH | cut -d : -f 10 /usr/local/games
- tr<文字(置換元)> <文字(置換先)>
入力の特定の文字を置き換える
例 入力をすべて大文字にする$ tr a-z A-Z
例2 アルファベットをすべて伏せ字にする
$ ls | tr A-z '*' ******* ********* ********* ******* ********.******* ******
-d <文字> : 指定した文字を削除
- diff <比較元> <比較先>
ファイルの差分を表示
差分がない場合は何も表示しない
linux ジョブとプロセス覚え書き
用語集
- プロセス メモリ上で実行状態にあるプログラムで、カーネルから見た処理の単位
- デーモン バックグラウンドで実行される、ターミナルに接続されていないプロセス
- ジョブ シェルから見た処理の単位
プロセスの確認
$ ps
コマンドでプロセスの一覧を確認
オプション
x 現在ユーザが実行しているすべてのプロセスを表示
a すべてのユーザのプロセスを表示
f プロセスの親子関係を表示
u 詳細情報を表示
ハイフンをつけると意味が変わるらしい
例
$ ps xf PID TTY STAT TIME COMMAND 1393 tty1 S+ 0:00 -bash 1684 ? Ss 0:00 /sbin/upstart --user 1752 ? S 0:00 \_ upstart-udev-bridge --daemon --user 1762 ? Ss 0:01 \_ dbus-daemon --fork --session --address=unix:abstr 1774 ? Ss 0:00 \_ /usr/lib/x86_64-linux-gnu/hud/window-stack-bridge 1796 ? S 0:05 \_ /usr/bin/fcitx ・ ・ ・
ジョブの操作
$ jobs
コマンドで現在のジョブ一覧やジョブ番号を確認
ctrl + z
で現在操作中のジョブを中断
$ fg %<ジョブ番号>
ジョブをフォアグラウンド(操作可能な状態)に戻す
$ bg %<ジョブ番号>
ジョブをバックグラウンド(操作はできないが処理は続行中)にする
$ <コマンド> &
コマンドの末尾に&をつけると最初からバックグラウンドで実行する
ジョブ・プロセスの終了
$ kill %<ジョブ番号>
ジョブを終了させる
$ kill <プロセスID>
プロセスを終了させる
tmuxキーバインド
ctrl+b -> c : 新しいウィンドウを作成
ctrl+b -> n : 次のウィンドウへ移動
ctrl+b -> p : 前のウィンドウへ移動
ctrl+b -> 数 : 指定した番号のウィンドウへ移動
ctrl+b -> & : ウィンドウを閉じる
ctrl+b -> % : ウィンドウを左右分割
ctrl+b -> “ : ウィンドウを上下分割
ctrl+b -> o : 分割されたウィンドウ中を移動 矢印キーでも可
ctrl+b -> [ : 矢印キーでスクロール (qで戻る)
linuxのファイルパーミッション覚え書き
linuxが提供するファイルパーミッション機能によって、ファイルの読み書きや実行、ディレクトリへの書き込みや削除をコントロール出来る。
1.ファイルのオーナーとグループ、パーミッションを確認
コマンド$ ls -l
で、ファイルのオーナー(所有者)と、ファイルが所属しているグループ、パーミッションを確認することが出来る
例
$ ls -l /etc/wgetrc -rw-r--r-- 1 root root ...
意味: ファイルのオーナー=root ファイルのグループ=root で、
オーナーはファイルの読み込み・書き込みができる
ファイルのグループと同じグループに所属するユーザはファイルの読み込みだけが出来る
その他のユーザもファイルの読み込みだけができる
自分が所属しているグループは$ groups
コマンドで確認する
rwx rwx rwx オーナー グループ その他のユーザ
2.ディレクトリのパーミッション
コマンド $ls -ld
で、ディレクトリのパーミッションを確認することが出来る
例
$ ls -ld ~ drwxr-xr-x 30 user-name user-name ...
ディレクトリの場合は、r,w,xの意味が少し異なる。
r: そのディレクトリに含まれるファイル一覧を取得
w: そのディレクトリの下にファイル・ディレクトリを新規作成 または削除
x: そのディレクトリをカレントディレクトリにする
3.chmodコマンドでパーミッションの変更
r(読み込み):4
w(書き込み):2
x(実行):1
とし、その合計値を用いてファイルパーミッションを変更できる。
例:あるファイルについて、オーナー・グループ・その他のすべてのユーザに読み込みと書き込みを許可したい場合は
sudo chmod 666 file-name
と実行すれば良い
例2:オーナーのみ読み込み・書き込み・実行の許可を出したい場合
sudo chomod 700 file-name