シェルスクリプト総合 その16
レス数が1000を超えています。これ以上書き込みはできません。
0001名無しさん@お腹いっぱい。
2010/02/20(土) 14:10:05スクリプトのお勉強・自慢・腕試しなどにどうぞ。
まずは注意点、リンク、地鎮祭など(>>1-6くらい)をご覧ください。
□お約束
・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。
bash/zsh/ksh/ashなどに依存する場合は明示しましょう。
Linuxユーザは/bin/shの正体がbashなので特に注意。
FreeBSDユーザは/bin/shの正体がashなので注意。
v7 shに一番近くて、現役のshは、OpenSolaris由来のheirloom sh。
http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/sh/
http://heirloom.sourceforge.net/sh.html
・csh/tcshのシェルスクリプトは推奨されません。
(理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
manや参考リンクを見ましょう。
aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルスクリプトのことをシェルってゆーな
・シェルで使えるワイルドカード等は正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
RubyやPerlの方が適した仕事には素直にそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
前スレ
シェルスクリプト総合 その15
http://pc12.2ch.net/test/read.cgi/unix/1246408968/l50
0002名無しさん@お腹いっぱい。
2010/02/20(土) 14:10:58sed
http://pc12.2ch.net/test/read.cgi/unix/1085730992/
正規表現
http://pc12.2ch.net/test/read.cgi/unix/1039165754/
おまえら! shell は何を使っているんですか?
http://pc12.2ch.net/test/read.cgi/unix/1012330865/
Eshell の使い方とか設定とか【Emacs Shell、Lisp】
http://pc12.2ch.net/test/read.cgi/unix/1102921590/
□初心者向けリンク
「誰にでも」シリーズ
ttp://kanji.zinbun.kyoto-u.ac.jp/~yasuoka/publications/dareUni/
/bin/shプログラミング入門
ttp://freebooks.info.nara-k.ac.jp/archive/ShellProgramming/
シェルを使おう - 導入からプログラミングまで -
ttp://www.netfort.gr.jp/~tomokuni/lms/shell/text/
□入門者向け書籍:
プロフェショナルシェルプログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4756116329/
入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界
http://www.amazon.co.jp/exec/obidos/ASIN/4797321946/
UNIXシェルプログラミング徹底解説
http://www.amazon.co.jp/exec/obidos/ASIN/4822280489/
入門Kornシェル
http://www.amazon.co.jp/exec/obidos/ASIN/4873110149/
入門bash
http://www.amazon.co.jp/exec/obidos/ASIN/4900900788/
0003名無しさん@お腹いっぱい。
2010/02/20(土) 14:12:03UNIXの部屋 (沢山のコマンドの簡単な紹介など)
http://x68000.q-e-d.net/~68user/unix/
POSIX: Shell & Utilities (標準規格)
http://www.opengroup.org/onlinepubs/009695399/utilities/contents.html
□最近のシェルスクリプト本(1)
(2004/03) UNIXシェルスクリプトハンドブック 関根 達夫 (著)
http://amazon.co.jp/o/ASIN/4797326522/
(2004/10) UNIXシェルスクリプト逆引き大全333の極意 中橋 一朗 (著)
http://amazon.co.jp/o/ASIN/4798008842/
(2004/11) 仕事に使えるLinuxシェルスクリプト 千葉 真人 (著)
http://amazon.co.jp/o/ASIN/4822282090/
(2004/12) UNIXシェルスクリプトサンプルブック デイブ・テイラー (著)
http://amazon.co.jp/o/ASIN/4797327286/
(2005/02) シェルスクリプト基本リファレンス 山森 丈範 (著)
http://amazon.co.jp/o/ASIN/4774122610/
(2005/04) LinuxWorldスクリプト 月刊リナックス・ワールド総集編 月刊LinuxWorld特別 (著)
http://amazon.co.jp/o/ASIN/4872802349/
(2005/05) UNIXシェルスクリプトコマンドブック 山下 哲典 (著)
http://amazon.co.jp/o/ASIN/4797330635/
(2005/05) わかる&使える UNIX基礎講座 シェルスクリプト編 中井 獏 (著)
http://amazon.co.jp/o/ASIN/4774123625/
0004名無しさん@お腹いっぱい。
2010/02/20(土) 14:12:54(2005/07) UNIX シェルスクリプト辞典 川井 義治 (著)
http://amazon.co.jp/o/ASIN/4798109231/
(2005/08) シェルスクリプト ポケットリファレンス bash編 宮原 徹 (著), 川原 龍人 (著)
http://www.amazon.co.jp/o/ASIN/4774124818/
(2005/12) 図解でわかるLinuxシェルスクリプト・正規表現 小泉 修 (著)
http://www.amazon.co.jp/o/ASIN/4534040067/
(2006/01)詳解 シェルスクリプト アーノルド ロビンス (著), ネルソン・H.F. ベーブ(著), Arnold Robbins (原著), Nelson H.F. Beebe (原著), 日向 あおい (翻訳)
http://www.amazon.co.jp/o/ASIN/4873112672/
(2007/3) Linuxシェルスクリプトユーザー便利帳―bash2/bash3対応 伊藤 幸夫 (著), 寒川 陽美(著)
http://www.amazon.co.jp/o/ASIN/4798015954/
(2007/9) ゲームで極める シェルスクリプトスーパーテクニック 山森 丈範
http://www.amazon.co.jp/o/ASIN/4774132020/
(2007/10) UNIX/Linuxシェルスクリプトマスタリングハンドブック 野川 准子
http://www.amazon.co.jp/o/ASIN/4798017957/
0005名無しさん@お腹いっぱい。
2010/02/20(土) 14:13:050006名無しさん@お腹いっぱい。
2010/02/20(土) 14:13:36FreeBSD Hypertext Man Pages
http://www.freebsd.org/cgi/man.cgi
Linux JF (Japanese FAQ) Project.
http://www.linux.or.jp/JF/
Unix Programming Frequently Asked Questions 日本語訳
http://www.adl.nii.ac.jp/~moro/unix-programmer/faq-j_toc.html
UNIXプログラミング環境
http://www.amazon.co.jp/exec/obidos/ASIN/4871483517/
□人間初心者へのお願い:
・このスレはシェルスクリプトについてのスレです。
シェルの対話的な利用についての話やスクリプトと関係ないコマンドの
使い方の質問などはスレ違いなので無用に願います。
□シェルスクリプトでよく使うコマンド:
制御・条件判定系: [,test,expr,true,false,yes,getopts
テキスト処理系: cat,awk,sed,tr,sort,uniq,grep,wc,head,tail,cut,paste,comm,join
ファイル検索系: find
(スペースなどを含むファイル名を正しく処理するため、
findは -exec command {} + を推奨。
他に -print0、xargsは -0オプションという方法もあるがSolaris非対応)
ディレクトリ系: basename,dirname
出力系: echo,printf
対話コマンド制御系: expect
http/ftpの処理自動化: wget,curl
0007名無しさん@お腹いっぱい。
2010/02/20(土) 14:35:44(基本仕様)
・コマンドとして実行できる.(シェルコマンドである.)
・ユーザーが10000以上99999以下の5桁の数字を入力する.
・その数字を7で割って1余り,かつ13で割って2余った場合は Daikichiと表示する.
・それ以外で,13で割って2余った場合は Chuukichiと表示する.
・それ以外で,7で割って1余った場合は Shoukichiと表示する.
・それ以外の場合は Hazureと表示する.
・入力した文字が10000以上99999以下の数字以外の場合はエラーメッセージを表示する.
・できる人は,コマンドライン引数でDaikichiなどの文字を変更できるようにする.
(ポイント)
☆シェルコマンドにするには,スクリプトの最初に(#!で始まる)おまじないを書く.
☆標準入力から文字列を入力するには read を用いる.
☆コマンドラインの引数は,$@に格納されている.(その要素は $1 $2 ...)
☆四則演算には $(( )) コマンドが使用できる.(ただし,整数しか扱えない.)
誰かわかるひとお願いします
0008名無しさん@お腹いっぱい。
2010/02/20(土) 15:50:45csh じゃないんだなw
シェルスクリプトの事をシェルと書くと怒る人が居るので気をつけた方が良いぜ。
↓これをファイルに保存して、実行するとお望みのスクリプトが出力される筈だ。
#!/bin/zsh
echo '#!/bin/bash
while read i
do
case ${i} in'
for i in {10000..99999};
do echo -n "${i}) ";
if [ 2 -eq `echo ${i} % 13 | bc` -a 1 -eq `echo ${i} % 7 | bc` ];
then echo "echo Daikichi;;"; elif [ 2 -eq `echo ${i} % 13 | bc` ];
then echo "echo Chuukichi;;"; elif [ 1 -eq `echo ${i} % 7 | bc` ];
then echo "echo Shoukichi;;"; else echo "echo Hazure;;"; fi; done
echo 'esac
done'
0009名無しさん@お腹いっぱい。
2010/02/20(土) 17:18:45宿題は自分でやれ。
0010名無しさん@お腹いっぱい。
2010/02/20(土) 17:45:49行数が10万行近くあって、レポート用紙が何枚あっても足りません><
0011名無しさん@お腹いっぱい。
2010/02/22(月) 01:05:100012名無しさん@お腹いっぱい。
2010/02/22(月) 16:15:20read a
if [[ "$a" -lt 10000 || "$a" -gt 99999 ]]
then
echo 'Error'
exit
fi
x=$((a % 7))
case "$x" in
1)
x=$((a % 13))
if [ "$x" -eq 2 ]
then
echo 'Daikichi'
else
echo 'Shoukichi'
fi
;;
*)
x=$((a % 13))
if [ "$x" -eq 2 ]
then
echo 'Chuukichi'
else
echo 'Hazure'
fi
;;
esac
0013名無しさん@お腹いっぱい。
2010/02/22(月) 20:54:25read a のところで aを入力すると、誤動作するようですが・・
0014名無しさん@お腹いっぱい。
2010/02/22(月) 21:34:43echo "$a" | grep '^[[:digit:]]....$' >/dev/null 2>&1
if [ $? -ne 0 ]
then
echo 'Error'
exit 1
fi
0015名無しさん@お腹いっぱい。
2010/02/22(月) 21:39:42# grepのパターンはこっちのほうが良い。
echo "$a" | grep '^[[^0][:digit:]]....$' >/dev/null 2>&1
if [ "$?" -ne 0 ]
then
echo 'Error'
exit 1
fi
0016名無しさん@お腹いっぱい。
2010/02/23(火) 01:07:12jkl.sh: Command not found.
ワザワザbashをインスコしなきゃ、UNIXじゃ使えないじゃん。
0017名無しさん@お腹いっぱい。
2010/02/23(火) 07:34:270018名無しさん@お腹いっぱい。
2010/02/23(火) 14:34:210019名無しさん@お腹いっぱい。
2010/02/23(火) 14:52:340020名無しさん@お腹いっぱい。
2010/02/23(火) 15:34:490021名無しさん@お腹いっぱい。
2010/02/23(火) 15:48:25の言う今時のUNIXはやっぱLinuxなんだよな
0022名無しさん@お腹いっぱい。
2010/02/23(火) 16:24:16で、ちょっと前だとbashはLinuxのものとして叩けたけど、
今はUNIXでもbashが標準になっちゃったから、その線では叩けなくなったんだよ。
0023名無しさん@お腹いっぱい。
2010/02/23(火) 16:48:16だからそのUNIXって何だよ(w
ぱちょこんウニックスか?
なんとかベーエスデーか?
0024名無しさん@お腹いっぱい。
2010/02/23(火) 19:01:470025名無しさん@お腹いっぱい。
2010/02/23(火) 23:38:310026名無しさん@お腹いっぱい。
2010/02/24(水) 00:27:15Tigerあたりからbashが標準。
0027名無しさん@お腹いっぱい。
2010/02/24(水) 00:33:37bashはオプション
6.1は知らん
0028名無しさん@お腹いっぱい。
2010/02/24(水) 01:41:34無いよ。
>>23
*BSDにも無い。
Mac OS Xは全然UNIXとは程遠い。
kernelにFreeBSDが使われてるってだけ。
Solarisでも/opt扱いだったな。
0029名無しさん@お腹いっぱい。
2010/02/24(水) 02:27:31>kernelにFreeBSDが使われてるってだけ。
??????
0030名無しさん@お腹いっぱい。
2010/02/24(水) 02:30:290031名無しさん@お腹いっぱい。
2010/02/24(水) 02:37:350032名無しさん@お腹いっぱい。
2010/02/24(水) 04:54:250033名無しさん@お腹いっぱい。
2010/02/24(水) 06:55:36おいおい、*BSDはUNIXじゃないよw
あと、今のSolarisではbashは必須扱い。
0034名無しさん@お腹いっぱい。
2010/02/24(水) 07:04:41Solarisのbashは、/optじゃなくて、/usr/bin/bash。
しかも、symlinkじゃなくて、/usr/bin/bashにバイナリ本体がある。
SUNWbashに入ってる。
0035名無しさん@お腹いっぱい。
2010/02/24(水) 08:20:190036名無しさん@お腹いっぱい。
2010/02/24(水) 09:37:59>>19の
「今時のUNIX」はLinuxと決定されました。
0037名無しさん@お腹いっぱい。
2010/02/24(水) 09:41:33LinuxはUNIXじゃないよ。*BSDもUNIXじゃないよ。
「今時のUNIX」は主にSolarisとかのこと。
Solaris10 -> bash標準
OpenSolaris -> bash必須
0038名無しさん@お腹いっぱい。
2010/02/24(水) 09:50:50> Mac OS Xは全然UNIXとは程遠い。
UNIX認証を得てるので名はUNIX。
ユーザランドはFreeBSDベースに作られたDarwinなので、実も伝統的なu**x
> kernelにFreeBSDが使われてるってだけ。
kernelはMach
>>37
>LinuxはUNIXじゃないよ。
分かった上で言ってるんだと思うよ。
0039名無しさん@お腹いっぱい。
2010/02/24(水) 11:29:55主にだったら他に何があるの?
主も糞もSolarisのみの話なら、今時のUNIXという
括りは間違ってるんだが
0040名無しさん@お腹いっぱい。
2010/02/24(水) 14:37:00OpenSolarisもUNIXじゃないよ。
0041名無しさん@お腹いっぱい。
2010/02/24(水) 16:01:46なんて書いてみたものの、結局Solarisしかなくて
やっぱり今時のUNIX=Linuxに戻ってしまうという循環
0042名無しさん@お腹いっぱい。
2010/02/24(水) 16:03:130043名無しさん@お腹いっぱい。
2010/02/24(水) 18:28:06第7版はPDP11です、とセルフつっこみ
0044名無しさん@お腹いっぱい。
2010/02/24(水) 21:26:34/bin/shに変更しても「今時のUNIX」ならすべて動く。
それはそうと、>>12 は無駄が多い記述だな、もうちょっと簡単に書ける。
0045名無しさん@お腹いっぱい。
2010/02/24(水) 21:40:54うちの freebsd (/bin/sh = ash) と debian (/bin/sh = dash) では動きませんでした。
まあ、どっちも今どきの UNIX じゃないけど。
# ksh で拡張された機能が必要
0046名無しさん@お腹いっぱい。
2010/02/24(水) 23:06:02FreeBSDはUNIXじゃありません。
今、話をしてるのは「UNIX」だけです。
0047名無しさん@お腹いっぱい。
2010/02/24(水) 23:33:260048名無しさん@お腹いっぱい。
2010/02/24(水) 23:36:02おまえのいう「UNIX」の定義を述べよ。
0049名無しさん@お腹いっぱい。
2010/02/24(水) 23:53:320050名無しさん@お腹いっぱい。
2010/02/25(木) 01:27:110051名無しさん@お腹いっぱい。
2010/02/25(木) 10:33:42今時のUNIXと言い放ったバカと
それを受けとめる人間には重要
0052名無しさん@お腹いっぱい。
2010/02/25(木) 10:35:170053名無しさん@お腹いっぱい。
2010/02/25(木) 11:07:280054名無しさん@お腹いっぱい。
2010/02/25(木) 11:08:530055名無しさん@お腹いっぱい。
2010/02/25(木) 14:58:090056名無しさん@お腹いっぱい。
2010/02/25(木) 19:35:24UNIXの定義は来世紀への課題と致します
0057名無しさん@お腹いっぱい。
2010/02/25(木) 20:24:31(基本仕様)
・コマンドとして実行できる.(UNIXシェルである.)
・コマンドラインの第1引数で数字を指定する.
・第1引数が数字以外だった場合はエラーメッセージを表示する.
・第1引数の数字以下の自然数のうち,素数をすべて見つけてリスト表示する.
・すべてUNIXシェル内部で処理し,外部コマンドは呼び出さないこと.
(ポイント)
☆UNIXシェルにするには,ファイルの最初に #!/bin/bashというおまじないを書く.
☆コマンドラインの第1引数は,$1に格納されている.
☆四則演算には $(( )) コマンドが使用できる.(ただし,整数しか扱えない.)
誰かわかるひとお願いします
0058名無しさん@お腹いっぱい。
2010/02/25(木) 20:28:210059名無しさん@お腹いっぱい。
2010/02/25(木) 21:37:45/usr/games/primes 1 "$1"
0060名無しさん@お腹いっぱい。
2010/02/25(木) 22:23:21『UNIXシェルである』という表現は有効なの?
0061名無しさん@お腹いっぱい。
2010/02/25(木) 22:46:26相手しちゃだめだよ。
0062名無しさん@お腹いっぱい。
2010/02/26(金) 06:56:02>>57
>・すべてUNIXシェル内部で処理し,外部コマンドは呼び出さないこと.
0063名無しさん@お腹いっぱい。
2010/02/26(金) 09:20:17その頭の悪そうな問題書く人は駆け出しの厨房?
もし師と仰いでるなら、即刻師匠を変えた方が良い
0064名無しさん@お腹いっぱい。
2010/02/26(金) 20:51:03# 問題自体は難しくないのだが・・・
#!/bin/bash
echo "$1" | grep '^[[:digit:]][[:digit:]]*$' >/dev/null 2>&1
if [[ "$?" -ne 0 || "$1" -lt 2 ]]
then
echo 'Error'
exit 1
fi
for ((i=2;i<="$1";i++)) {
if [ $((i % 2)) -eq 0 ]
then
echo "$i"
fi
}
0065名無しさん@お腹いっぱい。
2010/02/26(金) 20:54:41偶数を表示してどうするw
>>57
>素数
006664
2010/02/26(金) 20:55:01粗相。
0067名無しさん@お腹いっぱい。
2010/02/26(金) 20:57:40grepも使っちゃ駄目だそうですよ
0068名無しさん@お腹いっぱい。
2010/02/26(金) 20:57:53早い話、素数かどうかわかれば良いだけなら
判定対象の数値をそれより小さい数値全てで割り算してみればいいだけ。
ようするにループで回せばいいだけ。
0069名無しさん@お腹いっぱい。
2010/02/26(金) 21:04:22↓だろ。全然長くないよ。
#!/bin/bash
for ((i = 2; i <= $1; i++)) {
for ((j = 2; j < i; j++)) {
if ((i % j == 0)); then
continue 2
fi
}
echo $i
}
0070名無しさん@お腹いっぱい。
2010/02/26(金) 21:18:53(基本仕様)
・コマンドとして実行できる.(UNIXシェルである.)
・コマンドラインの第1引数で人間の手番(○側か×側か)を指定する.
・人間とコンピュータが対戦するようにする.
・3x3マスのマルバツゲームのボードを作成する.
・○側と×側が交互に2次元座標上の位置を入力する.
・入力後、毎回ボードを表示する.
・たて、よこ、斜めのいずれかに○か×が3つ並んだ時点でプログラムを終了する.
・すべてUNIXシェル内部で処理し,外部コマンドは呼び出さないこと.
(ポイント)
☆UNIXシェルにするには,ファイルの最初に #!/bin/bashというおまじないを書く.
☆コマンドラインの第1引数は,$1に格納されている.
☆四則演算には $(( )) コマンドが使用できる.(ただし,整数しか扱えない.)
誰かわかるひとお願いします
0071名無しさん@お腹いっぱい。
2010/02/26(金) 21:19:320072名無しさん@お腹いっぱい。
2010/02/26(金) 22:48:25(基本仕様)
・コマンドとして実行できる.(UNIXシェルである.)
・主人公、妹1名、両親、自分の友人数名(うち最低1名は女性、半数以上は男性とする)、妹の友人(女性)数名が登場する.
・主人公、妹、自分の友人、妹の友人はいずれも生徒もしくは学生とする.
・両親のうち、父は総合商社勤務のサラリーマン、母は専業主婦とする.
・主人公の言動やイベントの発生にともない、各キャラのパラメータを変化させる.
・病弱な妹を思いやる兄と妹の交流を中心に、他の登場人物との友情や恋愛を描写する.
・エンディングは妹、もしくは妹の友人のいずれかと深い恋愛関係になるか、誰とも親密になれないバッドエンディングになるようにする.
・妹と恋愛関係が深まる場合、病弱な妹への思いやりが徐々に、自然に恋愛感情へ変化するように描写する.
・ゲームの操作方法はコマンド選択式またはコマンド入力式とする.
・すべてUNIXシェル内部で処理し,外部コマンドは呼び出さないこと.
(ポイント)
☆UNIXシェルにするには,ファイルの最初に #!/bin/bashというおまじないを書く.
☆コマンド選択方式のゲームにする場合、select文を使用できる。
☆四則演算には $(( )) コマンドが使用できる.(ただし,整数しか扱えない.)
誰かわかるひとお願いします
0073名無しさん@お腹いっぱい。
2010/02/26(金) 22:48:280074名無しさん@お腹いっぱい。
2010/02/26(金) 22:55:02おにいちゃん、寂しいこと言わないで・・・
好感度 :-2
ストレス:+5
0075名無しさん@お腹いっぱい。
2010/02/26(金) 23:10:470076名無しさん@お腹いっぱい。
2010/02/28(日) 00:22:12うちはKだしなって言われました。
個人的にはコマンドとか多少は違っていてもBシェル知っていたら、
それなりにKシェルとかでも対応できるじゃんと思っていますが
いまいち違いがわからないのですが
具体的にBシェル、Cシェル、Kシェルの決定的な違いってあるのでしょうか?
たとえばこれがあるからこれを採用しているとか
0077名無しさん@お腹いっぱい。
2010/02/28(日) 00:35:37相手の言うKシェル(Korn Shell)はそれのスーパーセットなので、
機能が増えていると思えばいい。商用のUNIXだとkshがふつーに入っている。
あなたのいうBシェルがGNUのBourne-Again Shell(bash)のことなら、
同じようにBourne Shellのスーパーセットではあるが、kshとは系列が異なる。
/bin/sh の機能の範囲では大差ない。商用だとkshが、フリーだと
bashがそれの上位シェルとして使われていると思えばよい。
Linux だと /bin/sh だと思っても実体が bash だったりして知らない
うちに固有の機能に依存していることがあるので気をつける。
Cシェルのことは忘れていい。
0078名無しさん@お腹いっぱい。
2010/02/28(日) 00:39:50http://www.nurs.or.jp/~asada/FAQ/UNIX/UNIX.FAQ.5.html
0079名無しさん@お腹いっぱい。
2010/02/28(日) 01:11:100080名無しさん@お腹いっぱい。
2010/02/28(日) 01:16:280081名無しさん@お腹いっぱい。
2010/02/28(日) 01:43:14シェルスクリプトと比較して、VBAはどこがどんな風に難しいのでしょうか?
0082名無しさん@お腹いっぱい。
2010/02/28(日) 10:29:390083名無しさん@お腹いっぱい。
2010/02/28(日) 12:33:50今時でつまつ調はキモい
0084名無しさん@お腹いっぱい。
2010/02/28(日) 13:17:020085名無しさん@お腹いっぱい。
2010/02/28(日) 17:10:200086名無しさん@お腹いっぱい。
2010/02/28(日) 17:21:110087名無しさん@お腹いっぱい。
2010/02/28(日) 17:38:23'=' はどう書くんでしょう?
0088名無しさん@お腹いっぱい。
2010/02/28(日) 17:45:240089名無しさん@お腹いっぱい。
2010/02/28(日) 17:49:33ついでに、-ne と != も違います
0090名無しさん@お腹いっぱい。
2010/02/28(日) 17:51:42しかし、'='または'==' と -eq は違う。
0091名無しさん@お腹いっぱい。
2010/02/28(日) 17:58:530092名無しさん@お腹いっぱい。
2010/02/28(日) 18:25:420093名無しさん@お腹いっぱい。
2010/02/28(日) 18:27:07009485,87
2010/02/28(日) 18:30:090095名無しさん@お腹いっぱい。
2010/02/28(日) 18:40:420096名無しさん@お腹いっぱい。
2010/02/28(日) 19:45:24%preun
if [ "$1" -eq "0" ]; then
0097名無しさん@お腹いっぱい。
2010/02/28(日) 19:48:38"$1"が 0 でも 00 でも 000 でも一致するのが -eq
0098名無しさん@お腹いっぱい。
2010/02/28(日) 20:00:19こうすれば0のみの一致になる?
0099名無しさん@お腹いっぱい。
2010/02/28(日) 20:06:40と、xをつけたくなってしまうバッドノウハウ
0100名無しさん@お腹いっぱい。
2010/02/28(日) 20:10:19kwsk
0101名無しさん@お腹いっぱい。
2010/02/28(日) 20:14:10その xを付けるバッドノウハウが必要になるような "$1"の例が、
今時のUNIXシェルには存在しないんだな。
よってxを付けるバッドノウハウは不要。
0102名無しさん@お腹いっぱい。
2010/02/28(日) 21:04:27bash/ksh/zsh だとコケない。確かにUNIXシェルならコケないな。
0103名無しさん@お腹いっぱい。
2010/03/09(火) 04:37:55文字として比較するか、数値として比較するか
0104名無しさん@お腹いっぱい。
2010/03/09(火) 04:39:31bashに似ているが、微妙に違う罠
0105名無しさん@お腹いっぱい。
2010/03/11(木) 23:38:01echo $record | wc -c
で取得できると思ったのですが、echoが末尾のスペースをカットしてしまい、上手く行かず…
どんな工夫で解決できるでしょうか?
0106名無しさん@お腹いっぱい。
2010/03/11(木) 23:46:46$record にはどうやってデータ格納してるの?
0107名無しさん@お腹いっぱい。
2010/03/12(金) 06:46:57まだテスト段階で、本格的なコーディングはしていないのですが、
record=`head -1 ファイルパス`
echo "${record}@" …ここではスペースが入っているのを確認
echo ${#record} …スペース込みの文字数が出力されるのを確認
echo $record | wc -c …バイト数が足りず
ということで、パイプする前のechoでスペースが落ちてるんじゃないかと…
0108名無しさん@お腹いっぱい。
2010/03/12(金) 06:59:520109名無しさん@お腹いっぱい。
2010/03/12(金) 18:33:15echo "$record" | wc -c …バイト数が1個多い、、
、、と言うと予想。
0110名無しさん@お腹いっぱい。
2010/03/12(金) 21:01:22sh-3.2$ bar="space "
sh-3.2$ /bin/echo -n ${bar} | wc -c
5
sh-3.2$ /bin/echo -n "${bar}" | wc -c
6
0111名無しさん@お腹いっぱい。
2010/03/12(金) 21:07:44$ bar="space "
$ /bin/echo -n "${bar}" | wc -c
10
???
0112名無しさん@お腹いっぱい。
2010/03/12(金) 21:21:03-n オプション(出力後改行しない)を持たないecho実装だとそうなる。
- n 空白 s p a c e 空白 改行
0113名無しさん@お腹いっぱい。
2010/03/12(金) 21:30:41知ってるよ。だから >>110 じゃ不完全だって指摘してるんだろ。
0114名無しさん@お腹いっぱい。
2010/03/12(金) 21:35:420115名無しさん@お腹いっぱい。
2010/03/12(金) 21:42:52$ /bin/echo -n "$bar" | wc -c
0
0116名無しさん@お腹いっぱい。
2010/03/13(土) 10:29:32echo ${#record} で目的の結果が得られているのに、
なぜ echo -n "$record" | wc -c とかわざわざ外部コマンドでやろうとするの?
(ダブルクォートと -n は付けておいたよ)
0117名無しさん@お腹いっぱい。
2010/03/13(土) 14:53:17service httpd graceful を実行する
という処理を一行で可能でしょうか?
0118名無しさん@お腹いっぱい。
2010/03/13(土) 15:02:210119名無しさん@お腹いっぱい。
2010/03/13(土) 16:09:530120名無しさん@お腹いっぱい。
2010/03/13(土) 16:22:250121名無しさん@お腹いっぱい。
2010/03/13(土) 16:26:00今環境がないので、今度客先に行った時に試してみます。
0122名無しさん@お腹いっぱい。
2010/03/15(月) 01:02:16export HOGE="(A B C D)"
hoge=${HOGE}
export HOGE=(A B C D)
hoge=${HOGE}
の両方試してみたのですが、どちらもhogeには文字列ががが
要素が10個近くあるので、それぞれ別の変数に入れて渡すとごちゃごちゃしそうで…
なにか良い方法はないですかね?
0123名無しさん@お腹いっぱい。
2010/03/15(月) 02:39:42bash なら
hoge=("${HOGE[@]}")
これでどうでしょうか。
0124名無しさん@お腹いっぱい。
2010/03/15(月) 04:23:210125名無しさん@お腹いっぱい。
2010/03/15(月) 07:03:40export HOGE="(A B C D)"
(子プロセスで)
eval hoge=${HOGE}
>>123
同じシェルだとうまく行くが、
配列はexportできないので、
それでは駄目。
0126名無しさん@お腹いっぱい。
2010/03/15(月) 17:36:54find . -name "*" -exec grep $1 {} /dev/null \;
}
findとexecを毎回打つのがめんどいんで
こんなのを書いたんですが
grepall "int main"とかやると
"int main"を含む行じゃなくて
intかmainを含む行が出力されてしまうんですが
そうならないようにできたりしますか?
0127名無しさん@お腹いっぱい。
2010/03/15(月) 17:41:53function grepall(){ find . -exec grep "$1" {} /dev/null \;;}
か?
つーか GNU grep の -r 使えばいいんじゃね。
0128名無しさん@お腹いっぱい。
2010/03/15(月) 17:48:220129名無しさん@お腹いっぱい。
2010/03/17(水) 22:16:20do
echo "${line},1"
done
でファイルの中身をグルグル回すシェルを作りたいのですが、ファイルの改行コードが落ちてしまうのはどうにかならないでしょうか?
読み込むファイルがCRLFなので、LEだけ落ちてCRだけ残るというなんとも半端なことに…
どうせならCRもまとめてなくなるか、CRLFのまま残るかして欲しいんですが…
0130名無しさん@お腹いっぱい。
2010/03/17(水) 22:36:30echo "${line},1"
ってやってるなら、行末に ",1" が付くわけだけど、
${line}に ^M が含まれてるなら、"...^M,1" ってなるわな。
それ、LFが落ちてるわけじゃないよ。
0131名無しさん@お腹いっぱい。
2010/03/17(水) 22:37:250132名無しさん@お腹いっぱい。
2010/03/18(木) 01:33:450133名無しさん@お腹いっぱい。
2010/03/18(木) 07:19:290134名無しさん@お腹いっぱい。
2010/03/18(木) 07:38:43しかし、Windowsに持ってきてエディタで開いたり、バイナリエディタで見てもCRだけ残っているのですが…
>>131
やはりそういう形になりますかね…試してみます。
0135名無しさん@お腹いっぱい。
2010/03/18(木) 08:21:57おまえ、>>130 の言ってる意味わかってないな。
CR+LFのLFが落ちてCRだけ残ったのではなく、
もともとCRが普通の文字とみなされて、
その後に「,1」が追加されただけのことで、
LFが落ちたわけではないんだと言ってるんだけど。
0136名無しさん@お腹いっぱい。
2010/03/18(木) 08:23:160137名無しさん@お腹いっぱい。
2010/03/18(木) 08:24:35IFS= の中に ^M を入れておくと readの際に自動的に CR を落してくれる。
これが最適解。
0138名無しさん@お腹いっぱい。
2010/03/18(木) 17:02:540139名無しさん@お腹いっぱい。
2010/03/18(木) 17:08:360140名無しさん@お腹いっぱい。
2010/03/18(木) 17:32:380141名無しさん@お腹いっぱい。
2010/03/18(木) 17:45:170142名無しさん@お腹いっぱい。
2010/03/18(木) 17:51:24bakanisareta... orz
0143名無しさん@お腹いっぱい。
2010/03/21(日) 14:17:59BシェルもKシェルも大して変わらんよ
0144名無しさん@お腹いっぱい。
2010/03/21(日) 18:14:29ただ、Bashとは違う
0145名無しさん@お腹いっぱい。
2010/03/22(月) 23:29:11関数に渡す引数の中に、5C問題を起こすコードとスペースが混じっている可能性があるとき、どうやって渡せばいいんでしょう?
Fanc '${hoge}'
だと${hoge}が文字列になってしまうし、
Fanc "${hoge}"
だと5C含みの文字がエスケープされて文字化ける
0146145
2010/03/22(月) 23:31:14上手く変数を展開しつつ、さらにエスケープを抑止する方法はないでしょうか?
よろしくお願いします。
0147名無しさん@お腹いっぱい。
2010/03/23(火) 12:49:02いや ksh は bourne sh とぜんぜん違うでしょ。
機能的には bash の方がよほど近い。
bsh は ${hoge%fuga} とか ${#hoge} とか $((1+1)) とかどれも使えない。
~ がホームディレクトリに展開されないぐらいだし。
0148名無しさん@お腹いっぱい。
2010/03/23(火) 13:05:31今現在 B-shと言ったら、*BSDの ash または debianの dash相当のシェルを指す。
で、その B-shでは、${hoge%fuga} とか ${#hoge} とか $((1+1)) とか
すべて使える。
ちなみに、OpenSolarisからはBourne-shが消えて、
/bin/shは kshへのsymlinkになってる。
0149名無しさん@お腹いっぱい。
2010/03/23(火) 13:23:370150名無しさん@お腹いっぱい。
2010/03/23(火) 13:30:22最大の根拠がSolarisに現存していたBourne Shellだったわけだが、
SolarisのBourne Shellがなくなったことで、
Bourne Shell互換で記述する意味がなくなってしまったな。。
0151名無しさん@お腹いっぱい。
2010/03/23(火) 13:33:300152名無しさん@お腹いっぱい。
2010/03/23(火) 15:11:32OpenSolaris にも bourne sh はあるよ。
パスが /usr/has/bin/sh に変わったけど。
>>148
>今現在 B-shと言ったら、*BSDの ash または debianの dash相当のシェルを指す。
これ、ふつー posix shell といわない?
>>144 は classic Bシェルという言葉を出してるわけだし、
昔からの bourne sh の方を言ってると考えるのが妥当じゃないかと。
0153名無しさん@お腹いっぱい。
2010/03/23(火) 15:22:190154名無しさん@お腹いっぱい。
2010/03/23(火) 15:53:36ashやdashぱ posix shellじゃないよ。
たとえば、[[ ]] とかが使えないし、、
0155名無しさん@お腹いっぱい。
2010/03/23(火) 15:56:03かんけーねーだろ。
自分が求める仕事が完結すれば、シェルは何だって良い。
酸いも甘いも理解して使えばいいんだよ
0156名無しさん@お腹いっぱい。
2010/03/23(火) 15:57:41/usr/has/bin/sh は歴史的遺物として置いてあるのであって、
実際のスクリプトで使われていないし、使ってはいけない。
0157名無しさん@お腹いっぱい。
2010/03/23(火) 16:03:34アホくせ
0158名無しさん@お腹いっぱい。
2010/03/23(火) 16:06:380159名無しさん@お腹いっぱい。
2010/03/23(火) 16:48:01夕飯までにcshでちょろっと組むかな
0160名無しさん@お腹いっぱい。
2010/03/23(火) 23:18:150161名無しさん@お腹いっぱい。
2010/03/24(水) 00:22:060162名無しさん@お腹いっぱい。
2010/03/24(水) 01:17:360163名無しさん@お腹いっぱい。
2010/03/24(水) 01:51:480164名無しさん@お腹いっぱい。
2010/03/24(水) 01:56:59はいいんだよ
0165名無しさん@お腹いっぱい。
2010/03/24(水) 02:04:550166名無しさん@お腹いっぱい。
2010/03/24(水) 02:07:000167名無しさん@お腹いっぱい。
2010/03/24(水) 05:51:170168名無しさん@お腹いっぱい。
2010/03/24(水) 06:46:53総称して何と呼べばいいの?
0169名無しさん@お腹いっぱい。
2010/03/24(水) 08:25:510170名無しさん@お腹いっぱい。
2010/03/24(水) 15:41:510171名無しさん@お腹いっぱい。
2010/03/24(水) 16:29:350172名無しさん@お腹いっぱい。
2010/03/24(水) 16:42:410173名無しさん@お腹いっぱい。
2010/03/24(水) 16:49:49http://www.ioplaza.jp/shop/genre/genre.aspx?genre=09outtop&affiliate=TP100323B1#useditem
ユーズドアイテム公開日: 3月24日 (水) 19:30〜
http://www.ioplaza.jp/shop/genre/genre.aspx?genre=09outtop&affiliate=TP100323B1#reusememory
B級ユーズドアイテム公開日: 3月24日 (水) 20:15〜
I-O OUTLET はアイオープラザ会員様限定の特別販売コーナーです。
アイオー製品のワケあり掘り出し物がタイムセールスで大放出。是非ご来店をお待ちしております。
※なお、ご利用には会員登録が必要です(登録無料)。
0174名無しさん@お腹いっぱい。
2010/03/24(水) 16:50:390175名無しさん@お腹いっぱい。
2010/03/24(水) 16:53:500176名無しさん@お腹いっぱい。
2010/03/24(水) 16:54:510177名無しさん@お腹いっぱい。
2010/03/25(木) 00:58:36あるよ。
if [[ ${1} = AAA]] ;then
とか可能
0178名無しさん@お腹いっぱい。
2010/03/25(木) 01:18:04http://www.opengroup.org/onlinepubs/009695399/utilities/test.html
The KornShell-derived conditional command (double bracket [[]]) was removed
from the shell command language description in an early proposal.
0179名無しさん@お腹いっぱい。
2010/03/25(木) 07:39:10letコマンドの動作も変だし。
0180名無しさん@お腹いっぱい。
2010/03/26(金) 01:06:03それ以外なら細かい話もよしではある。
0181名無しさん@お腹いっぱい。
2010/03/26(金) 06:53:420182名無しさん@お腹いっぱい。
2010/03/26(金) 07:08:170183名無しさん@お腹いっぱい。
2010/03/27(土) 21:42:06例えば以下のようなテキストファイル、file.hoge1があるとします。
AAA111ZZZZ
BBB222ZZZZ
CCC333ZZZZ
DDD444ZZZZ
これに対して、先頭CCCで始まるレコードの4カラム目から3カラム
つまり「333」を「XXX」にしたい。
AAA111ZZZZ
BBB222ZZZZ
CCCXXXZZZZ
DDD444ZZZZ
しかし「333」の位置には半角3バイトではあるが必ずしも「333」が入っている訳ではなく
何が入ってるかは一定でない。
これの解をお願いします。
0184名無しさん@お腹いっぱい。
2010/03/27(土) 21:49:030185183
2010/03/27(土) 22:01:24sed "s/^CCC333/CCCXXX/" file.hoge1
でいけると思ったのですが。。。
solarisのsh,kshです
0186名無しさん@お腹いっぱい。
2010/03/27(土) 22:03:32ならCのあと何でも3文字いけるお
0187183
2010/03/27(土) 22:08:50ありがとう!
0188名無しさん@お腹いっぱい。
2010/03/28(日) 12:50:530189名無しさん@お腹いっぱい。
2010/03/28(日) 12:52:000190名無しさん@お腹いっぱい。
2010/03/28(日) 12:58:36返信thx!
POSIXシェル、Cシェル、キーシェル、コーンシェル
のどれかを今日中にある程度使えるようになりたいんだけど
何か良い方法ないですかねw
参考サイトや本と、実行環境が整えば・・・
0191名無しさん@お腹いっぱい。
2010/03/28(日) 13:13:36サイトなんてぐぐればたくさん出てくる。
0192名無しさん@お腹いっぱい。
2010/03/28(日) 13:15:210193名無しさん@お腹いっぱい。
2010/03/28(日) 14:36:10そうなのですか
家のfedoraでコーンシェルが動かないっぽくて絶望してました
探してみます
>>192
keysh?らしいです
何かはよくわかりません><
0194名無しさん@お腹いっぱい。
2010/03/28(日) 15:10:10ftp://ftp.kddilabs.jp/Linux/distributions/fedora/releases/12/Everything/i386/os/Packages/ksh-20090630-1.fc12.i686.rpm
0195名無しさん@お腹いっぱい。
2010/03/28(日) 15:20:17有難うございます!
超助かりました。
0196名無しさん@お腹いっぱい。
2010/03/28(日) 17:12:562010年にもなってダイアルアップuucp環境を構築しようとしています('A`)
cronで一定時間毎にuucpキューをチェックして、1つでも中身があればuucicoで
ダイアルアップ接続・・・という事をしたいのですが正直構文がわかりません
uustat -q|wc -lでキューの中身をカウントし、0じゃなければuucicoを実行したいのですが・・・
#!/bin/sh
uustat -q|wc -l
val=$?
if test ${val} -ne 0
then
/usr/sbin/uucico -s uucp-domain
else
echo "no mail in uucp queue."
fi
exit 0
考えたら"wc -l"は行数を表示するコマンドで戻り値は成功すれば0なので
$?も0だから上記の記述じゃ条件が常に偽になりますわな ○<\_
戻り値じゃなくてwc -lの表示結果の数値を変数に格納する方法を教えて下さい
0197名無しさん@お腹いっぱい。
2010/03/28(日) 17:22:330199名無しさん@お腹いっぱい。
2010/03/30(火) 07:03:23CSVファイルをシェル配列に格納していろいろ加工しようと思っています。
が、CSVに空の項目がある場合に上手く格納できず、空項目を無視してしまいます。
------------ソース-------------
cat ${file} | while read line
eval ARRAY="(`cat ${line} | awk {'print $1,$2,$3'}`)"
→以降ARRAYを加工
----------ソースここまで---------
これを実行すると
AAA,BBB,CCC →ARRAY[0] =AAA,ARRAY[1] =BBB,ARRAY[2] =CCC
⇒ 想定通り
,BBB,CCC →ARRAY[0] =BBB,ARRAY[1] =CCC
⇒ ARRAY[0]=””,ARRAY[1] =BBB,ARRAY[2] =CCCにしたい
何か工夫が必要なんでしょうか?
0200199
2010/03/30(火) 07:28:56× awk {'print $1,$2,$3'}
○ awk -F , {'print $1,$2,$3'}
0201名無しさん@お腹いっぱい。
2010/03/30(火) 08:29:01#!/bin/bash
file=hoge.csv
cat ${file} | while IFS=, read ARRAY[0] ARRAY[1] ARRAY[2]; do
echo 0: ${ARRAY[0]}
echo 1: ${ARRAY[1]}
echo 2: ${ARRAY[2]}
done
0202名無しさん@お腹いっぱい。
2010/03/30(火) 21:39:41IFSって上書きした時の影響範囲ってスクリプト内だけなんですね…全体だと思ってました。
教えていただいたソースで実現できました。
ありがとうございます。
が、もう一度処理を見直した結果、ARRAYの加工と同時に元の${line}も使用するので、
一度lineに格納してから改めてARRAYに分割・格納する必要があることが分かりました。
条件が後出しになってしまって申し訳ありませんが、何か方法はないでしょうか?
0203名無しさん@お腹いっぱい。
2010/03/31(水) 01:35:390204名無しさん@お腹いっぱい。
2010/04/01(木) 06:57:16setを使ってみましたが上手くいかず…
ARRAY=`set - ${line}`
でいけるんですか?
0205名無しさん@お腹いっぱい。
2010/04/01(木) 09:17:38set は $1 $2 $3 ... に値をセットする。
0206名無しさん@お腹いっぱい。
2010/04/01(木) 11:45:07つられちゃったw てへっ?☆
0207名無しさん@お腹いっぱい。
2010/04/01(木) 19:42:04line=',aaa,bbb'
IFS=,
ARRAY=($line)
0208名無しさん@お腹いっぱい。
2010/04/08(木) 06:05:00./a &
./b
これだと、2つめのジョブの終了は待ちますが、1つめはまだバックグランドで実行されている可能性が出てしまいます
0209名無しさん@お腹いっぱい。
2010/04/08(木) 06:19:10./b
wait
0210名無しさん@お腹いっぱい。
2010/04/08(木) 06:41:22./a &
./b &
wait
0211名無しさん@お腹いっぱい。
2010/04/08(木) 09:57:16まじ?
0212名無しさん@お腹いっぱい。
2010/04/08(木) 10:03:250213名無しさん@お腹いっぱい。
2010/04/08(木) 22:52:39前スレか前々スレに確かそんな話題があった
0214名無しさん@お腹いっぱい。
2010/04/28(水) 14:12:30シェルスクリプト(bash)内で、非同期で他のシェルを呼び出したり、
javaコマンドを実行したりしたいのですが、どのように書けばよいのでしょうか。
(戻り値は必要無いです。)
0215名無しさん@お腹いっぱい。
2010/04/28(水) 14:12:540216名無しさん@お腹いっぱい。
2010/04/28(水) 14:29:50bashのmanpageみたら確認できました。
(非同期、で検索してたので見落としてました。)
ありがとうございます。
0217名無しさん@お腹いっぱい。
2010/05/05(水) 04:29:57if文で以下、括弧の違いを教えてくれませんか?
ぐぐっても分からなかった・・・
2重も1重も同じとおもってよいのでしょうか?
if [[ xxxx ]];then
if [ xxxx ];then
0218名無しさん@お腹いっぱい。
2010/05/05(水) 05:17:13シェルスクリプトの中で、
ls /honya/* >> list.txt をしたファイル名使いたいのですが、
Directory や Filenameにメタキャラやらスペースがいっぱい
あります。そんなの作るなって言えれば、いいのですが、ユーザ
さんは、Windowsだし。見てるとそれなりに規則性があって
運用してるんだなってわかります。
話がそれましたが、シェルの中での処理を教えて下さい。
よろしくお願いします。
0219名無しさん@お腹いっぱい。
2010/05/05(水) 07:05:17[[ hoge -a boke ]] は文法エラー
[[ hoge && boke ]] と書く
[ hoge && boke ] は文法エラー
[ hoge -a boke ] と書く
-o と || についても同様。
[[ hoge = h* ]] は真
[ hoge = h* ] は偽(ただしカレントディレクトリにhogeというファイルがあると真)
0220名無しさん@お腹いっぱい。
2010/05/05(水) 07:15:24ファイル名に改行コードが含まれていないなら、
ls /honya/* >> list.txt
while IFS= read -r hoge
do
echo "$hoge"
done < list.txt
の形で処理できる(メタキャラやらスペースもOK)
変数を参照する時には "$hoge" のように必ず " " を付けること。
0221名無しさん@お腹いっぱい。
2010/05/05(水) 08:25:45ありがとうございます。さすがです。
読み込んだファイルを sed か tr 一つづつ 変換して書き出すしか
ないかなぁって思ってました。
こんな方法があるのですね。勉強させていただきました。
0222名無しさん@お腹いっぱい。
2010/05/05(水) 09:29:01>>220のようにlsの結果を使うのは素人。↓こういう仮定を勝手に設定してはいけない。
> ファイル名に改行コードが含まれていないなら、
for fname in /honya/*;do echo "$fname";done
が正しい。
0223名無しさん@お腹いっぱい。
2010/05/05(水) 09:38:47おまえ、もっとアホ
それではファイル名のスペースがもろに分離されてしまって
全く動作しない。
まあ、釣りだろうけど
0224名無しさん@お腹いっぱい。
2010/05/05(水) 09:41:43質問自体が、
「lsの結果のファイルがすでにあって、それを処理するスクリプトが欲しい」
ということなのだから、lsの結果を使うことまでは「前提条件」かと。
0225名無しさん@お腹いっぱい。
2010/05/05(水) 10:55:07分離されねーよ。
恥をかきにのこのこ出てきて… これほどのバカはめったにいない。
>>224
ダメな前提の質問なのだから、正しく処理するスクリプトを作成する事は不可能。が正解。
0226名無しさん@お腹いっぱい。
2010/05/05(水) 11:39:49笑殺させられたくないから、もうひとつ先に言っといてやる。
「ARG_MAX超えたら動作しない」とか言い出すなよ。
確実に5人は笑い死にするぞ。
0227名無しさん@お腹いっぱい。
2010/05/05(水) 13:21:18ありがとうございます。
括弧の数によって、&&や-aの使い方が変わるのですね。
一般的には、二重括弧でよいのでしょうか?
0228名無しさん@お腹いっぱい。
2010/05/05(水) 13:27:30一般的には [ ] の方が良い。
[[ ]] は互換性がないので使わない方がよい。
0229名無しさん@お腹いっぱい。
2010/05/05(水) 18:09:03僕の質問が悪くて、申し訳ありません。
取り敢えず、シェルは完成して、今テスト中です。
結局、シェルの中で、Find -type f して、コマンドに
渡しました。
ここにアップしたら、見てもらえるかなぁなんて都合
良すぎ?
エラー処理とか全然してないんですが・・・。
0230名無しさん@お腹いっぱい。
2010/05/05(水) 18:18:340231名無しさん@お腹いっぱい。
2010/05/05(水) 21:51:50人のことくずとか言うな。
何様?
0232名無しさん@お腹いっぱい。
2010/05/05(水) 21:54:430233名無しさん@お腹いっぱい。
2010/05/05(水) 22:26:27引っ込んでろ。クズ。
0234名無しさん@お腹いっぱい。
2010/05/05(水) 22:36:54おまえさぁ、ここUnix板だぜ。
技術系の板で、あほか。
0235名無しさん@お腹いっぱい。
2010/05/05(水) 22:42:520236名無しさん@お腹いっぱい。
2010/05/05(水) 23:10:59意味不明。引っ込んでろ。クズ。
0237名無しさん@お腹いっぱい。
2010/05/05(水) 23:21:520238名無しさん@お腹いっぱい。
2010/05/06(木) 04:01:37新参乙です(悪いとは言ってない)
さんざんガイシュツ。
ま、ここの人は優しいから俺以外のシッタカが教えてくれます。
0239名無しさん@お腹いっぱい。
2010/05/06(木) 04:30:310240名無しさん@お腹いっぱい。
2010/05/06(木) 12:25:18ローカルと別のマシン hoge.example.net とで同期したいとします。
#!/bin/sh
cd
rsync -avzu -e ssh {tex,org,.emacs.d,.w3m} hoge.example.net:
rsync -avzu -e ssh hoge.example.net:\{tex,org,.emacs.d,.w3m\} .
とすればできますが、この {tex,org,.emacs.d,.w3m} 部分を1つの変数
export FILES="{tex,org,.emacs.d,.w3m}"
のようにしたいのです。これでは {} が展開されず、そんなファイル名はありませんとなります。
for で回すのも手ですが、rsync を何度も呼び出すことになりコストがかさむため一度のrsyncで行いたいのです。
どのようにすればうまく一つの変数に入れられるでしょうか?
0241名無しさん@お腹いっぱい。
2010/05/06(木) 12:48:380242名無しさん@お腹いっぱい。
2010/05/06(木) 12:50:58普通に空白区切りの変数でいいじゃないか
0243名無しさん@お腹いっぱい。
2010/05/06(木) 13:06:200244名無しさん@お腹いっぱい。
2010/05/06(木) 13:08:32eval
0245名無しさん@お腹いっぱい。
2010/05/06(木) 13:15:37その判断基準だとOpenSolarisも板違いになってしまいますな。
0246名無しさん@お腹いっぱい。
2010/05/06(木) 13:16:010247名無しさん@お腹いっぱい。
2010/05/06(木) 13:17:58OpenSolarisの /bin/sh の正体は ksh93 (Solaris10以前とは違う)
OpenSolarisの bashは /bin/bashで、/bin/shとは別。
0248240
2010/05/06(木) 13:36:52空白区切りだと hoge.example.net:を全てに付与できなさそうなのです。
>>243
wwwwwww
Mac OS XなのでUNIXですけどwwww
>>244
とりあえず eval でいけそうですね。
FILES="{tex,org,.emacs.d,.w3m}"
rsync -avzu -e ssh `eval echo ${FILES}` hoge.example.net:
rsync -avzu -e ssh `eval echo hoge.example.net:${FILES}` .
こういう感じでしょうか
ありがとうございました。
0249名無しさん@お腹いっぱい。
2010/05/06(木) 13:39:14> rsync -avzu -e ssh `eval echo hoge.example.net:${FILES}` .
こっちはeval不要。
0250240
2010/05/06(木) 13:50:49% ls -l /bin/{sh,bash}
-rwxr-xr-x 1 root wheel 1346544 2010-02-05 09:41 /bin/bash*
-r-xr-xr-x 1 root wheel 1346624 2010-02-05 09:43 /bin/sh*
% diff /bin/{sh,bash}
Binary files /bin/sh and /bin/bash differ
微妙に違うみたいですがほとんど同じなのかも知れません。
eval 不要でしょうか?
evalがないと、
ls -d `echo hoge.example.net:${FILES}`
ls: cannot access hoge.example.net:{tex,org,.emacs.d,.w3m}: No such file or directory
となって{}を展開してくれませんでした。
0251名無しさん@お腹いっぱい。
2010/05/06(木) 14:00:100252名無しさん@お腹いっぱい。
2010/05/06(木) 14:01:45rsync -avzu -e ssh hoge.example.net:${FILES} .
ところで、FILESじゃなくてDIRSだろ。
0253名無しさん@お腹いっぱい。
2010/05/06(木) 14:04:080254名無しさん@お腹いっぱい。
2010/05/06(木) 14:27:32なぜ?
0255名無しさん@お腹いっぱい。
2010/05/06(木) 22:19:46$ echo $SHELL
/bin/bash
$ bash --version
GNU bash, version 3.2.17(1)-release (i386-apple-darwin9.0)
Copyright (C) 2005 Free Software Foundation, Inc.
0256名無しさん@お腹いっぱい。
2010/05/07(金) 12:22:190257名無しさん@お腹いっぱい。
2010/05/07(金) 21:52:57お前バカだろ
0258名無しさん@お腹いっぱい。
2010/05/07(金) 22:02:52$ /bin/sh --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)
Copyright (C) 2007 Free Software Foundation, Inc.
$ ls -il /bin/sh /bin/bash
12727992 -rwxr-xr-x 1 root wheel 1346544 2010-02-05 09:41 /bin/bash*
12728038 -r-xr-xr-x 1 root wheel 1346624 2010-02-05 09:43 /bin/sh*
てっきりハードリンクだろうと思ったらちがったので驚いている。
0259名無しさん@お腹いっぱい。
2010/05/07(金) 22:03:23Mac OS Xの /bin/shは Bash七日? と聞いてるんだから、
$ /bin/sh --version の結果を貼らないと。
0260名無しさん@お腹いっぱい。
2010/05/08(土) 00:10:320261名無しさん@お腹いっぱい。
2010/05/09(日) 04:44:03Ex.
Pos: 0.3s 10f ( 0%) 4.88fps Trem: 15min 14mb A-V:0.023 [0:0]
こういったコマンドの表示を必要な部分だけ切り出して表示したり、
プログレスバーを作ったりしたいのですが可能でしょうか?
Bashでエスケープシーケンスを使うんだろうなぁって思うのですが、とっ
かかりが分からなくて。
ご存じであれば、ご教授お願いします。
0262名無しさん@お腹いっぱい。
2010/05/09(日) 10:17:470263名無しさん@お腹いっぱい。
2010/05/09(日) 10:36:480264名無しさん@お腹いっぱい。
2010/05/09(日) 11:07:02bash仮定していいのかな、この場合。
* IFSとset
* ${var#pattern} # のほかに ## % %% など。
* sedのような外部コマンド
0265名無しさん@お腹いっぱい。
2010/05/09(日) 11:15:18mencoderだということをわかって回答してる?
mencoderが出してくるメッセージは改行なしで1行を書き換えたりしてるので、
行単位に処理する方法では対応できないし、画面に見える文字のまま取り出せる
わけではないんだよ。
0266名無しさん@お腹いっぱい。
2010/05/09(日) 11:24:15( i )))
/ ̄\ / /
| ^o^ | ノ / < いみがわかりませんなぁ
\ / ,/
/ _ /´
(___)/
0267名無しさん@お腹いっぱい。
2010/05/09(日) 11:36:33でも、mencoder改造した方が楽だよね。
0268名無しさん@お腹いっぱい。
2010/05/09(日) 11:45:22いや、少なくとも ESC [ J とかのシーケンスは含まれてる。
0269名無しさん@お腹いっぱい。
2010/05/09(日) 11:49:430270名無しさん@お腹いっぱい。
2010/05/10(月) 16:00:31バッククォートによるコマンド置換の説明で以下のコマンドが出てきました。
STRING=`echo "abc \`echo def\` ghi"`
echo $STRING
期待値は abc def ghi ですが、
\`echo def\` 部分が `echo def` という文字列にならずコマンドとして
認識されるい理由がわかりません。
かといってバックスラッシュ取っちゃうと動かないわけで。
0271名無しさん@お腹いっぱい。
2010/05/10(月) 16:16:21外側の ` ` で囲まれている時点で、
たとえ " " で囲んでも、" " の中のバッククォートの意味は消えない。
よって、` ` のネスティングとみなされてコマンド置換される。
バックスラッシュを取ると動かなくなるのは、
そうすると最初の `echo "abc ` まででクォートとみなされて
解釈が期待通りにならないから。
0272名無しさん@お腹いっぱい。
2010/05/10(月) 16:22:33バックスラッシュの部分は、シェルと、外側のechoコマンドとによって
2回解釈されるので、解釈の結果コマンド置換が実行される。
0273名無しさん@お腹いっぱい。
2010/05/10(月) 16:28:16大外の `` がポイントということですか。納得です。
バックスラッシュ取ると動かなくなる理由は、そいういう
ことなんだろうなと思ってました。
即レスTHXです。
0274名無しさん@お腹いっぱい。
2010/05/10(月) 16:56:170275名無しさん@お腹いっぱい。
2010/05/10(月) 16:58:040276名無しさん@お腹いっぱい。
2010/05/10(月) 17:11:09まだ最初の数十ページしか読んでないけど、丁寧に説明してくれてて
読みやすい。tips的な解説もあるし。
どういうところが古臭いと感じるん?
>>274
( ) の説明はまだ数ページ先だ!笑
0277名無しさん@お腹いっぱい。
2010/05/14(金) 13:41:09echo hoge > /dev/tcp/192.168.0.10/5000
を実行したのですが、接続されません。
/dev/tcp/192.168.0.10/5000: No such file or directory
になってしまいます。なぜでしょうか。
192.168.0.10:5000にはサーバプログラムが存在してて
telnet等で接続可能な状態です。
0278名無しさん@お腹いっぱい。
2010/05/14(金) 13:45:410279名無しさん@お腹いっぱい。
2010/05/14(金) 14:01:13Linux板に行ってきます。
0280名無しさん@お腹いっぱい。
2010/05/14(金) 14:02:41エスパーすると、bashを使ってるつもりでbashではないのでは?
接続されない場合は、connect: Connection refused と表示され、
No such file or directory とはならない。
bash以外のシェルだと、No such file or directoryになるので。
0281名無しさん@お腹いっぱい。
2010/05/14(金) 14:07:11間違えて csh(笑) で実行するとそのメッセージになるな。
0282名無しさん@お腹いっぱい。
2010/05/14(金) 14:31:110283名無しさん@お腹いっぱい。
2010/05/14(金) 14:45:010284名無しさん@お腹いっぱい。
2010/05/14(金) 14:48:160285名無しさん@お腹いっぱい。
2010/05/14(金) 14:54:180286名無しさん@お腹いっぱい。
2010/05/14(金) 14:56:05linuxじゃなくても bashなら /dev/tcp は使えるよ。デバイスファイルじゃないし。
>>285
おまえあほ。
/dev/tcpなんてデバイスファイルはない。
これは Bashの機能。
FreeBSDでも bashを使えば /dev/tcp は使える。
0287名無しさん@お腹いっぱい。
2010/05/14(金) 15:11:540288名無しさん@お腹いっぱい。
2010/05/14(金) 15:15:28言い訳見苦しいね。Linuxを目のカタキにしてると /dev/tcpが Linux独自のデバイスに
見えたんだろうね。*BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
0289名無しさん@お腹いっぱい。
2010/05/14(金) 15:30:24必死だな。バカ。
そのように見えたというソース出せよ。ww
0290名無しさん@お腹いっぱい。
2010/05/14(金) 15:42:30>>285
0291名無しさん@お腹いっぱい。
2010/05/14(金) 15:59:19ソケットを開くという特別解釈をbashの中でしてるんだ。 キモイ。
0292名無しさん@お腹いっぱい。
2010/05/14(金) 16:01:29> 言い訳見苦しいね。Linuxを目のカタキにしてると /dev/tcpが Linux独自のデバイスに
> 見えたんだろうね。*BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
こういうバカな思いつきをするんだろうな。
お前、昨日FreeBSDスレに居たJava厨だろ。バカさ加減が同レベルだ。ww
0293名無しさん@お腹いっぱい。
2010/05/14(金) 16:09:27>バカ? /dev/tcpだから犬板行けって言ったんだよ。
>バカ? /dev/tcpだから犬板行けって言ったんだよ。
>バカ? /dev/tcpだから犬板行けって言ったんだよ。
とても恥ずかしいことなので3回言いましたwww
0294名無しさん@お腹いっぱい。
2010/05/14(金) 16:14:34$ bash --version
GNU bash, version 3.2.17(1)-release (i386-apple-darwin9.0)
Copyright (C) 2005 Free Software Foundation, Inc.
$ exec 3<>/dev/tcp/www.google.com/80
$ echo -e "GET / HTTP/1.1¥n¥n">&3
$ cat <&3
HTTP/1.1 200 OK
Date: Fri, 14 May 2010 07:12:54 GMT
...
0296名無しさん@お腹いっぱい。
2010/05/14(金) 16:25:14/dev/tcp じゃなくて /inet/tcp だけど。
0297名無しさん@お腹いっぱい。
2010/05/14(金) 19:17:20お前本当に頭が弱いな。
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
使えてりゃ質問しねーんだよ。www
0298名無しさん@お腹いっぱい。
2010/05/14(金) 19:22:04お前本当に頭が弱いな。
bashで /dev/tcpが使えるはずなのに使えなかったから質問してたんだろ。
(もともと使えないものならそもそもそういう使い方をしないから質問もしない)
(オチは、./configure 時に --disable してただけ)
ところが、>>285 は、/dev/tcpというデバイスファイルがLinuxにはあって、
Linuxでしか /dev/tcpが使えないものと勘違いしたんだよ、、、
0299名無しさん@お腹いっぱい。
2010/05/14(金) 20:20:13お前かわいそうなくらい頭が弱いな。
> ところが、>>285 は、/dev/tcpというデバイスファイルがLinuxにはあって、
> Linuxでしか /dev/tcpが使えないものと勘違いしたんだよ、、、
それはお前の妄想。
*BSD(のports, pkgsrc)、Solaris(のコンパイル済みの奴)は使えるように
コンパイルしてある。従って使えないのは>>283の指摘通りそのようにコ
ンパイルしているから。
従って、>>285
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
使えてりゃ質問しねーんだよ。www
0300名無しさん@お腹いっぱい。
2010/05/14(金) 20:42:33お前かわいそうなくらい頭が弱いな。
>>283 は俺だ。で、>>283 = >>298 = 俺だ。
結局俺の指摘が正しかった。
ちなみに、>>286 も俺。
だから、>>286 に指摘されるまで、 >>285 は /dev/tcp がLinux特有だと勘違いしていた。
0301名無しさん@お腹いっぱい。
2010/05/14(金) 20:48:37bashの/dev/tcpの質問に対して、「Linux板に行きなさい」と言った理由が
合理的に説明できないな。
よって、>>285 = >>283 は bashの/dev/tcp について知らなかった。
ここまでは決定的事実。
で、そこから演繹される事実として、
Linuxには/dev/tcpというデバイスファイルがあって、
Linuxカーネルによって/dev/tcpが処理されてる→Linux特有だからLinux板行け、
と誤って言ってしまったと言える。
0302名無しさん@お腹いっぱい。
2010/05/14(金) 20:50:51安価おかしくない?
>>285 = >>278 だろ?
0303名無しさん@お腹いっぱい。
2010/05/14(金) 20:56:37> bashの/dev/tcpの質問に対して、「Linux板に行きなさい」と言った理由が
> 合理的に説明できないな。
既に楽勝でしている。お前の低性能なJava脳がそれを理解できないだけ。ww
0304名無しさん@お腹いっぱい。
2010/05/14(金) 21:14:27>既に楽勝でしている。
って、
↓
>>287
>バカ? こんな腐った機能を無効にしてる良心的なディストリもあるから犬板行けって言ったんだよ
↑
これのことだよね。
これって、俺が >>283 で
>ディス鳥によっては /dev/tcpの機能がdisableされてコンパイルされてるらしい。
って正解言った後の、後出しじゃん。
つまり、>>287 は >>283 を見るまでは /dev/tcpについて知らなかったwww
0305名無しさん@お腹いっぱい。
2010/05/14(金) 21:25:46わざわざ見に来る甲斐があるわ
0306名無しさん@お腹いっぱい。
2010/05/14(金) 21:37:56低脳全開だな。犬板への誘導はオレ(>>278)が真っ先にしている。
一々理由を説明する必要は無い。
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
使えてりゃ質問しねーんだよ。www
0307名無しさん@お腹いっぱい。
2010/05/14(金) 21:39:000308名無しさん@お腹いっぱい。
2010/05/14(金) 21:55:530309名無しさん@お腹いっぱい。
2010/05/14(金) 22:01:55「使えてりゃ質問しねーんだよ。」って何度も言ってるけど、
じゃあ、「*BSDでもSolarisでも bashで /dev/tcpは使えない」と主張したいの?
だとすると違うよ。実際使えるし。
ああ、やっぱり「Linuxのみで使える機能」と未だに思ってるんだな。
だから >>278 「犬板に行きなさい。」なんて言ったんだな(笑)
0310名無しさん@お腹いっぱい。
2010/05/14(金) 22:05:01> 犬板への誘導はオレ(>>278)が真っ先にしている。
↑っ言ってるけど、「犬板への誘導」自体が間違い、というのが結論なんだけど。
つまり、>>306 は、「真っ先に間違いを書き込みました」って
自分で認めてることになる。
よって、>>306 の負け。
0311名無しさん@お腹いっぱい。
2010/05/14(金) 22:08:55> ディス鳥によっては /dev/tcpの機能がdisableされてコンパイルされてるらしい。
が正解だけど、補足すると、「ディス鳥によっては」の部分は重要じゃなくて、
「/dev/tcpの機能はbashのコンパイル時に無効にすることもできる」
ってのがポイント。*BSDでもSolarisでも、/dev/tcp無効のbashは作れる。
よって、>>283 はLinux板に誘導はしていないし、Linux特有とも言ってない。
Linux板に誘導した >>278 、Linux特有と勘違いした >>278 が間違い。
0312名無しさん@お腹いっぱい。
2010/05/14(金) 22:12:08お前がバカで理解できないだけ。
>>310
> 「犬板への誘導」自体が間違い、というのが結論なんだけど。
お前の妄想。
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
使えてりゃ質問しねーんだよ。www
0313名無しさん@お腹いっぱい。
2010/05/14(金) 22:12:58>>285
> バカ? /dev/tcpだから犬板行けって言ったんだよ。
を書いてる時点で、
>>283
>ディス鳥によっては /dev/tcpの機能がdisableされてコンパイルされてるらしい。
はすでに読んでたはずだけど、この「コンパイル」というのが、
bashのコンパイルじゃなくて、Linuxカーネルのコンパイルのこどだと
>>285 が誤解したんだろうな。
だから、>>283 を読んだ時点でもまだ「Linux特有の機能」と思い込んでいたからこそ、
>>285 みたいなことを書いたと説明がつく。
0314名無しさん@お腹いっぱい。
2010/05/14(金) 22:14:08壊滅的にバカだな。
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
使えてりゃ質問しねーんだよ。www
0315名無しさん@お腹いっぱい。
2010/05/14(金) 22:17:00>> 「犬板への誘導」自体が間違い、というのが結論なんだけど。
> お前の妄想。
↑
ということは、「犬板への誘導が正しい」と主張するわけ??
だったら、/dev/tcp が Linux独自のデバイスファイルであると
まだ思い込んでるの??
あと、試しに手元のFreeBSDとかのbashで試してみろ。
ちゃんと/dev/tcpが使えるから。
それでLinux板への誘導が間違ってたことが理解できたかい?
0316名無しさん@お腹いっぱい。
2010/05/14(金) 22:24:16ディストリよっては無効にされている場合がある。これはお前も言っている事だ。
この板で「XXというディストリです」と言われても「おそらく無効になっている」事しか
わからない、犬板なら「そのディストリは無効になっている」事までわかる。
だから犬板で聞くのが正しい。
> ということは、「犬板への誘導が正しい」と主張するわけ??
> ということは、「犬板への誘導が正しい」と主張するわけ??
> ということは、「犬板への誘導が正しい」と主張するわけ??
> ということは、「犬板への誘導が正しい」と主張するわけ??
> ということは、「犬板への誘導が正しい」と主張するわけ??
> ということは、「犬板への誘導が正しい」と主張するわけ??
お前、バカすぎる。考える事を止めた方が良い。www
0317名無しさん@お腹いっぱい。
2010/05/14(金) 22:28:48「*BSDでもSolarisでも bashで /dev/tcpは使える」は正しい。
「*BSDでもSolarisでもLinuxでも bashで /dev/tcpは使える」も正しい。
「*BSDでもSolarisでもLinuxでも、bashの./configureで/dev/tcpを無効にできる」も
正しい。
よって、どこにもLinux特有の事項がない。
元質問の >>277 にはOSは書いてなくて、
bashで/dev/tcp云々としか書いてないから、
これだけだと FreeBSDやSolarisで、bashを自分で./configureして
使っている可能性もある。
よって、>>277 の質問だけで >>278「犬板に行きなさい。」と言ったということは、
>>278 が /dev/tcpがLinux独自の機能だと誤解していたからに他ならない。
0318名無しさん@お腹いっぱい。
2010/05/14(金) 22:32:29>この板で「XXというディストリです」と言われても
↑言ってないことを仮定するな。事実を曲げるな。
元質問者の >>277 はディストリもOSも言ってない。
それから、>>283 「ディス鳥によっては /dev/tcpの機能がdisable…」を
見るまで正解を知らなかったくせに、後出しで >>283 が言ったことを
最初から知ってたようなふりするのをやめろ。
0319名無しさん@お腹いっぱい。
2010/05/14(金) 22:36:24UNIX板的には、bashを objdump -T してみて、
socket()などのネットワーク系の関数が呼び出されているかを確認して、
本当に /dev/tcpの機能が compile in されてるかどうか確認する方法を
教えることもできたはずだ。
これも、OSもディストリも関係なく行なえる方法だ。
なのに、>>278「犬板に行きなさい。」 がすべてを台無しにした。
0320名無しさん@お腹いっぱい。
2010/05/14(金) 22:44:05記述されていなくてもわかる。
デフォルト有効なのだから、野良コンパイルした場合に、知らずに無効になっている事はない。
従って、コンパイル済み(もしくはmake一発のports, pkgsrc)と予想できる。
そして、ports,Solarisは有効になっているのだから、残りはLinuxと予想できる。
バ カ に は 予 想 出 来 な い ら し い が。 w w w
>>318
知らなかったというのはお前の妄想。www
> 元質問者の >>277 はディストリもOSも言ってない。
犬臭さが漂ってるから楽勝でわかる。事実あたっている。
0321名無しさん@お腹いっぱい。
2010/05/14(金) 22:44:22>「XXというディストリです」と言われても「おそらく無効になっている」事しか
>わからない
>>319 が言うように、objdump -T で、/dev/tcpが無効になってるかどうか
確認する方法を知らなかったんですね(笑)
0322名無しさん@お腹いっぱい。
2010/05/14(金) 22:47:42>野良コンパイルした場合に、知らずに無効になっている事はない
↑
知らずに無効になっている事は「ある」
野良コンパイルの参考に、Web等から ./configureのオプションをコピペして、
本人も忘れてることなんて普通にある。
0323名無しさん@お腹いっぱい。
2010/05/14(金) 22:47:45この予想プロセスはちょっと感心した
0324名無しさん@お腹いっぱい。
2010/05/14(金) 22:49:49後出しの言い訳。必死だな。
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
使えてりゃ質問しねーんだよ。www
0325名無しさん@お腹いっぱい。
2010/05/14(金) 22:51:14後出しジャンケンだから何でも言えるよな。
実際そんな予想ができてたわけないのに。
0326名無しさん@お腹いっぱい。
2010/05/14(金) 22:55:200327名無しさん@お腹いっぱい。
2010/05/14(金) 22:56:16「*BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww」
って、誰への反論なの?
実際*BSDでもSolarisでも bashで /dev/tcpは使えるし、
>>324 自身は使えないと思ってたんだとすると、
>>324 が言ってることは「自分が間違ってたと」自分に言ってることになるだけど、、
0328名無しさん@お腹いっぱい。
2010/05/14(金) 23:03:24・/dev/tcpはLinux独自のデバイスファイルだと思っていた
・bashが/dev/tcpを特別扱いすることを知らなかった
・FreeBSD等でも、bashで/dev/tcpを使えることを知らなかった
・bashのコンパイル時に/dev/tcpを無効にすることができることを知らなかった
・OSやディス鳥がわからなくても、bashバイナリをobjdump -Tして調べる方法を知らなかった。
0329名無しさん@お腹いっぱい。
2010/05/14(金) 23:08:170330名無しさん@お腹いっぱい。
2010/05/14(金) 23:12:380331名無しさん@お腹いっぱい。
2010/05/14(金) 23:17:18>>288に決ってんだろ。
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
使えてりゃ質問しねーんだよ。www
>>328
バカが、必死すぎる。www
0332名無しさん@お腹いっぱい。
2010/05/14(金) 23:19:13>・/dev/tcpはLinux独自のデバイスファイルだと思っていた
俺も最初そう思っちゃった。 で、自分のシステムには無いから
一生懸命カーネルオプションをあさり始めたw
0333名無しさん@お腹いっぱい。
2010/05/14(金) 23:27:55それを >>288 に言ってるなら、全然反論になってないじゃん。
>>288 の言ってることが正しいんだし。
0334名無しさん@お腹いっぱい。
2010/05/14(金) 23:31:47質問と回答は、質問者だけのものではない。
その質問と回答を読んだ第3者にとっても有益であるべきものだ。
質問がLinux独自のもので、Linux以外のUNIXユーザーに無益なものなら
Linux板への誘導が適当であろう。
ところが、>>288 が言うように、
「*BSDでもSolarisでも bashで /dev/tcpは使える」
よって、bashの/dev/tcpに関する質問と回答をUNIX板で行なうことは
UNIXユーザーにとって有益である。
0335名無しさん@お腹いっぱい。
2010/05/14(金) 23:38:09>>277が使用しているのが*BSDやSoalrisであるならば動くのだから、
*BSDでもSolarisを持ち出すのは的外れ。
そんな単純な事に気付かない>>288を大笑いしている。
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
使えてりゃ質問しねーんだよ。www
0336名無しさん@お腹いっぱい。
2010/05/14(金) 23:43:48後付け&&自演乙
個々のディストリのコンパイルオプションなんて興味ねーんだよ。
しかもスクリプトに関する質問じゃねーし。
0337名無しさん@お腹いっぱい。
2010/05/14(金) 23:44:06> >>277が使用しているのが*BSDやSoalrisであるならば動くのだから、
↑
その仮定が間違い。
>>322 で言ってるように、*BSDやSoalrisの野良コンパイルで、
知らずに /dev/tcpを無効にしてしまってることはある。
それから、
>>288 は質問者に対して答えてるんじゃなくて、
>>287 が/dev/tcpのことについて知らなかったみたいだから、
「*BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww」
と教えてあげてるんだよ。
いずれにしても、キミが最初から本当に /dev/tcpのことを知っていた上で
Linux板に誘導したのではないことはバレバレ何だから、
見苦しい言い訳はやめとけ。
0338名無しさん@お腹いっぱい。
2010/05/14(金) 23:46:57>しかもスクリプトに関する質問じゃねーし。
↑
ハイ、ここ間違い。/dev/tcpはスクリプトに関する質問。
インタラクティブにも使おうと思えば使えるが、
インタラクティブならtelnetとかnetcatが使えるからそんなことしない。
/dev/tcpでやろうとするのはスクリプトの場合。
0339名無しさん@お腹いっぱい。
2010/05/14(金) 23:48:49お前にはわからなかっただけで高い確率で予想出来ていた。事実合っている。
お前の言いがかりは既に論破されてる。低性能なJava脳のではそれが理解できてないだけ。
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
使えてりゃ質問しねーんだよ。www
0340名無しさん@お腹いっぱい。
2010/05/14(金) 23:49:05このファイルディスクリプタの3がwww.google.comに対して
開かれているというのを調べる方法を教えて下さい。
lsofで調べてみたけど分かんなかった
0341名無しさん@お腹いっぱい。
2010/05/14(金) 23:51:52ls -l /proc/プロセスID/fd/3
でわかるでしょ?
0342名無しさん@お腹いっぱい。
2010/05/14(金) 23:58:45それだとsocketだということしかわからない。
>>340
lsof -i で接続先のホスト名まで出るけど
0343名無しさん@お腹いっぱい。
2010/05/15(土) 00:10:19ありがとうございます。
lsof -i
で出ました;-)
0344名無しさん@お腹いっぱい。
2010/05/15(土) 00:11:23知っていた可能性はゼロ。
実際には、/dev/tcpというLinuxのデバイスだのbashだののキーワードに
脊髄反射して「Linux板池」と言った。
ところが、>>283 によって/dev/tcpのことを説明され、
恥をかいた >>339 は、最初から/dev/tcpのことを知っていたかのように
装い始めた、というのが真相。
本当に最初から/dev/tcpのことを知っていたなら、
>>278 で「犬板に行きなさい」なんて言わずに、
たとえば「うちのFreeBSDでは >>277 でうまく行くけど」とか、
「bashのバージョンは?」とか、
そういう反応になっていたはず。
そういう反応になっていなかったということは、
>>278 は /dev/tcp を知らなかった、が結論。
0345名無しさん@お腹いっぱい。
2010/05/15(土) 00:16:31すでに論破された妄想を繰り返すな。見苦しい。
お前のバカを基準にして言いがかりをつけていただけ。
↓バカの証
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
使えてりゃ質問しねーんだよ。www
0346名無しさん@お腹いっぱい。
2010/05/15(土) 00:18:31で、結局どのUnixなのか気になるから教えてくれません?
0347346
2010/05/15(土) 00:29:08ubuntuでは出来なかった。 deb系では無い?
ぐぐったらこんなの見つけたw
Debian Bug report logs - #146464
bash: /dev/tcp should be enabled by default
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=146464
最初にレポートされたのが2002年でずっと無視されてるw
0348名無しさん@お腹いっぱい。
2010/05/15(土) 01:45:570349名無しさん@お腹いっぱい。
2010/05/15(土) 07:16:25何言ってるの?
>>345 はすでに論破されている。
というか、>>333 が言ってるように、
何度もコピペしてる >>345 等は最初から論点がズレていて
反論になってない。だから何回コピペしてもほとんど相手にされてない。
もう一度まとめると、
>>278 = >>285 が知らなかった(そして恥をかいた)こと。
・/dev/tcpはLinux独自のデバイスファイルだと思っていた
・bashが/dev/tcpを特別扱いすることを知らなかった
・FreeBSD等でも、bashで/dev/tcpを使えることを知らなかった
・bashのコンパイル時に/dev/tcpを無効にすることができることを知らなかった
・OSやディス鳥がわからなくても、bashバイナリをobjdump -Tして調べる方法を知らなか
った
・野良ビルドでも、Web上のコマンドラインをコピペして知らずにdisableオプションを付
けていて本人が忘れてることが良くあることを知らなかった
・/dev/tcpはスクリプトで使うものだと知らなかった(>>338 が指摘)
0350名無しさん@お腹いっぱい。
2010/05/15(土) 07:25:17は論点のすり替えだな。
>>288
>言い訳見苦しいね。Linuxを目のカタキにしてると /dev/tcpが Linux独自のデバイスに
>見えたんだろうね。*BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
↑が言ってるのは、「/dev/tcpはLinuxだけで使える」←に対する反論として、
「*BSDでもSolarisでも bashで /dev/tcpは使える」と言ってるに過ぎない。
「使えてれば質問しないかどうか」の結果がどうであれ、
「/dev/tcpはLinuxだけで使える」←が間違いであると言う事実の主張に対する
反論にはならない。
「/dev/tcpはLinuxだけで使える」と思っていた >>278 = >>285 が
苦肉の策で思いついた言い訳が >>345 他多量の同文コピペというわけだなwww
0351名無しさん@お腹いっぱい。
2010/05/15(土) 08:27:43>>277 (元質問)
↓
>>280 (/dev/tcpがbashの機能だと正しく知ってる回答者)
>エスパーすると、bashを使ってるつもりでbashではないのでは?
>>285 (/dev/tcpはLinuxの機能だと誤解してる馬鹿)
>バカ? /dev/tcpだから犬板行けって言ったんだよ。
↑ 285の「バカ」は280に対して言っている。つまり、
「bashをいくら追求しても、Linuxじゃない限り/dev/tcpは使えない」と
思い込んでいる。
「/dev/tcpだから犬板」という言い方は「/dev/tcpイコールLinux」と考えてるからこそ
出てくる言葉。
↓
>>286 (/dev/tcpはbashの機能であってLinux独自のものじゃないことの指摘)
>/dev/tcpなんてデバイスファイルはない。
>これは Bashの機能。
↓
>>287 (見苦しい言い訳)
>バカ? こんな腐った機能を無効にしてる良心的なディストリもあるから犬板行けって言
ったんだよ。
>>287 と >>285 とで、言ってることが自己矛盾してる。
>>286 の指摘を見てから言い訳を考えてるから、書き込みに15分以上もかかってるw
0352名無しさん@お腹いっぱい。
2010/05/15(土) 08:32:00弱いお頭で必死に考えた妄想だけでは事実を捻じ曲げられない。
冤罪足利事件みたいに客観的事実と強弁できるソースを捏造しないとな。
お前が一昨日必死になっていた、「ソース出せ。」ってやつだな。wwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
使えてりゃ質問しねーんだよ。www
0353名無しさん@お腹いっぱい。
2010/05/15(土) 08:34:29さて、渾身の反論に何分かかるか。まさか、15分以上はかからないよな。
お頭が悪いと墓穴を掘る。www
0354名無しさん@お腹いっぱい。
2010/05/15(土) 08:36:43それ反論になってないから、
>>349 >>350 >>351 に対して反論してくれるかな?
今のところ >>349 >>350 >>351 に対しての反論がないので、
>>349 >>350 >>351 が正しい以上、>>352 の負けだ。
0355名無しさん@お腹いっぱい。
2010/05/15(土) 08:40:01全然関係ないけど、
>お前が一昨日必死になっていた、「ソース出せ。」
って何のこと? 俺じゃないよ。
あと、Javaがどうこうのカキコもあったけど、それも俺じゃない。
0356名無しさん@お腹いっぱい。
2010/05/15(土) 08:44:06朝からν即並みに張り付いて必死だな。www
何回リロードしたんだ。www
> 今のところ >>349 >>350 >>351 に対しての反論がないので、
論破済みの戯言には反論する必要なし。
>>320に反論出来てないのでお前の負け。www
これはお前が持ち出したルール。 お頭が弱いと墓穴掘る。wwww
0357名無しさん@お腹いっぱい。
2010/05/15(土) 08:48:12>>320 に対する反論は >>322 で即攻でしてる。
>>322
>知らずに無効になっている事は「ある」
>野良コンパイルの参考に、Web等から ./configureのオプションをコピペして、
>本人も忘れてることなんて普通にある。
で、 >>349 >>350 >>351 に対する反論まだぁ??
0358名無しさん@お腹いっぱい。
2010/05/15(土) 08:50:33>論破済みの戯言には反論する必要なし。
↑
どこにも「論破」されてないし、
「反論する必要なし」というなら、反論できないことを認めたんだな。
じゃあ、>>356 は負けを認めたww
0359名無しさん@お腹いっぱい。
2010/05/15(土) 09:00:37あれで反論のつもりかよ。www
「予想できる」を論破するには「100%有り得ない」事を立証する必要があるんだよ。
バカは何処までいってもバカだな。
お前が言い出したルールで、>>320に反論出来なかったお前の負け決定。www
0360名無しさん@お腹いっぱい。
2010/05/15(土) 09:01:54> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
> *BSDでもSolarisでも bashで /dev/tcpは使えるんだよwww
使えてりゃ質問しねーんだよ。www
0361名無しさん@お腹いっぱい。
2010/05/15(土) 09:06:45お前が言い出したんだからお前は15分以内にレスしろよ。www
バカは墓穴を掘る。www
> >>286 の指摘を見てから言い訳を考えてるから、書き込みに15分以上もかかってるw
> >>286 の指摘を見てから言い訳を考えてるから、書き込みに15分以上もかかってるw
> >>286 の指摘を見てから言い訳を考えてるから、書き込みに15分以上もかかってるw
> >>286 の指摘を見てから言い訳を考えてるから、書き込みに15分以上もかかってるw
> >>286 の指摘を見てから言い訳を考えてるから、書き込みに15分以上もかかってるw
0362名無しさん@お腹いっぱい。
2010/05/15(土) 09:06:48論理が間違ってるよ。
この場合は 0%ではないことを示せば十分だから、
>>320 は >>322 で論破されてる。
>>360
それは反論になってないし、論点にもなってない。
そのことは >>350 で言ってる。
>>350 に反論できないなら、>>360 のコピペを何回やっても無駄。
0363名無しさん@お腹いっぱい。
2010/05/15(土) 09:10:02>>285 (/dev/tcpはLinuxの機能だと誤解してる馬鹿)
>バカ? /dev/tcpだから犬板行けって言ったんだよ。
この発言が致命症だね。
「/dev/tcpだから犬板」とストレートに言ってる。
弁解の余地なし。
0364名無しさん@お腹いっぱい。
2010/05/15(土) 09:18:29論理 wwww
「矛盾しない」事を理解できなかった知恵遅れが「論理」www
バカが気付かずに無効にした経験を持ち出して
> 知らずに無効になっている事はない。
に反論した気になってるんだ。www 笑う。www
この部分はバカを考慮すれば、
> 知らずに無効になっている事は少ない。
という事になるが、これでも>>320の論理は全く変わらない。
お前が言い出したルールで、>>320に反論出来てないお前の負け決定。www
0365名無しさん@お腹いっぱい。
2010/05/15(土) 09:24:28>>320 に対する反論は >>322 で終了。
で、>>349 >>350 >>351 に対する反論まだぁ??
反論が大変ならとりあえず、
>>363 に反論しろよ。
「/dev/tcpはLinux独自のもの」と思ってない人が
「/dev/tcpだから犬板」なんて言わない。
↑に対する反論を。
0366名無しさん@お腹いっぱい。
2010/05/15(土) 09:39:35> 285の「バカ」は280に対して言っている。つまり、
正しい板に誘導済み、且つ、移動宣言が出ている質問に対して、レスしている
>>280-284に対して言っている。
お前の論理wwww は>>285が/dev/tcpを知らなかったという妄想に全面的に
依存してるんだよ。www
/dev/tcpを知っていたなら(事実だからしょうがない)、>>285は何も矛盾しない。
>>363も相手にして欲しいらしいな。
> 「/dev/tcpはLinux独自のもの」と思ってない人が
> 「/dev/tcpだから犬板」なんて言わない。
バカは繰り返さないとわからないようだが。>>316で論証済み。ディストリの問題だから犬板。
0367名無しさん@お腹いっぱい。
2010/05/15(土) 09:47:58/dev/tcpがLinux独自じゃないと知っているのに
「/dev/tcpだから犬板」と言うことはありえない。
> >>316で論証済み。ディストリの問題だから犬板。
↑
本質はディストリの問題ではない。
正しくは「./configureの問題」
で、Linux以外のOSでも 「./configureの問題」として起こり得る問題。
だからLinux板への誘導は間違い。
で、Linuxじゃなくても objdump -T で確認できることを
>>319 あたりで指摘してる。
(これは、「ディストリの問題ではない」と言う主張)
以上で、>>366 に書いてあることは論破されたので、
まだ反論のない >>349 >>350 >>351 に対する反論 を早く書くように。
0368名無しさん@お腹いっぱい。
2010/05/15(土) 09:52:24負けを認めたんじゃないの?
別に15分ルールにするつもりなんかないだろうけど、
>>356 自身がそれを「お前が持ち出したルール」とか言い始めたので。
0369名無しさん@お腹いっぱい。
2010/05/15(土) 09:55:39「有り得ない」に対する反論は、「有りうる場合」を一つ示せば証明終了。
論理学の基礎の基礎の基礎。
やっぱり一昨日「矛盾しない」を最後まで理解できなかった低性能Java厨のようだな。www
0370名無しさん@お腹いっぱい。
2010/05/15(土) 09:59:15その「一昨日」って何のことだよ。俺じゃない。
>「有りうる場合」を一つ示せば証明終了
って、
「有りうる場合」なんてどこにも書かれてないじゃん。
0371名無しさん@お腹いっぱい。
2010/05/15(土) 09:59:27すでに論破済みの妄想には反論の必要はなし。
15分ルールを言い出したのは>>351。
>>351はそれに従う必要がある。オレには無い。
0372名無しさん@お腹いっぱい。
2010/05/15(土) 10:04:24どこにも論破されてない。
そう言って逃げるのは反論できない証拠。
「論破済み」と言うなら、そのポインタを示すかコピペしてみろよ。
できないだろうけど。
0373名無しさん@お腹いっぱい。
2010/05/15(土) 10:06:05ついに小学生並みの言いがかりしか付けられなくなったようだな。
「有りうる場合」とは確かに書いてないな。www
「言わない」に対する反論は「言う場合もある」事を一つ示せば証明終了。
これでわかるか? www
0374名無しさん@お腹いっぱい。
2010/05/15(土) 10:07:02>>351 は「15分ルール」なんて言ってないよ。
「書き込みに15分以上もかかってる」から、言い訳に苦労したんだろう、
と言っただけ。
それを勝手に >>353 あたりで 「15分ルール」みたいに言い出しただけ。
言い出したのは >>353 の方。>>353 自身が従う必要がある。
0375名無しさん@お腹いっぱい。
2010/05/15(土) 10:08:26だから、その「有りうる場合」を具体的に書いてみろよ。
今までの議論の中では書かれてない。
0376名無しさん@お腹いっぱい。
2010/05/15(土) 10:12:56「/dev/tcpはbashの機能であってLinux独自の機能ではない」
ことを知っている人が、
「/dev/tcpだから犬板」とは言わないし、
「/dev/tcpはbashの機能であってLinux独自の機能ではない」
ことを知っている人が、
「/dev/tcpだから犬板」という場合があるような合理的な例が
1例も示されていない。
よって、>>369 の負け。
0377名無しさん@お腹いっぱい。
2010/05/15(土) 10:14:4915分ルールを引っ込めたいのか? 特別に許してやっても良いぞ。
自ら言い出しておいて情けない奴だな。
>>375
メクラ?
> >>316で論証済み。ディストリの問題だから犬板。
0378名無しさん@お腹いっぱい。
2010/05/15(土) 10:18:02>>316 は
>>319 や >>367 で 論破済み。
よって、
「/dev/tcpはbashの機能であってLinux独自の機能ではない」
ことを知っている人が、
「/dev/tcpだから犬板」という場合があるような合理的な例が
1例も示されていない。
0379名無しさん@お腹いっぱい。
2010/05/15(土) 10:24:24あと、>>316 は >>318 でも論破されてる。
0380名無しさん@お腹いっぱい。
2010/05/15(土) 10:40:12>>318, >>319, >>367は反論たりえない。
>>318
> 元質問者の >>277 はディストリもOSも言ってない。
元質問者が言及していない事は予想すればいい。 詳細は>>320
/dev/tcpを知らなかったというのはお前の妄想。
>>319
結論(犬板への誘導)に対する言いがかり。「objdumpで確認できる」は概ね正しいが、
/dev/tcpを知らない事の論証にはならない。
>>367
特殊なバカのケースを持ってきて、>>316の結論(犬板への誘導)に言いがかりをつけ
ているだけで、/dev/tcpを知らない事の論証にはならない。
/dev/tcpを知らなかったというのはお前の妄想にすぎないんだよ。
0381名無しさん@お腹いっぱい。
2010/05/15(土) 10:43:33/dev/tcpを本当に知ってる人が
「/dev/tcpだから犬板」とは言わない。
↑これがすべてwww
で、「有りうる場合」(そう言う場合)の具体例は? まだ書けないのか?
0382名無しさん@お腹いっぱい。
2010/05/15(土) 10:45:23「ディストリの問題だから犬板」
何も矛盾しない。
0383名無しさん@お腹いっぱい。
2010/05/15(土) 10:49:16>お前の論理wwww は>>285が/dev/tcpを知らなかったという妄想に全面的に
>依存してるんだよ。www
↑
とは言うが、「/dev/tcpを知らなかった」とすればすべて自然に説明が付くよね。
逆に「「/dev/tcpを知っていた」と仮定すると、すべてが不自然、
というか実際に論破されてるし。
よって、「/dev/tcpを知らなかった」が事実。
>>382
ディストリの問題ではなく、configureの問題。
で、ディストリもOSも関係なく回答できる問題。
で、実際UNIX板で回答して解決してるし。
(逆に誘導先のLinux板では解決していない)
0384名無しさん@お腹いっぱい。
2010/05/15(土) 10:54:31不自然と言うのはお前の妄想。妄想だけで論破した気になっているおバカさん。
> で、実際UNIX板で回答して解決してるし。
> (逆に誘導先のLinux板では解決していない)
犬板が情けなかっただけ(見てないから知らないが)で、/dev/tcpを知らなかった論証にはならない。
お前の「論破」とやらはは全て妄想。
0385名無しさん@お腹いっぱい。
2010/05/15(土) 10:59:28よくよめ。「不自然、というか実際に論破されてる」と言ってる。
0386名無しさん@お腹いっぱい。
2010/05/15(土) 11:00:33>>349 >>350 >>351 に対する反論はできなかったのですね
0387名無しさん@お腹いっぱい。
2010/05/15(土) 11:00:56良く読め、お前の「論破」とやらはは全て妄想。
0388名無しさん@お腹いっぱい。
2010/05/15(土) 11:03:56反論するには具体的な反論を書き込むことが必要。
「妄想」とかいう言葉で誤魔化しても反論にはならない。
0389名無しさん@お腹いっぱい。
2010/05/15(土) 11:16:04既に論破済みで>>365というから放置してたんだが、
>>365が論破されるとまた蒸し返すのか?
>>349
>>350
>>320で書いたとおり、*BSD,Solarisのコンパイル済みバイナリは/dev/tcpが使える。
従って*BSD,Solarisに関する質問では無い。質問の流れと関係の無い事実を持ち出して
もなんの論証にもならない。
>>351
> 「bashをいくら追求しても、Linuxじゃない限り/dev/tcpは使えない」と
> 思い込んでいる。
「/dev/tcpは使えない思っている」という妄想が前提の論証なので、反論不要。
0390名無しさん@お腹いっぱい。
2010/05/15(土) 11:19:16> >>320 書いたとおり
↑ >>320 は >>322 で即攻論破されてる。
>>365 に対する有効な反論はまだない。
0391名無しさん@お腹いっぱい。
2010/05/15(土) 11:20:26「ディストリの問題だから犬板」
これに対するお前の「反論」とやらは「/dev/tcpを知らなかった」という妄想だけ。
0392名無しさん@お腹いっぱい。
2010/05/15(土) 11:22:06最後の1行
>反論不要
つまり、反論できないことを認めたのですねw
0394名無しさん@お腹いっぱい。
2010/05/15(土) 11:24:10よくよめ
「ディストリの問題ではなくconfigureの問題」
って、>>367 とか、もっと前でも言ってるぞ。
ディストリの問題でない以上、Linux板への誘導は間違い。
0395名無しさん@お腹いっぱい。
2010/05/15(土) 11:25:40ついに小学生レベルに落ちたか www
「する必要のない事」と「出来ない事」の区別はつけようね。
0396名無しさん@お腹いっぱい。
2010/05/15(土) 11:26:13>>366 がその根拠としている >>316 が論破されてるので、
>>365 に対する有効な反論はまだない。
0397名無しさん@お腹いっぱい。
2010/05/15(土) 11:31:35下らん言いがかりなので放置してたが、しつこいので>>380で論破済み。
全てはお前の妄想と言いがかり。
>>396
お前の妄想であって論破になっていない事は論証済み。
お前が論破したと妄想しているのはどのレスだ?
0398名無しさん@お腹いっぱい。
2010/05/15(土) 11:32:22百歩譲って「ディストリの問題」だったとしても、
だったら、
「ディストリの問題だからLiinux板」と言うだろ。
実際には、
「/dev/tcpの問題だから犬板」と言ったのだから、
やっぱり「/dev/tcpはLinux独自」と思い込んでいたことになる。
0399名無しさん@お腹いっぱい。
2010/05/15(土) 11:35:52>>380 では論破では、「妄想」とか「予想」とかが前提になってるので、
論破できてない。
>>365 に対する有効な反論はまだない。
0400名無しさん@お腹いっぱい。
2010/05/15(土) 11:49:16> 百歩譲って「ディストリの問題」だったとしても、
譲らずとも真実。
> 「ディストリの問題だからLiinux板」と言うだろ。
お前の妄想にすぎない。
>>399
お前が「妄想」を並べ立てて論証した気になっているだけ。
お前の「論破」は、「/dev/tcpを知らなかった」事を前提にした妄想の展開が全てであって、
「/dev/tcpを知らなかった」ことの客観的証明は一切ない。事実ではないのだから証明出来るわけが無い。
つまり、お前の論破とやらは「妄想」。
> >>365 に対する有効な反論はまだない。
お前が論破したと妄想してるのはどのレスだと聞いているのだ。笑ってやるから答えてみろ。
0401名無しさん@お腹いっぱい。
2010/05/15(土) 11:55:28>> 「ディストリの問題だからLiinux板」と言うだろ。
>お前の妄想にすぎない。
↑
やっぱり、反論できないところになるといつも「妄想」ということにするよね。
お前が「妄想」という言葉を使ってるところはすべて「反論できません」の
降参のサインだと読み換えるよ。
0402名無しさん@お腹いっぱい。
2010/05/15(土) 12:00:10> 「ディストリの問題だからLiinux板」と言うだろ。
このように、客観的証明を出来ない、お前の一方的な思い込みを「妄想」と言っている。
0403名無しさん@お腹いっぱい。
2010/05/15(土) 12:00:27おまえ、もともとbashもLinuxも全然知らないんだろ。
知らないなら黙ってろが基本。
なのに、自分のFreeBSDに/dev/tcpが無いことから
/dev/tcpをLinuxのデバイスだと勘違いして、
駄目押しにbashのキーワードもあるから、
ただの嫌悪感のみでお前は「犬板行け」と書いてしまった。
それが間違いだとわかったのだから、
今度からbashとか/dev/tcpとか見ても、Linux板に誘導するなよw
0404名無しさん@お腹いっぱい。
2010/05/15(土) 12:04:26本当に「ディストリの問題」と思っているなら
「ディストリの問題」と言うはず。
実際には「/dev/tcpの問題」と言った。
これが等価だと主張するなら、
ディストリ=/dev/tcp
の等式が成り立たなければならない。
明らかに成り立たない。
よって、>>402 が言う一連のことはすべて論破された。
0405名無しさん@お腹いっぱい。
2010/05/15(土) 12:05:23ついに妄想全開だな。www
0406名無しさん@お腹いっぱい。
2010/05/15(土) 12:07:37はいはい、また「妄想」←(オマエ定義では「降参」)の言葉を使ったねw
で、>>404 にも反論してねw
0407名無しさん@お腹いっぱい。
2010/05/15(土) 12:29:31これキャッカンテキ論証のつもりなのかね。笑う。www
> 本当に「ディストリの問題」と思っているなら
真実だし、そのように言った。
> 実際には「/dev/tcpの問題」と言った。
言っていない。「/dev/tcpだから」と言った。
前提が捏造なので、これ以下の主張は単なる妄想。
> これが等価だと主張するなら、
> ディストリ=/dev/tcp
> の等式が成り立たなければならない。
> 明らかに成り立たない。
「/dev/tcpだから」で練り直してみなよ。www
0408名無しさん@お腹いっぱい。
2010/05/15(土) 12:36:25本当に「ディストリの問題だから」と思っているなら
「ディストリの問題だから」と言うはず。
実際には「/dev/tcpだから」と言った。
これが等価だと主張するなら、
「ディストリの問題」=「/dev/tcp」
の等式が成り立たなければならない。
明らかに成り立たない。
(余計に成り立たないw)
よって、>>402 が言う一連のことはすべて論破された。
0409名無しさん@お腹いっぱい。
2010/05/15(土) 12:45:30おお、足りないオツムで頑張ったようなので、相手してやろう。
論理学の等価とは二つの命題が共に真、もしくは共に偽の時に真となる演算だ。
「ディストリの問題だから」も「/dev/tcpだから」も命題になっていない。
よって、等価性を論じる事は不可能。
お前が論じたつもりになっているのは「文字列の同一性」。
わかる? www
0410名無しさん@お腹いっぱい。
2010/05/15(土) 12:46:21>>408
おお、足りないオツムで頑張ったようなので、相手してやろう。
論理学の等価とは二つの命題が共に真、もしくは共に偽の時に真となる演算だ。
「ディストリの問題だから」も「/dev/tcpだから」も命題になっていない。
よって、等価性を論じる事は不可能。
お前が論じたつもりになっているのは「文字列の同一性」。
わかる? www
0411名無しさん@お腹いっぱい。
2010/05/15(土) 12:53:45「ディストリの問題だから」と思ってる人が、
わざわざ言葉を変えて
「/dev/tcpだから」と言い替える客観的合理性が説明されてない。
断りなしに言葉を言い替えることができるのは、
その言葉同士が「同義」である場合に限る。
「ディストリの問題」と「/dev/tcp」は同義ではない。
よって、>>410 は論破された。
0412名無しさん@お腹いっぱい。
2010/05/15(土) 12:59:13> 断りなしに言葉を言い替えることができるのは、
> その言葉同士が「同義」である場合に限る。
お前の妄想世界ででっち上げたルール持ってくんなよ。www 小学生以下。www
論破完了。
0413名無しさん@お腹いっぱい。
2010/05/15(土) 13:04:51また出た「妄想」、つまり、「降参」するんですねw
いずれにしても、この長いやりとりを見た人は
>>412 が /dev/tcpを理解してなかったと思うのは当然。
>>412 は「/dev/tcpを理解してた」と後出しで主張するが、
その根拠は結局示されなかった。
根拠を示せと何度言っても、返ってくる言葉は、
「妄想」と、「反論の必要なし」だけ。(反論自体はなし)
よって、>>412 は論壊された。
0414名無しさん@お腹いっぱい。
2010/05/15(土) 13:07:170415名無しさん@お腹いっぱい。
2010/05/15(土) 13:07:38> 断りなしに言葉を言い替えることができるのは、
> その言葉同士が「同義」である場合に限る。
0416名無しさん@お腹いっぱい。
2010/05/15(土) 13:15:35お前が客観的論証なしに繰り返している戯言を「妄想」と言っている。 >>402参照。
ところが、お前の論破とやらは、その殆どが「/dev/tcpを知らなかった」という妄想に
基づく戯言なので客観的に論証など出来るわけが無い。
0417名無しさん@お腹いっぱい。
2010/05/15(土) 13:16:07>>412 (/dev/tcpを理解してない人)
↑
は、100%の証拠で論破されてるが、>>412 自身は「妄想だ」とか言って
認めようとしない、という状況。
で、100%の証拠に拘らず、状況証拠も含めて考えても、
>>412 が/dev/tcpを理解してないと思うに足りる証拠が多数すでに書かれていて、
圧倒的に >>412 が不利。
100%の証拠については議論が硬直してるようだから、
状況証拠でもいいから >>412 が/dev/tcpを理解していたと納得できるような
証拠を出してみろよ。
それがない限り、みんな >>412 は/dev/tcpを理解していないと思ったままだよ。
0418名無しさん@お腹いっぱい。
2010/05/15(土) 13:19:55>>416 は今までにbashで/dev/tcpを使ったことが(質問される以前に)あったの?
0419名無しさん@お腹いっぱい。
2010/05/15(土) 13:22:01妄想を証拠と言っていいのは小学生だけ。www
> 状況証拠でもいいから >>412 が/dev/tcpを理解していたと納得できるような
知らなかったはずだと主張するお前に客観的な証拠での立証義務がある。
このルールのソースはどうした? 妄想ルールと言う事を認めるのか?
おまえはまだ15分ルールの撤回はしていないから >>415から15分以内な。
> 断りなしに言葉を言い替えることができるのは、
> その言葉同士が「同義」である場合に限る。
0420名無しさん@お腹いっぱい。
2010/05/15(土) 13:26:20ということは、状況証拠は出せない(実際には/dev/tcpを知らなかったから)と
認めるんだな。
あくまで状況証拠だから、それだけでは >>419 はグレーゾーンだが、
「>>419 が/dev/tcpを知っていた」という証拠がないし、
「>>419 が/dev/tcpを知らなかった」という状況証拠が多数あるから、
疑いは晴れないままになるよ。それでもいいならこのままにしとけ。
>>418 にも答えてやれよ。
0421名無しさん@お腹いっぱい。
2010/05/15(土) 13:32:44> > 100%の証拠で
> 妄想を証拠と言っていいのは小学生だけ。www
100%の証拠とやらはどれだよ。www
DNA鑑定の精度を超えている。www
妄想ルールのソースはどうした?
> 断りなしに言葉を言い替えることができるのは、
> その言葉同士が「同義」である場合に限る。
>>418は流れを読まないバカのようだから相手にする必要は無い。
0422名無しさん@お腹いっぱい。
2010/05/15(土) 13:34:22バカはどんどん墓穴を掘っていく。www
0423名無しさん@お腹いっぱい。
2010/05/15(土) 13:35:04> >>418は流れを読まないバカのようだから相手にする必要は無い。
もし/dev/tcpを使ったことがあるなら「ある」と一言答えられるよな。
やっぱり/dev/tcpを使ったことなかったんだww
知らない分野の質問には口をはさまないほうがいいよ。
0424名無しさん@お腹いっぱい。
2010/05/15(土) 13:40:10はい、妄想。
0425名無しさん@お腹いっぱい。
2010/05/15(土) 13:46:470426名無しさん@お腹いっぱい。
2010/05/15(土) 13:56:59「妄想」=「オマエの降参」
>>425
100%の証拠の議論とは別に、状況証拠でいいから >>425 の /dev/tcpに関する
知識レベルを聞いてるんだ。
このままだと >>425 は /dev/tcpを知らずに「知ったか回答」「誤誘導」をしたという
疑いが晴れない。
100%の疑いではなくても、疑いがあることに変わりはない。
疑いが晴れてない状態でいいなら反論しなくてもいいよw
0427名無しさん@お腹いっぱい。
2010/05/15(土) 13:57:33しかし/dev/tcpってcygwinのbashでも使えるんだな。勉強になったわ。
0428名無しさん@お腹いっぱい。
2010/05/15(土) 14:00:04100%の証拠があると言ったのはお前だぞ。 忘れたならアンカー打ってやる。>>417
その100%の証拠と鑑定書出せよ。www
出したら答えてやるよ。www
0429名無しさん@お腹いっぱい。
2010/05/15(土) 14:03:28おれは答えてなんか要らないよ。
/dev/tcpを知っていたという状況証拠を出すことは、
オマエ自身の利益になること。
それを答えられなかったらオマエ自身の疑いが晴れないんだから。
で、結局答えないのなら、>>428 は/dev/tcpを知らなかったという疑い濃厚なまま
議論が打ち切られました、となる。
0430名無しさん@お腹いっぱい。
2010/05/15(土) 14:09:28お前の論理
>>392
> つまり、反論できないことを認めたのですねw
でいくと、100%の証拠とやらは妄想だったという事を認めたのですねw
ことになるが、それで良いんだな? www
0431名無しさん@お腹いっぱい。
2010/05/15(土) 14:13:03100%の証拠はすでに書いてる。(読み返せば済むこと)
で、そっちの議論は終ったので、
次に、
状況証拠レベルでさえオマエは出せないことを指摘してるんだ。
「>>430 は/dev/tcpを知らなかった」という疑いが残ったままになれば
>>430 のプライドを潰すには十分だからね。
0432名無しさん@お腹いっぱい。
2010/05/15(土) 14:13:33>>419の通り、知らなかったはずだと言いがかりをつけるお前が証拠を出し
て立証する義務がある。しかし、100%の証拠とやらは唐桟ながら妄想のよう
なので、妄想を元にした言いがかりと言う事がこれにて判明した。
0433名無しさん@お腹いっぱい。
2010/05/15(土) 14:16:02> 100%の証拠はすでに書いてる。(読み返せば済むこと)
どのレスだよ。100%であるという鑑定書は? アンカー位うったらどうか? www
0434名無しさん@お腹いっぱい。
2010/05/15(土) 14:22:55100%の証拠は、
>>349 >>350 >>351 に対する反論が無かったという事実、
及びその関連レスすべて。
で、100%の証拠の件にかかわらず、
お前のプライドも潰れた。
なぜなら、お前は/dev/tcpを知っていたとか、使ったことがあったとかいう
状況証拠すら出せなかったから、疑われたままになってる。
お前は口ぐせのように「妄想」と言うが、
自分が正しいなら、他人から間違った妄想をされてるだけでも嫌なはずだ。
現在、お前は「/dev/tcpを知らない人」と「妄想」されてる。
これだけでもプライドを潰すには十分。
# 実際には妄想ではなく事実。念のため。
0436名無しさん@お腹いっぱい。
2010/05/15(土) 14:26:20妄想を証拠と言っていいのは小学生だけ。ww
100%であるという鑑定書は?
> 現在、お前は「/dev/tcpを知らない人」と「妄想」されてる。
キチガイは妄想するのが仕事なので、お前が妄想しても何の痛痒も感じない。
0437名無しさん@お腹いっぱい。
2010/05/15(土) 14:27:29× キチガイは妄想するのが仕事なので、お前が妄想しても何の痛痒も感じない。
○ キチガイやバカは妄想するのが仕事なので、お前が妄想しても何の痛痒も感じない。
0438名無しさん@お腹いっぱい。
2010/05/15(土) 14:29:11「妄想」してるのはおそらく俺だけではない。
おまえは「/dev/tcpを知らない人」と「妄想」されてても平気なのかw
それで十分だ。お前のプライドは潰れたな。
0439名無しさん@お腹いっぱい。
2010/05/15(土) 14:39:48> 「妄想」してるのはおそらく俺だけではない。
それ自体が、お前の妄想だから何の痛痒も感じない。
妄想である事を認め逃げ出すようだからまとめておこう。
これまでのまとめ
>>277がbashに関する質問をする
>>278がlinux板に誘導する
>>279が移動する。
>>279-284(除く>>283)が余計なレスを付ける
>>285が再度linux板へ誘導する。
>>286が妄想を元に言いがかりをつけ、以降粘着する。
0440名無しさん@お腹いっぱい。
2010/05/15(土) 14:42:53そんなに仕事無いの?>Unix系
0441名無しさん@お腹いっぱい。
2010/05/15(土) 14:48:55>>439 自身が墓穴を掘ってる。
>>283 で正解レスがあったのに、その意味を十分理解せず、
それより「後」の
>>285 で、再度Linux板へ誘導している。← これが間違い。
>>363 が指摘してる致命症発言を再度貼っとく。
>この発言が致命症だね。
>「/dev/tcpだから犬板」とストレートに言ってる。
>弁解の余地なし。
「妄想だ」と言うのは結構。「妄想」であっても >>439 のプライドは潰れたのだから。
0442名無しさん@お腹いっぱい。
2010/05/15(土) 14:52:43キチガイやバカは妄想するのが仕事なので、お前が妄想しても何の痛痒も感じない。
0443名無しさん@お腹いっぱい。
2010/05/15(土) 14:55:42>>285 は、>>283 の「/dev/tcpの機能がdisableされてコンパイル」を、
bashではなく、Linuxカーネルのコンパイルのことと勘違いしていた。
だからこそ、>>285 で、
「Linuxカーネルのコンパイル時に設定する/dev/tcpの話だからLinux板へ行け」
と言う意味の発言をした
0444名無しさん@お腹いっぱい。
2010/05/15(土) 14:57:21> bashではなく、Linuxカーネルのコンパイルのことと勘違いしていた。
と妄想した>>443が粘着して妄想を書き散らした。
キチガイやバカは妄想するのが仕事なので、お前が妄想しても何の痛痒も感じない。
0445名無しさん@お腹いっぱい。
2010/05/15(土) 16:02:210446名無しさん@お腹いっぱい。
2010/05/15(土) 16:04:580447名無しさん@お腹いっぱい。
2010/05/15(土) 16:11:080448名無しさん@お腹いっぱい。
2010/05/15(土) 19:18:350449名無しさん@お腹いっぱい。
2010/05/15(土) 21:27:10正解。
0450名無しさん@お腹いっぱい。
2010/05/15(土) 21:32:21でもCygwinじゃ使えなかったぜ!
0451名無しさん@お腹いっぱい。
2010/05/15(土) 22:03:46>>450 が言うように、Cygwinでも/dev/tcpがdisableでインストールされてることもある。
>>285 がLinux板に誘導したのは間違い。
0453名無しさん@お腹いっぱい。
2010/05/15(土) 22:18:20よくよめ。
たとえ「妄想」だったとしても、お前のプライドは潰れてる。
実際には「妄想」ではなく事実だから、お前は100%論破されてる。
という、2段階の主張。
とりあえず、お前のプライドが潰れればそれでいいから、
「妄想」でもいいならそのままにしとけ。
たとえ「妄想」でも、「/dev/tcpを知らなかった人」と思われるのは
さぞかし悔しいだろうな。
0454名無しさん@お腹いっぱい。
2010/05/16(日) 00:30:52foo='/hoge/spa ce.txt'
というようにスペースが含まれるファイルがあったとして、このファイルのbasenameをクォートするにはどうしたらよいのでしょうか?
echo "$(basename $foo)" だと spa になってしまうし、
echo $(basename "$foo") だと spa ce.txt (スペース1つ)となって、やはり spa と ce.txt が別トークンとして扱われてしまいます。
要するにダブルクォートをネストしたいということなのですが…
0455名無しさん@お腹いっぱい。
2010/05/16(日) 00:32:54本当は
foo='/hoge/spa___ce.txt' # _ はスペース
のように、スペースが複数入っていると考えてください
0456名無しさん@お腹いっぱい。
2010/05/16(日) 01:29:45お前は「妄想」していると明言している。これが100%の証拠って奴だよ。www
その言い訳、惨め過ぎるぞ。www
アク禁らしいから、解除されたらまたからかってやるよ。www
15分以上あるから足りないオツムで必死に考えてろ。www
>>438
> 「妄想」してるのはおそらく俺だけではない。
>
> おまえは「/dev/tcpを知らない人」と「妄想」されてても平気なのかw
> それで十分だ。お前のプライドは潰れたな。
0457名無しさん@お腹いっぱい。
2010/05/16(日) 01:36:20期待値がわからん。これじゃダメってこと?
$ cat a.sh
#!/bin/sh
foo='/home/spa ce.txt'
bar=$(basename "$foo")
echo "$bar"
$ sh a.sh
spa ce.txt
0458名無しさん@お腹いっぱい。
2010/05/16(日) 01:53:40あ、変数を経由すればいけるんですね!
bar=$(basename "$foo")
ここでも外側にダブルクォートが必要だと思い込んでました。ありがとうございます。
アホな質問してすみません><
0459名無しさん@お腹いっぱい。
2010/05/16(日) 09:05:29変数を経由しなくても行ける。
echo "$(basename "$foo")"
0460名無しさん@お腹いっぱい。
2010/05/16(日) 09:12:28変数に直接代入する場合は外側のダブルクォートは不要。
変数を使わずに直接 echoなどの引数にする場合は、
外側にもダブルクォートが必要(>>459 の方法)
ダブルクォートのネスティングみたいになるけど、
$( ) によって別の階層に分かれてるから、
エスケープとかなしにそのままダブルクォートを付けてOK。
もちろん、複数のスペースとかもそのまま保存される。
0461名無しさん@お腹いっぱい。
2010/05/16(日) 09:25:57なん・・・だと・・・
ネストできるわけないと思ってました。何でも試してみないとだめですね。
これができるんだったら色々楽になりそうです。ありがとうございます!
0462名無しさん@お腹いっぱい。
2010/05/17(月) 21:53:46へ〜、shのパーザー以外と頭良いな。 勉強になったわ。 bash限定という
事はないかな?
0463名無しさん@お腹いっぱい。
2010/05/17(月) 21:57:03bash限定じゃねーよ。
ちなみに、$( ) の代わりに ` ` でもOK。
0464名無しさん@お腹いっぱい。
2010/05/17(月) 22:31:26foo='/home/spa ce.txt'
で no space って言われるんだが、移植ミスなのか?
他の手段で入れれば"`"のネスト自体はできるけど
0465名無しさん@お腹いっぱい。
2010/05/26(水) 00:18:56$ cd //
$ pwd
//
どういう意味だろう? 3つ以上だと1つになる
$ cd ///
$ pwd
/
0466名無しさん@お腹いっぱい。
2010/05/26(水) 01:15:22emacsも同様に//を知っている。
0467名無しさん@お腹いっぱい。
2010/06/03(木) 23:00:02キーボードからの入力待ちの際、tab保管を有効にするにはどうしたらよいでしょうか?
#!/bin/csh
set file = $<
echo "ファイルは $file だよ"
上記のようなとき、filec+autolistのような挙動をしてくれることを望んでいます。
今日はじめてcshが駄目な事を知ったので、/bin/shでないことは御容赦ください・・・。
よろしくお願いします。
0468名無しさん@お腹いっぱい。
2010/06/03(木) 23:43:52#!/bin/bash
read -e file
echo "ファイルは $file だよ"
0469466
2010/06/04(金) 00:34:58bashならできるのですね(ググったらdash、zshとかいうのでもおkなのかな)。
人から貰ったcshスクリプトと組み合わせて使うため、
最初はbashスクを使ってasciiファイルに書き出してから、cshスクで読むとかになりそうですが
ゆくゆくは貰ったcshも全部bashに書き換えたいと思います。
ありがとうございました。
0471名無しさん@お腹いっぱい。
2010/06/04(金) 07:46:38簡単なものならcshの方がいい場合もある
0472名無しさん@お腹いっぱい。
2010/06/04(金) 10:06:00http://tiswww.case.edu/php/chet/bash/FAQ
のE10
0473名無しさん@お腹いっぱい。
2010/06/05(土) 01:33:35以下のソースでは入力がhogeかそれ以外の文字列の場合は期待通りに動くんですが、文字列を入力しなかった場合は
line 6: [: =: unary operator expected
とエラーが出ます。これはどうやれば防げますか?
#! /bin/sh
echo "input? "
read i
if [ $i = "hoge" ];
then
echo "input is 'hoge'"
else
echo "other"
fi
0474名無しさん@お腹いっぱい。
2010/06/05(土) 01:37:470475名無しさん@お腹いっぱい。
2010/06/05(土) 01:51:39なんという…ありがとうございます。
0476名無しさん@お腹いっぱい。
2010/06/15(火) 23:04:34なんかいいコマンドありますか?
find /var/www/data -name hoge を毎月1回最初の日曜日に実行して
インデックス作りたいんす
0477名無しさん@お腹いっぱい。
2010/06/15(火) 23:16:56逆でもいいけど。
0478名無しさん@お腹いっぱい。
2010/06/15(火) 23:32:49こうですか?
0479名無しさん@お腹いっぱい。
2010/06/15(火) 23:41:12date -d `date +%d`' days ago 1 day next sunday'
>>477
それをやりたくないから質問してるんだろ
0480名無しさん@お腹いっぱい。
2010/06/15(火) 23:43:36>>479 days ago ですか!date は奥が深いですね
いろいろとありがとうございますたー!
0481名無しさん@お腹いっぱい。
2010/06/15(火) 23:49:22これじゃだめ?
cal ${month} ${year} | awk '/^ ?[0-9]+{print $1}' | head -1
0482名無しさん@お腹いっぱい。
2010/06/15(火) 23:56:07cal って便利なんだけど awkで整形して使うのは面白い技ですね
みなさんいろいろ技があるんですね、勉強になります
そろそろCも覚えなきゃなぁ
やることいっぱいですorz
0483名無しさん@お腹いっぱい。
2010/06/16(水) 00:06:52こんな環境もある
% date -d `date +%d`' days ago 1 day next sunday'
usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ...
[-f fmt date | [[[[[cc]yy]mm]dd]HH]MM[.ss]] [+format]
%
0484名無しさん@お腹いっぱい。
2010/06/16(水) 00:19:06>>483 これ空鼠?
0485名無しさん@お腹いっぱい。
2010/06/16(水) 00:28:20いあ FreeBSD. つか, *BSD 全部だと思う.
つか, GNU 拡張 date じゃないと通らへんちゃう?
0486名無しさん@お腹いっぱい。
2010/06/16(水) 00:34:31うちのCentOSでは動いてしまったので気付かなかったw
あとで会社のFreeBSDで試して見ます(ヲ
0487名無しさん@お腹いっぱい。
2010/06/17(木) 03:26:50シェルスクリプトでOAuth認証できるクライアントを書いたw
Perlとか入れなくても標準環境にopensslとcurl入れるだけで動くからいいわ
0488名無しさん@お腹いっぱい。
2010/06/18(金) 00:25:21試せないけど。
0489名無しさん@お腹いっぱい。
2010/06/18(金) 18:29:26http://livedoor.2.blogimg.jp/agomesu/imgs/5/8/58ff257e.jpg
ばらまこうぜ!
0490名無しさん@お腹いっぱい。
2010/06/20(日) 04:42:59初歩的な質問で申し訳ありません。
0491名無しさん@お腹いっぱい。
2010/06/20(日) 07:14:26シェルスクリプト総合@LINUX Part5
http://pc11.2ch.net/test/read.cgi/linux/1238764663/
怒られる前に早く逃げろ
0492名無しさん@お腹いっぱい。
2010/06/20(日) 10:03:33ifconfig eth0 | sed -n '/.*HWaddr /{s///; s/:/-/gp}'
0493名無しさん@お腹いっぱい。
2010/06/20(日) 14:58:13Linux板で聞くよりこっちで聞く方が早いですね。
0494名無しさん@お腹いっぱい。
2010/06/20(日) 23:49:41> おいちゃんこれお願い
>
> http://pc12.2ch.net/test/read.cgi/unix/1266642605/489 2010/06/18 18:29:26
>
> 422 :名無しの報告 :2010/06/18(金) 18:39:13 ID:9cXOXF/h0
> >>421
> 100618 危険!!外国人参政権画像マルチポスト報告 3
> http://qb5.2ch.net/test/read.cgi/sec2chd/1276851966/
>
> これだろここに直接持ってくるなよ
>
> 423 :名無しの報告 :2010/06/18(金) 18:39:51 ID:DZt17tze0
> >>421
> 削除人?じゃないならやめなさい
>
> 424 :名無しの報告 :2010/06/18(金) 18:40:07 ID:wsULoapS0
> はーい
> ごめんなさい
0495名無しさん@お腹いっぱい。
2010/06/21(月) 21:28:31nc辺りで書こうかと思うのだけど
0496名無しさん@お腹いっぱい。
2010/06/21(月) 22:30:52根性試しでないならcurlとか使えばいいんじゃね?
0497名無しさん@お腹いっぱい。
2010/06/21(月) 22:34:180498名無しさん@お腹いっぱい。
2010/06/21(月) 22:56:57Age2ch Part14
http://pc12.2ch.net/test/read.cgi/software/1118219419/
0499名無しさん@お腹いっぱい。
2010/06/27(日) 01:04:50おかげで、-eqで比較しようとしてもちゃんと比較できなかったりして困るんだよね。
0500名無しさん@お腹いっぱい。
2010/06/27(日) 01:29:20awk '{print $1}' とかで切り出せば余分な空白は無くなる。
0501名無しさん@お腹いっぱい。
2010/06/27(日) 01:57:41EQ
0502名無しさん@お腹いっぱい。
2010/06/27(日) 08:45:20GNU wc は、wc -l とか wc -c とかの時、余分な行頭スペースは入らない。
0503名無しさん@お腹いっぱい。
2010/06/27(日) 09:17:16awkなんか使わなくても、
[ `wc -l < file` -eq 123 ]
でいいだろ。
"`wc -l .. `" じゃなくて単に `wc -l ...` にする。
>>501
シェル依存。
$ test ' 0' -eq 0 && echo EQ
test: 0: bad number
0504名無しさん@お腹いっぱい。
2010/06/27(日) 18:16:27bashでテキストファイルで空欄があるところを改行に変換するシェルスクリプトを作りたいんですが
どうすればよいでしょうか?
0505名無しさん@お腹いっぱい。
2010/06/27(日) 19:18:380506名無しさん@お腹いっぱい。
2010/06/27(日) 19:26:54man tr
0507名無しさん@お腹いっぱい。
2010/06/27(日) 19:57:24man tr < file.txt
ってやってみましたが、動作が変です。
0508名無しさん@お腹いっぱい。
2010/06/27(日) 20:23:380509名無しさん@お腹いっぱい。
2010/06/27(日) 20:25:31↓
----
#!/bin/bash
いいから man tr < file.txt
----
0510名無しさん@お腹いっぱい。
2010/06/27(日) 20:34:580511名無しさん@お腹いっぱい。
2010/06/27(日) 23:28:390513名無しさん@お腹いっぱい。
2010/07/27(火) 03:09:25#!/bin/bash
hostname
$hostname = `hostname`
echo $hostname
上記のシェルスクリプトを実行すると
hostnameだけの行はしっかり標準出力にホスト名が表示されるのですが、
$hostname = `hostname`で command not foundと怒られてしまいます。
なぜでしょうか・・・?
0514名無しさん@お腹いっぱい。
2010/07/27(火) 03:19:29#!/bin/bash
hostname
hostname = `hostname`
echo $hostname
でした。結果が
=
とだけ表示されてしまいます。標準出力の結果が変数に入っていないのでしょうか
0515名無しさん@お腹いっぱい。
2010/07/27(火) 03:23:090516名無しさん@お腹いっぱい。
2010/07/27(火) 03:27:38ありがとうございます。解決しました。
いろいろやってたら、間違ってhostnameに=を設定してしまっていたことも重なっておりました。
0517名無しさん@お腹いっぱい。
2010/07/27(火) 13:02:180518名無しさん@お腹いっぱい。
2010/07/28(水) 21:03:26マルチコアの上で動かすときに重宝しています。
しかし、例えば
for i in *.jpeg
do
convert $i `basename $i .jpeg`.png
done
のような多少複雑な操作をxargs -Pのような形で簡単に並列実行することはできるでしょうか?
"args"だけでなくてリダイレクトにも使用できることを望んでいます。
# 普段はzsh使ってるので for i in *.jpeg; convert $i $i:r.png とか書いてますが
zargsのような、zshに依存するやり方でも構いません。
ご存知でしたら教えていただければ幸いです。
0519名無しさん@お腹いっぱい。
2010/07/28(水) 21:09:45単純にバックグラウンドで、
for i in *.jpeg
do
convert $i `basename $i .jpeg`.png &
done
wait
でいいんじゃないの。
それよりスペースや特殊記号入りファイル名の対応の方が気になる。
0520名無しさん@お腹いっぱい。
2010/07/28(水) 21:28:090521名無しさん@お腹いっぱい。
2010/07/28(水) 21:42:38ありがとうございます。
変換する元のファイルも基本的に自分で作成するつもりなので、
ファイル名は「行儀のいい」ものと仮定して、スペースや特殊記号は特に意識していませんでした。
その代わり、ファイル数は100?のオーダーを考えているので、
バックグラウンドに全部一気に詰め込むのではなく、
最大並列プロセス数を与えて、その数だけ常に動かしつづけてくれる仕組みが欲しいのです。
0522名無しさん@お腹いっぱい。
2010/07/28(水) 21:43:44すみません、文字化けしてます。
×ファイル数は100?のオーダー
○、ファイル数は100 - 10000のオーダー
です。
0523518
2010/07/29(木) 13:56:52zsh依存ですが、例えば
function jpeg2png(); convert $1 $1:r.png
zargs -P4 -n1 -- $(echo *.jpeg|sed -e 's/ /\n/g') -- jpeg2png
とか。
ワンライナーで書きたかったのですが、これ以上にいいやり方ありますかね。
あと、$()の中が若干不細工ですが。
0524名無しさん@お腹いっぱい。
2010/07/31(土) 10:29:17複数文字のオプションの処理はどのようにやるのが一般的なのでしょうか?
0525名無しさん@お腹いっぱい。
2010/07/31(土) 11:28:10プログラムで質問があります。
/hoge/test/
の中に
1filename1.gif
1filename2.gif
2filename1.gif
2filename2.gif
があるとします。
# sh /hoge/test/*filename*
という感じにコマンドを入力すると
それらの複数のファイルが
command /hoge/test/1filename1.gif -option /aaa/bbb/1filename1.jpg
command /hoge/test/1filename2.gif -option /aaa/bbb/1filename2.jpg
command /hoge/test/2filename1.gif -option /aaa/bbb/2filename1.jpg
command /hoge/test/2filename2.gif -option /aaa/bbb/2filename2.jpg
って感じにファイルが無くなるまで全て、コマンドを実行したいのですが
どうすればいいのでしょうか??
0526名無しさん@お腹いっぱい。
2010/07/31(土) 11:36:52for f in "$@"
do
echo command "$f" -option "${f%%.gif}".jpg
done
0527524
2010/07/31(土) 12:29:250528名無しさん@お腹いっぱい。
2010/07/31(土) 12:51:270529名無しさん@お腹いっぱい。
2010/07/31(土) 14:03:440530名無しさん@お腹いっぱい。
2010/07/31(土) 14:07:360531524
2010/07/31(土) 14:39:07これって常識でしたか(笑)。
0532名無しさん@お腹いっぱい。
2010/07/31(土) 14:42:340533524
2010/07/31(土) 14:48:53それと$@なんかは"で囲う必要あり。
0534名無しさん@お腹いっぱい。
2010/07/31(土) 14:52:31Arguments containing white space or embedded shell metacharacters
generally will not survive intact; this looks easy to fix but is not.
0535名無しさん@お腹いっぱい。
2010/08/08(日) 20:39:19リスト化したファイルを読み込んでfind検索の後、圧縮かけて削除
処理させるスクリプト書いているのですが、どう書いて良いのか??
1)/home/hoge配下に、sample.lstと言うファイルを作成
2)(1)のリストを読み込んで、最終アクセスが7日経過しているファイルを検索
3)(2)に該当したものを圧縮して、元ファイルを削除する。
/*リスト化ファイル内*/
/home/aaa/abc
/home/bbb/abc
/* バックアップスクリプト*/
#!/bin/sh
BACKUPLIST=/home/hoge/sample.lst
FIND=`find $BACKUPLIST -type f -daystart -atime +7 `
tar cvzf `date +%Y%m%d`.tar.gz $TARGET && rm $TARGET
もちろん、上記では色々と問題がありますがこう言う風な処理をしたいと。
http://centossrv.com/backup.shtml ここの処理に、find検索の処理を追加
出来れば解決なのですが・・・。
0536名無しさん@お腹いっぱい。
2010/08/08(日) 20:40:39FIND=`find $BACKUPLIST -type f -daystart -atime +7 `
tar cvzf `date +%Y%m%d`.tar.gz $FIND && rm $FIND
でした。
0537名無しさん@お腹いっぱい。
2010/08/08(日) 20:57:36find [パス] [検索条件] -exec tar -czf $(date +%Y%m%d).tar.gz {} + -delete -print
0538名無しさん@お腹いっぱい。
2010/08/08(日) 21:06:51rやuじゃなくcで作ってるとはじめのほうのは失われてしまわないかね?
0539名無しさん@お腹いっぱい。
2010/08/08(日) 21:14:59ごめん、全然ダメだった
>>537実行すると超危険なので実行しないで!
まじでゴメン><
0540>>535-536
2010/08/08(日) 21:17:11アドバイス有難う。
でも、パスにfind $BACKUPLIST ・・・と書くとリストのパスを参照して
中身を参照検索してくれない。
単純にパスを指定すれば、うまくいくのだが???
find /home/aaa/abc ・・・で
>>538
findの所はループ処理だ回さないと駄目なのでしょうかね??
>>539
危ない、まだ実行していないので大丈夫wwww
0541名無しさん@お腹いっぱい。
2010/08/08(日) 21:39:25find /home/hoge/sample.lst ...が実行されちゃう
find $(< $BACKUPLIST) ...しないとダメだね
0542>>535-536
2010/08/08(日) 21:52:07レス有難う。
試しに、実行させたらとりあえず動いたんだが
tarの処理でエラーが出た・・・。
tar: 処理中にエラーが起きましたが、最後まで処理してからエラー終了させました
一応、圧縮は出来ているようだけど。
後、可能であればで良いのですが圧縮元を/home配下からではなく
abcフォルダ配下から圧縮出来ればベストなのですが。
一旦cdで/home/abcフォルダに移動しないとやっぱり駄目なのかな??
0543>>535
2010/08/08(日) 22:09:46#!/bin/sh
BACKUPLIST=/home/genki/backup/sample.lst
FIND=`find $(<$BACKUPLIST) -type f -daystart -atime +7`
tar cvzf `date +%Y%m%d`.tar.gz $FIND && rm $FIND
tarの際、全角ペースが入っているファイルがエラーになってバックアップ
取れなかった以外は、ほぼ思っている処理が出来ました。
tar: ドキュメント.txt: stat 不能: そのようなファイルやディレクトリはありません
tar: 処理中にエラーが起きましたが、最後まで処理してからエラー終了させました
本来なら、新規 ドキュメント.txt と言うファイルがあるのだけど・・・。
0544名無しさん@お腹いっぱい。
2010/08/08(日) 22:10:40BACKUPLIST=/home/hoge/backup/sample.lst
0545名無しさん@お腹いっぱい。
2010/08/08(日) 22:18:49えっと、リストは絶対に必要なのかな?
スクリプト内に書いとくのでは駄目なのか
ファイルから読み込むとなると、どうしてもループさせることになるので色々と困るのだが…
>>543のように空白含むパス名の扱いにも問題が出る
BACKUPLIST内のディレクトリの数が数千とかじゃなければスクリプト内に書いたほうが楽
/home/abcってのはちょっとよく分からない
>>535では/home/aaa/abc、/home/bbb/abcの2つのディレクトリがあるようだけど
アーカイブを2つ作りたいってことなのかな
0546>>543
2010/08/08(日) 22:42:51なるべく、リスト内で処理したいです。
理由は、数千もディレクトリは無いにしろ数十・数百あるとかなり厳しいです。
後、スクリプト内を簡潔にしたいのもあります。
でも、>>545の言う通り数十・数百位のディレクトリならスクリプト内に
書いた方が楽なら、そちらの方がベスト!?なのかも・・・・。
確かに、両方abcとあるので分かりにくいので/home/aaa/test1と/home/bbb/test2
なら大丈夫ですかね??
/home/aaa/test1配下と/home/bbb/test2配下にあるものを1つのアーカイブで
まとめたいって事です。
0547名無しさん@お腹いっぱい。
2010/08/08(日) 22:50:31#!/bin/bash
# ${HOME}以下の相対パスを書く
l=("foo bar/" "hoge fuga/")
cd ~
mkfifo tmp.fifo
find "${l[@]}" -type f -daystart -atime '+7' \
-exec tar -cvzf $(date +%Y%m%d).tar.gz {} + -fprintf tmp.fifo '%P\n' &
while read f; do rm -f "${f}"; done <tmp.fifo
rm tmp.fifo
本当は素直にfindを2回かけて-exec tar、-deleteすればいいんだけど
条件に-atimeが入ってるので1回目と2回目のfindの結果が変わっちゃう
(findではatimeは変わらないけどtarすると変わるらしい)
なのでnamedpipeを作ってrmをwhileで回すという面倒臭いことをしてる
削除するファイルが増えればそれなりに遅くなるはず
誰かもっと良いやり方あれば教えてください
find一発で出来ないものか
0548名無しさん@お腹いっぱい。
2010/08/08(日) 23:04:24それじゃあ、ひと手間増えるけど
#!/bin/bash
backuplistfile="${HOME}/backuplist"
fifo="/tmp/backup.fifo"
while read p; do backuplist=("${backuplist[@]}" "${p}"); done <"${backuplistfile}"
cd /home
mkfifo "${fifo}"
find "${backuplist[@]}" -type f -exec tar -cvzf testbackup.tar.gz {} + -fprintf "${fifo}" '%P\n' &
while read f; do echo rm -f "${f}"; done <"${fifo}"
rm "${fifo}"
で、backuplistにはaaa/test1等と書いておけばいい
面倒だなぁ…俺てっきり>>537で行けると思ったのに
0549>>546
2010/08/08(日) 23:06:18スクリプトthx
とりあえず、なにかベストなやり方をもう少しググってみます。
他にもっとベストなやり方があればアドバイスよろしくお願いします。
0550名無しさん@お腹いっぱい。
2010/08/08(日) 23:09:52同じくスクリプトthxです。
明日ちょっと、実行させてみます。
結果はまた報告します。
0551名無しさん@お腹いっぱい。
2010/08/08(日) 23:10:520552名無しさん@お腹いっぱい。
2010/08/09(月) 14:34:410553名無しさん@お腹いっぱい。
2010/08/09(月) 14:52:50マジでっ!?
0554名無しさん@お腹いっぱい。
2010/08/09(月) 17:37:58ループから脱出(break;) したり、次の周回に飛ぶ(continue;) には、
どうするのがよいのでしょうか。
0555名無しさん@お腹いっぱい。
2010/08/09(月) 17:42:500556名無しさん@お腹いっぱい。
2010/08/09(月) 17:43:43自分で答え書いてるじゃん。
break とか continue とか実行すればいいだけ。
0557名無しさん@お腹いっぱい。
2010/08/09(月) 18:17:380558名無しさん@お腹いっぱい。
2010/08/10(火) 17:09:38mountの実行を5秒程度スクリプトのなかで遅らせたいんですが
どのようにすればよいですか?
0559名無しさん@お腹いっぱい。
2010/08/10(火) 17:43:510560558
2010/08/10(火) 22:45:52どうもです
0561名無しさん@お腹いっぱい。
2010/08/10(火) 23:18:19起動スクリプトいじるような人がまじでsleep知らなかったの?
0562名無しさん@お腹いっぱい。
2010/08/10(火) 23:29:090563名無しさん@お腹いっぱい。
2010/08/11(水) 07:33:150564名無しさん@お腹いっぱい。
2010/08/12(木) 07:22:26起動スクリプトにsleepが入ってるのは良い設計ではない。
0565名無しさん@お腹いっぱい。
2010/08/12(木) 07:34:16まあ、RHELでもこんなもんだ:
$ grep sleep /etc/init.d/* | wc -l
37
0566名無しさん@お腹いっぱい。
2010/08/12(木) 07:34:44そりゃ、RHELだもん。
0567名無しさん@お腹いっぱい。
2010/08/12(木) 07:42:15だれがgrepしてみて。
0568名無しさん@お腹いっぱい。
2010/08/12(木) 07:45:06それ、whileループ中で、あるコマンドを実行し、失敗した時のみ
sleepしてからリトライするという記述がメインなので、
通常時はsleepは実行されないし、問題ない書き方なんだよ。
0569名無しさん@お腹いっぱい。
2010/08/12(木) 12:45:45そう思うだろ?
実際見てみると、正常ルートなのに笑えるほど寝てるぜ。
0570名無しさん@お腹いっぱい。
2010/08/12(木) 12:49:580571名無しさん@お腹いっぱい。
2010/08/12(木) 13:19:05確認したけど、1番目の起動スクリプトが実行開始されてから
最後の起動スクリプトが終了するまでトータルで1秒未満なので、
sleepは1度も実行されてない。
OS起動時は、起動スクリプトの速度はネックになってなくて、
むしろ、カーネル自身のデバイス認識部分とかに時間がかかってる。
0572名無しさん@お腹いっぱい。
2010/08/12(木) 16:30:34[OK]
[OK]
・
・
・
・
が1秒以内に終わる・・・?超進化してるな。
0573名無しさん@お腹いっぱい。
2010/08/12(木) 16:52:40未だに起動が激遅なSolarisを何とかしてください。
0574名無しさん@お腹いっぱい。
2010/08/12(木) 18:59:43なぜだめなの?
0575名無しさん@お腹いっぱい。
2010/08/12(木) 19:15:53非同期処理の終了をタイミングで取る→機種依存
0576名無しさん@お腹いっぱい。
2010/08/12(木) 19:27:44単純にsleepで待ってるんじゃなくて、実際にはこういう処理だよ
↓
while ! command
do
sleep 1
done
どこにも機種依存要素はないし、
この処理で sleep を外したらそれこそ busy loop で重くなる。
0577名無しさん@お腹いっぱい。
2010/08/12(木) 19:34:39>どこにも機種依存要素はないし
こいつアホ(AAry
0578名無しさん@お腹いっぱい。
2010/08/12(木) 19:52:37いや、これ最高にアホだろ。
0579名無しさん@お腹いっぱい。
2010/08/12(木) 20:14:530580名無しさん@お腹いっぱい。
2010/08/12(木) 20:26:06ここで言う機種依存といのはハードウェア構成依存という事だろう。
0581名無しさん@お腹いっぱい。
2010/08/12(木) 20:50:29それは分かってるんだが。
大量に同一用途のサーバー管理するんでもなきゃ、
わざわざ可搬性を考慮するのなんて、バカバカしいよ。
0582名無しさん@お腹いっぱい。
2010/08/12(木) 21:19:44ぜんぜんわかってねぇなw
0583名無しさん@お腹いっぱい。
2010/08/12(木) 23:02:33反論も出来ないならひっこんでろよ
0584名無しさん@お腹いっぱい。
2010/08/12(木) 23:16:36何イライラしてるんだよw
sleep同期君
0585名無しさん@お腹いっぱい。
2010/08/13(金) 11:23:11別に問題ないと思うけど。
0586名無しさん@お腹いっぱい。
2010/08/13(金) 12:03:28そもそも非同期処理じゃないし…
0587名無しさん@お腹いっぱい。
2010/08/13(金) 12:46:070588名無しさん@お腹いっぱい。
2010/08/13(金) 13:07:37あれはタイマ割り込み使って音源鳴らしてるだけだろ。
0589名無しさん@お腹いっぱい。
2010/08/13(金) 13:08:450590名無しさん@お腹いっぱい。
2010/08/13(金) 13:43:34SMF再生するシェルが書けそうだな。
0591名無しさん@お腹いっぱい。
2010/08/13(金) 14:17:120592名無しさん@お腹いっぱい。
2010/08/20(金) 19:16:35単純に
tar directry/faile.tar tergetdir/
としてみたんですが
0593名無しさん@お腹いっぱい。
2010/08/20(金) 19:33:45シェルと関係ない話は別スレでやれよ(Makefileとも関係ないし)
まあ、f と -C オプションが落ちてるのが原因だけどな。
0594名無しさん@お腹いっぱい。
2010/08/20(金) 20:07:240595名無しさん@お腹いっぱい。
2010/08/20(金) 20:09:52faile
terget
英語初心者スレが適当だね
0596名無しさん@お腹いっぱい。
2010/08/20(金) 20:37:55オプションがないね
man tarオススメ
tar cf foo.tar bar
tar cfz foo.tar.gz bar
tar cfj foo.tar.bz2 bar
0597名無しさん@お腹いっぱい。
2010/08/20(金) 21:11:100598592
2010/08/20(金) 21:29:35tar xvfp directry/file.tar tergetdir/
でした
0599名無しさん@お腹いっぱい。
2010/08/20(金) 21:36:300600名無しさん@お腹いっぱい。
2010/08/20(金) 22:12:32だから、>>593 が言うように -C を付けろよ
0602名無しさん@お腹いっぱい。
2010/08/22(日) 09:15:580603名無しさん@お腹いっぱい。
2010/08/22(日) 09:48:130604名無しさん@お腹いっぱい。
2010/08/23(月) 22:07:15passwd(1)をシェルスクリプトでバッチ的に流すにはどうすればいいのでしょうか。
2回聞かれるところとかが、どう書けばいいのかわかりません。
お願いします。
0605名無しさん@お腹いっぱい。
2010/08/23(月) 22:13:46標準ツールじゃないけど、expect使ってみるとか。
0606名無しさん@お腹いっぱい。
2010/08/23(月) 22:26:36chpasswdってBSDには無いの?
0607名無しさん@お腹いっぱい。
2010/08/26(木) 14:17:560608シェルマスター
2010/08/28(土) 00:16:37お前らならどんなシェルスクリプトを作る?
0609名無しさん@お腹いっぱい。
2010/08/28(土) 00:48:130610名無しさん@お腹いっぱい。
2010/08/28(土) 03:14:390611名無しさん@お腹いっぱい。
2010/08/28(土) 12:19:38ログをcsvに整形してExcelのオートフィルタで分析とか。
0612名無しさん@お腹いっぱい。
2010/09/01(水) 09:09:06ただ、これだとプログラムが終了したりするとタブが閉じちゃうので、終了した後でもまたそこから
コマンドが打てるように改変したいのですがどのようにやれば良いのでしょうか?
#!bin/sh
gnome-terminal \
--tab --working-directory=`pwd`/hoge/ -e "command" \
--tab --working-directory=`pwd`/foo/ -e "command" \
--tab --working-directory=`pwd`/bar -e "command" \
一応ググってみると
gnome-terminal -x bash -c "command1; command2; exec bash"
こんな表記を使うとその後もコマンドを受け付けるみたいなのですが、
上のスクリプトとの組み合わせ方が上手くいかず、タブが起動しなかったりプログラムが起動しなかったりします。
OSはUbuntuなのでシェルはbashになると思います。お願いします。
0613名無しさん@お腹いっぱい。
2010/09/01(水) 09:34:17gnome-terminal -e 'bash -c "command1; command2; exec bash"'
0614名無しさん@お腹いっぱい。
2010/09/01(水) 17:51:34そこで、シェルで一気にプロセスをきりたいのですが、どのように記述すればいいですか?
0615名無しさん@お腹いっぱい。
2010/09/01(水) 18:06:22たぶん argument list too long とかいわれるんで、分割いるけど。
0616名無しさん@お腹いっぱい。
2010/09/01(水) 18:53:26使えるかは環境によるけど。
0617名無しさん@お腹いっぱい。
2010/09/01(水) 19:55:10そうですpkillです。
であとシェルの種類はbashでやりたいんです。
んで流れ的には612のように、1つの端末にタブで複数のプログラムを動かします。
んで複数のプログラムのプロセスをシェルを実行するだけですべてを切りたいんです。
そのようなシェルを作るにはどうすればよいですか?
ちなみに環境はubuntu10.04です
0618名無しさん@お腹いっぱい。
2010/09/01(水) 20:05:56>>613 には礼なしかよw >>613 はできたんだな?
だったら、pkill -HUP gnome-terminal とかすれば、
その gnome-terminal から派生したプロセスは(普通は)まとめて終了する。
ただし、個々のプロセス側でシグナルを無視してたり、
setsid()とかで別セッションを開始してる場合(デーモン類等)は
終了しないけど、これは仕方ない。
0619名無しさん@お腹いっぱい。
2010/09/01(水) 20:30:050620名無しさん@お腹いっぱい。
2010/09/01(水) 23:06:530621名無しさん@お腹いっぱい。
2010/09/02(木) 00:01:550622名無しさん@お腹いっぱい。
2010/09/02(木) 07:31:04>シェル作っちゃう人だし
えっ? ここの住人は自分でシェル作れないんですか?
ネットからのコピペ(+改変)専門ですか?
0623名無しさん@お腹いっぱい。
2010/09/02(木) 08:46:53シェルスクリプトは書けるけど、シェル作れる奴なんてここにはいないよ。
0624名無しさん@お腹いっぱい。
2010/09/02(木) 08:54:34難しく考えずにまずは自分でシェル作ってみたら?
ハローワールドのシェルなんてたった2行で作れるよw
0625名無しさん@お腹いっぱい。
2010/09/02(木) 08:55:030626名無しさん@お腹いっぱい。
2010/09/02(木) 09:56:23その2行のソース読ませてくれない?
何万文字で2行なんだ?
0627名無しさん@お腹いっぱい。
2010/09/02(木) 09:57:46#include <stdio.h>
#include <stdlib.h>
0628名無しさん@お腹いっぱい。
2010/09/02(木) 10:07:46スクリプトにするならperlだし。
シェルはスクリプトにはせずにコマンドとして使う。
0629名無しさん@お腹いっぱい。
2010/09/02(木) 10:11:2670文字で2行だよw
#!/bin/sh
while echo -n 'myshell> '; read line; do eval "$line"; done
0630名無しさん@お腹いっぱい。
2010/09/02(木) 10:22:08オマエくらい知能が低く生まれたかったわ
マヌケな2行でご満悦か
毎日幸せだろ?ww
0631名無しさん@お腹いっぱい。
2010/09/02(木) 10:30:44whileの後に echoなんて書いても動くわけないし、
doより前に ; なんて書いてるからここでエラーになるはず。
試さなくてもわかる。
0632名無しさん@お腹いっぱい。
2010/09/02(木) 10:38:000633名無しさん@お腹いっぱい。
2010/09/02(木) 11:44:48>>617
> すべてを切りたいんです。
とか言ってるから変換ミスではないと思う。
0634名無しさん@お腹いっぱい。
2010/09/02(木) 12:09:58#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <unistd.h>
void child(int argc, char **argv);
int main()
{
int argc, n = 0;
int status;
char input[10000], *argv[256], *cp;
const char *delim = " \t\n";
0635名無しさん@お腹いっぱい。
2010/09/02(木) 12:11:09++n;
printf("[%s@2ch]$ ", getenv("USER"));
if (fgets(input, sizeof(input), stdin) == NULL || input == 4) {
exit(0);
}
cp = input;
argc = 0;
while (argc < 256) {
if ((argv[argc] = strtok(cp,delim)) == NULL)
break;
cp = NULL;
argc++;
}
0636名無しさん@お腹いっぱい。
2010/09/02(木) 12:12:14exit(0);
}
pid_t pid = fork();
if(pid == -1) {
perror("fork");
exit(1);
} else if(pid == 0) {
child(argc, argv);
} else {
wait(&status);
}
}
}
void child(int argc, char **argv) {
execvp(argv[0], argv);
}
0637名無しさん@お腹いっぱい。
2010/09/02(木) 17:50:530638名無しさん@お腹いっぱい。
2010/09/02(木) 17:54:12input == 4 ← inputは char *型なのに
とか、
execvp(argv[0], argv)
の引数が足りないとか、
間違いがあるとネタにもならんな。
0639名無しさん@お腹いっぱい。
2010/09/02(木) 18:02:38int main(){char b[256];while(printf("hoge> "),gets(b)){system(b);}return 0;}
コンパイル、動作確認済み。warning無視
0640名無しさん@お腹いっぱい。
2010/09/02(木) 19:07:59#include </dev/tty>
0641名無しさん@お腹いっぱい。
2010/09/02(木) 19:18:510642名無しさん@お腹いっぱい。
2010/09/02(木) 19:22:23「シェルできました」と言うのはちょっとなぁ。
0643名無しさん@お腹いっぱい。
2010/09/03(金) 08:44:51シェルを書く話はよそでやってください。
0644名無しさん@お腹いっぱい。
2010/09/03(金) 14:59:28じゃあ、system()なしで書いたよ↓
main(){char b[256];while(printf("hoge> "),gets(b)){fork()?wait(0):_exit(execlp(b,b,0));}}
0645名無しさん@お腹いっぱい。
2010/09/03(金) 15:14:23とんちやってるんじゃないんだから、exec系も無しだろう。
0646名無しさん@お腹いっぱい。
2010/09/03(金) 15:18:17えぅ?
おまえ >>644 のプログラムの動作理解してないだろ
0647名無しさん@お腹いっぱい。
2010/09/03(金) 19:38:510648名無しさん@お腹いっぱい。
2010/09/03(金) 20:12:21カンマ区切りの実行順は確定だっけ?
0649名無しさん@お腹いっぱい。
2010/09/03(金) 20:41:07関数引数のカンマで区切られた各項の評価順序は不定。
「副作用完了点」でぐぐろう。
0650名無しさん@お腹いっぱい。
2010/09/05(日) 19:15:10SQL ServerをSQLって呼ぶのに比べりゃ大したことない。
0651名無しさん@お腹いっぱい。
2010/09/05(日) 19:44:100652名無しさん@お腹いっぱい。
2010/09/05(日) 19:51:180653名無しさん@お腹いっぱい。
2010/09/05(日) 20:53:42揚げ足ってどのレスのことだよ
0654名無しさん@お腹いっぱい。
2010/09/05(日) 21:11:54>>617に対する>>619から始まったシェルを作るって話のこと。
0655名無しさん@お腹いっぱい。
2010/09/06(月) 00:34:26異論は認めない
0656名無しさん@お腹いっぱい。
2010/09/06(月) 08:56:24異論は認めるw
0657名無しさん@お腹いっぱい。
2010/09/06(月) 16:07:08発音は認めない
0658名無しさん@お腹いっぱい。
2010/09/06(月) 16:14:460659名無しさん@お腹いっぱい。
2010/09/06(月) 16:21:04縫製機械のことを連想してしまうやつは認めない。
0660名無しさん@お腹いっぱい。
2010/09/06(月) 18:58:160661名無しさん@お腹いっぱい。
2010/09/06(月) 20:06:12do
mv "$file" "${file/hoge/piyo}"
done
0662名無しさん@お腹いっぱい。
2010/09/06(月) 20:48:12うまく動かなくて困っています。分かる人教えてください。
やりたいことは、数値計算の実効シェルスクリプト(300個くらいある)を同時に最大8個走らせ、
一つ終了したら次が始まるようにしたい。
args.listファイルにシェルスクリプトの絶対パスを1行ずつ書き並べて
xargs --arg-file=args.list --max-procs=8 -L 1
としましたが、topコマンドで確認しても全く動いている気配がありません。
クラスター用のjobマネージャは使わず、あくまでlinuxで一般的に使えるコマンドで済ませたいです。
0663名無しさん@お腹いっぱい。
2010/09/06(月) 20:57:540664名無しさん@お腹いっぱい。
2010/09/06(月) 21:32:30--arg-file はあくまで「引数」リストだから。
実行するシェルスクリプトを書き並べても引数になるだけで実行されない。
実行するには xargsのコマンドとしてシェルを書かないと。
xargs --arg-file=args.list --max-procs=8 -L 1 sh
0665名無しさん@お腹いっぱい。
2010/09/06(月) 23:46:450666662
2010/09/07(火) 01:41:39自分も引数リストであることは引っかかっていたのですが、どう解決すればいいか分かりませんでした。
ありがとうございました。
>>665
これは私に対するレスですか?LLというのはAWKとかParlとかのことですか?
『LLを使うと時間短縮になる』というイメージが湧かないのですが、具体的にどんな方法があるんでしょうか?
0667名無しさん@お腹いっぱい。
2010/09/07(火) 01:43:34シェルスクリプトと比べてみるといいよ。
0668名無しさん@お腹いっぱい。
2010/09/07(火) 06:33:27> シェルを書かないと。
↑シェルを書いちゃう回答者現るw
0669名無しさん@お腹いっぱい。
2010/09/07(火) 08:15:010670名無しさん@お腹いっぱい。
2010/09/07(火) 08:15:290671名無しさん@お腹いっぱい。
2010/09/07(火) 09:37:54一般的な呼び方だと、ボーンシェル、Bシェル(ビーシェル)と
呼ぶんで、シェルとは呼ばない。
0672名無しさん@お腹いっぱい。
2010/09/07(火) 09:47:45そのうちshと想定して回答しただけだろ
字面で反応した恥ずかしいミスを指摘されてキョドるなよ
0673名無しさん@お腹いっぱい。
2010/09/07(火) 09:59:19スクリプトの前にアンカー覚えろよ
0674名無しさん@お腹いっぱい。
2010/09/07(火) 12:29:12これって「数値計算」をシェルスクリプトでやってるのかなあ?
0675666
2010/09/07(火) 12:30:37科学計算についてどの程度知った上でのレスでしょうか?
300個ある実行シェルスクリプトは全て、中でFortranのプログラムを呼び出しているだけです。
シェルスクリプトは初期値や環境変数の設定に使うだけであって、それで数値計算しているわけではないです。
『Perlで書いてみて』というのは、具体的にどの部分を言っているのですか?
0676666
2010/09/07(火) 12:32:320677名無しさん@お腹いっぱい。
2010/09/07(火) 12:55:12情報後出し祭りに突入してきましたよ
0678名無しさん@お腹いっぱい。
2010/09/07(火) 12:59:10>>662 の質問は >>664 で解決してる。解決報告は >>666
質問の解決後に >>667 の Perl厨が余計なことを言い出した。
それに対する反論として >>675 が書かれただけ。
Perl厨はきっと今ごろ赤面w
0679名無しさん@お腹いっぱい。
2010/09/07(火) 14:21:26そうか?
別に深く追求しないで
「単純に時間を計って比べてみな」ってだけなんだから
「現状が速いです」で済む話なんだが?
0680名無しさん@お腹いっぱい。
2010/09/07(火) 15:07:59なんで、ここもプログラムにしないの?
普通は、函数化はしてあるだろうから、それを呼び出すようにするだけじゃん。
わざわざシェル経由して、xargsでこねくり回す意味がわからんわ。
完全に情報後出しの下手ないい訳だなw
0681名無しさん@お腹いっぱい。
2010/09/07(火) 15:13:56よくよめ
xargs使うのは、-max-procs=8 を指定したいから。
同時に動くプロセスを常に8個に保った状態で回したい。
これはFortranだけではできない。
-max-procs=8については最初の質問の >>664 に書かれている。
全く持って「後出しではない」
0682名無しさん@お腹いっぱい。
2010/09/07(火) 15:17:44>普通は、函数化はしてあるだろうから、それを呼び出すようにするだけじゃん。
↑
それを呼び出すようにするだけだとシングルスレッドにしかならないよ。
8スレッド使いたいという質問だったのでは?
0683名無しさん@お腹いっぱい。
2010/09/07(火) 15:43:23と、言ってると思うんだが?
>>これはFortranだけではできない。
数値計算の並列化なんて、Fortranの最も得意とするところじゃん。
0684名無しさん@お腹いっぱい。
2010/09/07(火) 15:44:00特定のパラーメータ振ったデータを生成して、fortranの解析プログラムを起動する
スクリプトなんだろ。そもそもそういう解析プログラムはコマーシャルソフトや別
部門が作ったソフトの場合が多く、それを呼び出すようになど出来ない場合が多い。
他にも、解析プログラムに、汎用でない特定の用途のパラメータ振りを組み込む事
は嬉しくないから、スクリプトで対応する可能性もある。
>>662を読んでその程度を推測できないアマチュアはネチネチと絡むんじゃねーよ。
0685名無しさん@お腹いっぱい。
2010/09/07(火) 16:21:55>>これはFortranだけではできない。
>数値計算の並列化なんて、Fortranの最も得意とするところじゃん。
話をすり替えてはイカン。
数値計算の並列化の話ではなくて、
既存の複数のFortranプログラムを「プロセスをちょうど8個に保ったまま並列起動」したい
という話。
0686名無しさん@お腹いっぱい。
2010/09/10(金) 07:17:49分けたいのですけど、お勧めの方法はなんでしょうか?
0687名無しさん@お腹いっぱい。
2010/09/10(金) 07:24:23普通にバックスラッシュで改行すればいい。
「バックスラッシュ+改行」は消えてなくなって代入される
0688名無しさん@お腹いっぱい。
2010/09/10(金) 08:46:11つまり
declare str="xxx"\
"yyy"\
"zzz"
ということですか。
ちょっと見辛いのですよね。
他にありませんでしょうか?
C++だと
declare str="xxx"\
"yyy"\
"zzz"
のように書けるのですが。
0689名無しさん@お腹いっぱい。
2010/09/10(金) 09:30:34こんな馬鹿もプログラマーなのか?
0690名無しさん@お腹いっぱい。
2010/09/10(金) 09:30:45おいおい、C/C++ならそんなことしなくても、
str = "hoge"
"boke"
"aho";
と書けるだろw
0691名無しさん@お腹いっぱい。
2010/09/10(金) 09:52:25データ上はあくまで1行の文字列を、
文字列が長過ぎる(たとえば100文字以上)だから、
スクリプト上では2行以上にわけて記述したいという話だろ?
だったら、2行目以降はインデントせずに
行頭から記述した方が、前の行からデータが継続していて
実際は1行であることがわかりやすい。
(変にインデントするとスペースやタブや改行がデータに入ってるように誤解する)
よって、>>687 の言う方法で良い。
0692名無しさん@お腹いっぱい。
2010/09/10(金) 09:59:25yyy
zzz"
0693名無しさん@お腹いっぱい。
2010/09/10(金) 10:02:42質問良く良め。それだと改行が入るだろw (質問は >>686 な)
0694名無しさん@お腹いっぱい。
2010/09/10(金) 10:16:11そういうのは最低限LLでやるべきだろ。
実際Perlとかで書いてみて、
シェルスクリプトと比べてみるといいよ。
0695名無しさん@お腹いっぱい。
2010/09/10(金) 10:31:54意地悪ですねw。
>>694
LLってなんですか?
学がなくて申し訳ないです。
0696名無しさん@お腹いっぱい。
2010/09/10(金) 10:35:470697名無しさん@お腹いっぱい。
2010/09/10(金) 11:23:06スクリプトで取得したいのですが、上手くいきません
$ hoge.sh > log &
とのようにすれば可能なのは理解しているのですが、
$ hoge.sh & > log
を実現したいのです
hage.sh内でhoge.sh &を実行しているのですが、
どちらも改変不可なのでhige.sh->hage.sh->hoge.sh
と呼び出さざるを得ません
コマンドラインからhage.shを実行するとhoge.shの出力が画面上で
得られますが、hige.shから呼び出すと、なにも出力されなくなります
このようなことは可能でしょうか?
0698名無しさん@お腹いっぱい。
2010/09/10(金) 11:39:300700697
2010/09/10(金) 14:52:39どうも出力がバッファリングされているようで、
hoge.sh終了までファイルに書き込まれません
ぐぐるとsttyで制御するようなので
stty raw; ( hoge.sh & ) > log ; stty sane; tail -f log
とか
( stty raw ; hoge.sh & ) > log ; stty sane; tail -f log
とかやってみましたが、バッファリングが止まりません
解決するための設定・コマンドはありますでしょうか?
0701名無しさん@お腹いっぱい。
2010/09/10(金) 16:41:21(hoge.sh &) > log
hoge.sh > log &
そもそも、前者によって何を実現したくて、それが何故後者では実現できないのかが分からない。
hage.sh, hoge.shが改変不可で、そのラッパーであるhige.shを作る(のですよね?)、そして
> コマンドラインからhage.shを実行するとhoge.shの出力が画面上で
> 得られますが、hige.shから呼び出すと、なにも出力されなくなります
のようにしたい(のですよね?)って言う話と、最初の話がいまいち繋ってこないんだけど。
ってか
exec > log
hoge.sh &
じゃ駄目なんだろうか?
0702名無しさん@お腹いっぱい。
2010/09/10(金) 16:49:27stty無関係。
仮にhoge.shが下のようなのだと、ちゃんと出てくるはず。
#!/bin/sh
echo 1
sleep 5
echo 2
sleep 5
echo 3
hoge.shの中で動かしているプログラムが端末以外に出力するときに
勝手にバッファリングするようになってるんじゃないか?
0703697
2010/09/10(金) 17:49:17それです!
さらにこの先に、1分間だけ出力ログを監査して問題なければlogoutというのが待っていまして、
そのため第一弾としてログに吐かせようとして、なんだか山にぶつかってたというところです
上手くいけばログをパイプ変更して監査スクリプトに渡すところを作って完了です
土日で終わるといいな。。。
> exec > log
> hoge.sh &
これ、あっさりいけました!
execって引数なしだとリダイレクトなんですね
この使い方初めて知りました
>>702
その通りでした
hoge.shの中でいろいろコマンド呼び出してるんですが、
それがバッファリングしてました
こっちは改変できそうなのでなんとかなりそうです
これで先に進めますm(__)m
0704名無しさん@お腹いっぱい。
2010/09/10(金) 23:52:06> この使い方初めて知りました
シェルの基本ですよ。
ttp://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/sh-text/sh/node62.html
他にも以下を知ってることを確認しておくと良いです。
ttp://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/sh-text/sh/node31.html
ttp://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/sh-text/sh/node40.html
ttp://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/sh-text/sh/node64.html
ttp://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/sh-text/sh/node65.html
ttp://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/sh-text/sh/node66.html
また、時間があるときにでも、全部読んでおくべきです。
ttp://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/sh-text/sh/sh.html
0705名無しさん@お腹いっぱい。
2010/09/11(土) 00:02:240706名無しさん@お腹いっぱい。
2010/09/12(日) 04:53:07例えば、
===============
VAR1="ABC"
VAR2="DEF"
VAR3="GHI"
AAA1="VAR1"
AAA2="VAR2"
AAA3="VAR3"
===============
として、通常であれば、$VAR1・$VAR2・$VAR3となると思うのですが、
これをAAA1〜3の値を変数名としてfor文で「$i」使用してVAR1〜3の値を参照したいのです。
よろしくお願い致します。
0707706
2010/09/12(日) 04:55:330708名無しさん@お腹いっぱい。
2010/09/12(日) 05:16:42for i in AAA1 AAA2 AAA3;
do
i=${!i}
echo ${!i}
done
かな。もちろん/bin/shでは動かないけど。
0709名無しさん@お腹いっぱい。
2010/09/12(日) 06:45:55bash依存じゃなくてできる。(純正/bin/shでも動く)
↓
VAR1="ABC"
VAR2="DEF"
VAR3="GHI"
AAA1="VAR1"
AAA2="VAR2"
AAA3="VAR3"
for i in AAA1 AAA2 AAA3
do
eval echo '$'$i
done
0710名無しさん@お腹いっぱい。
2010/09/12(日) 06:53:482重間接だよ。もう1段 evalが必要。
eval eval echo '"$"''$'$i
0711名無しさん@お腹いっぱい。
2010/09/12(日) 20:32:49実際Perlとかで書いてみて、
シェルスクリプトと比べてみるといいよ。
0712名無しさん@お腹いっぱい。
2010/09/12(日) 21:26:47つまらん。やめとけ。
0713697
2010/09/13(月) 18:49:51http://www.edu.ics.saitama-u.ac.jp/~j0114ky/first/html_enshu/10.4.html
のタイムアウト処理を実行したところlinuxで動きませんでした
http://www.nurs.or.jp/~sug/soft/super/bash.htm#sec7
の例も動かず、二日悩んでsolaris10で動かすとちゃんと動く
bashのバージョン違いで挙動が変わるのかと思いつつ、
/bin/配下を眺めてると/bin/bshを発見、あっさり動きました。。。
あんまりこういう使い方はしないと思いますが備忘録的に残しておきます
>>704
ありがとうございます
shはrcを眺めて覚えたんですが、一度はちゃんと仕様から勉強するべきですね
0714名無しさん@お腹いっぱい。
2010/09/13(月) 19:00:50せっかく bashがあるんならもっとスマートにタイムアウト処理できるよ。
こっちがお勧め(5秒待ちの例)
↓
read -t 5 hoge
0715名無しさん@お腹いっぱい。
2010/09/14(火) 00:20:51参考になったぜ。thx!
0716名無しさん@お腹いっぱい。
2010/09/14(火) 22:11:42e.g. 200909 -> 20090931 & 20090831
date -d "1 month 1 day ago YYYYMMDD"でいけると思っていましたが、
「-dなんてネーよバーカ」とSunOSに怒られました。
閏年を考慮しない方法で無理矢理書きはしましたが、
なにかスマートな方法があればお教え下さい。
0717名無しさん@お腹いっぱい。
2010/09/14(火) 22:13:370718名無しさん@お腹いっぱい。
2010/09/14(火) 22:40:14YYYYMM=200909
date -j -v+1m -v1d -v-1d ${YYYYMM}010000 +%Y%m%d
date -j -v1d -v-1d ${YYYYMM}010000 +%Y%m%d
-v1dは冗長かも
0719名無しさん@お腹いっぱい。
2010/09/14(火) 22:47:26FreeBSDの話なんかしてねーよ
0720名無しさん@お腹いっぱい。
2010/09/14(火) 22:53:400721716
2010/09/14(火) 22:55:40そんなべんりーなオプションはなく、
ttp://docs.sun.com/app/docs/doc/819-1210/date-1?l=en&n=1&a=view
こんな感じのオプションしかなかったです
0722716
2010/09/14(火) 23:00:17その処理だけPerlで書いて外部コマンドとして呼ぶことも候補には入れていますが
やっぱりできればシェルスクリプトで書きたいと思っていました。
(モジュールを追加できないので標準モジュールでどこまでできるかも不明ですし)
0723名無しさん@お腹いっぱい。
2010/09/14(火) 23:02:28if文とexprのいい練習課題だね
0724名無しさん@お腹いっぱい。
2010/09/14(火) 23:05:27実際Perlとかで書いてみて、
シェルスクリプトと比べてみるといいよ。
0725名無しさん@お腹いっぱい。
2010/09/14(火) 23:08:23とマジレステスト
0726名無しさん@お腹いっぱい。
2010/09/14(火) 23:08:54だから >>723 が言うような if や expr では解決しない。
Solarisのdateで現在時刻以外を指定するのに、
環境変数TZをいじって 24時間を超える大きなタイムゾーンを捏造するという
裏技があるが、そういう変な方法しかない。
0727名無しさん@お腹いっぱい。
2010/09/14(火) 23:12:17>>723 は date自体を使わずに、日付の数値を自分で計算しろと言ってるのでは?
0728名無しさん@お腹いっぱい。
2010/09/14(火) 23:54:360729名無しさん@お腹いっぱい。
2010/09/15(水) 00:04:20set `cal 8 2010`; shift `expr $# - 1`; echo $1
0730名無しさん@お腹いっぱい。
2010/09/15(水) 01:02:19おもしろいやり方してるな。
俺は普通にgrepとtailとsedあたりでやることを考えてしまうんで、ちょっと新鮮だ。
0731名無しさん@お腹いっぱい。
2010/09/15(水) 01:07:27cal 8 2010 | tr -s ' ' '¥012' | sed -n '$p'
0732名無しさん@お腹いっぱい。
2010/09/15(水) 01:23:18Solaris 10, Ubuntu 10.04はokだった。
0733名無しさん@お腹いっぱい。
2010/09/15(水) 02:32:21arg配列のそんな使い方があったのか。 自分が思いつくのは普通の
配列だな。
$ DAYS=(`cal 8 2010`); echo ${DAYS[`expr ${#DAYS[*]} - 1`]}
0734名無しさん@お腹いっぱい。
2010/09/15(水) 16:35:01./example | while read x
do
なんか処理して変数代入とか
done
変数を利用して後処理
というのをパイプ(サブシェル)を使わずにできない?
変数相当の値を一旦外部ファイルに書き出さないと駄目かな
exampleの出力を自身の入力にできるといいんだけど
0735名無しさん@お腹いっぱい。
2010/09/15(水) 16:51:27RESULT=`./example | while read x
do
なんか処理して echo 処理結果
done`
"$RESULT" を利用して後処理
0736名無しさん@お腹いっぱい。
2010/09/15(水) 17:44:06のようにすれば、while の外に出ても {} の内側にいるかぎりは変数の値が見える。
以下のようにすればそもそもサブシェルが生成されないが、
何やってるのかひじょーにわかりにくいのでオススメはしない。
while read x; do ... done <<_EOF_
`./example`
_EOF_
bash 限定。
while read x; do ... done <<<"`./example`"
0737名無しさん@お腹いっぱい。
2010/09/15(水) 19:46:27[ -z "$HOGE" ] && { ./example | HOGE=hage exec $0; }
while read x; do
なんか処理して echo 処理結果
done
0738716
2010/09/16(木) 01:30:00UNIXを初めて触ったころには使っていましたが、
それ以来一切関わることなく脳内から完全に抜け落ちていました。
cal出力の最後を月末とすることでうまくいきそうです。
レスくれた方ありがとうございました!
0739名無しさん@お腹いっぱい。
2010/09/16(木) 19:10:11斯界のおっさんたちは皆一度は試してるんだぞぉ
0741名無しさん@お腹いっぱい。
2010/09/16(木) 19:23:19ネタで書いてると思ったよ。
0742名無しさん@お腹いっぱい。
2010/09/17(金) 07:42:060743名無しさん@お腹いっぱい。
2010/09/17(金) 08:09:55FreeBSDの/bin/shで、>>737 動かないよ。
たしかにFreeBSDはヘボだな。
0744名無しさん@お腹いっぱい。
2010/09/17(金) 08:31:55[ -z "$HOGE" ] && { ./example | HOGE=hage $0; exit; }
0745名無しさん@お腹いっぱい。
2010/09/17(金) 08:41:25わざわざこんなことしなくても、
command | while ... がサブシェルにならないから、
最初から command | while ... と書けばいいんだな。
よって、>>737 は全然解決になってない。
0746名無しさん@お腹いっぱい。
2010/09/17(金) 08:51:570747名無しさん@お腹いっぱい。
2010/09/17(金) 09:09:000748名無しさん@お腹いっぱい。
2010/09/17(金) 09:15:550749名無しさん@お腹いっぱい。
2010/09/17(金) 09:18:43同じサブシェル問題だと、後付けで気付いたのはお前の方だろw
俺は最初からわかってたよ。
0750名無しさん@お腹いっぱい。
2010/09/17(金) 09:22:05> 俺は最初からわかってたよ。
> 俺は最初からわかってたよ。
> 俺は最初からわかってたよ。
> 俺は最初からわかってたよ。
0751名無しさん@お腹いっぱい。
2010/09/17(金) 09:36:12>>742 >どんなヘボシェルだよ。ww
↑って書いてる時点で 742 はサブシェル問題だと気付いてないよね。
FreeBSDだけじゃなく、フツーのbourne shでは動かないことに
この時点でまだ気づいてないww
0752名無しさん@お腹いっぱい。
2010/09/17(金) 09:38:58> 俺は最初からわかってたよ。
と言いたいのだったら最初から書くべきだったな。ww
0753名無しさん@お腹いっぱい。
2010/09/17(金) 09:43:14最初からわかってたのは本当だ。
でも答を書いてしまうと面白くないから >>737 他の反応を見るために書かなかった。
「ネタで書いてると思ったよ」という言葉に、
「サブシェル問題の解決なのにサブシェル問題に引っかかってるという笑いネタかw」
というニュアンスを含ませたつもりだが、読みとれなかったかい?
0754名無しさん@お腹いっぱい。
2010/09/17(金) 09:45:100755名無しさん@お腹いっぱい。
2010/09/17(金) 09:48:05>>737 自身が 737 を書いた時点で、
「全然問題の解決になってない」ということを理解していなかったということだ。
これだけは紛れもない事実。
0756名無しさん@お腹いっぱい。
2010/09/17(金) 09:52:19> 俺は最初からわかってたよ。
と、>>741が後付けで必死に言い張っている事。
0757名無しさん@お腹いっぱい。
2010/09/17(金) 09:54:04741 をいくら叩いても >>737 の恥ずかしさを弁解できないことは理解してますか?
0758名無しさん@お腹いっぱい。
2010/09/17(金) 09:56:580759名無しさん@お腹いっぱい。
2010/09/17(金) 10:10:47バグはそんなに恥ずかしくない。後付けで↓と言い張るよりは。
> 俺は最初からわかってたよ。
> 俺は最初からわかってたよ。
> 俺は最初からわかってたよ。
> 俺は最初からわかってたよ。
0760名無しさん@お腹いっぱい。
2010/09/17(金) 10:20:59じゃあ、バグを認めずに(バグの原因を理解せずに)
>>742 「どんなヘボシェルだよ。ww」
って言うのはどれくらい恥ずかしいですか?
0761名無しさん@お腹いっぱい。
2010/09/17(金) 10:39:200762名無しさん@お腹いっぱい。
2010/09/17(金) 10:42:05それとも、/bin/sh -> zsh みたいにリンクされたOS使ってたのか?
0763名無しさん@お腹いっぱい。
2010/09/17(金) 11:51:220764名無しさん@お腹いっぱい。
2010/09/17(金) 11:59:58で、762の質問への回答は?
(1)動作確認してなかったのか、(2)/bin/sh -> zsh にしてたのか?(その場合はOS名も)
0766名無しさん@お腹いっぱい。
2010/09/17(金) 17:57:23>確認してないが何か?
>確認してないが何か?
>確認してないが何か?
>確認してないが何か?
あーあ。自爆、敗北宣言乙w
0767名無しさん@お腹いっぱい。
2010/09/17(金) 18:01:20どこが敗北宣言なんだろう。ww
0768名無しさん@お腹いっぱい。
2010/09/18(土) 00:37:33シェルスクリプトの練習の為、練習用のシェルスクリプトを作成しており、
Cygwin上にて
#!/bin/sh
var1=100
var2=0
num1=`expr 10 + 30`
num2=`expr $var1 - 30`
num3=`expr 100 % 30`
num4=`expr $var2 && 1000`
echo $num1 $num2 $num3 $num4
という、上記内容のシェルを実行しました。
下記のような結果が出力される予定でした。
$./script2
40 70 10 0
ところが、
expr: non-integer argument
test02.sh: line 7: 1000: command not found
00
という内容が出力されてしまいました。
$var1、$var2が認識されていないようなのですが、原因が分かりません。
シェルはbash、OSはWindowsXPSP3です。
何卒、御教授お願い致します。
0769名無しさん@お腹いっぱい。
2010/09/18(土) 00:43:05dash on Debian だと
40 70 10 0
てなったよ。
set -x
してみたらどう?
0770名無しさん@お腹いっぱい。
2010/09/18(土) 00:58:52改行コードが CR+LF になってるだろ。LFのみにしろ。
var1=100^M とかになって実行されるから、正しく数値として実行されない。
0771名無しさん@お腹いっぱい。
2010/09/18(土) 01:17:44御回答、ありがとうございます。
set -x var1=100
set -x var2=0
としましたところ、今度は下記の結果が出力されました。
$ sh test02.sh
+ set -x $'var2=0\r'
++ expr 10 + 30
+ num1=$'40\r'
++ expr - 30
expr: syntax error
+ num2=$'\r'
++ expr 100 % 30
+ num3=$'10\r'
++ expr
expr: missing operand
Try `expr --help' for more information.
+ num4=$'\r'
+ echo $'40\r' $'\r' $'10\r' $'\r\r'
10
>>769
御回答、ありがとうございます。
Meadowにて改行コードをLFのみにしようとしたのですが、メニューが英語で、
どこを触ればいいのか分かりませんでした…
メニューを日本語化できないかと検索してみたのですが、403エラーでサイトに
入ることが出来ませんでした。
質問ばかりで恐縮ですが、LFのみにする為、どこを触ればよいか教えていただけないでしょうか?
0772名無しさん@お腹いっぱい。
2010/09/18(土) 01:28:30改行コードの問題ということがはっきりして、
このスレ的には問題解決したので、
次の方どうぞ
↓
0773名無しさん@お腹いっぱい。
2010/09/18(土) 01:33:31$ tr -d '\r' < in > out
あと、 set の使い方が違うよ。man 見てね。
0774名無しさん@お腹いっぱい。
2010/09/18(土) 01:37:53C-x RET f
で, sjis-unix とか指定すればいい。
分からなかったら禿丸とかでも改行コード変更できるだろ。
0775名無しさん@お腹いっぱい。
2010/09/18(土) 01:52:090776名無しさん@お腹いっぱい。
2010/09/18(土) 08:28:48Don't say "shell", idiot !
あ、こっちは日本語スレだった、、
0777名無しさん@お腹いっぱい。
2010/09/21(火) 17:22:43起動したアプリケーションの終了を待たずに、次のステップを実行するにはどう書けばいいのですか?
0778名無しさん@お腹いっぱい。
2010/09/21(火) 17:34:570779名無しさん@お腹いっぱい。
2010/09/21(火) 17:50:040780名無しさん@お腹いっぱい。
2010/09/25(土) 08:13:01・ findで見付かったファイルに対してそれぞれ複数のコマンドが必要な処理を行いたい
・ ディレクトリ名にスペースが含まれる可能性がある
・ 複数コマンドと言っても mv $f $f.org;sed -e '....' <$f.org >$f;rm $f.org みたいなワンライナーな処理で
汎用的に使いまわすようなものでも無い。
以上の条件をふまえると、思い付くやり方は
1. 複数のコマンド部分をシェルスクリプトにして、find -exec
2. 複数のコマンド部分をシェルスクリプトにして、find -print0 |xargs -0
3. 一時的にIFS='\n'にして、for f in `find ...`;do ....
という3つが思い付くんですが、1,2はわざわざスクリプトにするのは億劫で、3はちょっとトリッキーな感じで
どれもしっくり来ません。
割と良くある処理だと思うんですが、標準的なやり方って他に何かありませんかね?
0781名無しさん@お腹いっぱい。
2010/09/25(土) 09:14:000782名無しさん@お腹いっぱい。
2010/09/25(土) 10:01:27一列目に日付が二列目に数字が入っているのですが
fileAにない日付のデータがfileBにはあります。
fileAになければfileBのデータを補完して新たなfileを作成したいのですが、
簡単な方法ありますでしょうか?
file A
199901 10
199902 15
199903 16
199004 17
file B
199901 18
199902 13
199903 13
199004 13
199005 18
file NEW
199901 10
199902 15
199903 16
199004 17
199005 18
というようにしたいのですがどうすればよいでしょうか。
0783名無しさん@お腹いっぱい。
2010/09/25(土) 10:31:02$ sort -u -k 1,1 filea fileb
199004 17
199005 18
199901 10
199902 15
199903 16
0784名無しさん@お腹いっぱい。
2010/09/25(土) 12:01:48それはちょっと面倒だなぁ。
0785名無しさん@お腹いっぱい。
2010/09/25(土) 12:07:30-exec sh -c 'f="{}"; mv "$f" "$f.org";sed -e ... < "$f.org" > "$f";rm "$f.org"'
0786名無しさん@お腹いっぱい。
2010/09/25(土) 13:17:19それはもっと面倒だなぁ。
0787名無しさん@お腹いっぱい。
2010/09/25(土) 13:42:32タイプ数増やして応用力とはこれ如何にw
findで見つかったファイル名の中に $ を含むもの( $hoge という名前のファイルとか)
があったら、f="{}" のところで展開されちゃうから、エンバグしてるじゃん。
0788名無しさん@お腹いっぱい。
2010/09/25(土) 14:11:13そのバグは >>781 に既に含まれてるから、「エンバグ」ではない。
あと、$だけじゃなくて " ` とかがあってもコケるな。
0789名無しさん@お腹いっぱい。
2010/09/25(土) 14:27:21ありがとうございます!
試してみます!
0790名無しさん@お腹いっぱい。
2010/09/26(日) 19:42:22出力順を変えない方法もあるよ:
$ cat file_A file_B | awk '!a[$1]++'
0791名無しさん@お腹いっぱい。
2010/09/26(日) 20:09:55dpkg -x xxx.deb xxx
するスクリプトを作りたいんですが、
xxx.deb から .debを削除するには?
0792名無しさん@お腹いっぱい。
2010/09/26(日) 21:08:350793791
2010/09/26(日) 22:09:55sedを使うのかと思ってました。
basenameってこう言う使い方ができたんですね。
ありがとうございました。
0794名無しさん@お腹いっぱい。
2010/09/27(月) 00:00:54普通は、
for f in *.deb;do dpkg -x $f ${f%.deb};done
だけどな。
0795793
2010/09/27(月) 06:55:47おー スマートですね
0796名無しさん@お腹いっぱい
2010/09/29(水) 18:50:18PROC=`ps ax | grep "process"`
if [ -n "$PROC" ]
then
として見たら、grep processがあるからダメなのね
どうすりゃいいの?
0797名無しさん@お腹いっぱい。
2010/09/29(水) 18:54:03pgrepないの?
0798名無しさん@お腹いっぱい。
2010/09/29(水) 18:55:070799名無しさん@お腹いっぱい。
2010/09/29(水) 18:56:12見たいプロセスが logreport.sh とかだった場合に困る。
0800名無しさん@お腹いっぱい。
2010/09/29(水) 19:00:160801名無しさん@お腹いっぱい。
2010/09/29(水) 19:03:33ない環境ならしょうがないけど。
0802名無しさん@お腹いっぱい。
2010/09/29(水) 20:45:17そりゃ、PerlやRuby、Pythonなどが普及しても
「どこでも通じるからawkは覚えておいたほうがいい」なんてのがUNIX文化。
そこにおいて >801 は異質に見える。
0803名無しさん@お腹いっぱい。
2010/09/29(水) 20:48:450804名無しさん@お腹いっぱい。
2010/09/29(水) 20:52:30必死だな。
0805名無しさん@お腹いっぱい。
2010/09/29(水) 20:53:030806名無しさん@お腹いっぱい。
2010/09/29(水) 21:10:000807名無しさん@お腹いっぱい
2010/09/29(水) 21:15:56pgrepは使えませんでした
で、板が代わって、そういう小技こねくりまわした方法が見れない
もう一度、書いてもらえる雰囲気じゃない?
0808名無しさん@お腹いっぱい。
2010/09/29(水) 21:23:480809名無しさん@お腹いっぱい。
2010/09/29(水) 21:23:54いまいじっているシステムは全部で16Mぐらいの/
だけど、awkはある。pgrepはない。
perlもpythonもbashもない。
こういうシステム上でもinitスクリプト等にawkは必須。
0810名無しさん@お腹いっぱい。
2010/09/29(水) 21:24:54必死な屁理屈野郎にはなに言っても無駄だと思うよ。
0811名無しさん@お腹いっぱい。
2010/09/29(水) 21:59:51実際Perlとかで書いてみて、
シェルスクリプトと比べてみるといいよ。
0812名無しさん@お腹いっぱい。
2010/09/29(水) 22:03:17>>800が定石だと思う.
0813807
2010/09/29(水) 22:15:12ありがとう
0814名無しさん@お腹いっぱい。
2010/09/30(木) 00:48:340815名無しさん@お腹いっぱい。
2010/09/30(木) 10:48:540816名無しさん@お腹いっぱい。
2010/09/30(木) 18:11:46このスクリプトをcrondで1時間ごとに起動する
1度メールすると次は送らない
とするなると、メールを送ったかどうかの、何らかのフラグが必要でけど
一般的には、何をフラグとすればいいでしょうか?
ファイルの有無?
ファイルの中身の有無としたとき、ファイルのテキストを空にするコマンド
ってありました。?
0817名無しさん@お腹いっぱい。
2010/09/30(木) 18:16:590818名無しさん@お腹いっぱい。
2010/09/30(木) 18:18:11> 1度メールすると次は送らない
生涯で1回しかメール送らないってこと?
> ファイルの中身の有無としたとき、ファイルのテキストを空にするコマンド
> ってありました。?
:>file みたいな
0819名無しさん@お腹いっぱい。
2010/09/30(木) 18:37:44>>818
コロンが無駄です
0820名無しさん@お腹いっぱい。
2010/09/30(木) 18:53:06サンキュー
0821名無しさん@お腹いっぱい。
2010/09/30(木) 19:13:37どこでも動く :> の方が安心といえば安心。
まあ、sh と zsh をごっちゃにする人はあんまりいないと思うけど。
0822名無しさん@お腹いっぱい。
2010/09/30(木) 22:01:22':' って初めて知ったが他にどんな使い方があるのなか?
0823名無しさん@お腹いっぱい。
2010/09/30(木) 22:03:020824名無しさん@お腹いっぱい。
2010/09/30(木) 22:05:11: ${FOO:=bar} で変数のデフォルト値設定とかか?
0825名無しさん@お腹いっぱい。
2010/09/30(木) 22:44:52は俺だけか?
0826名無しさん@お腹いっぱい。
2010/09/30(木) 22:46:070827名無しさん@お腹いっぱい。
2010/09/30(木) 22:53:06そっちの方が、誰が見てもわかりやすいってのはあるがな。
0828名無しさん@お腹いっぱい。
2010/09/30(木) 23:10:03if 肯定の条件;
:
else
本来やりたいこと
fi
みたいなの書いたことがある。
0829名無しさん@お腹いっぱい。
2010/10/01(金) 00:38:180830名無しさん@お腹いっぱい。
2010/10/01(金) 01:02:16if ! ( 肯定の条件 );
本来やりたいこと
fi
じゃだめ?
0831名無しさん@お腹いっぱい。
2010/10/01(金) 06:13:44純正シェルで動かない
0832名無しさん@お腹いっぱい。
2010/10/01(金) 10:44:57複数行のコメント
_
0833名無しさん@お腹いっぱい。
2010/10/01(金) 10:54:38それもコロンが無駄です
0834名無しさん@お腹いっぱい。
2010/10/01(金) 13:34:00完全なコメントアウトになってないのが問題だな。
0835名無しさん@お腹いっぱい。
2010/10/02(土) 18:57:00Linux bash3.2.25 の環境です
関数がいくつかあって、ある関数内(Aとします)の条件式(if)で分岐した結果、異なる関数(Bとします)を
呼び出したとします。
その呼び出された関数Bの処理が終わった後、直前に実行してた関数Aに戻る方法はないでしょうか?
何をしたいかというと、Aで実行したコマンドの結果の判定を行い正だった場合に
関数Bに移動してそこでwhileを使ってカウンタを増やし、また関数Aに戻ってコマンドを実行し
偽になるまで繰り返したいのです。(偽になったら関数A内のif文で抜けて次の関数Cへと進みます)
どなたか良い方法を教えていただけると助かります
0836名無しさん@お腹いっぱい。
2010/10/02(土) 19:02:53関数というのは、処理が終れば呼び出し元に戻る。
だから何もしなくても関数Aに戻るよ。
逆に、関数A「以外」に戻ることはできない。
0837名無しさん@お腹いっぱい。
2010/10/02(土) 19:08:25わぁ、すみません・・・
仰る通りでした。途中で別の所を呼んでたのをすっかり忘れておりました。
お手数おかけしました・・・
0838名無しさん@お腹いっぱい。
2010/10/04(月) 15:12:520839名無しさん@お腹いっぱい。
2010/10/04(月) 16:19:30別にLinux依存の質問じゃないし、こっちで聞いていいよ。
あと、Linux板のシェルスクリプトスレは落ちて終了したから、こっちで聞くしかない。
0840名無しさん@お腹いっぱい。
2010/10/04(月) 16:43:160841名無しさん@お腹いっぱい。
2010/10/06(水) 11:17:31./hogehoge >/dev/null 2>&1
とやりますが、なぜリダイレクトは後ろから評価されるのですか?
この順序に例外はありますか?
0842名無しさん@お腹いっぱい。
2010/10/06(水) 11:36:15後ろから評価されてないよ。
2>&1 は 標準エラーを標準出力と同じところに出力するということ。
./hogehoge >/dev/null 2>&1
の場合は 2>&1 が評価された時点で、標準出力が /dev/null に設定されている
ので、標準エラーも /dev/null に設定される。
./hogehoge 2>&1 >/dev/null
この場合は 2>&1 が評価された時点で、標準出力が画面に表示される設定になっ
ているから、標準エラーが画面表示される。
分かり難い説明だと思うので、検索したほうがいいかも。
0843名無しさん@お腹いっぱい。
2010/10/06(水) 11:38:501 >/dev/null 標準出力を/dev/nullにリダイレクトする。
2 2>&1 標準エラーを(さっき/dev/nullにリダイレクトした)標準出力にdupする。
感覚に合わないのは、./hogehoge 2>&1 | hagedebu
これは、標準出力をパイプにリダイレクトするのが先。
0844名無しさん@お腹いっぱい。
2010/10/06(水) 11:43:350845名無しさん@お腹いっぱい。
2010/10/06(水) 11:46:570846名無しさん@お腹いっぱい。
2010/10/06(水) 12:06:42間違いを堂々と書いてるサイトや文章が結構存在するから注意。
正しくは「前から評価される」
「ファイル記述子の複製」を理解すれば理解できる。
0847名無しさん@お腹いっぱい。
2010/10/06(水) 12:19:14正しいかどうかよりもわかりやすさ優先なので。
何か問題でも?
0848名無しさん@お腹いっぱい。
2010/10/06(水) 13:13:08ここでわからないとされるのは、前から評価されるなら
2>&1 で標準エラー出力(2)を標準出力(1)にしたときに
そのあと >/dev/null にしたときに なぜ元標準エラー出力は
釣られないのか というところだろ。
ここを簡潔に説明するのに必要なのはdupの勉強ではない
0849名無しさん@お腹いっぱい。
2010/10/06(水) 14:02:53なんで、マニュアルに書いてあることを無視するん?
0850名無しさん@お腹いっぱい。
2010/10/06(水) 20:27:44>/bin/shプログラミング入門
>ttp://freebooks.info.nara-k.ac.jp/archive/ShellProgramming/?
つぎのスレから、削除するべき。
0851名無しさん@お腹いっぱい。
2010/10/06(水) 20:33:17後ろから評価されるって思うには、どういう風に解釈すればいいの?
普通、2>&1 を「stderrにstdoutと同じにする」って読むと思うけど
これだと、前から後ろに順番に読まないと意味が合わないよね
読み方が違う?もっと根本的なところが違う?
0852名無しさん@お腹いっぱい。
2010/10/06(水) 20:34:18の間違い・・・
0853名無しさん@お腹いっぱい。
2010/10/06(水) 20:54:30として、書き出される順番が揃わなくて考えこんだ日を思い出した
0854名無しさん@お腹いっぱい。
2010/10/06(水) 23:17:59言い直したところでその説明だと致命的におかしいのぜ。
ls -e 2>&1 >hoge.txt
のとき、標準エラー出力はhoge.txtに吐かれない。
「stderrにstdoutと同じにする」 と読んでしまったら
評価順序的にhoge.txtに吐かれないとおかしいだろ。
同じになったんだから。
「同じにする」という理解方法が間違い・
0855名無しさん@お腹いっぱい。
2010/10/07(木) 00:11:24(ハンドルみたいなものかな?)
に対して、stdoutとかstderrは、「ファイル」そのもの。
これらを混同するから、わからなくなるだけ。
>>853
さらに、バファリンが絡んできて、わけわかめ?
0856名無しさん@お腹いっぱい。
2010/10/07(木) 06:40:07>stdoutとかstderrは、「ファイル」そのもの。
↑違うよ。
stdoutとかstderrはそれぞれファイル記述子1と2の別名。
例えば、hoge 2>&1 と、 hoge 2> /dev/stdout は同じ動作。
ファイルそのものはまた別。
0857名無しさん@お腹いっぱい。
2010/10/07(木) 12:22:41「FILEそのもの」と書きたかったのかな。
FILEは「ファイル」じゃなく「ファイルハンドル」
ファイルでスクリプタも、UNIX固有の特殊なファイルハンドル for システムコール。
0858名無しさん@お腹いっぱい。
2010/10/07(木) 14:08:170859名無しさん@お腹いっぱい。
2010/10/07(木) 14:25:35hoge 3>&2 2>&1 1>&3
じゃ駄目?
0860名無しさん@お腹いっぱい。
2010/10/07(木) 14:36:36うまくいった・・・
となると今までの評価順序の話は根底から崩れる予感。
&3 って誰だよって話
0861名無しさん@お腹いっぱい。
2010/10/07(木) 14:38:140862名無しさん@お腹いっぱい。
2010/10/07(木) 14:47:10「後ろから評価される ように 動作する」と考えると、
>>859 で stderrとstdoutを入れ換える動作が説明できない。
0863名無しさん@お腹いっぱい。
2010/10/07(木) 14:50:32> となると今までの評価順序の話は根底から崩れる予感。
> &3 って誰だよって話
最初から全然理解できてないだけじゃん。
0864名無しさん@お腹いっぱい。
2010/10/07(木) 16:46:04説明よろしくお願いします
0865名無しさん@お腹いっぱい。
2010/10/07(木) 17:38:302>&1 : dup2(1,2) 2を1と同じところにつなぐ(3は元の2の先(stderr)のまま)
1>&3 : dup2(3,1) 1を3と同じところにつなぐ(2は元の1の先(stdout)のまま)
0866名無しさん@お腹いっぱい。
2010/10/07(木) 21:44:59見えるのか教えてくれ
0867名無しさん@お腹いっぱい。
2010/10/07(木) 23:06:21自分で考えろよ
0868名無しさん@お腹いっぱい。
2010/10/07(木) 23:13:570869名無しさん@お腹いっぱい。
2010/10/07(木) 23:55:23これを簡潔に説明するのに必要なのはdupの勉強だから、
もう一度勉強し直せよw
0870名無しさん@お腹いっぱい。
2010/10/08(金) 00:21:39むしろ、なんで「釣られる」という発想になるのか俺には分からない
てきとーなプログラミング言語で
b = a
a = 1
としたときに、bにも1が代入されると思う?
それと全く理屈は同じなんだけどね
上の式のbをfd2、aをfd1と考えて欲しい
後でaに別の値を代入(リダイレクトによってfd1が参照するものを変える)したところで、b(fd2)の中身はかわらないよ
0871名無しさん@お腹いっぱい。
2010/10/08(金) 00:24:05右結合とか左結合とか文法の言葉で語ってくれ。
0872名無しさん@お腹いっぱい。
2010/10/08(金) 00:49:44hoge 3>&2 2>&1 1>&3
&1,&b,&3をそれぞれa,b,cと置き換えると
b=c, a=b, c=a;
だろ。評価順に考えればこうなる。簡単な話だ。
0873名無しさん@お腹いっぱい。
2010/10/08(金) 00:52:44c=b
b=a
a=c
の間違いでは?
代入の向きが違う
3>&2 は、fd3にfd2をdupする(3に2を代入する)わけでしょ
0874名無しさん@お腹いっぱい。
2010/10/08(金) 11:37:20逆だろ・・・
0875名無しさん@お腹いっぱい。
2010/10/08(金) 11:51:000876名無しさん@お腹いっぱい。
2010/10/08(金) 14:06:12馬鹿だろ・・・
0877名無しさん@お腹いっぱい。
2010/10/08(金) 14:38:12なるほど、評価順以前に
これすら理解していない人が話をひっかきまわしていたのか
0878名無しさん@お腹いっぱい。
2010/10/08(金) 19:21:10発想の元は同じなわけだし
0879名無しさん@お腹いっぱい。
2010/10/14(木) 16:51:17bashです
whileが入れ子になってる関数で、2段目のwhileの中でセットされた変数が、その2段目のwhile
のループを抜けた時にクリアされてしまうのですが、これはそういう仕様なのでしょうか。
また、抜けても変数の値を保持するにはどうしたらよいでしょうか。
0880名無しさん@お腹いっぱい。
2010/10/14(木) 17:40:41#!/usr/local/bin/bash
func () {
while :; do
while :; do
var=$1
break
done
echo $var
break
done
echo $var
}
func value
echo $var
で、valueが3回表示されないってこと?
0881名無しさん@お腹いっぱい。
2010/10/14(木) 17:50:060882名無しさん@お腹いっぱい。
2010/10/14(木) 17:50:09そうです。
0883名無しさん@お腹いっぱい。
2010/10/14(木) 17:54:35あ、サブシェル問題だったんですね。よくわかりました。解決しました。
0885名無しさん@お腹いっぱい。
2010/10/14(木) 17:57:030886879
2010/10/14(木) 18:00:55解決しました
0887名無しさん@お腹いっぱい。
2010/10/14(木) 18:02:000888879
2010/10/14(木) 18:02:480889名無しさん@お腹いっぱい。
2010/10/15(金) 15:46:10function change_oppai {
if [ 〜 ];then
sed 's/AAA/oppai/g'
else
sed 's/BBB/oppai/g'
fi
}
この関数 change_oppai を標準入力に対応させるにはどうすればいいのでしょうか?
echo "AAA" | change_oppai -> oppai
0890名無しさん@お腹いっぱい。
2010/10/15(金) 16:02:07そのままで標準入力に対応してるけど。エスパー召喚?
0891名無しさん@お腹いっぱい。
2010/10/15(金) 16:24:19bash でしか動かん。
昔からの関数定義と比べて機能が強化されたわけでもないのに、
なんで bash はつまらない非互換を導入したがるんだか。
0892名無しさん@お腹いっぱい。
2010/10/15(金) 16:39:13zshでもkshでも動きますが。何言ってんだか。
0893名無しさん@お腹いっぱい。
2010/10/15(金) 17:29:28ifで正規表現を使った判別を行っていますが、複数条件の時はどうすれば良いのでしょうか?
if [[ $i =~ ^foo ]]; then
echo foobar
elif [[ $i =~ ^bar ]]; then
echo foobar
fi
これのifとelifの条件式を一つにしたいのです、エラーになりますが、例えばこんな感じです。
if [[ $i =~ ^foo ] -o [ $i =~ ^bar ]]; then
echo foobar
fi
よろしくご教授お願い致します。
0894名無しさん@お腹いっぱい。
2010/10/15(金) 17:40:03if [[ $i =? ^foo || $i =? ^bar ]]; then
0895名無しさん@お腹いっぱい。
2010/10/15(金) 17:49:04functionってわざわざ書くのが抵抗感あるかな。
函数って言うより、ただのサブルーチンだし。
0896名無しさん@お腹いっぱい。
2010/10/15(金) 17:57:07ありがとうございました。できました。
-oでなく、CやJavaで用いる||で良かったのですね。これなら覚え易いし、使い易いです。
=~と=?は同じでしょうか。これについては未だ不明なので調べてみます。
本当にありがとうございました。
0897名無しさん@お腹いっぱい。
2010/10/15(金) 18:00:280898名無しさん@お腹いっぱい。
2010/10/15(金) 18:02:25ありがとうございます。
なるほど、ではチルダで良いのですね。
重ね重ね本当にありがとうございました。
0899名無しさん@お腹いっぱい。
2010/10/15(金) 18:53:410900名無しさん@お腹いっぱい。
2010/10/18(月) 11:38:08そう思った根拠は何だ?
0901名無しさん@お腹いっぱい。
2010/10/18(月) 12:00:230902名無しさん@お腹いっぱい。
2010/10/18(月) 13:29:47発言の趣旨を問いたい
0903名無しさん@お腹いっぱい。
2010/10/24(日) 22:35:24実務でシェルスクリプトを書く皆さんはコメントって結構意識して書いてますか?
0904名無しさん@お腹いっぱい。
2010/10/24(日) 22:53:010905名無しさん@お腹いっぱい。
2010/10/25(月) 00:00:11やる気と関係者のレベル次第。
素のUnixなんかでVimが入っていない場合だと、めんどくさい上にミスしやすくなるし。
0906名無しさん@お腹いっぱい。
2010/10/25(月) 00:31:41シェルに限らず業務用ソースはコメントを意識して多めに入れる
シェルに限って言えば・・・ascii(英語)でコメント書くことかな
0907名無しさん@お腹いっぱい。
2010/10/25(月) 19:34:17外に出すシェルは当然難読化処理してから出すよな。
コメントなんて論外。難読化のためのオトリコメントはアリだけど。
0908名無しさん@お腹いっぱい。
2010/10/25(月) 19:39:310909名無しさん@お腹いっぱい。
2010/10/25(月) 19:43:50難読化ツール何使ってる?
perl用みたいにぐちゃぐちゃになる奴ある?
0910名無しさん@お腹いっぱい。
2010/10/25(月) 20:53:270911名無しさん@お腹いっぱい。
2010/10/25(月) 21:00:17昔何かで読んだ記憶があるが
実物を目にした事はない
0912名無しさん@お腹いっぱい。
2010/10/25(月) 21:25:190913名無しさん@お腹いっぱい。
2010/10/25(月) 22:10:47実行すると hogeと表示
↓
#!/bin/sh
h==;i=';';a=' ';t=e;e=v;s=a;q=l
$t$e$s$q$a"a${h}e${i}b${h}c${i}c${h}h${i}d${h}o${i}e${h}' '${i}f${h}g"
$a$b$c$d$e$c$d$f$a
0914名無しさん@お腹いっぱい。
2010/10/25(月) 22:45:10java scriptなんかだと、難読化しながらサイズもコンパクトになるという二重のメリットがあったりするが。
0915名無しさん@お腹いっぱい。
2010/10/29(金) 23:54:27HOGE="\* foo"
として、
echo $HOGE
* foo
と出て欲しいのですが、
\* foo
になっちゃいます。
ヒアドキュメントのパターンもためしてみましたがうまくいかず・・・。
0916名無しさん@お腹いっぱい。
2010/10/29(金) 23:57:200917名無しさん@お腹いっぱい。
2010/10/29(金) 23:58:19dashとbashでは期待通り。
0918916
2010/10/29(金) 23:59:350919名無しさん@お腹いっぱい。
2010/10/30(土) 00:26:15echo "$HOGE"
0920名無しさん@お腹いっぱい。
2010/10/30(土) 02:20:220921名無しさん@お腹いっぱい。
2010/10/30(土) 04:43:59thanx
ヒアの場合は
HOGE=`cat <<'EOF'
* foo
* bar
EOF`
echo "$HOGE"
でいいのね。助かりマスタ。
0922名無しさん@お腹いっぱい。
2010/10/30(土) 05:36:46bbb
ccc
というテキストがあるとしてcatして変数にx="aaa bbb ccc"と入れたいんだけどどうやればいいですか?
シェルはbusyboxのashです。
0923名無しさん@お腹いっぱい。
2010/10/30(土) 06:31:56x="$(cat foo.txt | tr '\n' ' ')"
0924名無しさん@お腹いっぱい。
2010/10/30(土) 07:48:54x=`cat hoge.txt`
x=`echo $x`
わざとダブルクォートを付けずに echo $x して xに代入しなおすのがポイント
>>923 はtrコマンドが無駄。
0925名無しさん@お腹いっぱい。
2010/10/30(土) 12:12:46あと、一旦 x に格納するだけ、無駄ですよね? > >>924
0926名無しさん@お腹いっぱい。
2010/10/30(土) 12:31:590927名無しさん@お腹いっぱい。
2010/10/30(土) 12:33:07もちろん >>924 の方が視認性がある
一旦 x に格納は無駄じゃない。
外部コマンドの trを起動するオーバーヘッドの方がよっぽど無駄。
元質問はbusybox環境だから、trのないbusyboxだったらそもそも実行できない。
どうしても一旦 x に格納したくなければ
x=$(echo $(cat hoge.txt))
とすれば良いが、この方が視認性が落ちる。
よって、>>924 が最適解。
0928923
2010/10/30(土) 12:54:58>>923の場合、最後に改行があるとcccの後にスペース入っちゃうし、改行が
\r\nだったら動かないとかあるんで、あんまりよくないとは思ってた。
0929名無しさん@お腹いっぱい。
2010/10/30(土) 14:27:46スクリプトを作れと頼まれればコメントを書くけど
何かの仕事を頼まれて、それ用にスクリプトを書いて
作ったときは書かない
0930名無しさん@お腹いっぱい。
2010/10/30(土) 14:37:470931名無しさん@お腹いっぱい。
2010/10/30(土) 18:07:30(検索に成功したら1とか)
0932名無しさん@お腹いっぱい。
2010/10/30(土) 18:12:030933名無しさん@お腹いっぱい。
2010/10/30(土) 18:54:04もっと深読みするんだ。
0934名無しさん@お腹いっぱい。
2010/10/30(土) 19:15:33ありがd
0935名無しさん@お腹いっぱい。
2010/11/01(月) 10:07:56hoge1
hoge2
hoge3
hoge4
hoge5
というデータがあり、これを読んで
hoge1 hoge2 hoge3 hoge4 hoge5
と1行で出力するshシェルスクリプトを教えてください。
0936名無しさん@お腹いっぱい。
2010/11/01(月) 10:16:290937名無しさん@お腹いっぱい。
2010/11/01(月) 10:54:01ちょっと斬新。
0938名無しさん@お腹いっぱい。
2010/11/01(月) 11:49:54while read x; do echo -n "$x "; done < filename | sed 's/ $//'
0939名無しさん@お腹いっぱい。
2010/11/01(月) 11:59:54じゃだめなん?
あ、最後の改行まで落ちるか。
0940名無しさん@お腹いっぱい。
2010/11/01(月) 12:11:010941名無しさん@お腹いっぱい。
2010/11/01(月) 12:13:070942名無しさん@お腹いっぱい。
2010/11/01(月) 21:22:510943923
2010/11/01(月) 23:22:06打ち間違えて ' が一つ足りませんでした。
>
が延々と出てCtrl+Cでも終了できません
お助けください orz
0944923
2010/11/01(月) 23:24:33と打ったら終了できました。
とりあえずスレ汚しすいません。。。
0945名無しさん@お腹いっぱい。
2010/11/01(月) 23:25:48Ctrl-Cは動いてるプロセスに 止まれよ! と通知するやつだから、
まだコマンド発行してない段階では通用しないわさ。
0946名無しさん@お腹いっぱい。
2010/11/01(月) 23:26:23だから 視認性(笑) がある >>924 の方を使えとあれほど、、
普通のシェルなら Ctrl+Cで終了できるよ。
クォートの途中を表す > プロンプトが出てるだけだから。
0947名無しさん@お腹いっぱい。
2010/11/01(月) 23:29:130948922
2010/11/01(月) 23:30:54>>923,924さんの方の両方で出来ました。
>>927さん詳しい解説と環境のご配慮までありがとうございます。
busybox-1.17.1で tr のアプレットまで入っているようです。
オプションは -c -d -s しかありませんでしたけど。
皆さん本当にありがとうございました。
またスレ汚しすいませんでした。
0949名無しさん@お腹いっぱい。
2010/11/01(月) 23:34:250950名無しさん@お腹いっぱい。
2010/11/02(火) 01:53:36od -c hoge.txt | egrep '\\\n \\\r'
だと
0000000 a a a a a a a a a a a a a a a \n
0000020 \r
のように改行をまたいだ場合に検索できません。
この場合もCRLFを検索するにはどうすればいいのでしょうか?
0951名無しさん@お腹いっぱい。
2010/11/02(火) 02:11:06圧縮したあとに展開したら元ファイルとファイルサイズが全然違う
どうしてかわかるエロイ人いませんか
#!/bin/sh
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
KEEPDAY=90
BK_DIR=/home/hoge/www
PUT_DIR=/home/hoge/backup/www
MKFILE=www.`date +'%y%m%d'`
TGZFILE=$MKFILE.tar.gz
RMFILE=www.`date -v -"$KEEPDAY"d +'%y%m%d'`.tar.gz
cd $BK_DIR
echo "Packing to $MKFILE"
tar cvzf $TGZFILE ./
echo "Checking to $TGZFILE"
if [ -f $TGZFILE -a -f $RMFILE ]; then
rm -f $RMFILE
echo "Removed $RMFILE"
exit 0
fi
0952名無しさん@お腹いっぱい。
2010/11/02(火) 08:27:220953名無しさん@お腹いっぱい。
2010/11/02(火) 08:48:16nとr逆じゃね?
CRLF = ^M^J なので、少なくとも改行が CRLFかLF だと分かっていれば
grep "^M$" < hoge.txt
でいいんじゃ?
(^MはCtrl押しながらmを打鍵)
0954名無しさん@お腹いっぱい。
2010/11/02(火) 08:59:21Ctrl+v Ctrl+m で入れる環境が多いと思うけど。
0955名無しさん@お腹いっぱい。
2010/11/02(火) 09:05:380957名無しさん@お腹いっぱい。
2010/11/03(水) 00:00:04ありがとうございます。
出来ました。
nとr逆ですね。
cat -v hoge
で見える改行コードの入力の仕方がわからなかったので助かりました。
しかし、grepって複数行の検索出来ないんですね。
0958名無しさん@お腹いっぱい。
2010/11/03(水) 00:02:35バックアップしたいディレクトリをフルパスで指定すると
tarのエラーで/を先頭に付けるな
と、怒られてしまったので
cdでバックアップ元のディレクトリに移動
↓
./でバックアップ元を指定して、バックアップ先へtar.gzで圧縮
という流れにしました
もっと良い書き方があるんだろうけどターミナル触るのが久々
過ぎてこんなぐらいしか思いつかなかった
もっと良い書き方はございますか
0959名無しさん@お腹いっぱい。
2010/11/03(水) 00:11:010960名無しさん@お腹いっぱい。
2010/11/03(水) 00:46:05manぐらい読めよ。
0961名無しさん@お腹いっぱい。
2010/11/03(水) 02:03:21最近はcdできるtarもいろいろあるけど。
0962名無しさん@お腹いっぱい。
2010/11/03(水) 09:21:440963名無しさん@お腹いっぱい。
2010/11/03(水) 12:08:56今更だが、 tar cf - -C /hoge/huga * とサブシェル内cdだと*の展開タイミング
が違うので、同じ投稿に並べて書いたのは不適切だったな。
0964名無しさん@お腹いっぱい。
2010/11/03(水) 19:05:58; じゃなくて && にすべし。; だと間違えて権限のないディレクトリに
cd しようとして失敗しても、カレントディレクトリのまま tar が実行されてしまうので、
場合によっては意図しないファイルを上書きして消すなんて事故が起きることがある。
というか、そういう事故を起こさないためにも -C を使ったほうがいい。
0965951
2010/11/05(金) 00:11:31確かにその方がいいですね
仕事でやってる時は事故を起こさないようにそうしてた気がします
ところでファイルサイズ違う件について心当たりある方いま(ry
その後もググって見たけど相変わらずわからずで
何回もスレ汚しスマソ
0966名無しさん@お腹いっぱい。
2010/11/05(金) 00:59:320967名無しさん@お腹いっぱい。
2010/11/05(金) 08:36:340968名無しさん@お腹いっぱい。
2010/11/05(金) 12:06:27何のファイルサイズがどう違うの?
0969名無しさん@お腹いっぱい。
2010/11/05(金) 12:07:10for i in host1 host2 host3; do ssh $i /bin/shutdown; done
0970名無しさん@お腹いっぱい。
2010/11/05(金) 12:11:33それだと host1 が落ちてた時に host2 移行が再起動できません。
あと、shutdown で、再起動できるんですか?
0971名無しさん@お腹いっぱい。
2010/11/05(金) 12:29:13for i in host1 host2 host3; do ssh $i /bin/shutdown& done
0972名無しさん@お腹いっぱい。
2010/11/05(金) 13:13:170973名無しさん@お腹いっぱい。
2010/11/05(金) 13:21:570974名無しさん@お腹いっぱい。
2010/11/17(水) 02:00:10date 20000101
のYMD形式は可能だけど
date 20000101000000
のYMDHMSになるとエラーになるので困っています。
なにかオプションが必要ですか?
0975名無しさん@お腹いっぱい。
2010/11/17(水) 06:30:38それ、ksh関係ない。dateコマンドの話。
で、そもそも指定が間違ってる。
date mmddHHMMYYYY.SS が正しい。
2000年01月01日00時00分00秒なら、
date 010100002000.00
0976名無しさん@お腹いっぱい。
2010/11/17(水) 07:13:58まさか.SSとは…いらないよってオプションはないんですかね?
なんかスッキリしないなぁ…
0977名無しさん@お腹いっぱい。
2010/11/17(水) 07:18:120978名無しさん@お腹いっぱい。
2010/11/17(水) 07:30:100979名無しさん@お腹いっぱい。
2010/11/17(水) 07:42:24質問のように「date 20000101」とか実行したら「設定」される。
「表示させたい」って書いてあるのは、設定した結果、以降OS時刻として
その時刻で表示させたいという意味だろ。
0980名無しさん@お腹いっぱい。
2010/11/17(水) 08:13:22バックグランドと解釈されてしまいます。
\でエスケープしてもダメだったのですが、
どうすれば渡せるのでしょうか?
0981名無しさん@お腹いっぱい。
2010/11/17(水) 10:46:17自分の環境では出来るな。
$ cat hoge.sh
#!/bin/sh
echo $*
$ ./hoge.sh ¥&
&
$
0982974
2010/11/17(水) 10:46:18実際に行いたい動作は
引数として渡されたYMDHMS形式の文字列が日時として妥当であるかチェックする
です
実装として
date "+%Y%m%d%H%M%S" -d 引数文字列
の結果と引数文字列が一致するかチェックするロジックを組みました。
ですが肝心の
date -d 20000101000000
がエラーを吐いてしまうため上手く行かず…
(-dは記述が漏れてました。すいません)
何か方法はありませんかね?
0983名無しさん@お腹いっぱい。
2010/11/17(水) 11:35:26date -d で食える書式が書いてある。
0984名無しさん@お腹いっぱい。
2010/11/17(水) 11:37:16perlか何かで書いた方がいいんじゃね。
0985名無しさん@お腹いっぱい。
2010/11/17(水) 11:54:23GNU dateってことは bash限定でいいよな。
ほらよ
↓
TIME=20000101000000
date +%Y%m%d%H%M%S -d "${TIME:0:8} ${TIME:8:2}:${TIME:10:2}:${TIME:12:2}"
0986名無しさん@お腹いっぱい。
2010/11/17(水) 12:03:370987名無しさん@お腹いっぱい。
2010/11/17(水) 12:31:22やはりロジック上でフォーマット変換をしないといけないようですね
フォーマット変換すれば実現可能なのはわかっていたのですが、直感的にdateの使い方で対処出来ると思っていました
ご提示頂いたスクリプトも参考に対処したいと思います
0988名無しさん@お腹いっぱい。
2010/11/17(水) 18:47:42BSDのdateなら楽勝なのに
0989名無しさん@お腹いっぱい。
2010/11/18(木) 07:53:37「方程式を使えば解けたのに」
と負け惜しみを言ってるみたいだな
0990名無しさん@お腹いっぱい。
2010/11/18(木) 09:28:13やりにくいよね。 低レベルでそれらを扱える便利なコマンドが無い。
0991名無しさん@お腹いっぱい。
2010/11/18(木) 13:56:300992名無しさん@お腹いっぱい。
2010/11/18(木) 14:24:41どう扱うかってけっこう場面場面で違うから
「便利なコマンド」を作りにくいんじゃないかな。
LLでやっちゃった方がてっとり早いと思うよ。
0993名無しさん@お腹いっぱい。
2010/11/18(木) 14:36:18シェルの話題は出尽くしたので、
次スレはナシでいいよ。
0994名無しさん@お腹いっぱい。
2010/11/18(木) 15:02:590995名無しさん@お腹いっぱい。
2010/11/18(木) 15:07:45http://ja.wikipedia.org/wiki/%E8%BB%BD%E9%87%8F%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E
0996名無しさん@お腹いっぱい。
2010/11/18(木) 20:35:230997名無しさん@お腹いっぱい。
2010/11/18(木) 21:59:27が、日時の扱いがめっちゃ楽。
0998名無しさん@お腹いっぱい。
2010/11/19(金) 09:27:00ありがとう。
0999名無しさん@お腹いっぱい。
2010/11/20(土) 00:00:481000名無しさん@お腹いっぱい。
2010/11/20(土) 00:01:34http://hibari.2ch.net/test/read.cgi/unix/1127388574/
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。