trコマンドに-dオプションを付けると削除になります。よってLFに変換するにはCR(\r)を削除すればよいので
tr -d '\r' < old.txt > new.txt
ってやればOKです。trコマンドは標準入力を受け取り標準出力に出力するので、リダイレクトを用いています。
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 だそうです
標準エラーも、標準出力に送るには
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]#
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]#
デバッグするときとかに使えますね。たとえば
ls -lrt | wc -l
とかするとき、
ls | tee debug.log | wc -l
と間にteeを挟んでおくと標準出力をテキストに落とすことができます。ファイルに追記したい場合は、-aをつけます
ls | tee -a debug.log | wc -l
こんな感じ。
sleep n
#!/bin/bash tmp=""; while read line do tmp="${tmp}${line}\n"; done echo -en "$tmp";
-e \nを改行と見なすオプションのようです。 -n 行末の改行を行わない。
でもこれだと、行頭にタブやスペースを入れたときにlineの時点でトリムされてしまうみたい。
行頭のタブやスペースをトリムされないようにするには、環境変数を変更すればよいようです。
#!/bin/bash ( tmp=""; # 区切り文字の変更 IFS=$'\n'; while read line do tmp="${tmp}${line}\n"; done echo -en "$tmp" ; )
たとえば、/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}
CLASSPATH変数を定義する方法。
java -cp lib/sample.jar:lib/mail.jar:lib/activation.jar nu.mine.kino.sample.Main
export CLASSPATH=lib/sample.jar:lib/mail.jar:lib/activation.jar java nu.mine.kino.mail.utils.Main
/etc/sysconfig/i18n
でUTF-8 -> eucJPに変換すればOK!
何でかなぁ。とりあえず、
chkconfig --level 345 telnet on
でいいやっ
マウント情報って、
/etc/vfstab
にある。
umount /home/hoge/
でNFSのマウントがはずせる。
#sync #sync #init 6
#uname -a
[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
この記事は
現在のアクセス:22355