// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents


***所定のファイルだけmv [#q123300d]
Macでの実績だけど。。たとえば "xxxx 2.JPG"ってファイルだけをhogeディレクトリの下に移動する、とかの場合。
 # find . -name  '* 2.JPG' -print0 |xargs -0 -I% mv % ./hoge/%



***Windowsファイル共有にアクセスする。 [#i6a40d74]
たとえばWindowsのファイル共有(Samba)上のあるディスクにhoge.txtをコピーしてみます。
 smbclient //192.168.0.1/shareDisk/  -N  -c "put hoge.txt" 2>&1 | tee -a log.txt
こんな感じ。 -c はその後の処理を実行。-Nはパスナシですね。

2009/02/16追記:
 mount -t smbfs //192.168.0.1/shareDisk/ /mnt/shareDisk
これでそもそもマウントできちゃいますね。smbfsが動かない環境では
 mount -t cifs  //192.168.0.1/shareDisk/ /mnt/shareDisk
でいけちゃうと思います。

*** 対話型のコマンドを自動化する。 [#h4df6e1c]
-[[expectコマンドの使い方 – No:158 – Linuxで自宅サーバ構築(新森からの雑記)>http://www.uetyi.mydns.jp/wordpress/command/entry-158.html]]
-[[対話型のコマンドを自動化できるexpectコマンド|A Day In The Boy's Life>http://ameblo.jp/itboy/entry-10680151905.html]]
-[[【linux】Expectコマンド使用例(書き方備忘録) at softelメモ>https://www.softel.co.jp/blogs/tech/archives/1407]]

***改行コードをLFに変換 [#v6fb8a93]
trコマンドに-dオプションを付けると削除になります。よってLFに変換するにはCR(\r)を削除すればよいので
 tr -d '\r' < old.txt  > new.txt
ってやればOKです。trコマンドは標準入力を受け取り標準出力に出力するので、リダイレクトを用いています。

-[[trコマンド>http://www.nurs.or.jp/~sugi/tr.htm]]

***コマンドやシェルが返すリターンコードが格納される変数 [#abe6b897]
bashでは、コマンドやシェルが返すリターンコードは「$?」という変数でアクセスできます。
 [hogehoge@www test]$ ls -lrt
 合計 52
 -rwxr--r-- 1 hogehoge hogehoge  263 2008-05-18 10:10 build_jar.xml
 drwxr-xr-x 2 hogehoge hogehoge 4096 2008-05-21 01:27 lib
 drwxr-xr-x 4 hogehoge hogehoge 4096 2008-05-21 01:37 source
 drwxr-xr-x 3 hogehoge hogehoge 4096 2008-05-21 16:18 classes
 [hogehoge@www test]$ ls -lrt | grep build_jar.xml   <-存在するファイル
 -rwxr--r-- 1 hogehoge hogehoge  263 2008-05-18 10:10 build_jar.xml
 [hogehoge@www test]$ echo $?
 0  <-正常終了
 [hogehoge@www test]$ ls -lrt | grep build_jar.xmll  <-存在しないファイル
 [hogehoge@www test]$ echo $?
 1  <-異常終了
 [hogehoge@www test]$

cshなどでは、$status だそうです

-[[コマンドライン引数と終了ステータス>http://ylb.jp/2007b/proc/commandline/]]

***標準エラーも、標準出力にだす [#k531dddb]
標準エラーも、標準出力に送るには
 2>&1
と指定します。

こんな感じ
 標準エラーも、標準出力も、hogehoge.txtへ、しかも追記。
 [root@www]# ls -lrt fuga 1>>hogehoge.txt 2>&1
 [root@www]# cat hogehoge.txt 
 ls: cannot access fuga: そのようなファイルやディレクトリはありません
 [root@www]# 

先のteeを使ってこんな感じも行けますね
 [root@www]# ls -lrt fuga 2>&1 |tee -a hogehoge.txt 
 ls: cannot access fuga: そのようなファイルやディレクトリはありません
 [root@www]# cat hogehoge.txt 
 ls: cannot access fuga: そのようなファイルやディレクトリはありません
 [root@www]# ls -lrt fuga 2>&1 |tee -a hogehoge.txt 
 ls: cannot access fuga: そのようなファイルやディレクトリはありません
 [root@www]# cat hogehoge.txt 
 ls: cannot access fuga: そのようなファイルやディレクトリはありません
 ls: cannot access fuga: そのようなファイルやディレクトリはありません
 [root@www]# 



***標準出力、標準エラーの出力先を切り替える [#r4bd9045]
 ls > hoge.txt
これはいいですね。標準エラーの切り替えは
 ls 2> hoge.err <-標準エラーの切り替え
 ls 1> hoge.txt <-標準出力もちゃんと書くとこうらしい
ですね。


まとめるとこんな感じ
 標準出力をhogehoge.txtへ、標準エラーをhogehoge.errへ、しかも追記
 [root@www]# ls -lrt fuga 1>>hogehoge.txt 2>>hogehoge.err
 [root@www]# cat hogehoge.txt
 [root@www]# cat hogehoge.err      fugaはない場合
 ls: cannot access fuga: そのようなファイルやディレクトリはありません
 [root@www]# 



***標準出力をパイプでつなぐときに、一緒にファイルにも出力する [#td88a4db]
デバッグするときとかに使えますね。たとえば
 ls -lrt | wc -l
とかするとき、
 ls | tee debug.log | wc -l
と間にteeを挟んでおくと標準出力をテキストに落とすことができます。ファイルに追記したい場合は、-aをつけます
 ls | tee -a debug.log | wc -l
こんな感じ。

-[[標準入力、標準出力、標準エラー出力の理解>http://docs.hp.com/ja/B2355-90813/ch03s03.html]]

***シェルスクリプトでn秒待たせる。 [#i01d20aa]
 sleep n
-[[naka-ta論 シェルスクリプトで1秒待たせる。>http://naka-ta.com/blog/?p=17]]


***shで、標準入力から値を受け取り、そのままエコーするサンプル [#od860f77]
 #!/bin/bash
 
 tmp="";
 
 while read line
 do
  tmp="${tmp}${line}\n";
 done
 
 echo -en "$tmp";

 -e \nを改行と見なすオプションのようです。
 -n 行末の改行を行わない。

でもこれだと、行頭にタブやスペースを入れたときにlineの時点でトリムされてしまうみたい。

-[[シェル変数に改行文字を入れる - Vox>http://kjirou.vox.com/library/post/%E3%82%B7%E3%82%A7%E3%83%AB%E5%A4%89%E6%95%B0%E3%81%AB%E6%94%B9%E8%A1%8C%E6%96%87%E5%AD%97%E3%82%92%E5%85%A5%E3%82%8C%E3%82%8B.html]]
-[[【 複数の変数を連結する 】:ITpro>http://itpro.nikkeibp.co.jp/article/COLUMN/20060228/231154/]]
-[[bashのスクリプト内で、パイプ入力を受け取るには? - 教えて!goo>http://oshiete1.goo.ne.jp/kotaeru.php3?q=1508581]]

行頭のタブやスペースをトリムされないようにするには、環境変数を変更すればよいようです。
 #!/bin/bash
 
 (
 tmp="";
 
 # 区切り文字の変更
 IFS=$'\n';
 while read line
 do
  tmp="${tmp}${line}\n";
 done
 
 echo -en "$tmp" ;
 )

-[[シェルで行単位に扱う - Linux Square>http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=14752&forum=10&5]]
-[[入力と出力 - UNIX & Linux コマンド・シェルスクリプト リファレンス>http://www.geocities.jp/geo_sunisland/input_output.html]]

***shであるディレクトリ内のjar全てをクラスパスに指定する [#e1d606d2]

たとえば、/homoe/hoge/lib 内の全てのjarファイルにパスを通したいとします。
 export LIBDIR=/homoe/hoge/lib
 jarList=`ls ${LIBDIR} | grep .jar` #lsの結果を変数に格納
 export CLASSPATH=${LIBDIR} #まずはlibだけ通す
 for jarFile in ${jarList}  #for でぐるぐる
 do
   export CLASSPATH=${CLASSPATH}:${LIBDIR}/${jarFile} #順にパスを通していく
 done
 export PATH=${JAVA_HOME}/bin:${PATH}




***shでJavaを呼び出す時のクラスパスの指定 [#dd8a9ab9]
CLASSPATH変数を定義する方法。

-直接
 java -cp lib/sample.jar:lib/mail.jar:lib/activation.jar nu.mine.kino.sample.Main

-CLASSPATH変数に定義する
 export CLASSPATH=lib/sample.jar:lib/mail.jar:lib/activation.jar
 java  nu.mine.kino.mail.utils.Main











***Fedora 7[#l910d5c3]

-[[日々の試行と実験: SSHインストール>http://golgotha.xrea.jp/archives/2005/08/ssh.html]]
-[[Fedora7の初期設定>http://d-linux.ddo.jp/ini-setting/is-fedora7.html]]

***Fedora Core4の文字コードをEUCにする [#j749d6c0]
 /etc/sysconfig/i18n
でUTF-8 -> eucJPに変換すればOK!


***Fedora Core4でtelnetがONにならない [#yf88a27e]
何でかなぁ。とりあえず、
 chkconfig --level 345 telnet on
でいいやっ




***NFSのこと [#l58443ff]
マウント情報って、
 /etc/vfstab
にある。

 umount /home/hoge/
でNFSのマウントがはずせる。

***再起動 [#l2a5c584]
 #sync
 #sync
 #init 6

***Solarisのバージョン [#t4e8e6da]
 #uname -a


***Network設定の変更 [#b44c1f6d]
 [root@www ~]# view /etc/sysconfig/network-scripts/ifcfg-eth0
 DEVICE=eth0
 BOOTPROTO=none
 HWADDR=[MACアドレス]
 ONBOOT=yes
 TYPE=Ethernet
 NETMASK=255.255.255.0
 IPADDR=192.168.xxx.xxx
 GATEWAY=192.168.xxx.xxx
 USERCTL=no
 IPV6INIT=no
 PEERDNS=yes

 /sbin/service network restart
 


----
この記事は
#vote(おもしろかった[4],そうでもない[0])

#comment
#topicpath


SIZE(10){現在のアクセス:&counter;}

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS