13/02/12 18:33:08.66
URLリンク(d.hatena.ne.jp)
some-command 3>&1 >/dev/null 2>&3 3>&- | less
1番の値が最終的にどこいったのがかわからんのです・・・
1→3→2とコピーされて標準エラー出力になるんじゃないの?
201:名無しさん@お腹いっぱい。
13/02/12 18:46:22.72
>>200
1は/dev/nullだよ。
202:名無しさん@お腹いっぱい。
13/02/12 18:53:12.63
>>200
1は3経由で最終的に2にコピーされて、その状態でsome-command が実行されてる、
で合ってるよ。
その「2にコピーされたもの」はパイプの入力だから、
結果的にsome-commandの標準エラー出力がパイプにつながる。
some-commandの標準出力は >>201 のとおり /dev/nullに捨てられてる。
203:名無しさん@お腹いっぱい。
13/02/12 19:05:35.88
リダイレクトは左から順番に解釈していけば良いよ。
(1) 3は1(標準出力)に向けられる。
(2) 1は/dev/nullに向けられる。
(3) 2は3(標準出力)に向けられる。
(4) 3は閉じられる。
結果として
1は/dev/nullに2は標準出力に向いてる。
204:名無しさん@お腹いっぱい。
13/02/12 20:55:57.35
再度質問です
shの機能で >>200 みたいに だーってリダイレクトが出来るじゃないですか
その文法から「1」が最終的にどこ行ったのか わーって追跡したいんです
出来ますの?勿論ググりましたが、当方馬鹿なのでわかりません
サルでも分かるような回答を強く期待します
僕はこういう小バカにしたような書き方しか出来ませんが、凄く切実に知りたいです
さぁどうぞ↓
205:200
13/02/12 21:09:43.68
うごごごご
206:名無しさん@お腹いっぱい。
13/02/12 21:24:31.15
>>204
> aその文法から「1」が最終的にどこ行ったのか わーって追跡したいんです
ktrace とか truss とか strace ってのはダメ?
207:名無しさん@お腹いっぱい。
13/02/14 11:04:26.66
シェル変数にコマンドを文字列として設定しておいて、それを実行したい。
CMD="printf '%x %x\n'" #これはダメ
$CMD 13 32
を実行して
printf '%x %x\n' 13 32
と同じ出力を得たい。
$CMD 13 32の行は変更不可。
CMD="printf '%x %x\n'"ではダメでした。
CMDにどのような文字列を与えると実現できるでしょうか?
bashの拡張機能を使ってもよいですが、なるべく使わない方向で。
208:名無しさん@お腹いっぱい。
13/02/14 11:09:32.45
お題が不正確でした
> $CMD 13 32の行は変更不可。
$CMD 13 32
を含むシェルスクリプトがある。環境変数としてCMDを与えて
printf '%x %x\n' 13 32
と同じ出力を得たい。
CMDに
#!/bin/sh
printf '%x %x\n' "$@"
というスクリプトのパスを与える方法は思いつきましたが、スクリプトファイルを作成しないで実現したい。
209:名無しさん@お腹いっぱい。
13/02/14 11:44:48.59
>>208
CMD='printf %x\040%x\n'
バックスラッシュが化けるので全角にしたので半角に直してね
210:名無しさん@お腹いっぱい。
13/02/14 13:05:11.46
evalって知ってる?便利だよ
211:名無しさん@お腹いっぱい。
13/02/14 13:12:07.63
>>210
> $CMD 13 32の行は変更不可。
evalも使用不可
212:名無しさん@お腹いっぱい。
13/02/14 14:38:40.47
>>211
CMDの中にeval入れれば行けるだろ
CMD="eval print ..以下略
213:名無しさん@お腹いっぱい。
13/02/16 14:38:00.54
>>212
それでOKでした。
214:名無しさん@お腹いっぱい。
13/02/16 21:58:07.02
>>211
>>211
>>211
215:名無しさん@お腹いっぱい。
13/02/17 00:35:16.20
ももクロはズリネタ探しをしている人には理解出来ないよ
216:名無しさん@お腹いっぱい。
13/02/17 00:51:10.81
awkのprintで
1, print $2
2, print \$2
3. print\ \$2
1、2は2列目て事だと思うけど3てどうなるの?
217:215
13/02/17 01:31:05.17
あれ・・盛大に誤爆ってたwごめん
218:名無しさん@お腹いっぱい。
13/02/17 02:55:22.76
>>214
呼び出すところが変わってないから良いんじゃないの?
219:名無しさん@お腹いっぱい。
13/02/20 21:18:41.67
2chの画像スレ開いて、Ctrl+aでコピーしたのをdl.txtにコピーしておいて
そのカレントフォルダでこれ実行すると、びっくりするほどユートピア
grep -E "(^http|^ttp)" dl.txt |sed -e "s/http/ttp/g; s/ttp/http/g"| wget -A jpg,png,gif -N -i -
220:名無しさん@お腹いっぱい。
13/02/20 21:43:00.53
昔そういう事やってたけど
グロ画像が紛れ込んじゃうからやめたよ
安心してシコシコできない
221:219
13/02/20 21:54:17.39
>>220
それなんだよ...URLのブラックリストとか出来ないかな?まぁ出来ても遅くなりそうだけど
222:名無しさん@お腹いっぱい。
13/02/20 22:04:29.90
ブラックリスト作っておいてgrep -vで除外するくらいかな?
いちいちグロ画像調べてNG登録するのが嫌でね…
223:名無しさん@お腹いっぱい。
13/02/20 22:48:10.03
grepしてからsedですか、そうですか
224:名無しさん@お腹いっぱい。
13/02/21 00:53:50.25
>>221
専ブラ使えよ。
グロってレスがついてたら、モザイクかけてくれたり。
225:名無しさん@お腹いっぱい。
13/02/21 01:03:43.88
>>219
スレとってくんのもwgetでいいだろ。なぜに手動。
226:名無しさん@お腹いっぱい。
13/02/21 10:19:46.09
>>224
>グロってレスがついてたら、モザイク
それ便利そうだな! どこの専ブラ?
うちはかちゅ~しゃ使ってるけど
227:名無しさん@お腹いっぱい。
13/02/21 13:17:14.46
>>220
いやいや、落としたら、シコシコする前に、まず賢者モードで分類とか整理しろよ。
228:名無しさん@お腹いっぱい。
13/02/21 15:56:58.86
>>227
モード切替どうやってするつもりだよ
229:名無しさん@お腹いっぱい。
13/02/21 21:47:15.77
>>226
2chmate
230:名無しさん@お腹いっぱい。
13/02/22 12:12:03.87
シェルスクリプト内でtarアーカイブ化するとき、アーカイブ名に変数を指定したいのですが、
エラーが出てtarが生成されません。なにが間違っているか教えてください。
strArch="~/Desktop/a.tar"
/usr/bin/tar cf ${strArch} 1.jpg 2.jpg 3.jpg
と書くと
/usr/bin/tar: ~/Desktop/a.tar: open 不能: No such file or directory
/usr/bin/tar: Error is not recoverable: exiting now
というエラーが出ます。
一方、
/usr/bin/tar cf ~/Desktop/a.tar 1.jpg 2.jpg 3.jpg
と書くと正常にa.tarが生成されます。
231:230
13/02/22 12:13:52.84
環境はcygwinで、シェルはbashです。
232:名無しさん@お腹いっぱい。
13/02/22 12:40:05.30
>>230
変数の中のチルダは展開されない。
$HOME/Desktop/a.tar
を使え。
233:名無しさん@お腹いっぱい。
13/02/22 13:01:39.80
>>232
できました!
ありがとうございました。