シェルスクリプト総合 その25©5ch.net
レス数が1000を超えています。これ以上書き込みはできません。
0001名無しさん@お腹いっぱい。 転載ダメ©2ch.net
2015/08/14(金) 23:42:01.51□お約束
・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。
bash/zsh/ksh/ashなどに依存する場合は明示しましょう。
Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。
FreeBSDユーザは/bin/shの正体がashなので注意。
v7 shに一番近くて、現役のshは、OpenSolaris由来のheirloom sh。
http://src.illumos.org/source/xref/illumos-gate/usr/src/cmd/sh/
http://heirloom.sourceforge.net/sh.html
・csh/tcshのシェルスクリプトは推奨されません。
(理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
manや参考リンクを見ましょう。
aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルで使えるワイルドカード等は正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆーな
□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
awkまたはperlの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
□回答者への注意事項:
・シェルスクリプトでの処理方法を質問しているのに、よくわからずに
「そういうのはperl使いましょう」と回答するのはやめましょう。
安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。
前スレ
シェルスクリプト総合 その24
http://peace.2ch.net/test/read.cgi/unix/1415634843/
0920名無しさん@お腹いっぱい。
2017/02/20(月) 18:00:26.41declare -p !!!
知らなんだ
0921名無しさん@お腹いっぱい。
2017/02/20(月) 18:11:16.14grep -oとか
0922名無しさん@お腹いっぱい。
2017/02/21(火) 05:20:06.32ARRAY=( $(cat test.txt) )
0923名無しさん@お腹いっぱい。
2017/02/21(火) 16:45:06.28echo A > test.txt ; echo B C >> test.txt みたいにスペースなんかが入ると…
0924名無しさん@お腹いっぱい。
2017/02/21(火) 19:03:20.01ARRAY=( $(cat test.txt) )
declare -p ARRAY
とすれば空白混じりの行も1行として扱われるが、
空行(何も文字が無い行)は$ARRAYに読み込まれない
readarray -t ARRAY < test.txt
declare -p ARRAY
だと空行も読み込んでくれる
0925名無しさん@お腹いっぱい。
2017/02/28(火) 23:57:54.64みたいな時に終了コードはgrepこの場合1
でかつ標準出力にはtestが出ていて欲しいのですが
どうしたらいいでしょうか?
環境はbashです
0926名無しさん@お腹いっぱい。
2017/03/01(水) 00:40:42.45でどうだろう?
0927名無しさん@お腹いっぱい。
2017/03/01(水) 00:57:07.01常に入力をそのまま出力していいのだろうか。
0928名無しさん@お腹いっぱい。
2017/03/01(水) 01:36:33.88echo test | ( grep -v a; exit $(expr \( "$?" + 1 \) % 2 ))
0929名無しさん@お腹いっぱい。
2017/03/01(水) 02:35:11.20echo の部分は常に表示、grepは結果のみ欲しいので-qで、判定につかうインプットは常に全量表示して、結果はリターンコード、標準出力は人が見るよう、リターコードはその後のシステム的な分岐につかう的な目的です(後続はbashの世界でないのでワンライナーが嬉しい)
0930名無しさん@お腹いっぱい。
2017/03/01(水) 05:09:32.29例えば-zと-sを一緒に実行して--out でフォルダに書き出したいとして
どういうルールで並べて記述すればいいでしょうか?
sips -Z 200 * -s format jpeg --out Converted/
あれこれいじって、たまたまこれで動いたのですが
正しいのかわかりません。
よろしくお願いします。スレチだったらすいません。
0931名無しさん@お腹いっぱい。
2017/03/01(水) 09:20:45.49grep にこだわらくても良くて、GNU sed を使ってもいい場合:
$ echo test | sed '/a/!q1'
test
$ echo $?
1
0932名無しさん@お腹いっぱい。
2017/03/01(水) 09:22:21.87正しいけどスレチ
man見ろ
見られないんなら
https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/sips.1.html
0933名無しさん@お腹いっぱい。
2017/03/01(水) 09:41:41.920934名無しさん@お腹いっぱい。
2017/03/01(水) 09:50:14.780935名無しさん@お腹いっぱい。
2017/03/01(水) 10:04:09.41そういえばこういうスレもあったり
【Macintosh】MacでUNIX【Terminal】
http://echo.2ch.net/test/read.cgi/unix/1123501408/
mac板でよかった気もするけど
OS XをUnixとして使ってる人の為のスレ 18
http://potato.2ch.net/test/read.cgi/mac/1462475819/
0936名無しさん@お腹いっぱい。
2017/03/01(水) 10:17:52.51あ、間違えた…こうしないと
$ echo test | sed -n 'p;/a/H;${x;/./q0;q1}'
0937名無しさん@お腹いっぱい。
2017/03/01(水) 12:19:32.480938名無しさん@お腹いっぱい。
2017/03/01(水) 17:16:16.75じゃないの?
0939名無しさん@お腹いっぱい。
2017/03/01(水) 17:36:55.410940名無しさん@お腹いっぱい。
2017/03/01(水) 17:38:08.890942名無しさん@お腹いっぱい。
2017/03/04(土) 09:13:31.42うちでもよく使うが、sips なんて他には無いからな
for i *.jpg; do sips -Z 200 $i -s format jpeg --out Converted/$i; done
ところでマカーな人はbash4入れてるんですかね。bash3なので、最近ココで出てくるreadarrayが使えない
0943名無しさん@お腹いっぱい。
2017/03/04(土) 09:17:20.48for i in *.jpg ; do な
0944名無しさん@お腹いっぱい。
2017/03/04(土) 10:32:40.920945名無しさん@お腹いっぱい。
2017/03/04(土) 18:32:17.60>ところでマカーな人はbash4入れてるんですかね。
Homebrewで入れてそっち使うようにしてる
0946名無しさん@お腹いっぱい。
2017/03/07(火) 19:02:41.56自分は仕事ならcygwin(今は使ってない)、実機、仮想環境
プライベートならラズパイ、仮想環境かな
0947名無しさん@お腹いっぱい。
2017/03/07(火) 22:43:56.070948名無しさん@お腹いっぱい。
2017/03/07(火) 23:30:24.960949名無しさん@お腹いっぱい。
2017/03/08(水) 01:50:34.93SL-Zaurus(SL-C860)を今だに現役で使っているよ
0950名無しさん@お腹いっぱい。
2017/03/09(木) 02:31:23.57ただ書けるだけじゃなくて動かせたり
実際にその機械で便利に使えたりするのですか?
0951名無しさん@お腹いっぱい。
2017/03/09(木) 17:50:34.83x=$( python test.py )
はダメでした
0952名無しさん@お腹いっぱい。
2017/03/09(木) 17:58:17.55print("Hello world!")
$ python test.py
Hello world!
$ x=$(python test.py)
$ echo $x
Hello world!
0953名無しさん@お腹いっぱい。
2017/03/10(金) 09:16:11.80シェルごめんよ
0954名無しさん@お腹いっぱい。
2017/03/10(金) 13:07:41.330955名無しさん@お腹いっぱい。
2017/03/10(金) 16:08:16.57pythonのせい
0956名無しさん@お腹いっぱい。
2017/03/11(土) 22:32:29.750957名無しさん@お腹いっぱい。
2017/03/11(土) 22:46:42.79呼出し後に元に戻したいとするとsetかな
0958名無しさん@お腹いっぱい。
2017/03/11(土) 23:06:24.730959名無しさん@お腹いっぱい。
2017/03/12(日) 00:12:25.140960名無しさん@お腹いっぱい。
2017/03/12(日) 01:47:16.95bash なら "${@:2}" でええんちゃう
0961名無しさん@お腹いっぱい。
2017/03/12(日) 04:14:35.39その発想もなかった
パラメータとして渡すならこっちの方が分かりやすいな
0962名無しさん@お腹いっぱい。
2017/03/12(日) 19:17:36.56sed -n -e '/hoge1/,/hoge2/p'
これでできるのを、今知って感動中。しかも、こっちの方が速い。
そのあとの置換は
sed -n -e '/hoge1/,/hoge2/p' | sed -e 's/foo/bar/g'
としかできなかったけど
sed -n -e '/hoge1/,/hoge2/p' -e 's/foo/bar/g'
で、やる方法とかであるんですか?
0963名無しさん@お腹いっぱい。
2017/03/12(日) 20:09:10.06じゃだめなの?
0964名無しさん@お腹いっぱい。
2017/03/12(日) 20:49:35.74でもいけそう
0965名無しさん@お腹いっぱい。
2017/03/13(月) 15:22:55.400966名無しさん@お腹いっぱい。
2017/03/13(月) 17:19:42.050967名無しさん@お腹いっぱい。
2017/03/13(月) 19:49:20.42さらに速くなりました
一番最後の文字はコマンドというのを実感
0968名無しさん@お腹いっぱい。
2017/03/13(月) 20:38:32.020969名無しさん@お腹いっぱい。
2017/03/15(水) 13:36:43.930970名無しさん@お腹いっぱい。
2017/03/15(水) 13:37:42.13俺が負けだって言ったら負けなんだよ
大人しく言う事聞け
0971名無しさん@お腹いっぱい。
2017/03/15(水) 13:43:38.360972名無しさん@お腹いっぱい。
2017/03/15(水) 13:45:42.220973名無しさん@お腹いっぱい。
2017/03/15(水) 16:27:57.38お漏らししたようなものだからね
0974名無しさん@お腹いっぱい。
2017/03/15(水) 18:03:51.07それで、いつの間にか perl を代わりに使うようになった。
0975名無しさん@お腹いっぱい。
2017/03/15(水) 19:02:59.320976名無しさん@お腹いっぱい。
2017/03/15(水) 20:28:01.980977名無しさん@お腹いっぱい。
2017/03/15(水) 20:45:20.130978名無しさん@お腹いっぱい。
2017/03/15(水) 20:58:18.060979名無しさん@お腹いっぱい。
2017/03/16(木) 12:44:27.48sed -e "s/微妙に/非常に/" <975 >975
ってやって空のファイルを作ってしまったあの頃...
0980名無しさん@お腹いっぱい。
2017/03/16(木) 12:47:16.460981名無しさん@お腹いっぱい。
2017/03/16(木) 16:23:09.20sed の入力にはパイプを使うことが多いかな。
0982名無しさん@お腹いっぱい。
2017/03/16(木) 22:48:37.430983名無しさん@お腹いっぱい。
2017/03/18(土) 22:25:35.750984名無しさん@お腹いっぱい。
2017/03/18(土) 23:27:17.300985名無しさん@お腹いっぱい。
2017/03/19(日) 00:04:19.090986名無しさん@お腹いっぱい。
2017/03/19(日) 00:24:39.590987名無しさん@お腹いっぱい。
2017/03/19(日) 00:57:36.330988名無しさん@お腹いっぱい。
2017/03/19(日) 01:06:54.080989名無しさん@お腹いっぱい。
2017/03/19(日) 10:07:51.170990名無しさん@お腹いっぱい。
2017/03/19(日) 11:41:33.99さらに、新たなソフトのインスコはできない。
まあ、notepadでソースの編集はできる。
Eドライブには多くのフォルダがあって、中にはjpegのえろ画像が1テラ分てんこ盛り
えろ画像だけを全部Dドライブにコピーしたい。
Eドライブのフォルダを見ると8階層ぐらいのフォルダもあって、とても手作業のコピペはムリ。
にゃんとか目的を達成する方法はないであろうか?!
各位のお知恵を拝借したい。
0991名無しさん@お腹いっぱい。
2017/03/19(日) 13:00:13.490992名無しさん@お腹いっぱい。
2017/03/19(日) 14:12:15.820993名無しさん@お腹いっぱい。
2017/03/19(日) 20:18:27.47仕事でエロ画像を扱ってるか上司の個人環境とかかな
0994名無しさん@お腹いっぱい。
2017/03/19(日) 20:31:39.220995名無しさん@お腹いっぱい。
2017/03/19(日) 20:55:37.07GNU grep + GNU awk の場合だけど、GNU awk単独よりも早いらしいぞ
http://papiro.hatenablog.jp/entry/2015/05/19/003432
0996名無しさん@お腹いっぱい。
2017/03/19(日) 22:03:55.180997名無しさん@お腹いっぱい。
2017/03/19(日) 23:09:48.69timeの使い方を知らないって事を自慢してどうしたいんだ?
0998名無しさん@お腹いっぱい。
2017/03/19(日) 23:10:46.820999名無しさん@お腹いっぱい。
2017/03/20(月) 10:44:19.74昔社内から netnews が見れてたので perl でスクリプト組んでエロ画像落としまくってたのをふと思い出した
当時は普通にFDに移動して持ち帰ってたけど
1000名無しさん@お腹いっぱい。
2017/03/20(月) 12:06:05.4910011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
life time: 583日 12時間 24分 4秒
レス数が1000を超えています。これ以上書き込みはできません。