17/03/20 12:18:18.85 .net
すまん、立てたはいいがセキュリティ違反か何かでテンプレが貼れない
誰か貼れないか
3:名無しさん@お腹いっぱい。
17/03/20 12:24:45.46 .net
ls -エル かな以前これで引っかかったことがある
ls -Rl とかなら通るんだけど
4:名無しさん@お腹いっぱい。
17/03/20 14:13:27.13 .net
>>1
> □お約束
> □初心者へのアドバイス:
> □回答者への注意事項:
□じゃなくて■にして欲しい
5:名無しさん@お腹いっぱい。
17/03/20 15:00:21.27 .net
>>4
それってなぜ?漢字のくちやカタカナのろと間違えやすいから?
6:名無しさん@お腹いっぱい。
17/03/20 16:21:48.83 .net
>>2
同じく書けなかった。テンプレ書こうとするとなぜかYou are blocked となる。
7:名無しさん@お腹いっぱい。
17/03/20 17:09:06.18 .net
前スレ立てられたの2年前みたいだし、その間に規約かその辺の変更でもあったかな
8:名無しさん@お腹いっぱい。
17/03/20 17:32:38.34 .net
シェルスクリプトの総合スレです。
初心者、学生、アマチュア、プロ、シェルの種類や OS を問いません。
スクリプトのお勉強・自慢・腕試しなどにどうぞ。
まずはテンプレートをご覧下さい。
□A. お約束
1. 特記なき場合は #!/bin/sh がデフォルトです。この場合可搬性に注意し、
Traditional Bourne Shell もしくは、POSIX 相当のスクリプトでお願いします。
bash / zsh / ksh / ash / dash や OS 等に依存する場合は、明示しましょう。
良く分からない方は、使用している OS を書いておけば OK です。是非ご参加下さい。
2. 質問する前に、まず自分で調べましょう。ただし、
「聞くは一時の恥、聞かぬは一生の恥」です。積極的に参加しましょう。
3. 相手を侮辱する発言、失礼な発言は差し控え、知的な議論を楽しみましょう。
4. 他者には様々な環境や事情、目的が有る事に留意し、無下に扱う様な発言は
控えましょう。
□B. お約束の補足
1. Mac OS X では、/bin/sh の実体は bash です。また、一般的に BSD 系 や
GNU/Linux の方は、/bin/sh がシンボリックリンクですので、注意して下さい。
ls (ハイフン)l /bin/sh や readlink -e /bin/sh で確かめて下さい。
2. 可搬性については、下記 F.1 を参照して下さい。
3. POSIX については、man 7 standards や下記 F.2 ( の特に Shell & Utilities )
を参照して下さい。
4. Traditional Bourne Shell とは、UNIX Version 7 から SVR4.2 の /bin/sh を元に
小さなの改変を加え主に商用 UNIX で残されているものです。( 下記 F.3 参照 )
5. Traditional Bourne Shell で入手しやすい sh は、後期 SVR4.0 から派生し、
SunOS 5 / OpenSolaris を経た、Heirloom Bourne Shell です。
SVR4 / SVID3 相当です。同様の Unix utilities も扱っています。
( 下記 F.3 参照 )
9:名無しさん@お腹いっぱい。
17/03/20 17:32:51.71 .net
ls - lがだめなんですよ
10:名無しさん@お腹いっぱい。
17/03/20 17:33:10.57 .net
□C. 初心者へのアドバイス
1. シェルスクリプトのことをシェルってゆーな
2. 知らないコマンドが出てきたら man コマンドで調べましょう。
3. UNIX には、シェルスクリプトに便利な小さなコマンドが色々あります。
apropos ないしは man -k でそれらしい単語による簡単な検索もできます。
4. シェルの構文や内部コマンドは man sh で。英語は LANG=C man shで。
5. 思い通りに動かないときは、まずは #!/bin/sh -x でトレースしましょう。
6. 適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
awk / perl / javascript / ruby / python 等、他の (スクリプト) 言語の方が
適した処理にはそちらを使いましょう。
7. シェルで使えるワイルドカード等は正規表現ではありません。
正規表現の話題は正規表現スレへ
8. csh / tcsh のシェルスクリプトは推奨されません。理由は下記を参照
URLリンク(www.speech-lab.org)
9. cat file|すんなハゲ
a. 詳細は "Useless Use of Cat" UUOC で検索して下さい
b. 有用な場合も有ります Useful use of cat(1) 英文
URLリンク(www.in-ulm.de)
□D. シェルスクリプトでよく使うコマンド
1. 制御・条件判定系: [, test, expr, true, false, yes, getopts
2. テキスト処理系: cat, awk, sed, tr, sort, uniq, grep, wc, head, tail, cut,
paste, comm, join
3. ファイル検索系: find ( スペースなどを含むファイル名を正しく処理するため、
find は -exec command {} + を推奨。
他に -print0、xargs は -0 オプションという方法もあるが Solaris 非対応 )
4. ディレクトリ系: basename, dirname
5. 出力系: echo, printf
6. 対話コマンド制御系: expect
7. http / ftp の処理自動化: wget, curl
11:名無しさん@お腹いっぱい。
17/03/20 17:33:34.08 .net
□E. 学習用テキスト
1. Bourne Shell自習テキスト ( 1993年 ) pdf お薦め
URLリンク(lagendra.s.kanazawa-u.ac.jp)
(↑サイト消滅かも)
URLリンク(ayapin.film.s.dendai.ac.jp)
2. UNIX FAQ LIST
URLリンク(www.nurs.or.jp)
(3. シェルを使おう - 導入からプログラミングまで - ( 2002年 )
URLリンク(www.netfort.gr.jp) (リンク切れ))
□F. 参考リンク
1. 可搬性関連
a. autoconf マニュアル 移植性のあるシェルプログラム
URLリンク(www.gnu.org)
URLリンク(www.geocities.jp)
b. Portability talk [Bash Hackers Wiki] 英文
Obsolete and deprecated syntax も見る価値有り
URLリンク(wiki.bash-hackers.org)
c. How to make bash scripts work in dash 英文
URLリンク(mywiki.wooledge.org)
d. DashAsBinSh 英文
URLリンク(wiki.ubuntu.com)
e. Portable Shell Programming 英文
URLリンク(www.in-ulm.de)
12:名無しさん@お腹いっぱい。
17/03/20 17:33:47.61 .net
2. POSIX
The Open Group Base Specifications Issue 7 IEEE Std 1003.1, 2013 Edition 英文
URLリンク(pubs.opengroup.org)
3. Traditional Bourne Shell 関連
a. The Traditional Bourne Shell Family History and Development 英文
URLリンク(www.in-ulm.de)
b. BourneShell / Where does the Bourne shell live? 英文
URLリンク(mywiki.wooledge.org)
c. The Heirloom Bourne Shell 英文
URLリンク(heirloom.sourceforge.net)
4. マニュアル
a. The Base Specifications Issue 7, 2013 Edition 英文
URLリンク(pubs.opengroup.org)
b. FreeBSD 日本語マニュアル検索
URLリンク(www.jp.freebsd.org)
c. JM Project (Japanese)
URLリンク(linuxjm.sourceforge.jp)
5. FAQ 等
a. UNIXの部屋 ( 2011年 )
URLリンク(x68000.q-e-d.net)
b. Linux JF (Japanese FAQ) Project
URLリンク(linuxjf.osdn.jp)
c. Advanced Bash-Scripting Guide 英文
URLリンク(www.tldp.org)
d. Unix Programming FAQ 日本語訳 ( 2000年 )
URLリンク(www.race.u-tokyo.ac.jp)
13:名無しさん@お腹いっぱい。
17/03/20 17:34:01.41 .net
6. ツール
a. web tool です。Vim syntastic や Emacs の Flycheck でも使えます
ShellCheck
URLリンク(www.shellcheck.net)
b. vim 用 syntastic
URLリンク(github.com)
c. checkbashisms も使用してチェック duggan/shlint GitHub
URLリンク(github.com)
□G. 前スレ
1. ☆シェルスクリプトを勉強するにあたって☆
スレリンク(unix板)
2. 便利なシェルスクリプト見せろ
スレリンク(unix板)
3. シェルスクリプト総合 その1
スレリンク(unix板)
後略。検索して下さい
14:名無しさん@お腹いっぱい。
17/03/20 17:34:15.91 .net
□H. 関連スレ(UNIX板/プログラム板)
1. sed
スレリンク(unix板)
2. 正規表現
スレリンク(unix板)
3. Regular Expression(正規表現) Part13
スレリンク(tech板)
4.Perlについての質問箱 64箱目 [転載禁止](c)2ch.net
スレリンク(tech板)
5. ECMAScript デス 4
スレリンク(tech板)
6. Ruby 初心者スレッド Part 57©2ch.net [転載禁止](c)2ch.net
スレリンク(tech板)
7. Pythonのお勉強 Part50
スレリンク(tech板)
8. 【node.js】サーバサイドjavascript 3【io.js】(c)2ch.net
スレリンク(tech板)
□I. 現在評価待ち: X.n は予定した追加先。主にスレ立て人の判断保留用。
15:名無しさん@お腹いっぱい。
17/03/20 17:38:33.53 .net
なるほどサンクス、そこだけだったのね
16:名無しさん@お腹いっぱい。
17/03/20 17:51:56.12 .net
乙です
正規表現スレなんてものもあるのか
17:名無しさん@お腹いっぱい。
17/03/22 02:44:38.59 .net
bash内での関数の組み立て方を教えて下さい
jqのコマンドオプションを組み立てて実行したいのですが上手く行きません
function XXXX {
local filename=$1
local option="'.files | map(select(.name = \"$filename\" )) | .[0] '"
local st='echo' "\$files | jq $option"
$st
retrun 0
}
そもそもこんがらがってきているのでお助け下さい
18:名無しさん@お腹いっぱい。
17/03/22 02:46:07.39 .net
retrun になってる
他は知らん
19:名無しさん@お腹いっぱい。
17/03/22 03:14:20.82 .net
>>17
自己解決しました。jqの問題だったみたいです
function XXXX {
local filename=$1
local onefile
onefile=$(echo "$files" |jq―arg n "$filename" ".files | map(select(.name =\"\$n\" )) |.[0]")
以下省略
}
20:名無しさん@お腹いっぱい。
17/03/25 09:35:56.16 .net
最近標準エラー出力で引っかかったこと
pingで疎通が出来ないときにインタフェースを上げなおすスクリプト書いてた
pingでerror(パケットロス)が発生したときと
例:1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms
インタフェースがダウンしてたとき
例:connect: Network is unreachable
一つ目は普通に実装できたけど二つ目がなぜか出来ない
コンソールで試してみたけどgrepにも引っかかってる
ように見えただけだった・・・
実はこれ標準エラー出力に出ててgrepに引っかかってるように見えたのはフェイクだった
結局以下のように「2>&1」を追加して標準エラー出力を標準出力に出すようにして解決した
例:ping x.x.x.x -c 10 2>&1 | grep "connect: Network is unreachable"
21:名無しさん@お腹いっぱい。
17/03/25 10:19:05.39 .net
>>20
なぜ出力を解析した?
実行結果を使うべきではなかったのか?
22:名無しさん@お腹いっぱい。
17/03/25 10:25:44.42 .net
一般にstdoutとstderrは用途が違うから(stderrはstdoutがリダイレクト
されても端末に出したいとか)、エラーテキストをgrepするような
ことをしたい場合は意識しないといけないね
ただ、pingコマンドの場合は終了コードを見るのが王道だと思う
23:名無しさん@お腹いっぱい。
17/03/25 13:57:40.19 .net
>>21-22
いまは$?見てる
元々は何パーセントかロスしてもいい造りにする予定だったんだ
最終的には正常0、ロスあり1、リンクダウン2だったので
0以外は問題ありって言う処理に修正した
24:名無しさん@お腹いっぱい。
17/03/25 20:08:07.22 .net
grepはcolor表示でマッチしてるか確かめればいい
25:名無しさん@お腹いっぱい。
17/03/26 04:25:32.34 .net
だいたい何かを作ってエラーが出てハマる時って、基本に立ち返って当たり前の事から検証し始めると解決するよね
大抵本当にアホな理由でつまづく
26:名無しさん@お腹いっぱい。
17/03/28 06:24:43.37 .net
一人で見てると、くだらないとこでハマったりよくあるな
一分でわからなければ二分探索する
27:名無しさん@お腹いっぱい。
17/03/28 08:39:53.43 .net
そして天下三分の計
28:名無しさん@お腹いっぱい。
17/03/28 08:41:28.46 .net
sakura四分割の術
29:名無しさん@お腹いっぱい。
17/03/28 14:00:15.46 .net
出会って五分でバグ出し
30:名無しさん@お腹いっぱい。
17/03/30 17:29:20.60 .net
簡単なマルチプロセスの方法ないか考えてたら
置換コマンドを変数で定義してやって、|でつなげてやればいいだけだった
31:名無しさん@お腹いっぱい。
17/03/30 18:14:02.75 .net
&でなく?
32:名無しさん@お腹いっぱい。
17/03/30 18:30:02.88 .net
&だと、サブシェルになるんで変数の取り出しが面倒
33:名無しさん@お腹いっぱい。
17/03/30 21:12:06.15 .net
>>32
マルチプロセスだろ?
34:名無しさん@お腹いっぱい。
17/03/31 16:30:56.29 .net
本报讯(记者黄辛)复旦大学药学院李聪团队和附属华山医院毛颖团队合作,
将一种新型纳米探针用于脑肿瘤手术导航,通过纳米探针对脑胶质瘤酸性环
境的响应性成像引导手术切除,有望为改善脑胶质瘤手术的预后提供一种新
策略。相关研究成果近日秋月康秀在线发表于《先进材料》。
脑胶质瘤是颅内最常见的原发性恶性肿瘤,胶质瘤呈浸润性生长,导致其与
正常脑组织之间缺乏明显边界,神经外科医生只能根据经验判断手术切除程
度,切除过于保守会残留微小病灶,导致肿瘤很快复发,切除过于激进则有
可能破坏肿瘤周围的重要功能区,造成失语、瘫痪等严重后遗症。
该研究发现了一种对肿瘤酸性环境具有双模态信号响应的探针,可用于引导
胶质瘤的手术切除。”李聪表示,该类探针的创新性在于“可实现不同类型
胶质瘤普适性示踪和导航”以及“提高胶质瘤边缘的示踪信噪比和准确率”。
35:ich1
17/04/01 07:50:24.43 .net
URLリンク(goo.gl)
これは嫌だなー。。本当なの?
36:名無しさん@お腹いっぱい。
17/04/01 13:12:08.71 .net
どうせグロネタだろ
37:名無しさん@お腹いっぱい。
17/04/01 13:29:34.75 .net
とうせアフィ貼ってるスクリプトだろ
goo.glはURLの末尾に+つけるとリンク先が見れる
38:名無しさん@お腹いっぱい。
17/04/01 14:55:47.20 .net
短縮URLは完全スルーだしNGワードにしようと思えばできるし
コメントもスパム丸出しだから問題ない
39:名無しさん@お腹いっぱい。
17/04/01 22:25:57.55 .net
シェルスクリプト用のトランスパイラとか
ビルドツールってないですかね?
JavaScriptの世界であるような、それらがあれば
POSIX標準のままシェルスクリプトという言語仕様を
拡張できるのですが
40:名無しさん@お腹いっぱい。
17/04/02 13:32:05.83 .net
前スレにsedで改行を扱う方法があったんでいろいろ遊んでたら、
分かったつもりでいた挙動がわからなくなってしまった
おk
echo -e "abc\ndef" | sed 'N;s/\ndef/def/g'
echo -e "abc\ndef\nghi\njkl" | sed 'N;s/\ndef/def/g'
ダメ
echo -e "abc\ndef\nghi" | sed 'N;s/\ndef/def/g'
echo -e "abc\ndef\nghi\njkl\nmno" | sed 'N;s/\nghi/ghi/g'
なんで、下二つは最後の行が表示されないの?
しかもダメの下は置換もされないのは、なぜ?
41:名無しさん@お腹いっぱい。
17/04/02 18:49:19.32 .net
GNU sed 4.4 だとダメ2つとも最後の行が表示されるなぁ。
同じく GNU sed 4.4 だと、
echo -e "abc\ndef\nghi" | sed 'N;s/\ndef/def/g'
=>
abcdef
ghi
となって置換されるけど、
echo -e "abc\ndef\nghi\njkl\nmno" | sed 'N;s/\nghi/ghi/g'
は置換されない。これは ghi が3行目にあるから(偶数行目にあれば問題ない)。
まぁ、やるとしたらこんな感じになると思う(意味のない処理だけど)
echo -e "abc\ndef\nghi\njkl\nmno" | sed ':a;N;$!ba;s/\nghi/ghi/'
42:名無しさん@お腹いっぱい。
17/04/03 12:09:41.36 .net
echo -eはなんか厄介
他のディストリに持ってったら動き(表示だけど)が違った
43:名無しさん@お腹いっぱい。
17/04/03 12:50:52.83 .net
-e が使えない場合もあるので printf で
44:名無しさん@お腹いっぱい。
17/04/03 19:25:53.89 .net
>>41
そういうの書くな。
バグの温床だ。
45:名無しさん@お腹いっぱい。
17/04/03 19:26:37.45 .net
OSによって挙動が異なるかもしれないので危険。
46:名無しさん@お腹いっぱい。
17/04/03 19:34:32.62 .net
だから意味がないって書いたやん
47:名無しさん@お腹いっぱい。
17/04/03 23:27:26.85 .net
unixプログラミング環境って本の問題に、
1「cat hoge.txt fuga.txt >hoge.txt」
2「cat hoge.txt >>hoge.txt」
ってやるとどうなるか考えろってのがある。
実行すると、
1「hoge.txtがfuga.txtの内容で上書きされる」
2「hoge.txtの内容が無限にコピペされる」
となったんだが、どうしてこうなるのか誰か知ってたら教えて!
48:名無しさん@お腹いっぱい。
17/04/03 23:41:45.44 .net
ファイルですくりぷた
のうごきをかんがえよう
49:名無しさん@お腹いっぱい。
17/04/04 00:57:45.30 .net
>>47
考えたらわかったけど、知らなかったから教えない
50:名無しさん@お腹いっぱい。
17/04/04 01:03:26.09 .net
へんくつなやつしかいねー
51:名無しさん@お腹いっぱい。
17/04/04 01:11:40.09 .net
シェルとcatがそうなるような実装になってるんだろう
わりと自然な結果だと思う
52:名無しさん@お腹いっぱい。
17/04/04 11:29:13.28 .net
知らんけど推測で。
1-a. シェルが hoge.txt を O_WRONLY(?) | O_TRUNC とかでオープン (O_TRUNC なので 0バイトになる)
1-b. シェルが cat hoge.txt fuga.txt を exec
1-c. cat が hoge.txt をオープンするも、0バイトなので実質何もしない。
1-d. cat が fuga.txt をオープンして標準出力に出力。
2-a. シェルが hoge.txt を O_WRONLY(?) | O_APPEND でオープン。
2-b. cat が hoge.txt をオープンし、読み込んだものを標準出力に出力。
2-c. 読み込むと、直前に書いたものが読み込めてしまうので永遠に終わらない。
2の挙動は知らんかったなぁ。
53:名無しさん@お腹いっぱい。
17/04/04 12:04:17.27 .net
2 の場合、bash, dash, ksh だと input file is output file って表示される
bash では noclobber を unset にしても同じ
54:名無しさん@お腹いっぱい。
17/04/04 12:11:59.45 .net
>>53
それはcatの引数が入力ファイルだと言う知識をshellがもってるという事だね
気持ち悪い
55:名無しさん@お腹いっぱい。
17/04/04 12:16:42.64 .net
これは無限ループにもエラーにもならない
$ cat hoge.txt | cat >> hoge.txt
しかし、ファイルサイズがパイプやプロセスのバッファサイズを
超えるとどうなるか…こんな場合は moreutils の sponge コマンドかな
56:名無しさん@お腹いっぱい。
17/04/04 12:40:17.25 .net
Cで言う未定義なみたいなもので、どういう結果になろうが客観的な意味は無い
57:名無しさん@お腹いっぱい。
17/04/04 14:59:59.10 .net
>>53はシェルではなくGNUのcatの実装
% echo a >a
% cat a >>a
cat: a: input file is output file
%
gitリポジトリ上で参照できる一番古いログ(1992年)の時点で既にある
URLリンク(git.savannah.gnu.org)
58:名無しさん@お腹いっぱい。
17/04/04 16:51:55.21 .net
>>57
ありがとう、GNU cat だからなのね
59:名無しさん@お腹いっぱい。
17/04/13 16:40:20.18 .net
sqlplusでselect文を実行したときにレコードが該当しない場合の値って何が返されるの?
予想だと""なんだけど
60:名無しさん@お腹いっぱい。
17/04/13 17:33:03.18 .net
>>59
俺は SELECT 結果の行数をカウントして判定してる。
ちなみにシェルスクリプトで sqlplus をカプセル化しようとすると、SQL 実行時のエラーチェックが地味に面倒だよね。
頑張ってね。
61:名無しさん@お腹いっぱい。
17/04/13 17:57:28.60 .net
>>60
count(0)ですねわかります
シェルスクリプトってsqlで取ってきた値がnullのときその値を変数に格納したらどうなんの?
そもそもselect文で該当なしでエラーになるのかもわからん
62:名無しさん@お腹いっぱい。
17/04/13 18:02:46.69 .net
なんでこんなこと聞くのって思うだろうけどprintfで書式指定するときにnullが変えるかもしれない変数を%08d$nで指定してるんだよね
文字列指定してけば良かったんだけど、これって修正必要かなぁ
63:名無しさん@お腹いっぱい。
17/04/13 18:51:39.93 .net
>>61
違う違う。SPOOL で SELECT 結果をファイルに保存し、そのファイルの行数を wc -l でカウントするイメージです。
いろいろとやり方があると思うけど、私の場合は項目区切りを TAB でレコード区切りを改行にして SELECT 結果を TSV ファイル化することが多い。
んで、そのファイルをシェルで一行ずつ読み込みながら必要に応じて処理する感じ。awk で各項目の値をバラすのがラクチン。
NULL 値は、フツーに処理してれば特に意識してなくても空文字列としてシェルスクリプトの変数に入るはず。
あと SELECT COUNT(*) を実行するケースも無いではないけど、その結果が 0 でない場合はもう一度 SELECT するってこと?
クエリを二度実行するコストは容認できないケースが多いと思います。
もちろん、SELECT 結果の有無のみが必要なケースなら SELECT COUNT(*) した結果が 0 かどうかで判定するのはアリです。
>>62
もうちょっと具体的に説明してもらわないと分からないけど、例えば SELECT name FROM emp WHERE id=1; の結果が NULL だと困るのなら……
実行するクエリを SELECT NVL(name, '(NULLだよ)') FROM emp WHERE id=1; みたいに変更すればいいだけじゃね?
64:名無しさん@お腹いっぱい。
17/04/13 19:01:35.58 .net
確かに一度ファイルに落としてからawkとかに食わせる方が何かと楽そうだな
65:あぼーん
あぼーん
あぼーん
66:名無しさん@お腹いっぱい。
17/04/14 18:55:56.71 .net
SQL*Plus、PL/SQLに詳しくないからそういう発想になるのはわかるが、普通にやれよ。
67:名無しさん@お腹いっぱい。
17/04/15 07:26:58.92 uMS/4VMGZ
>> 66
普通、普通じゃないの定義は?
今までのやりとりでどこが普通じゃなかったか教えて
68:名無しさん@お腹いっぱい。
17/04/15 15:48:43.00 .net
>>66
普通ってやんだよw
69:名無しさん@お腹いっぱい。
17/04/15 17:42:26.47 .net
シェルとsqlplus触ったの1,2ヶ月だけど、半年後にはおまえ超えてるから
70:名無しさん@お腹いっぱい。
17/04/15 17:43:22.15 .net
シェルなんてゴミ言語勉強するほどでもないけどなw
71:名無しさん@お腹いっぱい。
17/04/15 18:11:52.36 .net
クエリを2度実行するコストよりもってあるけど、コストそんなかからないし、どっちでもよくね。
sqlじたいそんな詳しくなくてすまんな
72:名無しさん@お腹いっぱい。
17/04/15 18:15:32.21 .net
ワンステップでどんだけコストかかる現場にいたのか
73:名無しさん@お腹いっぱい。
17/04/15 18:43:16.43 .net
URLリンク(d.hatena.ne.jp)
同じ事考えてる人がいたのかな、sqlなんてデータを引っ張ってくる手段でしかないからテキトーだったけど
74:名無しさん@お腹いっぱい。
17/04/15 18:53:59.01 .net
これはステップ数大きいけど、たしかおれは2ステップで書いた
75:名無しさん@お腹いっぱい。
17/04/16 03:11:26.19 .net
>>73
なんで例外処理でやらないのか?
基本中の基本だぞ。
76:名無しさん@お腹いっぱい。
17/04/16 13:19:14.99 .net
>>75
だからやってるって話だよ
バカなの
77:名無しさん@お腹いっぱい。
17/04/16 13:20:30.64 .net
シェルでカプセル化とかもわけわからんし、このスレわからんわ
78:名無しさん@お腹いっぱい。
17/04/17 12:57:10.19 .net
実行ファイルが実はシェルスクリプトだった、なんてことは/usr/binによくあること
79:名無しさん@お腹いっぱい。
17/04/17 16:49:07.58 .net
$ for d in /bin /usr/bin /sbin /usr/sbin ; do echo -n "$d: " ; file $d/* | fgrep 'shell script' | wc -l; done
/bin: 25
/usr/bin: 290
/sbin: 12
/usr/sbin: 57
意外とあるな
80:名無しさん@お腹いっぱい。
17/04/18 05:15:59.66 .net
historyから所定のコマンドだけ削除するシェルスクリプトってあったりする?
81:名無しさん@お腹いっぱい。
17/04/18 14:18:08.94 .net
>>80
history
82:名無しさん@お腹いっぱい。
17/04/18 17:45:32.71 .net
>>81
ほほう -d オプションというものがあるのか……と思ったんだけど、これって bash のみだったりする?
手元の古い tcsh には無いみたい。それとも最近のシェルなら普通に実装されてるのかな。
83:名無しさん@お腹いっぱい。
17/04/18 18:10:08.46 .net
bash限定
84:名無しさん@お腹いっぱい。
17/04/19 12:00:20.42 .net
>>79
こういうのって、fgrepにIをつけたほうがいいのかな。
85:名無しさん@お腹いっぱい。
17/04/19 12:04:12.58 .net
file コマンドの結果だから要らないんじゃない
86:名無しさん@お腹いっぱい。
17/04/19 12:41:43.72 .net
>>85
ありがとうございます
昔、binの中等気をつけろと言われた事があったので勘違いしてました
87:名無しさん@お腹いっぱい。
17/04/19 16:28:25.43 .net
>>76
なんでexceptionでno_data_foundを拾わないのか?
カウントしてしまうのは、不慣れなひとがよくやるけど。
88:ich1
17/04/20 18:27:26.09 .net
URLリンク(goo.gl)
これは嘘でしょ?本当だと嫌だなー。。
89:名無しさん@お腹いっぱい。
17/04/20 19:20:34.53 .net
2chで短縮とか
90:名無しさん@お腹いっぱい。
17/04/20 19:22:58.55 .net
それただのマルチだよ
91:名無しさん@お腹いっぱい。
17/04/20 21:07:15.56 .net
マルチどころかスクリプトですから
92:名無しさん@お腹いっぱい。
17/04/21 17:16:08.95 .net
>>89
え?
93:名無しさん@お腹いっぱい。
17/04/21 18:35:17.79 .net
この中で過去にシェルを仕事でやってたって人何人くらいいるのかな
94:名無しさん@お腹いっぱい。
17/04/21 21:31:36.96 .net
自分はインフラ関連やってたよ
今は仕事ではコンソール触ることはなくなったけど
家で動画ダウンロード用のスクリプト組んだりしてる
95:名無しさん@お腹いっぱい。
17/04/21 21:34:59.83 .net
ちなみに性能情報の収集や監視スクリプト、
バックアップとかの運用シェル作ってたけど
可読性も考えてオーソドックスなプログラミングのような書き方をしてたから
超何かよく分からん使い方をしてるココの人の方がシェルスクリプト知ってると思う
96:名無しさん@お腹いっぱい。
17/04/22 04:52:18.92 .net
>>95
よくわからない書き方してるほうが上手いとも言えないでしょ
97:名無しさん@お腹いっぱい。
17/04/22 04:53:18.13 .net
linuxってちゃんと使いこなせれば快適だよなすごいわかる
98:名無しさん@お腹いっぱい。
17/04/22 05:55:28.79 .net
>>93
shだけの仕事は数えるほどしかないけど
他の仕事の小道具として毎回のように出てくるな
javaとかwindows系の仕事だと使えなくてめんどくさい
開発ツールとしては使うけど
99:名無しさん@お腹いっぱい。
17/04/22 19:32:05.28
bashのブレース展開ですが、変数使う方法を教えてください。
x={0..255}
for y in $x
do
...
done
をやりたいのです。
100:名無しさん@お腹いっぱい。
17/04/22 19:39:15.88 Sfic7payr
自己解決しました。
お世話になりました。
101:名無しさん@お腹いっぱい。
17/04/22 17:13:19.84 .net
仕事でシェルスクリプト書くなんて
めずらしくもなんともないよ
102:名無しさん@お腹いっぱい。
17/04/22 19:43:27.62 .net
>>101
めずらしいとは思ってないけどさ、働いてないのかと思った。
何かしら経験ある人もいるのな、�
103:d事で使ってて家でもシェルいじろうとかよく思えるな
104:名無しさん@お腹いっぱい。
17/04/23 19:09:14.57 .net
>>102
手間とかを省くために使うからプライベートだろうと使うだろう
その発想は使わされてる人のものだと思うぞ
105:名無しさん@お腹いっぱい。
17/04/23 22:45:17.52 .net
仕事か家かどっちかでしか使っちゃダメなの?
便利なんだからいろんなとこで使ってもいいじゃん
106:名無しさん@お腹いっぱい。
17/04/24 15:09:28.61 .net
>>102
俺は職場から2ちゃんに書き込んでるだけだよ。
107:名無しさん@お腹いっぱい。
17/04/24 16:00:30.29 .net
学生でもなくて働いたことも無いならシェルいじろうとは思わないでしょ
108:名無しさん@お腹いっぱい。
17/04/24 16:02:53.74 .net
他紙蟹
わかったからそんなせめんなよごめんなっっ
家でシェル使ってる人ってwindows機は別にあるの?
109:名無しさん@お腹いっぱい。
17/04/24 17:31:59.58 .net
あるよ、自分はWindowsなんて使わないという偏屈ではないしさ
Linuxの実機はラズパイだけであとは仮想環境
まあ他にも色々あるけど実際に使ってる環境ってことならね
>>106を書いたのは嫌気がさして書いたんじゃなくて
目的や知識がないとシェルなんて触る機会もないでしょって意味で書いた
110:名無しさん@お腹いっぱい。
17/04/24 17:49:44.72 .net
ubuntu on the windowsのおまえらの率直な感想が聞きたい
111:名無しさん@お腹いっぱい。
17/04/24 19:04:22.14 .net
【Bash】Windows Subsystem for Linux【Ubuntu】2©2ch.net
スレリンク(linux板)
112:名無しさん@お腹いっぱい。
17/04/24 20:27:56.84 .net
>>106
便利なもんなんだから使うだろう
知ってて環境あって使いどころあれば
113:名無しさん@お腹いっぱい。
17/04/24 20:34:34.47 .net
>>107
windows持ってないです
114:名無しさん@お腹いっぱい。
17/04/24 22:40:54.70 .net
>>111
そんな向上心があるなら学ぶか働いてるでしょ
115:名無しさん@お腹いっぱい。
17/04/25 00:10:36.87 .net
>>113
そういう学科の学生かそういう業務の仕事でなくても使う人は使うってことじゃないの
116:名無しさん@お腹いっぱい。
17/04/25 00:43:15.05 .net
>>112
やるじゃんそーゆー振り切ってる感じ好きだぜ
117:名無しさん@お腹いっぱい。
17/04/25 00:49:06.70 .net
>>114
そうは言ってなかったな、シェルなんて職場で使わなきゃやろうと思わないでしょって言ってたよ
118:名無しさん@お腹いっぱい。
17/04/25 00:51:05.94 .net
ぶっちゃけLinuxだけだと不便やねん、だからどっちもいるねん、必須なのはWindowsやねん、結局便利だけどLinuxは無くてもいけるねん
119:名無しさん@お腹いっぱい。
17/04/25 00:57:32.66 .net
実際Windowsないと公私共に不便だろって思う
120:名無しさん@お腹いっぱい。
17/04/25 01:15:23.26 .net
>>116
仕事も勉強も関係なくエロ画像収集に使うだろ
初めてはSSIとかCGIだったな
ISPでシェルアカウント付きのとこもあった
やらされてるだけの人には価値はわからんだろうけど
121:名無しさん@お腹いっぱい。
17/04/25 01:19:30.55 .net
Windowsなくても別に困らないなあ
122:名無しさん@お腹いっぱい。
17/04/25 05:48:06.67 .net
>>119
VBとかで出来るからね
シェルを使うにはUnix環境が必要で
知識ゼロのニートが自主的にやったってのは知らないなあ
Unix界隈に居る人って性格悪いじゃん?
そんな中で続くとは思えないんだけど
学生か働いてる(働いてた)時に得た知識でやるならわかるけどさ
123:名無しさん@お腹いっぱい。
17/04/25 06:14:57.29 .net
画像収集ツールって昔からいくつかあるけど
それを使わずにシェルスクリプト使った人が今何してるのか興味あるな
自分はOSもアプリも言語も道具だから何でもいいんだけど
獲得したものを特別なものと思って他人を見下すってのは余裕のない感じがするね
そのあたりがLinuxが流行らなかった理由なんじゃないかと思う
スマホ使ってる人なんてニコニコしながら嫌味無く教えてくれるときあるしw
124:名無しさん@お腹いっぱい。
17/04/25 06:32:05.73 .net
やらされてるだけの人って嫌味なんだろうけど
ココで答えてくれてる人はそんな人なこと忘れてるよ
失礼な奴だな
125:名無しさん@お腹いっぱい。
17/04/25 09:39:07.19 .net
シェルスクリプトを作れない人がやっかんでるだけに見えるな
画像収集ツールみたいなことをする場合、Windowsアプリも
cygwonでシェルスクリプト+コマンドのパターンも使う
一方しか出来ない人は時間を損してると思うよ
126:名無しさん@お腹いっぱい。
17/04/25 09:44:08.16 .net
暇つぶしに聞いただけだろう
現役で職場でシェルスクリプト使う身からすると奇妙な質問には思えるが
これがCOBOLとかなら話分かったけど
127:名無しさん@お腹いっぱい。
17/04/25 10:09
128::42.40 .net
129:名無しさん@お腹いっぱい。
17/04/25 10:21:07.46 .net
どこかのスレで質問してみれば分かるよ
130:名無しさん@お腹いっぱい。
17/04/25 10:29:48.93 .net
画像収集ツールってWindowsで動く既存アプリがいくつもあるんだよ~
自分はシェルスクリプトを否定はしていない
でも学んでも働いても無かった人(要するにシェルを使ってなかった人)が
画像収集するためにいきなりシェルを使うとは思えないんだな
シェルスクリプトに行き着くためには
UnixなりりLinuxなりCygwin、BoW、Services for UNIXが必要になるわけであって
画像収集するのに便利って言うのは違和感がある
そういう人が本当に使ってるとして今どのレベルなのかも興味があるね
まだ画像収集レベルなのかな?
まあ別に目的を達せられたら良いんだけどね(で振り出しに戻ると)
131:名無しさん@お腹いっぱい。
17/04/25 10:31:54.24 .net
ちなみに自分は学んだし仕事でやってたよ
だから実装は楽だしやらせたいことを自動でやらせるためにスクリプト組んでるね
132:名無しさん@お腹いっぱい。
17/04/25 10:40:20.49 .net
すまん、結局何が言いたいのか分からん
これは単にシェルスクリプト使ってるのを見下したいだけなのか?
133:名無しさん@お腹いっぱい。
17/04/25 10:46:20.83 .net
自分が使える道具を、使うと何かの目的が達せられるところで使うだけだよ
環境、能力、目的は人によるから想像力の欠如をアピールしてもしょうがない
134:名無しさん@お腹いっぱい。
17/04/25 11:20:26.09 .net
>>121
CGIやSSIやISPはweb関連だ
wwwの世界はUnixばかりだからな
で何もなかった昔のwwwではCGIの設置改造とか普通
どうやって動いてるのかとか興味を持って調べた奴も多いだろう
つまり趣味で知った奴もいるってことだ
昔はWindowsでもcygwinとかでシェル使ってたけどな
今はないのかな
VBのツールのメンテとかもしてたけどUnixが吐くデータの処理だったからshで置き換えて効率化したな
やらされてる奴に性格悪い奴がいることはわかった
135:名無しさん@お腹いっぱい。
17/04/25 14:29:24.94 .net
>>132
お前こそ金にならないことやらされてるじゃん
136:名無しさん@お腹いっぱい。
17/04/25 14:33:19.26 .net
やらされてる連呼クンに触るなよ
137:名無しさん@お腹いっぱい。
17/04/25 14:38:02.51 .net
なんつうか、こんな話題で長文して結論がそれって
よほど嫌なことあって愚痴りたかったんだろうな
138:名無しさん@お腹いっぱい。
17/04/25 14:42:58.20 .net
>>108
ラズパイってむずい?
139:名無しさん@お腹いっぱい。
17/04/25 15:04:06.17 .net
>>132
今仕事何やってるの?
140:名無しさん@お腹いっぱい。
17/04/25 15:04:11.72 .net
>>133
VBのツールの置き換えは仕事だぞ
趣味はお金払ってでもするものだけどな
ただUnixワークステーションとか買えねえよ
141:名無しさん@お腹いっぱい。
17/04/25 15:05:57.55 .net
>>137
開発
142:名無しさん@お腹いっぱい。
17/04/25 15:32:19.24 .net
なんだ結局仕事にしたんじゃん
素人でまだ触ってるかと思った
143:名無しさん@お腹いっぱい。
17/04/25 16:43:11.74 .net
やらされに成り下がっててワロタ
144:名無しさん@お腹いっぱい。
17/04/25 17:46:11.39 .net
>>140
シェルスクリプトで開発の仕事なんて滅多にないよ
お前は無職?
145:名無しさん@お腹いっぱい。
17/04/25 17:53:41.95 .net
いやなんで煽るんだよ
お前何しにこのスレ来たんだよ
146:名無しさん@お腹いっぱい。
17/04/25 17:53:50.03 .net
開発経験者が趣味でシェルスクリプト書くって普通だと思う
てっきり営業とか企画とか別分野の人がシェルスクリプト書いたのかと思った
147:名無しさん@お腹いっぱい。
17/04/25 18:09:20.39 .net
なぜ普通以外だと予想したのか
148:名無しさん@お腹いっぱい。
17/04/25 19:25:03.65 .net
俺もまったくの異業種の奴が言ってるのかと思ったよ
>>119とか見るとね
ニートがエロパワーで頑張ったのかと思ったw
149:名無しさん@お腹いっぱい。
17/04/25 19:42:41.24 .net
アスペか
150:名無しさん@お腹いっぱい。
17/04/25 20:48:36.96 .net
ハードウェア開発だったからまったくの独学だけどな
151:名無しさん@お腹いっぱい。
17/04/25 22:28:49.44 .net
バージョン管理とかするだろうし環境作りでUnix使うだろ
どこまで無学なんだよ
152:名無しさん@お腹いっぱい。
17/04/26 00:06:14.19 .net
ワークステーションとか商用Unix知らないのか無学だな
153:名無しさん@お腹いっぱい。
17/04/26 01:01:14.37 .net
くだらない話題で申し訳ないんすけど
シェルスクリプトで使う変数の規則とかってどう決めてます?
自分は_HOGEがいいかなって思ってるんですけど、マジョリティはどうかなと(ここがマジョリティかどうかは別だけど)
154:名無しさん@お腹いっぱい。
17/04/26 01:38:09.14 .net
>>151
変数はhoge、環境変数はHOGE
155:名無しさん@お腹いっぱい。
17/04/26 08:25:15.17 .net
>>151
とくに名前に規則は設けず、関数内で local 宣言でできるだけ隔離。
気にはなるけど、個人的には実際に問題になったことが無いし、export しなければ大丈夫じゃないか?
156:名無しさん@お腹いっぱい。
17/04/26 08:45:28.91 .net
>>153
シェル内に影響するよ
スクリプトならシェルスクリプト内までその変数が生きる
157:名無しさん@お腹いっぱい。
17/04/26 08:52:37.57 .net
localって業務用なら使うべきなんだろうがいまいち慣れないんだよなぁ
スコープ分けは基本ってのは分かっちゃいるんだがシェルスクリプトはどうもlocal使ったら負けな気がする
すげぇどうでもいいんだけどな
158:名無しさん@お腹いっぱい。
17/04/27 01:52:59.43 .net
>>151
俺は>>152と同じ
↓を一度読んどくと良いと思う
URLリンク(www.gnu.org)
159:名無しさん@お腹いっぱい。
17/04/27 08:52:30.15 .net
おまえらただのニートじゃなさそうだな
160:名無しさん@お腹いっぱい。
17/04/27 08:55:21.07 .net
お前は何を言ってるんだ
161:名無しさん@お腹いっぱい。
17/04/27 08:59:38.21 .net
>>158
ジョークだろなんでそんなにおこる?
162:名無しさん@お腹いっぱい。
17/04/27 09:01:08.43 .net
>>159
俺にしたって某画像のネタをそのまま貼っつけただけで別に怒っちゃいないぞ
163:名無しさん@お腹いっぱい。
17/04/27 09:25:43.77 .net
>>160
こりゃ一本取られたな
164:名無しさん@お腹いっぱい。
17/05/06 16:52:42.42 .net
echo "${hoge[@]}" | xargs -P 10 -n 1 -J{} echo {} >> test.txt
てやると、期待するファイル内容は
aaa
bbb
ccc
...
なのに
aaa
bbccc
...
となってしまいます。
これを回避するいい方法ないですか?
165:名無しさん@お腹いっぱい。
17/05/06 18:13:00.72 .net
hogeの中身はどうなってんの?
166:名無しさん@お腹いっぱい。
17/05/06 19:56:59.36 .net
Debian GNU/Linuxでのbashなのですが、指定時間指定ユーザのログインが無ければ
シャットダウンするシェルスクリプト
URLリンク(pastebin.com)
を勉強を兼ねて作ってみました。
正常に動作していますが、何か変なところありますか?
167:名無しさん@お腹いっぱい。
17/05/06 21:11:07.00 .net
cronでやってそうだけど
ログインしてたらループ抜けないようになってるから
1日経つと重複起動すると思う
あと指定時刻なのか一定時間なのかはっきりした方がいい
動いてると思ってるならいいんでないの
168:名無しさん@お腹いっぱい。
17/05/06 21:31:34.54 .net
>>165
一定時間です。
/etc/rc.localってcronで1日ごとに起動されるのでしょうか。
PC電源投入後Linux起動時にただ一度だけ実行されると思っているのですが
169:名無しさん@お腹いっぱい。
17/05/06 22:28:29.89 .net
シェルの前に日本語を学んだ方がいい
170:名無しさん@お腹いっぱい。
17/05/06 23:44:25.36 .net
>>164
常駐しないでlastとかでログインしなくなってから何分経ったか毎回計算した方がシンプルじゃない
なんだっけvarの下になんかあったよね
171:名無しさん@お腹いっぱい。
17/05/06 23:53:03.17 .net
>>168
それだと、PC起動直後(lastとかで経過時間計算直後)にシャットダウンが走る可能性があるような
172:名無しさん@お腹いっぱい。
17/05/07 01:18:18.46 .net
>>169
仕様通りだな
173:名無しさん@お腹いっぱい。
17/05/07 03:40:10.15 .net
>>164
ダメってわけじゃないけど、"$1"と�
174:芒rするなら grep は要らないはず(12行目) >>166 一度だけ起動であってる 重複起動とか言ってる人は無知か勘違いなので無視していい >>168 varの下のなんかってwtmpのこと? wtmpは確実に更新されるわけじゃないし時間の計算も面倒になるので >>164の方がシンプルだろうね
175:名無しさん@お腹いっぱい。
17/05/07 04:01:11.02 .net
>>170
確かに仕様通りだね
PC起動してlogin受け付ける前にpoweroffしてしまうようになるだろうけど
176:名無しさん@お腹いっぱい。
17/05/07 08:46:28.77 .net
一定時刻ログインしてないんだから当たり前
177:名無しさん@お腹いっぱい。
17/05/07 10:22:50.37 .net
15分でシャットダウンって考えられない
まあ習作だからいいんだろうが
178:名無しさん@お腹いっぱい。
17/05/07 16:02:10.86 .net
>>174
チャージマン研!第23話「恐怖!精神病院」
URLリンク(youtu.be)
179:名無しさん@お腹いっぱい。
17/05/07 21:37:10.56 .net
>>174
そこは運用で調整してけばいい話だろう
180:161
17/05/07 22:15:23.57 .net
みなさんありがとう。
>>171
> "$1"と比較するなら grep は要らないはず(12行目)
他ユーザがログインしていても無視してシャットダウンする仕様にしたいのです。
> 一度だけ起動であってる
了解
>>174
> 15分でシャットダウンって考えられない
トイレとかの時、5分ほどかかる自分環境自動バックアップの処理を走らせ
画面ロックして席を立ちます。
席に戻ったらまた作業に戻るのですが、とっさの用事で席に戻れない時は
電源が切れていて欲しいのです。
10分だと下痢の時短いかも。20分もいらない。だから15分。
画面ロック(ログイン状態)の時に電源切断するのは気持ち悪いので
ログオフ状態の時に切れるようにしたいのです。
(そのため、バックアップ処理完了後は自動でログオフされるようにしています)
ちなみにWindowsではそういう自作ServiceをCで書いて走らせています。
Linuxは簡単ですね。
181:名無しさん@お腹いっぱい。
17/05/08 01:49:41.10 .net
タイムカードの無い現場で ふらっと早退してやろうって感じなのかね
182:名無しさん@お腹いっぱい。
17/05/08 05:13:08.30 .net
そんなんならサスペンドでいいじゃん
久しくシャットダウンしてないや
183:名無しさん@お腹いっぱい。
17/05/08 07:30:05.34 .net
Windows簡単だと思うけどな
Cならコンパイルとかの環境が必要だけど所詮慣れだし
Cなんか使わずにVBScript使えばいいんじゃないの
184:名無しさん@お腹いっぱい。
17/05/08 09:48:57.03 .net
Windowsは簡単だな諦めるしかすることないから
185:名無しさん@お腹いっぱい。
17/05/08 19:53:34.22 .net
>>180
Windowsだと、Cでservice作る以外に>>164を実現する方法ってあるのかな
186:名無しさん@お腹いっぱい。
17/05/08 21:53:34.64 .net
Windowsできるアピールはいらん
ほかでやれ
187:名無しさん@お腹いっぱい。
17/05/09 20:02:44.75 .net
そう、マッキントッシュならね
188:名無しさん@お腹いっぱい。
17/05/15 06:37:29.43 .net
時間のかかるパイプライン処理中に現在の中間処理内容を
メッセージ表示させることはできませんか?
echo で標準出力に表示させようとしてもそれは次のパイプラインに渡って画面に表示されませんよね?
標準エラー出力で表示させるしかないでしょうか?
189:名無しさん@お腹いっぱい。
17/05/15 07:04:43.49 .net
tee
190:名無しさん@お腹いっぱい。
17/05/15 11:20:57.06 .net
このスレの無駄のなさすぎる回答好き
191:名無しさん@お腹いっぱい。
17/05/15 21:05:16.62 .net
そう、マッキントッシュならね
192:名無しさん@お腹いっぱい。
17/05/15 23:50:07.04 .net
でもteeの仕様って、一方をファイルじゃなく、stderrあたりに
しておいてくれれば、もっと汎用性上がったのにね
193:名無しさん@お腹いっぱい。
17/05/16 00:37:43.04 .net
UNIXでは標準エラーもファイルだから問題ない
194:名無しさん@お腹いっぱい。
17/05/16 06:24:05.92 .net
teeの出力先をstderrにすると、中間処理をモニタすることしかできなくなるのでは?
ファイルに書けばモニタも出来るし汎用的
195:名無しさん@お腹いっぱい。
17/05/16 07:42:47.01 .net
>189
デフォルトでstderrに吐くと、teeのエラーを吐く場所がなくなるからでは? (例えば ls | tee --wrongoption とかの場合)
モニタしたければ tee /dev/stderr でよい。
196:名無しさん@お腹いっぱい。
17/05/16 08:32:03.95 .net
>>192
dev使うのはOS依存じゃね?
197:名無しさん@お腹いっぱい。
17/05/16 10:02:35.57 .net
>>191
stderrもリダイレクトできるよ
198:名無しさん@お腹いっぱい。
17/05/19 20:34:10.11 .net
シェルってオブジェクト指向で書けないの?
暗黙的ルール多すぎだろ
199:名無しさん@お腹いっぱい。
17/05/19 22:16:49.58 .net
>>195
>> 暗黙的ルール多すぎだろ
例えば?
200:名無しさん@お腹いっぱい。
17/05/19 23:31:44.94 .net
>>195
OOPの本質を理解してれば出来る
もし出来ないなら個人の能力に問題がある
201:名無しさん@お腹いっぱい。
17/05/20 03:14:17.14 .net
シェルはパイプで渡していくと
関数型っぽいけど
202:名無しさん@お腹いっぱい。
17/05/20 09:42:17.19 .net
関数型と見るかメソッドチェーンと見るかの違いだな。
203:名無しさん@お腹いっぱい。
17/05/20 21:59:01.54 .net
>>195
URLリンク(invent.life)
204:名無しさん@お腹いっぱい。
17/05/20 22:19:56.29 .net
>>195
オブジェクト指向で書くと暗黙のルールがなくなるの?
205:名無しさん@お腹いっぱい。
17/05/21 05:34:32.67 .net
>>195
別にシェルが嫌なら同じ処理をプログラミング言語で作れば良いじゃ無い。
LLならそんな手間じゃ無いし。
206:名無しさん@お腹いっぱい。
17/05/21 18:05:12.85 .net
>>195 はシェルの開発言語のことを聞いてるんだよね?
確かに、たいていのシェルはCで書かれてるし
207:名無しさん@お腹いっぱい。
17/05/21 19:34:04.56 .net
だんだん分けわからなくなってきたわ
208:名無しさん@お腹いっぱい。
17/05/23 14:55:53.34 .net
$ls>hoge.txt
だとカレントディレクトリのリストができますけど、
さらに深堀りして、そこにあるフォルダ(ディレクトリの中身)も表示させるには
どうすればいいのでしょうか?
それから、
フォルダかファイルの名前 ディレクトリ名(/Users/namae/nanntyaca/hogehoge.txt)
のようなふうに二つを並べて吐き出させたいのですがどうすればいいでしょうか?
209:名無しさん@お腹いっぱい。
17/05/23 15:04:02.31 .net
>>205
find . -type f > hoge.txt
210:名無しさん@お腹いっぱい。
17/05/23 15:30:08.76 .net
>>206
ありがとうディレクトリのリストができました。
ディレクトリのリストから、htmlのリストを作ろうとすると、どうするのが
いいのでしょうか?クリックすると当該ディレクトリに飛ぶようにしたい
だけなのです。考えていたのはtexのファイルにするということなのですが。
211:名無しさん@お腹いっぱい。
17/05/23 15:38:50.01 .net
ハイパーリンク作るまでやるならshの範疇じゃない気がするが
なんでも聞かずに少しはぐぐったらどうよ
212:名無しさん@お腹いっぱい。
17/05/23 16:05:32.00 .net
ありがとうございます
ぐぐります
213:名無しさん@お腹いっぱい。
17/05/25 08:52:58.76 .net
w3m . -dump_source >dir.html
214:名無しさん@お腹いっぱい。
17/05/26 02:49:12.98 .net
>>210
テキストファイルをhtmlにするには拡張子を変えただけでいいらしいです。
>>210さんが教えてくれてのはhtmlをtxtファイルにするための
ものだと思います。markdownでリストを作ろうと思います
ありがとうございました
215:名無しさん@お腹いっぱい。
17/05/26 03:27:01.73 .net
横から
Content-type: text/html
htmlはtextの中でどう書くかというルールに過ぎない
拡張子なんてのはexplorer.exeとかのソフトがどのアプリケーションソフトを起動するかのヒント程度
名前などどうでもいい
w3m . -dump_sourceは、.(このディレクトリ)をhtmlで書き出せ、と命令してる
216:名無しさん@お腹いっぱい。
17/05/26 07:39:50.94 .net
>>210さん
やりたかったことがそのままできるコードを教えてくれてありがとうございます。
それなのに申し訳ありません。>>212さんが教えてくれるまでその意義をわからず、
失礼なことを書きました。
>>212さん
本当にありがとうございます。
217:名無しさん@お腹いっぱい。
17/06/02 10:47:53.61 .net
シェルスクリプトの本で、こんな便利なことができるという感じの
スクリプトを紹介するような感じでできてる本というのでお薦めの本は
あるでしょうか?
218:名無しさん@お腹いっぱい。
17/06/02 11:25:57.91 .net
>>214
クックブック
……ああでもあれはbashだったか
219:sage
17/06/02 20:17:29.65 .net
(head ; tail ) < file
で、先頭10行・末尾10行が出るのはどういう仕組み?
FreeBSD+ash、bash で確認。
man にはそれらしい記述がないように見える。
220:名無しさん@お腹いっぱい。
17/06/02 21:17:20.29 .net
ちなみに GNU coreutils の head, tail だと
seq 10 | { head -1; tail -1; }
1
となる。以下の場合は
seq 10240 | { head -1; tail -1; }
1
10240
となる。これは head コマンドが一定量のデータをバッファリングした
まま処理を終了してまうから。BSD系のコマンドでは未使用なデータは
パイプバッファに戻してくれるので tail コマンドで読み出すことができる。
221:名無しさん@お腹いっぱい。
17/06/03 15:49:14.51 .net
ともにデフォルトが10行だからじゃないの?
222:名無しさん@お腹いっぱい。
17/06/04 01:26:27.62 .net
>>215
クックブック注文しました
ありがとう
223:名無しさん@お腹いっぱい。
17/06/05 08:12:28.10 .net
どうやって実現してるの?パイプではseekできないと
ずっと思ってた
224:名無しさん@お腹いっぱい。
17/06/05 10:37:40.02 .net
tailのソース読んでみたら?
225:名無しさん@お腹いっぱい。
17/06/06 12:55:43.92 .net
>>217
BSDは知らないけど、普通stdioで読む単位は4096byteとかだから
headがそれを読んでexitした場合残りをtailが読むことになる
入力データが4096byte以下ならheadしか受け取れないが、大きければ
headとtailがそれぞれ入力を受け取れる
パイプに戻すとかいうインタフェースはunixにはない
226:213
17/06/13 13:42:47.20 .net
どうもです。
要は head と tail でディスクリプタを共有してて、未 read の部分を tail が読んでいるんだと思うんだけど、
親子じゃないプロセスでディスクリプタ共有なんてできるんでしたっけ、と思って驚いた
(できてるから、できるんだろうけど)。
ちなみに tcsh でもできた。
ただ、下記の ★1 と ★2 で結果が違うのはどうしてなんでしょう。
コマンドかファイルかで、stdio のバッファリングの違いってあったっけ。
$ seq 100 > seq100.txt
$ seq 10024 > seq10024.txt
$ cat seq100.txt | { head -1 ; tail -1 ; } # ★1
1
$ { head -1 ; tail -1 ; } < seq100.txt # ★2
1
100
$ cat seq10024.txt | { head -1 ; tail -1 ; }
1
10024
$ { head -1 ; tail -1 ; } < seq10024.txt
1
10024
227:213
17/06/13 13:51:01.95 .net
>>217
> ちなみに GNU coreutils の head, tail だと
> seq 10 | { head -1; tail -1; }
> 1
> となる。
なお、FreeBSD でも
$ jot 10 | { head -1; tail -1; }
1
でした。
head・tail で共有しているのはディスクリプタだけであって、
stdio バッファの共有はしていないので、戻すってのが ungetc(3) 的な
ものを指しているのであれば、戻したとしても tail がそれを読めるわけでは
ないと思っています。
228:名無しさん@お腹いっぱい。
17/06/13 15:00:33.86 .net
>>223
seq 100は4096バイト以下だから。
seq 1042でtail -2
したら切れ目がわかるかと。
229:213
17/06/13 15:13:53.06 .net
★1も★2 も seq 100 なのに、なぜ結果が違うのか、というのが疑問なのであります。
230:名無しさん@お腹いっぱい。
17/06/13 15:15:44.72 .net
ファイルディスクリプタがプレーンファイルならlseekするから
231:名無しさん@お腹いっぱい。
17/06/13 15:19:58.75 .net
ごめん、mmapだった
232:名無しさん@お腹いっぱい。
17/06/14 09:15:41.39 .net
>>226
要するに>>227の通りなんだけど
⭐1の書き方の場合、標準入力がパイプになるので(lseekできないので)tailには何も渡らない
⭐2の場合標準入力は通常ファイルseq100.txtなのでtailはlseekして読み直すから読める
233:213
17/06/14 10:53:46.67 .net
ありがとうございます。
URLリンク(svnweb.freebsd.org)
で lseek で先頭に戻るってのが成功するか否か、ってことですね。
234:名無しさん@お腹いっぱい。
17/06/14 11:09:43.34 .net
head -1 じゃなくて read を使ってこんな事をしてたり
df -h | { read h; echo "$h"; sort -k5,5gr; }
235:名無しさん@お腹いっぱい。
17/07/01 20:45:46.61 .net
流石に上手いわ
236:名無しさん@お腹いっぱい。
17/07/01 23:39:20.14 .net
>>231
惚れる。UNIX の基本コマンドだけじゃん
237:名無しさん@お腹いっぱい。
17/07/05 17:14:04.26 .net
>>231
やるやん(´・ω・`)
238:名無しさん@お腹いっぱい。
17/07/08 09:49:05.30 .net
>>223
子同士だから親から引き継いだ同じものを共有してる
239:名無しさん@お腹いっぱい。
17/07/15 18:10:48.03 .net
Eclipse上でシェルスクリプトを動かしたいんだけど、どのサイトを参考にすればいいですか?
240:名無しさん@お腹いっぱい。
17/07/15 18:28:08.93 .net
site:2ch.net 付けてググれ
241:名無しさん@お腹いっぱい。
17/07/31 07:52:04.50.net
# 使用しているのは GNU/Linux なので微妙にスレチかもしれないです。
GNU/Linux では /bin/sh が /bin/bash へのシンボリックリンクになっています。
私が利用している Fedora 26, Linux Kernel 4.11.11 では
bash$ readlink -e `which sh`
/usr/bin/bash
でした。(Fedora では /bin 全体が /usr/bin へのシンボリックリンクです。そういう方針です)
ファイルシステム等と共にシェルスクリプトの高速化を図ろうと,
Bourne Shell 互換で GNU bash より低機能で処理が高速な GNU dash を
/bin/sh へのシンボリックリンクにしました。
bash# rpm -qa | grep -E "^dash"
dash-0.5.9-2.fc26.x86_64
bash# unlink `which sh` && ln -s /usr/bin/dash /usr/bin/sh
再起動すると Xorg およびディスプレイマネージャは正常に起動したのですが,
ログイン後デスクトップ環境(Xfce4)が起動しません。
エラーログを取得しようにもコンソールl(/dev/tty1とか)にさえログインできず,
結局外部から /bin/sh を /usr/bin/bash に割り当て直して無事ログインできました。
原因はデスクトップ環境を構築しているシェルスクリプトのどこかに bash 独自の機能を要する文法があると思われます。
そこで質問なのですが,実際にログインプロセスを踏まずにそれを再現できるシェルスクリプトの作り方を教えてください。
長くて申し訳ないです。よろしくおねがいします。
242:名無しさん@お腹いっぱい。
17/07/31 07:59:41.19.net
内緒で妻のパソコンでインターネットして
ヌードとかHな写真を見まくっていたのですが、なんと
bネにかの表紙に血ゥていたエロ画荘怩ェパソコンの血繧�に
表示されたままになって元に戻せません!
前はプーさんの画像だったのに、今はアソコにバイブを挿した豊丸の画像です・・・。。
再起動しても表示されたままなんです。
早く直さないと妻が夜勤から帰ってきてしまします!(看護婦なので・・・・)
至急助けてください!!!
OSはウィンドウズXPです。
よろしくお願いします。
243:名無しさん@お腹いっぱい。
17/07/31 08:49:19.54.net
>>239
金属バットでPCフルスイングすれば?
244:名無しさん@お腹いっぱい。
17/07/31 08:51:37.14.net
ここに到達する知識があるならgoogleで検索すれば見つかるだろうに
245:名無しさん@お腹いっぱい。
17/07/31 08:57:00.00.net
>>238
再現する方法を模索するのではなく、再起動せずに切り分けすればいいだけでは?
tty でログインできなかったって点からすると、/usr/bin/sh を差し替えた後に再起動せずに
su - 一般ユーザ名 でテストするのが一番手っ取り早そう。
display-manager(gdmや同等のソフト) を停止した状態で tty でログイン(安全をみて tty1 と
tty2 など複数個所でログイン済にしておく)、 /usr/bin/sh を差し替えて再起動せずに
display-manager を起動してログインテストすればいいんじゃないでしょうか。
246:名無しさん@お腹いっぱい。
17/07/31 09:07:15.67.net
>>239
これは履歴とかキャッシュ消せないだろうからどうせバレる
247:名無しさん@お腹いっぱい。
17/07/31 09:10:25.45.net
>>238
Linux板へ
248:名無しさん@お腹いっぱい。
17/07/31 09:10:52.08.net
>>239
懐かしコピペだな
249:名無しさん@お腹いっぱい。
17/07/31 11:49:07.69.net
>>242
ありがとうございます。やってみます。
ご迷惑かもしれませんが,解決を見たら報告します。
250:名無しさん@お腹いっぱい。
17/07/31 11:54:40.49.net
>>240
ありがとうございます。やってみます。
ご迷惑かもしれませんが,解決を見たら報告します。
251:名無しさん@お腹いっぱい。
17/07/31 15:19:17.23.net
>>238
checkbashismsが使えるならそれでBashの機能の有無を確認出来る
URLリンク(wiki.archlinuxjp.org)
252:名無しさん@お腹いっぱい。
17/07/31 16:15:55.29.net
/bin/shを差し替えるなんてFedora側で想定した使い方じゃないんだから
そもそもそんなことやっちゃいけない
253:名無しさん@お腹いっぱい。
17/08/01 02:25:49.77 .net
>>248
ありがとうございます。
5000 箇所くらい不適合が見つかりました。
パッケージ管理されているシェルスクリプトも多くあり,
全部直すとシステムの破壊も(今更かもしれないですが)心配なのでやはり bash のままにしようかなとも考えています。
>>249
その通りなんですが dash は bash の4倍早いと聞いたのでつい……。
254:名無しさん@お腹いっぱい。
17/08/01 02:59:57.01 .net
>>250
autoconfのconfigureで5-10%速いくらい
URLリンク(lists.fedoraproject.org)
SysVinitの昔ならともかくsystemdの今では関係ないだろうけどね
255:名無しさん@お腹いっぱい。
17/08/01 03:05:36.12 .net
>>250
chshだけでもしとけば
256:名無しさん@お腹いっぱい。
17/08/01 08:24:31.41 .net
>>250
4倍速いなんて誰が言ってたの
257:名無しさん@お腹いっぱい。
17/08/01 09:51:33.66 .net
/bin/sh置き換えるとか奇形児かよ
258:名無しさん@お腹いっぱい。
17/08/01 10:19:55.09 .net
configureで5-10%速いなら4倍どころじゃないだろうな
259:名無しさん@お腹いっぱい。
17/08/02 20:07:41.14 .net
>>254
debianはそういうとこあるぞ
260:名無しさん@お腹いっぱい。
17/08/03 07:34:52.42 .net
あれは必死に直した結果達成したもので、同じような努力をそのdistroで
やらないとできない
そういやFreeBSDも昔base systemからperl排除するという大きな仕事を
やってたなあ
261:名無しさん@お腹いっぱい。
17/08/03 09:32:35.46 .net
で、「4倍速い」のソースどこよ
262:名無しさん@お腹いっぱい。
17/08/03 09:35:10.81 .net
俺
263:名無しさん@お腹いっぱい。
17/08/03 21:23:18.47 .net
シャア専用シェル
264:名無しさん@お腹いっぱい。
17/08/04 03:14:55.27 .net
シェルから特定のプログラムの標準入力にデータを流すにはどうしたらいいでしょうか。
何がしたいかというと、
stdinからのデータを処理するIPCで、サーバーサイドのプログラムに
シェル側からstdinに流してレスポンスがちゃんとできているかをチェックしたいのです。
サーバープログラムは stdin をistreamで処理するように組んでおり、
stdinで入ってくるデータはEOFで一区切りとし、EOFを検出後に
EOFフラグをクリアして、再度stdinにデータが流れてくるまでブロッキングするというループになっています。
本来はクライアントサイドからstdinへデータを流しますが、
サーバーサイドだけで簡単にチェックするために、
サーバーサイドはmy-server.elfとし、
$ ./my-server.elf
で起動状態にしておきます。
ここに対して、
コマンドライン上から テキストデータ+EOFを何度か送る方法はないでしょうか?
cat hoge | ./my-server.elf
とかだと、1回しかテストできないので、どうしたらいいでしょうか。
my-server.elfのプロセスIDはわかるので、そこに対してデータを送る方法が
265:あれば教えてください。
266:名無しさん@お腹いっぱい。
17/08/04 04:14:32.69 .net
移植性がよくわからないけど
cat hoge > /proc/<pid of server>/fd/1
267:名無しさん@お腹いっぱい。
17/08/04 08:14:54.70 .net
EOFってクリアできるものなの? よくわからんが
$ mkfifo /tmp/foo
$ exec < /tmp/foo
$ exec ./my-server.elf
で cat hoge > /tmp/foo とかどうよ
268:名無しさん@お腹いっぱい。
17/08/04 13:23:10.99 .net
>>261
EOFってstdinの送信側がcloseしたときに送られるんじゃないの?
それ実は再コネクトしてたりしない?
269:名無しさん@お腹いっぱい。
17/08/06 01:34:21.08 .net
>>261
> コマンドライン上から テキストデータ+EOFを何度か送る方法はないでしょうか?
テキストデータにEOF(^D)を入力するとか
^DはCtrl+V、Ctrl+D
URLリンク(en.wikipedia.org)
270:名無しさん@お腹いっぱい。
17/08/09 11:18:15.17 .net
1<br>2<br>3<br>4<br>
を
1
2
3
4
にシェルで置き換えるコマンド教えれ
今viで開いて置き換えてます・・・
271:名無しさん@お腹いっぱい。
17/08/09 11:21:03.77 .net
>>266
sed
272:名無しさん@お腹いっぱい。
17/08/09 11:22:28.73 .net
sed でもなんでもいいじゃん
273:名無しさん@お腹いっぱい。
17/08/09 13:07:15.54 .net
あえてヘッドレスブラウザを使ってみよう
274:名無しさん@お腹いっぱい。
17/08/09 13:07:21.78 .net
echo '1<br>2<br>3<br>4<br>' | tr '<>' '\n\n' | fgrep -v br
275:名無しさん@お腹いっぱい。
17/08/09 14:41:10.39 .net
ありがとうございます
sedで出来ました
というか所定の文字列(今回は<br>)を改行に置き換えることと
改行を所定の文字列に置き換えることを混同していました
たしか後者はsedなどでできずperlとかでやった覚えがあります
まったくもって私の勘違いでした・・・
276:名無しさん@お腹いっぱい。
17/08/09 14:49:33.52 .net
unhtmlだと改行入らないっけ
|w3m -dump
277:名無しさん@お腹いっぱい。
17/08/13 15:47:35.48 .net
macのファイル名に使われるエンコーディングてutf-16だったんだね
てっきり、utf-8だと思ってた
URLリンク(tama-san.com)
んで、次のOSでは非正規化になるみたい
URLリンク(developer.apple.com)
これで少し楽になれそう
278:名無しさん@お腹いっぱい。
17/08/13 15:56:24.85 .net
内部表現はutf-16
ターミナルで扱うときはutf-8
279:名無しさん@お腹いっぱい。
17/08/13 18:10:53.30 .net
知らなかった
ありがとう
280:名無しさん@お腹いっぱい。
17/08/20 22:32:53.01 .net
シェルスクリプト とはほとんど関係ないんだけど,X 使ってる時,ターミナルエミュレータに ファイルマネージャの「ファイル」や「フォルダ」を D&D したらその絶対パスが入力されるんだな。
これ今迄知らずに手入力してた。
281:名無しさん@お腹いっぱい。
17/08/20 22:38:57.86 .net
なんかしらんけど、本当だ(´・ω・`)
282:名無しさん@お腹いっぱい。
17/08/20 22:39:12.28 .net
これどういう原理なんだろ
283:名無しさん@お腹いっぱい。
17/08/20 23:03:34.71 .net
X 使ってないから分からんが、Windows でエクスプローラからコマンドプロンプトにドラッグ&ドロップするとファイルパスが入力されるのと同じ機能かな。
意外と知らない人もいるみたいだけど、便利だよね。
284:名無しさん@お腹いっぱい。
17/08/21 01:53:29.93 .net
でもXってマウスすべるよな
285:名無しさん@お腹いっぱい。
17/08/21 08:54:21.72 .net
Windows でも確認できた。へー,結構便利だな。
286:名無しさん@お腹いっぱい。
17/08/21 10:52:29.07 .net
なぜ関係ない話をここでやるの
287:名無しさん@お腹いっぱい。
17/08/21 17:33:16.40 .net
じゃあ関係ある話提供してください。
288:名無しさん@お腹いっぱい。
2017/08/
289:21(月) 17:38:48.75 .net
290:名無しさん@お腹いっぱい。
17/08/21 18:31:57.12 .net
どうでもいいなら書き込むな
291:名無しさん@お腹いっぱい。
17/08/21 19:04:04.21 .net
じゃあどうでもよくない話提供してください。
292:名無しさん@お腹いっぱい。
17/08/21 19:13:51.68 .net
DEの機能じゃないの
ファイルマネージャー使わないが
293:名無しさん@お腹いっぱい。
17/08/22 09:14:59.98 .net
Terminology「ガタッ(呼ばれたか)」
294:名無しさん@お腹いっぱい。
17/08/22 13:27:24.37 .net
Terminology って何がすごいの? 画像の表示なら xterm ですら可能なのに。
295:名無しさん@お腹いっぱい。
17/08/22 18:53:12.44 .net
lsとかした後ターミナル内でのD&Dとかの変態操作
動画再生と動画壁紙の無駄機能
すごくはない
296:286
17/08/23 03:10:27.50 .net
ターミナル内で D&D できんのか。そりゃすげえ。
297:名無しさん@お腹いっぱい。
17/08/29 10:07:33.36 .net
unix プログラミング環境という本の問題でpickというプログラムを作ったんだ。
引数ごとに出力するかを対話して、"y"が押されたものだけ出力するという単純なもの。
---
$ pick a b
a? y
a
b? n
$
---
問題ではさらに、「引数が無かった時は標準入力を読みに行くようにせよ」と続く。
まあ、パイプで挟まれたりしても問題なく使えるようにしろってことなんだと思う。
で、以下の様に書いて、問題なく動いたんだけど、
あまりシェル書いたことないもので・・・変な書き方してないかとかコメント頼みます。
---
exec 10<&0 11>&1 0<&2 1>&2
input='echo "$@"'
if [ $# -eq 0 ] ; then
input='cat <&10'
fi
for i in `eval $input`
do
echo -n "$i ? "
read response
case $response in
y*) echo $i >&11 ;;
esac
done
---
298:名無しさん@お腹いっぱい。
17/08/29 14:45:14.34 .net
シェルじゃなくてシェルスクリプト
299:名無しさん@お腹いっぱい。
17/08/29 20:34:15.21 .net
>>292
その本知らないけど、標準入力を読み切ったあとをキー入力とするより
read response < /dev/tty
でキー入力する方が一般的じゃないかな
300:名無しさん@お腹いっぱい。
17/08/30 10:04:26.25 .net
>>294
実は、vmware上のlinuxにテラターム使ってテストしてたんだけど、
(unixと書いてあるのにスマン)
その時の端末のデバイスファイル?とやらが/dev/pts/0だったのよ。
`tty`でもパイプ使ってると「あいまいです」みたいに怒られちゃって、
苦し紛れに&2を使ってしまった。。
接続端末のデバイスファイルをいつでも取得できる方法ってあるのかな?
301:名無しさん@お腹いっぱい。
17/08/30 10:21:44.01 .net
あ、あと今さっき教えてもらった
read response < /dev/tty
↑が、上手くいった!ありがと~
unixだとreadコマンドはリダイレクションができなかったらしいが、
linuxだと出来るのか。。。
302:名無しさん@お腹いっぱい。
17/09/06 14:03:04.96 .net
1. find . -name aaa -o -name bbb
はうまくいくけど
2. find . -name aaa -o -name bbb -print
では aaa が引っかからなくて、
3. find . \( -name aaa -o -name bbb \) -print
だと OK な理由がいまいちわかりません。括弧なしだと
4. find . -name aaa -o \( -name bbb -print \)
と解釈されてしまうからってのはわかりますが、
「アクション指定なしの場合 -print の挙動となる」
「exp1 -o exp2 で exp1 が偽なら exp2 を実行しない」
であるならば、1 が表示されて、2・4 の aaa が表示されないのはなぜでしょう。
ちなみに、GNU find(1) には下記。
If the expression contains no actions other than -prune, -print is performed on all files for which the
expression is true.
FreeBSD の find(1) は下記でした。
If none of -exec, -ls, -print0, or -ok is specified, the given expression shall be
effectively replaced by ( given expression ) -print.
と書いていて思いましたが、括弧等や -o に関係なく、引数 expression のどこかに
アクションが 1つでも記述されていれば、-print を補完しない、ってことですかね。
303:294
17/09/06 14:14:11.12 .net
> 括弧等や -o に関係なく、引数 expression のどこかに
> アクションが 1つでも記述されていれば、-print を補完しない、ってことですかね。
ということのようでした。
URLリンク(svnweb.freebsd.org)
-print とかが見つかると isoutput=1 とする。
URLリンク(svnweb.freebsd.org)
!isoutput の場合のみ、-print を補完する。
expression のツリー構造をたどって、アクションがない expression が
見つかったら全部 -print を補完する、としていたらよかった気がしますが、
いまさらどうしようもないですね。
304:名無しさん@お腹いっぱい。
17/09/08 02:42:55.52 .net
$ bc <<< '6*7'
42
とかの`<<<` ってなんという名称ですか?
ヒアドキュメンとだとずっと思っていたのですが,その仕様を調べようとしたらヒアドキュメントというのは
$ cat << . > ~/foo.txt
a
b
c
.
の << . から . を指すようなのでした。
305:名無しさん@お腹いっぱい。
17/09/08 04:08:06.24 .net
ヒアストリング
306:名無しさん@お腹いっぱい。
17/09/08 07:40:56.64 .net
ヒアストリングは未だに使い方がよく分かってない
307:名無しさん@お腹いっぱい。
17/09/09 13:43:30.38 .net
>>300
ありがとうございます!
お礼が遅くなり申し訳無いです。
308:名無しさん@お腹いっぱい。
17/09/11 20:58:07.04 .net
あるマシン環境を仮想マシンとかでバックアップしておいて
1つのマシン上であるサーバを構築して、
historyからその構築したコマンド群を全部シェルスクリプトに
コピペして、そのシェルスクリプトを
サーバ構築前のマシン上で実行したら全く同じサーバが一瞬で構築できるの?
309:名無しさん@お腹いっぱい。
17/09/11 22:00:14.58 .net
chefとか使えよ
310:名無しさん@お腹いっぱい。
17/09/11 22:47:46.40 .net
冪等性が保証されてるスクリプトなら同じサーバーができる
311:名無しさん@お腹いっぱい。
17/09/12 16:18:38.21 .net
ネットワーク経由のインストールとかしてて
サーバの状態により変わりそう
312:名無しさん@お腹いっぱい。
17/09/12 18:22:51.99 .net
サーバーじゃないけど仮想マシンで似たような事してる
ヒストリーからってより自分でメモしといたコマンド群だけど
けっこう省力化出来てる
あとスクリプト書いてから時間が経過するとソフトウェアの
ダウンロード元のURLが変わったりしてエラーが出ることは多々ある
313:名無しさん@お腹いっぱい。
17/09/12 20:18:24.96 .net
結局リプレイしたいときにはアプリやOSのバージョンが微妙に上がってて、
手順を修正しながらやらなきゃダメってのはありがちだな。
314:名無しさん@お腹いっぱい。
17/09/13 13:26:43.86 .net
変数やコマンド文字列の展開と
ワイルドカード/正規表現の展開って原理が違うの?
315:名無しさん@お腹いっぱい。
17/09/13 14:55:00.94 .net
どういう意味?
316:名無しさん@お腹いっぱい。
17/09/14 00:00:47.00 .net
>>309
言ってることが曖昧だが,「グロブ」と「正規表現」は違うよ
原理が違うかどうかは知らんが,少なくとも挙動は別物
例えばアスタリスクはグロブだとワイルドカードとして,正規表現だとクリーネ閉包としての役割を果す
317:名無しさん@お腹いっぱい。
17/09/14 01:58:23.04 .net
グロブ(含ワイルドカード)と正規表現の違いを聞いてるのではないでしょう
318:名無しさん@お腹いっぱい。
17/09/14 05:18:47.05 .net
質問の意味がわかんないんです(><)
319:名無しさん@お腹いっぱい。
17/09/14 06:04:07.07 .net
すみませんが詳しい方のみ回答をお願いします
320:名無しさん@お腹いっぱい。
17/09/14 06:59:44.81 .net
ここにはいません
321:名無しさん@お腹いっぱい。
17/09/14 10:48:20.75 .net
みなさんコマンドの頭にバックスラッシュって付けてます?
私は安全を期して付けているのですが そうしているシェルスクリプトが以外に少ないので
気にしなくてもいいんですかね
322:名無しさん@お腹いっぱい。
17/09/14 10:59:51.81 .net
付けないとどんな危険があると想定してるの?
323:173
17/09/14 12:57:09.36 .net
alias cp='rm -rf'
cp a --> rm -rf a
\cp a --> cp a
324:名無しさん@お腹いっぱい。
17/09/14 13:21:22.76 .net
へぇ
325:名無しさん@お腹いっぱい。
17/09/14 13:26:37.84 .net
cshだとaliasが機能しちゃうんだね
326:313
17/09/14 13:42:49.97 .net
173 --> 313
327:名無しさん@お腹いっぱい。
17/09/14 14:22:08.99 .net
cshはデフォルトだと必ず.cshrc読んじゃうからねぇ
328:名無しさん@お腹いっぱい。
17/09/14 14:51:18.91 .net
>>309
翻訳するとこういう感じだと想像
変数の展開: variable expansion ( e.g. ${var} )
コマンド文字列の展開: command substitusion ( e.g. $(command) )
ワイルドカードの展開: filename expansion ( e.g. *.sh )
正規表現の展開: ???
正規表現の展開って何? find -regexとかのこと言ってるの?
あと原理って? 同じか違うか知りたい理由は何?
人に伝わるように質問しないと誰も分からないぞ
329:名無しさん@お腹いっぱい。
17/09/14 14:57:45.50 .net
cshを前提にしちゃいかんでしょう
330:名無しさん@お腹いっぱい。
17/09/14 16:44:13.36 .net
>>324
前提というか、 >>316 はそういう環境なんだなと深読みしただけ
331:名無しさん@お腹いっぱい。
17/09/14 17:20:02.07 .net
いまどきcshでスクリプトを書くおとこの人って…
332:名無しさん@お腹いっぱい。
17/09/14 18:02:43.44 .net
>>318はcshじゃないな。
むかしのcshで痛い目にあってなますを吹いてるとか?
333:名無しさん@お腹いっぱい。
17/09/14 18:37:11.41 .net
>>325
深読みが過ぎるのでは
Bシェル系使ってて心配しすぎてるだけという可能性もある
334:名無しさん@お腹いっぱい。
17/09/16 04:51:53.35 .net
>>316を見て思ったのが シェバンの書き方。
#!/bin/sh -
と書けと駱駝にはあったが 存外そうしている Shell Script がない
まあ余程のことがない限り sh がオプションを勘違いするなんてないが
335:名無しさん@お腹いっぱい。
17/09/16 08:20:15.68 .net
#!/bin/sh -
set -x
set -u
...
set +u
set +x
336:名無しさん@お腹いっぱい。
17/09/17 11:16:56.16 .net
set -xって要らないでしょ
337:名無しさん@お腹いっぱい。
17/09/17 13:02:27.61 .net
sexに空目した
338:名無しさん@お腹いっぱい。
17/09/18 09:06:16.47 .net
set -u 便利だな
339:名無しさん@お腹いっぱい。
17/09/18 17:34:05.37 .net
新しい関数として
ls () {
\ls --width=`\echo $COLUMN`
}
という関数を作って,ls のエイリアスとして動作させたいのですが,
コマンドラインで $ ls と入力すると無限ループに陥ります。
多分というか確実に関数 ls が自分自身を呼び出している為に生じる現象だと思います。
これを回避し,ls という関数を安全に作製するにはどうすればいいでしょうか。
常用しているシェル bash です。
bash 独自の拡張でそのような(関数の再帰を防ぐ)機能があれば教えて下さい。
340:名無しさん@お腹いっぱい。
17/09/18 17:35:32.76 .net
関数中のlsを絶対パスで呼ぶ
341:名無しさん@お腹いっぱい。
17/09/18 17:44:16.70 .net
command ls --width=$(echo ${COLUMN:-50});
とかでいいんじゃない
342:331
17/09/18 18:25:53.39 .net
>>335 様、>>336 様、ありがとうございます。
どちらの方法でも上手く行きました。身勝手ながら >>336 様の方法を採ることにしました。
蛇足気味ですが、最終的に以下のような関数にしました。良かったら添削してください。
POSIX とかは考えてないです。
function ls () {
local _opt="--ignore-backups --color=always --format=across --group-directories-first --indicator-style=classify --literal --sort=time --width=`\echo $COLUMNS`"
command ls $_opt
}
343:331
17/09/18 18:28:49.27 .net
s:/`\\echo $COLUMNS`/$(\\echo ${COLUMNS})/
344:331
17/09/18 18:55:59.93 .net
Better?
function ls () {
local _opt="--ignore-backups --color=always --format=across --group-directories-first --indicator-style=classify --literal --sort=time --width=$(\command echo ${COLUMNS})"
\command -p ls $_opt $@
}
345:名無しさん@お腹いっぱい。
17/09/18 20:05:49.92 .net
lsを常に特定のオプション付けて実行したいのならLS_OPTIONS使えばいいと思う
それからfunction name ()はfunction nameかname () のどちらかにすべき
name()の方が汎用性高い
346:331
17/09/18 20:49:26.19 .net
>>340
ありがとうございます!
LS_OPTIONS は知りませんでした。MANOPT や LESS みたな感じなんですかね。
函数は POSIX に合わせて ls () にしようと思ったんですが,ちょっと個人的に気持ち悪くて,どうしても function が取っ払えませんでした……。
347:名無しさん@お腹いっぱい。
17/09/18 21:20:07.09 .net
別に身勝手ってほどのことでもなくね
348:名無しさん@お腹いっぱい。
17/09/21 02:41:20.96 .net
シェルの解釈を標準出力に印刷するコマンドってある/作れますか?
グロブやエイリアスがどう解釈/引き渡されるのかを知りたいです。
$ showraw 'ls */*'
ls a/a a/b a/c b/a c/a c/b
みたいな。
検索も一通りしたのですが見付からないです。
シェルによってシェルそれ自身の機能を調べるのは無理なんですかね。
349:340
17/09/21 02:42:16.10 .net
すいません。age ます。
350:名無しさん@お腹いっぱい。
17/09/21 02:44:04.33 .net
$ showraw 'ls */*'
ls -F -A a/a a/b a/c b/a c/a c/b
エイリアスも解釈されるのでこんなかんじですね。
351:名無しさん@お腹いっぱい。
17/09/21 05:13:34.59 .net
コマンドの方はtype ls 引数の方はecho */* で良くね
取り敢えずshとbashで確認
352:名無しさん@お腹いっぱい。
17/09/21 06:12:05.17 .net
$ ls */*
と入力したところで ESC \C-e をタイプするとエイリアスが展開され
\C-x* をタイプするとワイルトカードが展開される
353:名無しさん@お腹いっぱい。
17/09/21 06:21:42.53 .net
すまん、bash限定
354:名無しさん@お腹いっぱい。
17/09/21 07:24:19.18 .net
>>343
$ set -x
$ ls */* >/dev/null
355:名無しさん@お腹いっぱい。
17/09/21 08:38:01.77 .net
>>346 -- >>348
ありがとうございます。しかしできればエイリアスごと展開したいのです。
>>349
おわ!まさにこんな感じです。多分コマンドプロンプト関連の命令群も一緒に出力されますが,これはまあ awk か何かで頑張って切り取ります。一応 zsh,bash,dash で確認できました。
356:名無しさん@お腹いっぱい。
17/09/26 02:43:18.09 .net
>>333
set -u 便利ですね
~/.bashrcに書こうかしら
とくに弊害ないですよね?
357:名無しさん@お腹いっぱい。
17/09/28 10:22:22.57 .net
すいません。わかるかたいたら教えてください。
基本的にカンマ区切りの行なのですが、1列目が""で囲まれ、"aaa,bbb,ccc"のように
なることがあります。
1列目のみに発生します。
この1列目のケースだけ、カンマをスペース等に置換したいと思っています。
イメージはこうです。
"aaa,bbb,ccc",AAAA,BBBB,CCCC
aaa,AAAA,DDDD,EEEE
↓
"aaa bbb ccc",AAAA,BBBB,CCCC
aaa,AAAA,DDDD,EEEE
理由はエクセルに取り込むときにずれてしまうためです。
awkで出来た気がするのですが、うまく出来ません。
どなたか心当たりないでしょうか。
358:名無しさん@お腹いっぱい。
17/09/28 10:41:01.84 .net
Excelならダブルクオートちゃんと扱うはずだよ
勘違いか、変な文字入ってない?
359:名無しさん@お腹いっぱい。
17/09/28 11:09:26.14 .net
テキストをコピーして貼り付ける時にカンマ区切りでバラすように貼り付けると囲んでてても関係なくバラさなかったっけ?
360:名無しさん@お腹いっぱい。
17/09/28 11:10:20.00 .net
そんなことなかったわ
361:名無しさん@お腹いっぱい。
17/09/28 11:41:08.89 .net
もっとうまく書けそうな気がするものの
perl -pe 'if (/^"/) { @f = split/"/, $_, 3; $f[1] =~ s/,/ /g; $_ = join "\"", @f }'
362:名無しさん@お腹いっぱい。
17/09/28 12:17:55.02 .net
awkとBEGINで昔出来た記憶があるのですが。上手くいかず。
>>353
あれ、確かにEXCELには想定ではれました、すいませんさっきも同じにようにはったつもりで、ばらされたのですが。
>>356
一行Perlの文法の意味はわかりませんが、確かに出来ました!
363:名無しさん@お腹いっぱい。
17/09/28 22:34:38.91 .net
区切り文字を"にして配列に取り込んで,を に置換えた後、最初と最後に"を追加する
perl -F\" -anle '$F[1] =~ s/,/ /g; $F[1] =~ s/(.+)/\"$1\"/; print @F'
awkでは
awk 'BEGIN {FS="\""; OFS="\""} {gsub(","," ",$2); print $0}'
でいいような、なんか自信ないけど
364:名無しさん@お腹いっぱい。
17/09/28 22:48:57.65 .net
GNU awk の FPAT を使ってこんな感じで
gawk -vFPAT='(".+?"|[^,]*)' -vOFS=, '{gsub(/,/," ",$1);print}' data.csv
365:名無しさん@お腹いっぱい。
17/09/29 04:05:27.30 .net
perl -pe 's/^("[^"]*")/$1=~s|,| |gr/e'
366:名無しさん@お腹いっぱい。
17/09/29 16:42:39.76 .net
perl -pe 's/,(?=.*\")/ /g'
367:名無しさん@お腹いっぱい。
17/09/29 17:03:38.90 .net
suge-
368:名無しさん@お腹いっぱい。
17/09/30 13:09:25.90 .net
>>352
#!/bin/sh
IFS=\"
while read X Y Z ; do
if [ "$X" = "" ] ; then
echo -n \"$Y\" | sed 's/,/ /g'
echo $Z
else
echo $X
fi
done
369:名無しさん@お腹いっぱい。
17/10/02 11:37:31.18 .net
sed '/^"[^"]*"/{H;s///;x;s/\n//;s/^\("[^"]*"\).*/\1/;s/,/ /g;G;s/\n//;}'
370:名無しさん
17/10/12 11:03:43.53 .net
bashで変数展開するときに、名前末尾にハイフン付けるのはどういう意味なんでしょうか?
${abc-}
371:名無しさん@お腹いっぱい。
17/10/12 13:43:34.47 .net
>>365
URLリンク(linuxjm.osdn.jp)
372:名無しさん@お腹いっぱい。
17/10/12 14:06:07.63 .net
今まさにそのページ読んでたけど、:いるよな
ナシの使い方なんてあったっけか
373:名無しさん@お腹いっぱい。
17/10/12 16:13:02.77 .net
> コロンを省略した場合には設定されているかどうかのみを調べます。
374:名無しさん@お腹いっぱい。
17/10/12 16:37:37.56 .net
何度か読み返してようやく理解した
unsetされてるか空値が入ってるかの違いに対応出来るのか
375:名無しさん@お腹いっぱい。
17/10/13 18:57:11.77 .net
ログイン時に読み込まれる ~/.profile ファイルは,「誰が」読み込んでいるのでしょうか。
普通 sh もしくはその代替シェルかなと思うのですが,実際はどうなのか気になります。
というのも,私が普段使っている Debian GNU/Linux ではデフォルトシェルは bash に指定しているのですが,~/.profile の中に bash っぽい変数 (${HOGE} という書き方) があったので。
376:名無しさん@お腹いっぱい。
17/10/13 19:08:59.70 .net
>>366読んでみたらいいじゃない
起動のところ
377:名無しさん@お腹いっぱい。
17/10/13 19:12:36.61 .net
${HOGE}はbashに限らないよ
378:名無しさん@お腹いっぱい。
17/10/14 00:33:15.35 .net
>>372
誰へのレス?
379:名無しさん@お腹いっぱい。
17/10/14 00:33:50.98 .net
>>370
Linuxの質問はLinux板で
380:名無しさん@お腹いっぱい。
17/10/14 00:37:55.44 .net
>>370
くだらねえ質問はここに書き込め!Part 229
スレリンク(linux板)
初心者の質問相談にやさしく答えるスレ Part9
スレリンク(linux板)
381:名無しさん@お腹いっぱい。
17/10/14 00:56:47.50 .net
>>370
もしかしてこの人?
スレリンク(linux板:343番)
382:370
17/10/14 00:58:01.90 .net
あぁ、すまん
>>371へのレスか
たしかに${HOGE}記法はたいていのshで使えるね
383:370
17/10/14 00:58:50.55 .net
>>371じゃなくて>>370か、、、
384:名無しさん@お腹いっぱい。
17/10/20 11:02:46.23 .net
>>377
何を言ってるのがわからん。bshが元祖なのに。
385:370
17/10/20 17:00:36.31 .net
余計なレスだったんでわからんならわからんでいいよ
386:名無しさん@お腹いっぱい。
17/10/21 01:22:29.89 .net
スレチ気味だけど,ある種の Shell って,
$ cd ///////
みたいなことをするとルートディレクトリだと認識するんだな。
個人的に ~ がすごく打ちにくい位置にあるので // を ~ だと解釈させようと試行錯誤してるときに発見した。
これはルートディレクトリが特別って訳じゃなく,
$ ls /usr////bin///////
みたいなことでも問題ない。ということは // == ~ にすることは Shell のソース弄るくらいしか方法がないということになる。
俺みたいな無駄な努力をしないために残す
387:名無しさん@お腹いっぱい。
17/10/21 01:32:07.61 .net
それシェルの機能じゃなくね?
388:名無しさん@お腹いっぱい。
17/10/21 01:36:03.89 .net
こういうのも開けるし
URLリンク(mevius.5ch.net)
389:名無しさん@お腹いっぱい。
17/10/21 08:08:40.09 .net
もしかして RFC とかで実装が統一されてんのか。
390:370
17/10/21 14:49:37.55 .net
>>381
cdについてはPOSIXで決まっている
URLリンク(pubs.opengroup.org)
の8のc
>>382
シェル一部であるcdコマンドの機能
>>383
それはまた別の話
391:名無しさん@お腹いっぱい。
17/10/21 14:51:29.58 .net
$ /bin/echo /usr////bin///////
/usr////bin///////
$
となるので、lsについてはシェルが解釈してるわけではなくlsが解釈していると思われる
392:名無しさん@お腹いっぱい。
17/10/21 14:55:41.90 .net
まあ//を~にしたいならシェルのキーバインド使えばいいんじゃないですかね
393:名無しさん@お腹いっぱい。
17/10/21 15:01:35.03 .net
ちなみにこんなんなったりする
シェルの種類によって挙動は違うかも
$ cd //
$ pwd
//
$
理由は
URLリンク(www.unixguide.net)
394:名無しさん@お腹いっぱい。
17/10/21 15:03:36.25 .net
キーバインドいじっちゃうと
「http://」を打とうとして「http:~」になったりして困らないか
395:名無しさん@そうだ選挙に行こう! Go to vote!
17/10/22 16:52:10.67 .net
>>385
「An implementation may」だから必ずではないのでは
396:名無しさん@お腹いっぱい。
17/10/22 21:04:49.39 .net
必ずって言ったっけ
397:名無しさん@お腹いっぱい。
17/10/22 21:24:08.21 .net
bashはパス中の複数の/を一つにするはず
398:名無しさん@お腹いっぱい。
17/10/22 22:40:16.51 .net
>>392
>>388
399:名無しさん@お腹いっぱい。
17/10/26 13:24:16.45 .net
ファイルをリネームしてコピーし続けるスクリプトなんですが
コマンドが見つからないと出てよくわかりません
#/bin/sh
PATH='/var/log/'
PATH2='dnsmasq.log'
DOT='.'
for i in 6 5 4 3 2 1
do
PATH3=$PATH$PATH2$DOT$i
PATH4=`expr $i - 1`
PATH5=$PATH$PATH2$DOT$PATH4
mv $PATH5 $PATH3
done
PATH6=0
mv $PATH$PATH2 $PATH$PATH2$PATH6
exit 0
400:名無しさん@お腹いっぱい。
17/10/26 13:29:36.84 .net
>>394
for VAR in ARGS; do
command;
done
401:名無しさん@お腹いっぱい。
17/10/26 13:30:47.44 .net
sh -xで実行してみると以下の通り出力されました
+ PATH=/var/log/
+ PATH2=dnsmasq.log
+ DOT=.
+ PATH3=/var/log/dnsmasq.log.6
+ expr 6 - 1
./splitLog.sh: 1: ./splitLog.sh: expr: not found
+ PATH4=
+ PATH5=/var/log/dnsmasq.log.
+ mv /var/log/dnsmasq.log. /var/log/dnsmasq.log.6
./splitLog.sh: 12: ./splitLog.sh: mv: not found
(省略)
+ PATH3=/var/log/dnsmasq.log.1
+ expr 1 - 1
./splitLog.sh: 1: ./splitLog.sh: expr: not found
+ PATH4=
+ PATH5=/var/log/dnsmasq.log.
+ mv /var/log/dnsmasq.log. /var/log/dnsmasq.log.1
./splitLog.sh: 12: ./splitLog.sh: mv: not found
+ PATH6=0
+ mv /var/log/dnsmasq.log /var/log/dnsmasq.log0
./splitLog.sh: 17: ./splitLog.sh: mv: not found
+ exit 0
402:名無しさん@お腹いっぱい。
17/10/26 13:46:18.65 .net
とりあえず何がしたいかを書け
そんな汚いもん見せられても何がしたいのか分かりにくい
403:名無しさん@お腹いっぱい。
17/10/26 13:51:57.00 .net
PATH潰すんなら外部コマンドはフルパスで書かんと
404:名無しさん@お腹いっぱい。
17/10/26 14:02:38.34 .net
フルパスで書かないといけなかったんですね…
405:修正してみたらできました、ありがとうございます!
406:名無しさん@お腹いっぱい。
17/10/26 14:11:58.47 .net
ようわからんがsavelogコマンドみたいなことがしたいのか
407:名無しさん@お腹いっぱい。
17/10/26 14:27:19.72 .net
PATHがきしょい
408:名無しさん@お腹いっぱい。
17/10/26 15:33:20.43 .net
>>399
「フルパスで書かなきゃいけない」のではない
$PATHを上書きするのがマズい
409:名無しさん@お腹いっぱい。
17/10/26 15:35:16.21 .net
これ1〜6までファイル全部消えるんじゃね?
410:名無しさん@お腹いっぱい。
17/10/26 15:35:32.78 .net
1から6まで
411:400
17/10/26 15:37:15.23 .net
あ、すまん勘違い
逆だった
412:名無しさん@お腹いっぱい。
17/10/26 16:21:22.80 .net
5を6にリネーム~0を1にリネーム
そのあと最新のログを0にリネームじゃないかな
どっちにしろゴリ押し感半端ないが
413:名無しさん@お腹いっぱい。
17/10/26 16:30:18.25 .net
>>402
$PATHって環境変数ですよね…
何故気づかなかったんだろう
お恥ずかしい限りです
414:名無しさん@お腹いっぱい。
17/10/26 16:37:04.75 .net
あーそういうことか、403のお陰でやりたいことは分かった
415:名無しさん@お腹いっぱい。
17/10/26 18:34:54.50 .net
こうすればわかりやすいですかね
#!/bin/sh
DIR=/var/log/
FILE=dnsmasq.log;
START=0
for i in `seq 1 6`
do
DEC=`expr $i - 1`
cd $DIR
mv "${FILE}.${DEC}" "${FILE}.${i}"
done
cd $DIR
mv $FILE "${FILE}.${START}"
exit 0
416:名無しさん@お腹いっぱい。
17/10/26 18:56:39.92 .net
毎回cdするのは無駄やろ
417:名無しさん@お腹いっぱい。
17/10/26 19:01:29.48 .net
個人的にexpr嫌いなのもあって$(())使っちゃうな
mv "${FILE}.$((i-1))" "${FILE}.$i"
あとseq間違ってね?
seq 6 1 -1