1. よく使うor注目コマンド
・rm -rf directory :ディレクトリごと削除
・nano :使い勝手の良いエディタ
・at
・5分後にファイル実行
at -f filename now + 5minute
・8時にファイル実行
at -f filename 08:00
・コマンドを手動入力して5分後にコマンド実行
at now + 5minute
at>コマンドを入力 → 終わるにはctrl+D
・キューのジョブ確認はatq
・キューのジョブを消す
atrm 番号(atqで確認可能)
・簡易ファイル送受信(netcast)
送信側PC:nc -l 1234 < file
受信側PC:nc ip 12345 > file
2. 変換
■ファイル名一括変換
rename "s/置換前文字列/置換後文字列/" 対象ファイル
■FLV to MP3
ffmpeg -i s.flv -acodec copy s.mp3:flv変換
→mp4の場合は -acodec copyを指定しない
■URLエンコーディング
echo 'url encode' | tr % = | nkf -mQ
■文字化け対策
env "LANG=en_US.UTF-8" 実行するコマンド
■imgファイルをvirtualbox形式に変換
VBoxManage convertfromraw -format VDI [filename].img [filename].vdi
■pdf jpeg変換
gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=jpeg -r600 -sOutputFile=./image%04d.jpeg
■文字コード変換
・iconvコマンド
・find+xargs+nkf → すべてinstallされてる前提
find -type f | xargs -n 10 nkf -w --overwrite
→カレントディレクトリ下のファイルの文字コードをUTF8に
→-typeの指定の箇所を、find -name '*.txt'、とすれば、テキストファイルに限定
3. 文字列・ファイル関連
■find関連
・find . -type f -exec コマンド '{}' \;
→ピリオドはカレントディレクトリから検索の意味
→type fは通常ファイルを指し、ディレクトリ等含まず
→検索して、コマンドを実行。{}がfindの結果
・find . -type f -print0 | xargs -0 コマンド
→同じく、検索して実行
・kcc -c ファイル名→文字コード調査
・cutコマンド:指定ファイル指定行指定文字の取り出し
cut -c 1-10 ファイル名 (-cは文字単位というオプション)
・ftpで複数のhtmlファイルをUPするbashスクリプト
USER="ユーザー名"
PASS="パスワード"
SERVER="FTPサーバー"
#-i 複数のファイル転送時に対話型に動作しない / -n 初期接続時に自動ログインしない
ftp -i -n << EOF
open $SERVER
user $USER $PASS
lcd ローカルのカレントディレクトリ
cd リモートのカレントディレクトリ
ascii
mput *.html
bye
EOF
■文字列検索関係
→別記
4. マルチメディア
■plusaudioリスタート
pluseaudio -k
5. グラフィック
■スクリーンキャプチャ
・printscreenキーによるのが一番簡単
・importコマンド
e.g.指定範囲をキャプチャ
import -frame filename.tif
e.g.10秒後に全画面キャプチャ
sleep 10;import -window root filename.tif
・xwdコマンド
xwd -root > filename.xwd
→パイプを通して他のソフトの連携が図りやすいかも
6. 高度なもの
■ダウンロード関連
・curl(apt-getする):高機能なwget的なもの
・エンコーディング:echo 壁紙 | nkf -wMQ | tr = %
・Web公開されているAPIの(Ajax的な)使い方
http://ajax.googleapis.com/ajax/services/search/images?q=%E5%A3%81%E7%B4%99&v=1.0
■expect
・実行されているけれども、結果が表示されずにエラーが出るとエラー箇所を特定しにくい
・#はコメント
・プロンプトは、$や#でなく、]をexpectすると良い
・sshのパスワード要求はspawnでなくsend
・send ${変数}\nのように書く
・スペースの含むものは send fdsa\ \fdsalと""無しに書ける
・
expect -c "
・・・処理・・・
expect eof
"
としてシェルスクリプトの中に書ける
・例
#!/bin/bash
SOURCE_FILE="/home/toshi/a.txt"
KINDLE_IP="192.168.11.6"
KINDLE_PASS="kindlepassword"
expect -c "
spawn scp ${SOURCE_FILE} root@${KINDLE_IP}:/mnt/us/documents
expect "password:"
send ${KINDLE_PASS}\n
send "exit"\n
spawn ssh root@${KINDLE_IP}
expect "password:"
send ${KINDLE_PASS}\n
expect "]"
send dbus-send\ \--system\ \/default\ \com.lab126.powerd.resuming\ \int32:1\n
expect "]"
send "exit"\n
expect eof
"
■cron
・service cron status
→起動しているかどうか
■python
python -c $'...\n.....\n' param
→pythonのスクリプトを1行実行
■コアダンプ
・ulimit -c 10000000 コアダンプの出力設定
gdb 実行ファイル コアダンプファイル として、
gdb where
7. 情報表示
■ハードウェア情報一覧
・sudo lshw -short
・GUI用にlshw-gtkもある
■稼働中のプロセスを1行ずつ表示
ps ax | less
→スペースで頁めくり。qで終了
■プロセスツリー表示
pstree
■デバイス関連
lsusb -v:接続されているUSBデバイスの情報
lsmod:ロードされているデバイスのモジュール(ドライバ)を表示
dmesgと/var/log/messages
→起動時のエラーチェック
■ドライバ関係のコマンド
dmesg
iwconfig
lsusb
8. 基礎コマンド
su - :rootに
gksudo :GUIのsudo
ls :ファイルリスト表示
-l:パーミッションも
pwd :カレントディレクトリ表示
-a:隠しファイルも
chown :所有者変更
:chown 変更後所有者 ファイル名
e.g.所有者をred、グループをadminにしたいなら「chown red:admin public」とする
cp :コピーもと→先(ディレクトリがあれば、ディレクトリへ移動) :所有者変わる
-r:ディレクトリの移動
-p:所有者をコピーしたユーザーに「しない」
mv :ファイル移動、名前変更(移動元File→移動先ディレクトリ) :所有者変わらず
:mv Filename Filenameで、リネーム
rm :削除
-r:ディレクトリ削除
-f:削除確認なし
mkdir:ディレクトリ作成 :所有者は作成ユーザー
chmod :パーミッション変更
e.g. chmod 777 /var/samba/public
=rwxrwxrwx
①
r 4 読み出しの許可
w 2 書き込みの許可
x 1 実行の許可
- 0 許可しない
の和
②それを、
所有者 グループ ほかのユーザー、の順で並べる
ルートのパス忘れた
→シングル・ユーザー・モードで起動(e.g.最初の画面でESC)
、passwdコマンドで変更
・マニアックコマンド
uname :OS情報表示
-a :マシンタイプも
cat /proc/cpuinfo :CPU
cat /proc/meminfo :メモリ情報
実行中のプロセス確認
1. ps aux →PID指定してkill出来る
2. pstree -a
3. top
df:HDD要領
netstat -ea ネットワーク接続状況
whois ドメイン名
dig @(問い合わせ先ネームサーバ) (確認したいドメイン) any
・ユーザー追加
useradd
passwd
なお、loginさせないためには、useradd -s /sbin/nologin ××
・メール送信テスト等
メール送信
1. telnet hogehoge.com 25
2. mail from: hogehoge@fugafuga
3. rcpt to: hogehoge@fugafuga
4. data
5. Subject: メールタイトル
6. From: hogehoge@fugafuga
7. To: hogehoge@fugafuga
8. body
9. 本文本文
10. .
メール受信
1. telnet host 25
2. ehlo host
3. auth plain (base64パスワード文字列)
4. mail from: hogehoge@fugafuga
5. rcpt to: hogehoge@fugafuga
6. data
7. Subject: メールタイトル
8. From: hogehoge@fugafuga
9. To: hogehoge@fugafuga
10. body
11. 本文本文
12. .
HTTP
telnet hogehoge.com 80
GET /index.html HTTP/1.1
Host: hogehoge.com
User-Agent: telnetdayo
# (Enterもう一回)
9. bash文法
9.1. はじめに
shファイルの先頭に、
#!/bin/bash
と記載して実行権限を付ければ、bashファイルとして実行される。
9.2. 変数
#■変数の扱い方と表示 - スペース厳禁/letは文字列の計算式を計算
val1=こんにちは
val2=5
echo ${val1}
let val2="${val2}+1"
echo ${val2}
val_mo1=hello
val_mo2=world
val_mo3=${val_mo1}${val_mo2}
echo ${val_mo3}
9.3. コマンドライン引数
#■引数$1〜、引数の数$#、スクリプトのPID$$
#$1 = "tmp"は引数が無いとエラーになる。∵型がよくわからないものと比較することに
# → "$1"とするとOK
echo ${1}は引数。${#}は引数の数。
9.4. 配列
val_a=(aa bb cc)
echo 要素:${val_a[0]}\配列${val_a}
9.5. コマンド実行結果の引用
#■実行結果を返す/$()は``と違い、入れ子にできる
echo lsの実行結果は、$(ls)です。
9.6. 条件分岐
#■if文 [はコマンドなので、[]内はスペース入れる
# -eq : = / -ne(nagation) : !=
# -lt(less than) : < / -le(less equal) : <=
# -gt > / -ge >=
val3=445
val4=445
if [ ${val3} -eq ${val4} ];then
echo val3=val4
elif [ ${val3} -gt ${val4} ];then
echo "val3 > val4"
else
echo "val3 < val4"
fi
#■文字列比較
# -n:文字列が0より大きい/-z:文字列がゼロ/=や!=はそのまま
if [ -z $1 ];then
echo 文字列比較:引数はありません。
fi
9.7. 反復
#■ループ
val_it=0
while [ $val_it -lt 5 ];do
echo ${val_it}
let val_it="${val_it}+1"
done
#■配列とforループ
val_ita=""
val_a=(da ffdsa fda sf dsa)
for val_ita in ${val_a[@]};do
echo ${val_ita}
done
echo ${val_a[@]}
9.8. その他小技
#■${0}はコマンド名、##*/で「先頭から最長一致で/まで」
${0##*/}
10. その他
・graph-easy
→グラフを描くコマンドだが、ぶっちゃけOpenOfficeのDrawで事足りる
・データを同期: rsync -auvz --delete コピー元/ コピー先/
・make -n :メイクテスト
・nm:シンボリックテーブル表示
・ldd:プログラムにリンクされているライブラリを表示