2014/12/19

linux command tips

ssh  sed 正規表現

sed -i "s/\r//"
sed "s/aaa/bbb/i"
    ==->i 大文字と小文字区別しない

grep -i

-i Aとaは区別しない


★disown nonhup

disown---->番号が分かれば、disown 番号
nonhup---->事前でやる


★vi 小文字、大文字変換---------------------
g~~===>小文字、大文字変換

★★linux exec----
シェルから
% ls
とコマンドを実行すると、シェルは以下のことを行う。

    システムコール fork(2) を呼び、子プロセスを生成する。
    子プロセスは ls を exec(2) する。
    親プロセスであるシェルは、ls の実行が完了するのを待つ (wait する)。


一方、
% exec ls
と exec を使うと、シェルは fork(2) せず、いきなり ls コマンドを exec(2) する (シェルの内部コマンド exec(1) を実行すると、内部でシステムコール exec(2) が呼ばれるということ)。シェルのプロセス情報は ls のプロセスの情報で上書きされる。なお、子プロセスは生成されないので、シェルと ls のプロセス ID は同じになる。

実際にやってみるとわかるが、kterm などの端末エミュレータ上でシェルを動かしているときに
% exec ls
とすると一瞬 ls の結果が実行されるが、kterm は終了してしまう
(kterm は通常シェルが終わるのを待っているが、シェルのプロセスは ls のプロセスに上書きされるので、
ls が終了すると kterm も終了してしまう)。

★sudo------
sudo -l
==>内容をリストして、確認できる


★linux set オプション---------
set -m
-->-m -o ジョブ制御を有効にする

UNIX では,二つ以上のコマンドを一つの単位として,一度に実行することができます。 この実行の単位のことをジョブ (job) といいます。
例えば, ls -al /etc | more のような パイプラインはジョブの一例です。
==>


★linux echo------
echo $$
==>pid?

★tar 一部解凍

・中身を確認する
    tar tvf some.tar
   
・一部解凍
    tar xzvf some.tar  aa/bb/cc.dd

★ls
ls -d ==>フォルダだけを表示する
   
★linux ssh log-------------
cat /var/log/secure
grep -c invalid /var/log/secure
grep -c Failed /var/log/secure
grep -c Accepted /var/log/secure

★linux rpm -ql
=->

rpmコマンドに、-qオプションと--scriptsオプションを付けて、preinstallのscriptletを確認すれば良い。
==>ここで、rpmでのインストール時に実行されるスクリプトレットを見てみよう


インストールされたRPMパッケージのディレクトリを調べるには、「-ql」オプションを使用する。
pip install
sudo -E pip install mysql-python --proxy=http://10.25.5.10:8080

ファイル取り出す-------------
***src.rpmをダウンロードする
=>
rpm2cpio | cpio -id

★ifconfig
==>eth0,eth1,eth2

ifconfig eth1

ifconfig eth1 up
ifconfig eth1 down

ifconfig -a


★linux watch---------------
whileループとかを利用しなくてもwatchコマンドを使えば簡単

# 1秒間隔で"ls"コマンドを実行
$ watch -n 1 ls

★linux eval ----------------------------
文字列を変数名にする

bashtest$ cat eval-test2.sh
#!/bin/bash

hoge1="one"
hoge2="two"

for (( i=1; i<3; i++ ))
do
    echo $hoge$i
done

echo

for (( i=1; i<3; i++ ))
do
    eval echo '$hoge'${i}
done


==->



1
2

one
two

eval echo '$hoge'${1}
!!

★★linux command 記録----------------------------------
★script test.log
..
..
ctrl+D
===>ログの記録

★history
HISTIMEFORMAT
==>strftimeの形式で指定する
HISTTIMEFORMAT='%F %T'

ECHO HISTCONTROL;
=>ignoredups,==>直前の同じコマンドを記録しない

unset HISTCONTROL;

HISTIGNORE=ls*:pwd:history*

HISTSIZE

「/etc/profile」に設定しておくことで、すべてのアカウントで常に同じ設定が使えるようにしておきます。
※これでも、各アカウントの「~/.bash_profile」を編集されたら、各種の環境設定ファイルの読み込み順序の関係で、「~/.bash_profile」で上書きされてしまいますが...



★ ssh t オプション 複数
 -t
    強制的に仮想端末を割り当てます。
    これはリモートマシン上で任意の画面ベースのプログラムを実行するとき(たとえば、メニューサービスを実装するときなど)に非常に便利です。
    複数の-t をつけると、たとえssh がローカル側での端末を持っていない場合でも強制的に仮想端末を割り当てます。
   
    通常、Linuxの場合、最初の6つの仮想コンソール (/dev/tty1?/dev/tty6) が
    Unixシェルへのログインプロンプトが表示されたテキストターミナルである
   
    ほとんどのアプリケーションがX Window Systemなどのグラフィカルフレームワーク上で動き、それぞれのプログラムがウィンドウを持っていて、
    テキストモードのアプリケーションは端末エミュレータのウィンドウで動く現在、仮想コンソールの必要性は減っている。
    ユーザの簡易切り替え (fast user switching) や異なるXサーバーでのXアプリのデバッグなど、複数のX Window Systemのログインセッションが同時に並行して動く必要がある場合、
    通常はそれぞれのXセッションは異なる仮想コンソールで動く。GNU Screenは一つのテキストログインの中で、複数のテキストモードのアプリケーションを動かし、それらを切り替えられるようにするプログラムである。
   
    ==>何が見た目、セッション管理上必要な物みたい
   
   
   
★route
routeコマンドは、IPパケットをルーティングするためのルーティングテーブルの内容表示と設定を行う。ルーティングテーブルは、おもにOSが管理するルーティング情報を保管したメモリテーブルだ。テーブルのエントリーが経路を表している。経路はネットワークまたはホストへ到達するために通過する必要のあるゲートウェイを表している。