リダイレクトやパイプラインにエラーを渡す

標準入力元・標準出力先に何らかのファイルを指定するのがリダイレクト

  1. 標準出力先をfileにする > file
  2. 標準エラー出力先をfileにする 2> file
  3. 標準出力・標準エラー出力先をfileにする > file 2>&1

標準出力を別のコマンドに渡すのがパイプライン

1.標準エラー出力もパイプラインに渡す $ ls xxxx 2>&1 | less

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

linuxのターミナルの言語環境を変更する

日本語環境だと文字化けしてしまう場合などに。

  • 現在のロケールを調べる
    $ echo $LANG

  • システムがサポートしているロケールを調べる
    $ locale -a

  • 言語を切り替える
    $ LANG=en_US.uft8(スペースを挟まない)

findコマンドでファイルを探す

linuxのfindコマンドの使い方

基本
$ find <検索の起点ディレクトリ> <オプション> <条件指定>

具体例

$ find . -name '*.txt'
意味: カレントディレクトリ以下に存在している、拡張子が.txtのファイルをすべて表示させる

オプション
-iname で大文字小文字を区別しないで検索する
-type f,d,l でそれぞれファイル・ディレクトリ・シンボリックリンクを検索する


$ find . -type d
意味: カレントディレクトリ以下にあるディレクトリを列挙

-a(and) -o(or) オプションで複数の条件指定

$find . -type d -a -name 'local'
意味: カレントディレクトリ以下にある、名前にlocalが含まれるディレクトリを検索

Pythonのlambda関数

Pythonのlambda関数(無名関数)は、一文で表現される、名前のない関数のこと。

具体例
例えば引数の和を取って返す関数を普通に書くと、

def add(a,b):
    return a+b

これが、lambda関数を用いると

lambda a,b:a+b

となる。
コロンの左側が引数、右側が戻り値。

わざわざ名前をつけて管理するまでもないちょっとした処理をさせるのに便利。