ソースを表示
出典: 有限会社クラフト 技術情報
unix linux tips
のソース
移動:
メニュー
,
検索
以下に示された理由により、ページの編集を行うことができません:
この操作は、
登録利用者
のグループに属する利用者のみが実行できます。
このページのソースを閲覧し、コピーすることができます:
簡単なunix linuxのtipsを掲載してます。ミスなどあれば、ご連絡頂ければ幸いです。 == コントロールキー一覧 == * CTRL+Q 入力ターミナルにCTRL+Sのコードが送られ、画面表示がストップ時、このキーで画面表示を再開可能 * CTRL+J 夕一ミナルモードをリセット * CTRL+D 入力終了(EOF) * CTRL+C 実行中のプログラムを中断 * CTRL+Z 実行中のプログラムの停止を試行 * CTRL+\ 実行中のプログラムを強制的終了 == 複数のディレクトリを一度に作成する == mkdir /aa/{help,work,att} 結果 /aa/help /aa/work /aa/att が作られる == 指定したユーザーでコマンドを実行 == bsd su -l <username> -c <command> linux su -c '/usr/local/pgsql/bin/pg_ctl start' - postgres コマンド ユーザー名 == フロッピー(FD)のイメージダンプとリストア == === イメージ取得 === dd if=/dev/fd0 of=foo.img === イメージ書き込み === dd if=foo.img of=/dev/fd0 === MBR保存(HDでも可能、ifを変更すること)=== dd if=/dev/fd0 of=/dev/fd0 bs=512 count=1 == ddについて == === 判例 === dd if=/dev/rdsk/???? of=/dev/rmt/0mn bs=1024k count=620 skip=621 if=読み込み元 of=書き込み先 /dev/rmt/0:最初のテープデバイス m:ミディアム圧縮 n:巻き戻しなし bs=ブロックサイズ(必ず512byteの倍数であること)ここでは1024K=1Mごととしている count=回数 (620*1024k=640MByte) skip=スキップする範囲 === CD-ROMサイズにわけて保存する === dd if=/dev/rdsk/c2d0s9 of=/dev/rmt/0mn bs=1M count=620 dd if=/dev/rdsk/c2d0s9 of=/dev/rmt/0mn bs=1M count=620 skip=621 dd if=/dev/rdsk/c2d0s9 of=/dev/rmt/0mn bs=1M count=620 skip=1241 === ネットワーク経由でddを使う === 手法はいくつかあるが、安易なのは、ncコマンドを使用した方法である。 * 受信元マシンで待ちうけ設定 nc -l -p 8080 > cimage.dd nc -l -p 待ちうけポート > ファイル名 * 送信先マシンから送信開始 dd if=/dev/rdsk/???? bs=1024k count=620 skip=621 | nc 192.168.0.1 8080 送信先IP 送信先ポート == フォルダの使用容量ランキング == homeの各フォルダの使用容量を調べる du -s /home/* | sort -nr == 改行コードを取る == * 1ファイルでの例 !!入力と出力は同じファイルにしないこと!!!! tr -d '\r' < in > out * 複数ファイルを同時 for i in *.{cgi,pl} do tr -d '\r' < $i > $i.tmp mv $i.tmp $i done == nkfで文字コードと改行コード変換 == === unix[eucコード(LF改行)]変換 === !!入力と出力は同じファイルにしないこと!!!! nkf -e -Lu file > output_file -e euc出力 -L 改行モード -Lu unix (LF) 0x0a -Lw windows (CRLF) 0x0d0a -Lm mac (CR) 0x0d === windows[sjisコード(CRLF改行)]変換 === !!入力と出力は同じファイルにしないこと!!!! nkf -s -Lw file > output_file -s sjis出力 -L 改行モード -Lu unix (LF) 0x0a -Lw windows (CRLF) 0x0d0a -Lm mac (CR) 0x0d == disk test == * IBM Drive Fitness Test <URL:http://www.storage.ibm.com/hdd/support/download.htm> * Maxtor POWERMAX v2.4 <URL:http://www.maxtor.com/Softwaredownload/default.htm> * Quantum QDPS <URL:http://www.maxtor.com/Quantum/support/csr/software/disk_docs/qdps_ontrack_info.htm> * Seagate SeaTools Disc Diagnostic <URL:http://www.seagate.com/support/index.html> == dosテキストファイルの ^Mを取る == tr -d '\015' < beforefile > afterfile == 16進ダンプ(hexdump)表示 == === 16進ヘキサーと文字コード表示 === od -hc file === 16進ヘキサー表示 === od -h file 以下のコマンドがインストール済みの場合もある hd hexdump == ファイル名の一括変換 == *例1 for i in *.jpg do mv $i `echo $i | sed 's/z0/a/'` done 実行すると … ファイル名 z01.JPG -> a01.JPGへ ファイル名 z02.JPG -> a02.JPGへ ファイル名 z03.JPG -> a03.JPGへ ファイル名 z04.JPG -> a04.JPGへ に変更される *例2 複数の拡張子を対象に処理をする(jpg,png,gifが選択される) for i in *.{jpg,png,gif} do mv $i `echo $i | sed 's/P00/a/'` done == ファイルを読み込んで拡張値を変えて処理結果を保存 == #!/bin/sh LOGDIR=../snifer-log-pc\(020730\) # UP SDK for i in `find ${LOGDIR} -type f -name "*_up_sdk_*.cap"` do echo make $i figure fig_name=`echo $i | sed 's/.cap$/.fig/'` tethereal -R "ip.addr == 192.168.59.7" -V -r $i | gawk -f count.awk -v mode="figure" > ${fig_name} done == ディレクトリ名からファイル名取出し == * 末尾に/が付かなければファイル名を取り出せる(先頭の/は影響なし) echo "/aaa/bbb/ccc" | awk 'BEGIN {FS="/"} { print $NF}' 結果、ccc が出力される $は指定したフィールドを表示する NFはフィールド数なので、最後のフィールド内容を表示する * 具体例 #!/bin/bash rowLogDir=take_raw_log/ traficDir=trafic/ ## trafic normal chenge echo "trafic normal chenge" mkdir ${traficDir} # for i in `find ${rowLogDir} -type f -name "*.csv"` do echo make $i trafic_name=`echo $i | awk 'BEGIN {FS="/"} { print $NF}'` trafic_name=`echo ${traficDir}${trafic_name}` awk -f trafic_normal_chenge.awk $i > ${trafic_name} done == ディレクトリ名からファイル名だけ除外 == echo "/aaa/bbb/ccc.txt" | awk 'BEGIN {FS="/"} { for(i=1;i<NF;i++){printf("%s/",$i);} }' == ディレクトリは残してファイルだけ消す == find /home/aaa -type f -exec rm {} \; == ディレクトリ配下のhtml/htmだけをディレクトリ構造ごとコピー == #!/bin/sh srcDir="corp" dstDir="corp_onlyhtml" # for i in `find ${srcDir} -iname "*.html" -o -iname "*.htm" ` do echo $i dir=$dstDir/`echo $i | awk 'BEGIN {FS="/"} { for(i=1;i<NF;i++){printf("%s/",$i);} }'` file=`echo $i | awk 'BEGIN {FS="/"} { print $NF }'` mkdir -p $dir cp $i $dir/$file done == ファイルの文字列置換 == for i in *.eps do sed -e 's/MSPゴシック/GothicBBB-Medium-H/g' $i > tmp mv tmp $i rm tmp done == 行頭に特定の文字の後があれば、他のファイルの内容を追加 == #!/bin/sh DIR=. TMP=tmp # html file for old in `find ${DIR} -type f -name "*.htm*" ` do echo ${old} cp ${old} ${TMP} cat ${TMP} | awk ' BEGIN { FS=" "; IGNORECASE=1; } { print $0; } /^<body/ { system("cat s1"); } ' > ${old} done == 無限ループ == while [ 1 ]; do tail -f /tmp/az sleep 1 done == 該当日時までループ == 2004/07/18 05:00まで動作する LIMIT=2004071805 while [ `date '+%Y%m%d%H'` -lt $LIMIT ] ; do logname=`date '+%Y_%m%d_%H%M%S_aaaaaa.csv'` echo $logname sleep 5 done
unix linux tips
に戻る。
表示
本文
ノート
ソースを表示
履歴
個人用ツール
ログイン
サイトメニュー
有限会社クラフト Home
電話連絡網サービス『トークメール』
技術情報
クラフトの活動日記
お問い合わせ
案内
技術情報
最近更新したページ
おまかせ表示
検索
ツールボックス
リンク元
関連ページの更新状況
特別ページ
adsense
位置情報とアクセス解析