板検索:
シェルスクリプト総合 その26 (339)
まとめビュー
1
名無しさん@お腹いっぱい。[sage]   投稿日:2017/03/20 12:07:26
シェルスクリプトの総合スレです。
□お約束
・特記なき場合は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に逃げずにシェルスクリプトで処理するのが頭のいいやり方。
前スレ
シェルスクリプト総合 その25
コメント1件


2
名無しさん@お腹いっぱい。[sage]   投稿日:2017/03/20 12:18:18
すまん、立てたはいいがセキュリティ違反か何かでテンプレが貼れない
誰か貼れないか
コメント1件

3
名無しさん@お腹いっぱい。[sage]   投稿日:2017/03/20 12:24:45
ls -エル かな以前これで引っかかったことがある
ls -Rl とかなら通るんだけど

4
名無しさん@お腹いっぱい。[sage]   投稿日:2017/03/20 14:13:27
>1
> □お約束
> □初心者へのアドバイス:
> □回答者への注意事項:

□じゃなくて■にして欲しい
コメント1件

5
名無しさん@お腹いっぱい。[sage]   投稿日:2017/03/20 15:00:21
>4
それってなぜ?漢字のくちやカタカナのろと間違えやすいから?

6
名無しさん@お腹いっぱい。[sage]   投稿日:2017/03/20 16:21:48
>2
同じく書けなかった。テンプレ書こうとするとなぜかYou are blocked となる。

7
名無しさん@お腹いっぱい。[sage]   投稿日:2017/03/20 17:09:06
前スレ立てられたの2年前みたいだし、その間に規約かその辺の変更でもあったかな

8
名無しさん@お腹いっぱい。[sage]   投稿日:2017/03/20 17:32:38
シェルスクリプトの総合スレです。
初心者、学生、アマチュア、プロ、シェルの種類や 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
名無しさん@お腹いっぱい。[sage]   投稿日:2017/03/20 17:32:51
ls - lがだめなんですよ

10
名無しさん@お腹いっぱい。[sage]   投稿日:2017/03/20 17:33:10
□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 のシェルスクリプトは推奨されません。理由は下記を参照
 http://www.speech-lab.org/~hiroki/csh-whynot.euc
9. cat file|すんなハゲ
 a. 詳細は "Useless Use of Cat" UUOC で検索して下さい
 b. 有用な場合も有ります Useful use of cat(1) 英文
  http://www.in-ulm.de/~mascheck/various/uuoc/

□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
名無しさん@お腹いっぱい。[sage]   投稿日:2017/03/20 17:33:34
□E. 学習用テキスト
1. Bourne Shell自習テキスト ( 1993年 ) pdf お薦め
 http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/sh-text/sh/
 (↑サイト消滅かも)
 http://ayapin.film.s.dendai.ac.jp/~matuda/Lecture/PDF/sh-two.pdf
2. UNIX FAQ LIST
 http://www.nurs.or.jp/~asada/FAQ/UNIX/UNIX.FAQ.html
(3. シェルを使おう - 導入からプログラミングまで - ( 2002年 )
 http://www.netfort.gr.jp/~tomokuni/lms/shell/ (リンク切れ))

□F. 参考リンク
1. 可搬性関連
 a. autoconf マニュアル 移植性のあるシェルプログラム
  http://www.gnu.org/software/autoconf/manual/autoconf.html#Portable-Shell
  http://www.geocities.jp/fut_nis/html/autoconf-ja/Portable-Shell.html
 b. Portability talk [Bash Hackers Wiki] 英文
  Obsolete and deprecated syntax も見る価値有り
  http://wiki.bash-hackers.org/scripting/nonportable
 c. How to make bash scripts work in dash 英文
  http://mywiki.wooledge.org/Bashism
 d. DashAsBinSh 英文
  https://wiki.ubuntu.com/DashAsBinSh
 e. Portable Shell Programming 英文
  http://www.in-ulm.de/~mascheck/various/portability/

12
名無しさん@お腹いっぱい。[sage]   投稿日:2017/03/20 17:33:47
2. POSIX
 The Open Group Base Specifications Issue 7 IEEE Std 1003.1, 2013 Edition 英文
 http://pubs.opengroup.org/onlinepubs/9699919799/
3. Traditional Bourne Shell 関連
 a. The Traditional Bourne Shell Family History and Development 英文
  http://www.in-ulm.de/~mascheck/bourne/
 b. BourneShell / Where does the Bourne shell live? 英文
  http://mywiki.wooledge.org/BourneShell
 c. The Heirloom Bourne Shell 英文
  http://heirloom.sourceforge.net/
4. マニュアル
 a. The Base Specifications Issue 7, 2013 Edition 英文
  http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html
 b. FreeBSD 日本語マニュアル検索
  http://www.jp.freebsd.org/man-jp/search.html
 c. JM Project (Japanese)
  http://linuxjm.sourceforge.jp/
5. FAQ 等
 a. UNIXの部屋 ( 2011年 )
  http://x68000.q-e-d.net/~68user/unix/
 b. Linux JF (Japanese FAQ) Project
  http://linuxjf.osdn.jp/
 c. Advanced Bash-Scripting Guide 英文
  http://www.tldp.org/LDP/abs/html/
 d. Unix Programming FAQ 日本語訳 ( 2000年 )
  http://www.race.u-tokyo.ac.jp/~moro/unix-programmer/

13
名無しさん@お腹いっぱい。[sage]   投稿日:2017/03/20 17:34:01
6. ツール
 a. web tool です。Vim syntastic や Emacs の Flycheck でも使えます
  ShellCheck
  http://www.shellcheck.net/about.html
 b. vim 用 syntastic
  https://github.com/scrooloose/syntastic
 c. checkbashisms も使用してチェック duggan/shlint GitHub
  https://github.com/duggan/shlint

□G. 前スレ
1. ☆シェルスクリプトを勉強するにあたって☆
 UNIX板の別スレッドへ
2. 便利なシェルスクリプト見せろ
 UNIX板の別スレッドへ
3. シェルスクリプト総合 その1
 UNIX板の別スレッドへ
後略。検索して下さい

14
名無しさん@お腹いっぱい。[sage]   投稿日:2017/03/20 17:34:15
□H. 関連スレ(UNIX板/プログラム板)
1.  sed
2.  正規表現
3.  Regular Expression(正規表現) Part13 /プログラム板
4.Perlについての質問箱 64箱目 [転載禁止](c)2ch.net
 Perlについての質問箱 64箱目 /プログラム板
5.  ECMAScript デス 4 /プログラム板
6. Ruby 初心者スレッド Part 57©2ch.net [転載禁止](c)2ch.net
 Ruby 初心者スレッド Part 57©2ch.net /プログラム板
7.  Pythonのお勉強 Part50 /プログラム板
8. 【node.js】サーバサイドjavascript 3【io.js】(c)2ch.net
 【node.js】サーバサイドjavascript 3【io.js】 /プログラム板

□I. 現在評価待ち: X.n は予定した追加先。主にスレ立て人の判断保留用。

15
名無しさん@お腹いっぱい。[sage]   投稿日:2017/03/20 17:38:33
なるほどサンクス、そこだけだったのね

16
名無しさん@お腹いっぱい。[sage]   投稿日:2017/03/20 17:51:56
乙です

正規表現スレなんてものもあるのか

17
名無しさん@お腹いっぱい。[sage]   投稿日:2017/03/22 02:44:38
bash内での関数の組み立て方を教えて下さい
jqのコマンドオプションを組み立てて実行したいのですが上手く行きません

function XXXX {
local filename=$1
local option="'.files | map(select(.name = \"$filename\" )) | .[0] '"
local st='echo' "\$files | jq $option"
$st
retrun 0
}

そもそもこんがらがってきているのでお助け下さい
コメント1件

18
名無しさん@お腹いっぱい。[sage]   投稿日:2017/03/22 02:46:07
retrun になってる
他は知らん


19
名無しさん@お腹いっぱい。[sage]   投稿日:2017/03/22 03:14:20
>17
自己解決しました。jqの問題だったみたいです

function XXXX {
local filename=$1
local onefile
onefile=$(echo "$files" |jq―arg n "$filename" ".files | map(select(.name =\"\$n\" )) |.[0]")
以下省略
}

20
名無しさん@お腹いっぱい。[sage]   投稿日:2017/03/25 09:35:56
最近標準エラー出力で引っかかったこと

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"
コメント1件

21
名無しさん@お腹いっぱい。[sage]   投稿日:2017/03/25 10:19:05
>20
なぜ出力を解析した?
実行結果を使うべきではなかったのか?
コメント1件

22
名無しさん@お腹いっぱい。[sage]   投稿日:2017/03/25 10:25:44
一般にstdoutとstderrは用途が違うから(stderrはstdoutがリダイレクト
されても端末に出したいとか)、エラーテキストをgrepするような
ことをしたい場合は意識しないといけないね
ただ、pingコマンドの場合は終了コードを見るのが王道だと思う

23
名無しさん@お腹いっぱい。[sage]   投稿日:2017/03/25 13:57:40
>21-22
いまは$?見てる
元々は何パーセントかロスしてもいい造りにする予定だったんだ
最終的には正常0、ロスあり1、リンクダウン2だったので
0以外は問題ありって言う処理に修正した

24
名無しさん@お腹いっぱい。[sage]   投稿日:2017/03/25 20:08:07
grepはcolor表示でマッチしてるか確かめればいい

25
名無しさん@お腹いっぱい。[sage]   投稿日:2017/03/26 04:25:32
だいたい何かを作ってエラーが出てハマる時って、基本に立ち返って当たり前の事から検証し始めると解決するよね
大抵本当にアホな理由でつまづく

26
名無しさん@お腹いっぱい。[sage]   投稿日:2017/03/28 06:24:43
一人で見てると、くだらないとこでハマったりよくあるな
一分でわからなければ二分探索する

27
名無しさん@お腹いっぱい。[sage]   投稿日:2017/03/28 08:39:53
そして天下三分の計

28
名無しさん@お腹いっぱい。[sage]   投稿日:2017/03/28 08:41:28
sakura四分割の術

29
名無しさん@お腹いっぱい。[sage]   投稿日:2017/03/28 14:00:15
出会って五分でバグ出し

30
名無しさん@お腹いっぱい。[sage]   投稿日:2017/03/30 17:29:20
簡単なマルチプロセスの方法ないか考えてたら
置換コマンドを変数で定義してやって、|でつなげてやればいいだけだった

31
名無しさん@お腹いっぱい。[sage]   投稿日:2017/03/30 18:14:02
&でなく?

32
名無しさん@お腹いっぱい。[sage]   投稿日:2017/03/30 18:30:02
&だと、サブシェルになるんで変数の取り出しが面倒
コメント1件

33
名無しさん@お腹いっぱい。[]   投稿日:2017/03/30 21:12:06
>32
マルチプロセスだろ?

34
名無しさん@お腹いっぱい。[]   投稿日:2017/03/31 16:30:56
本报讯(记者黄辛)复旦大学药学院李聪团队和附属华山医院毛颖团队合作,
将一种新型纳米探针用于脑肿瘤手术导航,通过纳米探针对脑胶质瘤酸性环
境的响应性成像引导手术切除,有望为改善脑胶质瘤手术的预后提供一种新
策略。相关研究成果近日秋月康秀在线发表于《先进材料》。
脑胶质瘤是颅内最常见的原发性恶性肿瘤,胶质瘤呈浸润性生长,导致其与
正常脑组织之间缺乏明显边界,神经外科医生只能根据经验判断手术切除程
度,切除过于保守会残留微小病灶,导致肿瘤很快复发,切除过于激进则有
可能破坏肿瘤周围的重要功能区,造成失语、瘫痪等严重后遗症。
该研究发现了一种对肿瘤酸性环境具有双模态信号响应的探针,可用于引导
胶质瘤的手术切除。”李聪表示,该类探针的创新性在于“可实现不同类型
胶质瘤普适性示踪和导航”以及“提高胶质瘤边缘的示踪信噪比和准确率”。

35
ich1[]   投稿日:2017/04/01 07:50:24
https://goo.gl/QoUujp
これは嫌だなー。。本当なの?

36
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/01 13:12:08
どうせグロネタだろ

37
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/01 13:29:34
とうせアフィ貼ってるスクリプトだろ
goo.glはURLの末尾に+つけるとリンク先が見れる

38
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/01 14:55:47
短縮URLは完全スルーだしNGワードにしようと思えばできるし
コメントもスパム丸出しだから問題ない

39
名無しさん@お腹いっぱい。[]   投稿日:2017/04/01 22:25:57
シェルスクリプト用のトランスパイラとか
ビルドツールってないですかね?

JavaScriptの世界であるような、それらがあれば
POSIX標準のままシェルスクリプトという言語仕様を
拡張できるのですが

40
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/02 13:32:05
前スレに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
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/02 18:49:19
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/'
コメント1件

42
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/03 12:09:41
echo -eはなんか厄介
他のディストリに持ってったら動き(表示だけど)が違った

43
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/03 12:50:52
-e が使えない場合もあるので printf で

44
名無しさん@お腹いっぱい。[]   投稿日:2017/04/03 19:25:53
>41
そういうの書くな。
バグの温床だ。

45
名無しさん@お腹いっぱい。[]   投稿日:2017/04/03 19:26:37
OSによって挙動が異なるかもしれないので危険。

46
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/03 19:34:32
だから意味がないって書いたやん

47
名無しさん@お腹いっぱい。[]   投稿日:2017/04/03 23:27:26
unixプログラミング環境って本の問題に、

1「cat hoge.txt fuga.txt >hoge.txt」

2「cat hoge.txt >>hoge.txt」

ってやるとどうなるか考えろってのがある。

実行すると、

1「hoge.txtがfuga.txtの内容で上書きされる」

2「hoge.txtの内容が無限にコピペされる」

となったんだが、どうしてこうなるのか誰か知ってたら教えて!
コメント1件

48
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/03 23:41:45
ファイルですくりぷた
のうごきをかんがえよう

49
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/04 00:57:45
>47
考えたらわかったけど、知らなかったから教えない

50
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/04 01:03:26
へんくつなやつしかいねー

51
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/04 01:11:40
シェルとcatがそうなるような実装になってるんだろう
わりと自然な結果だと思う

52
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/04 11:29:13
知らんけど推測で。

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
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/04 12:04:17
2 の場合、bash, dash, ksh だと input file is output file って表示される
bash では noclobber を unset にしても同じ
コメント2件

54
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/04 12:11:59
>53
それはcatの引数が入力ファイルだと言う知識をshellがもってるという事だね
気持ち悪い

55
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/04 12:16:42
これは無限ループにもエラーにもならない

$ cat hoge.txt | cat >> hoge.txt

しかし、ファイルサイズがパイプやプロセスのバッファサイズを
超えるとどうなるか…こんな場合は moreutils の sponge コマンドかな

56
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/04 12:40:17
Cで言う未定義なみたいなもので、どういう結果になろうが客観的な意味は無い

57
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/04 14:59:59
>53はシェルではなくGNUのcatの実装

% echo a >a
% cat a >>a
cat: a: input file is output file
%

gitリポジトリ上で参照できる一番古いログ(1992年)の時点で既にある
https://git.savannah.gnu.org/cgit/coreutils.git/tree/src/cat.c?id=b25038ce#n267
コメント1件


58
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/04 16:51:55
>57
ありがとう、GNU cat だからなのね

59
名無しさん@お腹いっぱい。[]   投稿日:2017/04/13 16:40:20
sqlplusでselect文を実行したときにレコードが該当しない場合の値って何が返されるの?
予想だと""なんだけど
コメント1件

60
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/13 17:33:03
>59
俺は SELECT 結果の行数をカウントして判定してる。

ちなみにシェルスクリプトで sqlplus をカプセル化しようとすると、SQL 実行時のエラーチェックが地味に面倒だよね。
頑張ってね。
コメント1件

61
名無しさん@お腹いっぱい。[]   投稿日:2017/04/13 17:57:28
>60
count(0)ですねわかります
シェルスクリプトってsqlで取ってきた値がnullのときその値を変数に格納したらどうなんの?
そもそもselect文で該当なしでエラーになるのかもわからん
コメント1件

62
名無しさん@お腹いっぱい。[]   投稿日:2017/04/13 18:02:46
なんでこんなこと聞くのって思うだろうけどprintfで書式指定するときにnullが変えるかもしれない変数を%08d$nで指定してるんだよね
文字列指定してけば良かったんだけど、これって修正必要かなぁ
コメント1件

63
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/13 18:51:39
>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
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/13 19:01:35
確かに一度ファイルに落としてからawkとかに食わせる方が何かと楽そうだな

65
名無しさん@お腹いっぱい。[]   投稿日:2017/04/14 18:54:35
澁谷 恭正 (46歳)

千葉県立沼南高柳高等学校卒

松戸市立六実第二小学校PTA会長

小学女子レイプ殺人で逮捕


お住まい:
千葉県松戸市六実4-8-1 Mシャトレ

お子さん:
ひりゅう、あやか ※父子家庭

趣味傾向:
アニオタ

66
名無しさん@お腹いっぱい。[]   投稿日:2017/04/14 18:55:56
SQL*Plus、PL/SQLに詳しくないからそういう発想になるのはわかるが、普通にやれよ。
コメント1件

67
名無しさん@お腹いっぱい。[]   投稿日:2017/04/15 07:26:58  ID:uMS/4VMGZ
>> 66
普通、普通じゃないの定義は?
今までのやりとりでどこが普通じゃなかったか教えて

68
名無しさん@お腹いっぱい。[]   投稿日:2017/04/15 15:48:43
>66
普通ってやんだよw

69
名無しさん@お腹いっぱい。[]   投稿日:2017/04/15 17:42:26
シェルとsqlplus触ったの1,2ヶ月だけど、半年後にはおまえ超えてるから

70
名無しさん@お腹いっぱい。[]   投稿日:2017/04/15 17:43:22
シェルなんてゴミ言語勉強するほどでもないけどなw

71
名無しさん@お腹いっぱい。[]   投稿日:2017/04/15 18:11:52
クエリを2度実行するコストよりもってあるけど、コストそんなかからないし、どっちでもよくね。
sqlじたいそんな詳しくなくてすまんな

72
名無しさん@お腹いっぱい。[]   投稿日:2017/04/15 18:15:32
ワンステップでどんだけコストかかる現場にいたのか

73
名無しさん@お腹いっぱい。[]   投稿日:2017/04/15 18:43:16
http://d.hatena.ne.jp/ttduck/touch/20080425/1209339164
同じ事考えてる人がいたのかな、sqlなんてデータを引っ張ってくる手段でしかないからテキトーだったけど
コメント1件

74
名無しさん@お腹いっぱい。[]   投稿日:2017/04/15 18:53:59
これはステップ数大きいけど、たしかおれは2ステップで書いた

75
名無しさん@お腹いっぱい。[]   投稿日:2017/04/16 03:11:26
>73
なんで例外処理でやらないのか?
基本中の基本だぞ。
コメント1件

76
名無しさん@お腹いっぱい。[]   投稿日:2017/04/16 13:19:14
>75
だからやってるって話だよ
バカなの
コメント1件

77
名無しさん@お腹いっぱい。[]   投稿日:2017/04/16 13:20:30
シェルでカプセル化とかもわけわからんし、このスレわからんわ

78
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/17 12:57:10
実行ファイルが実はシェルスクリプトだった、なんてことは/usr/binによくあること

79
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/17 16:49:07
$ 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
意外とあるな
コメント1件

80
>>>80
history
[]   投稿日:0000/00/00 00:00:00

81
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/18 17:45:32
>81
ほほう -d オプションというものがあるのか……と思ったんだけど、これって bash のみだったりする?
手元の古い tcsh には無いみたい。それとも最近のシェルなら普通に実装されてるのかな。

82
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/18 18:10:08
bash限定

83
名無しさん@お腹いっぱい。[]   投稿日:2017/04/19 12:00:20
>79
こういうのって、fgrepにIをつけたほうがいいのかな。

84
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/19 12:04:12
file コマンドの結果だから要らないんじゃない

85
名無しさん@お腹いっぱい。[]   投稿日:2017/04/19 12:41:43
>85
ありがとうございます
昔、binの中等気をつけろと言われた事があったので勘違いしてました

86
名無しさん@お腹いっぱい。[]   投稿日:2017/04/19 16:28:25
>76
なんでexceptionでno_data_foundを拾わないのか?

カウントしてしまうのは、不慣れなひとがよくやるけど。

87
ich1[]   投稿日:2017/04/20 18:27:26
https://goo.gl/fSbVMj
これは嘘でしょ?本当だと嫌だなー。。

88
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/20 19:20:34
2chで短縮とか

89
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/20 19:22:58
それただのマルチだよ
コメント1件

90
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/20 21:07:15
マルチどころかスクリプトですから

91
名無しさん@お腹いっぱい。[]   投稿日:2017/04/21 17:16:08
>89
え?

92
名無しさん@お腹いっぱい。[]   投稿日:2017/04/21 18:35:17
この中で過去にシェルを仕事でやってたって人何人くらいいるのかな

93
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/21 21:31:36
自分はインフラ関連やってたよ
今は仕事ではコンソール触ることはなくなったけど
家で動画ダウンロード用のスクリプト組んだりしてる
コメント1件

94
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/21 21:34:59
ちなみに性能情報の収集や監視スクリプト、
バックアップとかの運用シェル作ってたけど
可読性も考えてオーソドックスなプログラミングのような書き方をしてたから
超何かよく分からん使い方をしてるココの人の方がシェルスクリプト知ってると思う

95
名無しさん@お腹いっぱい。[]   投稿日:2017/04/22 04:52:18
>95
よくわからない書き方してるほうが上手いとも言えないでしょ

96
名無しさん@お腹いっぱい。[]   投稿日:2017/04/22 04:53:18
linuxってちゃんと使いこなせれば快適だよなすごいわかる

97
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/22 05:55:28
>93
shだけの仕事は数えるほどしかないけど
他の仕事の小道具として毎回のように出てくるな
javaとかwindows系の仕事だと使えなくてめんどくさい
開発ツールとしては使うけど

98
名無しさん@お腹いっぱい。[age]   投稿日:2017/04/22 19:32:05
bashのブレース展開ですが、変数使う方法を教えてください。

x={0..255}

for y in $x
do
...
done

をやりたいのです。

99
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/22 19:39:15  ID:Sfic7payr
自己解決しました。
お世話になりました。

100
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/22 17:13:19
仕事でシェルスクリプト書くなんて
めずらしくもなんともないよ

101
名無しさん@お腹いっぱい。[]   投稿日:2017/04/22 19:43:27
>101
めずらしいとは思ってないけどさ、働いてないのかと思った。
何かしら経験ある人もいるのな、仕事で使ってて家でもシェルいじろうとかよく思えるな

102
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/23 19:09:14
>102
手間とかを省くために使うからプライベートだろうと使うだろう
その発想は使わされてる人のものだと思うぞ
コメント1件

103
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/23 22:45:17
仕事か家かどっちかでしか使っちゃダメなの?
便利なんだからいろんなとこで使ってもいいじゃん

104
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/24 15:09:28
>102
俺は職場から2ちゃんに書き込んでるだけだよ。

105
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/24 16:00:30
学生でもなくて働いたことも無いならシェルいじろうとは思わないでしょ

106
名無しさん@お腹いっぱい。[]   投稿日:2017/04/24 16:02:53
他紙蟹
わかったからそんなせめんなよごめんなっっ
家でシェル使ってる人ってwindows機は別にあるの?
コメント2件

107
名無しさん@お腹いっぱい。[]   投稿日:2017/04/24 17:31:59
あるよ、自分はWindowsなんて使わないという偏屈ではないしさ
Linuxの実機はラズパイだけであとは仮想環境
まあ他にも色々あるけど実際に使ってる環境ってことならね
>106を書いたのは嫌気がさして書いたんじゃなくて
目的や知識がないとシェルなんて触る機会もないでしょって意味で書いた
コメント1件

108
名無しさん@お腹いっぱい。[]   投稿日:2017/04/24 17:49:44
ubuntu on the windowsのおまえらの率直な感想が聞きたい
コメント1件

109
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/24 19:04:22
【Bash】Windows Subsystem for Linux【Ubuntu】2©2ch.net
【Bash】Windows Subsystem for Linux【Ubuntu】2 /Linux板

110
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/24 20:27:56
>106
便利なもんなんだから使うだろう
知ってて環境あって使いどころあれば

111
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/24 20:34:34
>107
windows持ってないです
コメント1件

112
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/24 22:40:54
>111
そんな向上心があるなら学ぶか働いてるでしょ
コメント1件

113
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/25 00:10:36
>113
そういう学科の学生かそういう業務の仕事でなくても使う人は使うってことじゃないの

114
名無しさん@お腹いっぱい。[]   投稿日:2017/04/25 00:43:15
>112
やるじゃんそーゆー振り切ってる感じ好きだぜ
コメント1件

115
名無しさん@お腹いっぱい。[]   投稿日:2017/04/25 00:49:06
>114
そうは言ってなかったな、シェルなんて職場で使わなきゃやろうと思わないでしょって言ってたよ

116
名無しさん@お腹いっぱい。[]   投稿日:2017/04/25 00:51:05
ぶっちゃけLinuxだけだと不便やねん、だからどっちもいるねん、必須なのはWindowsやねん、結局便利だけどLinuxは無くてもいけるねん
コメント1件

117
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/25 00:57:32
実際Windowsないと公私共に不便だろって思う

118
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/25 01:15:23
>116
仕事も勉強も関係なくエロ画像収集に使うだろ
初めてはSSIとかCGIだったな
ISPでシェルアカウント付きのとこもあった
やらされてるだけの人には価値はわからんだろうけど

119
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/25 01:19:30
Windowsなくても別に困らないなあ
コメント2件

120
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/25 05:48:06
>119
VBとかで出来るからね
シェルを使うにはUnix環境が必要で
知識ゼロのニートが自主的にやったってのは知らないなあ
Unix界隈に居る人って性格悪いじゃん?
そんな中で続くとは思えないんだけど

学生か働いてる(働いてた)時に得た知識でやるならわかるけどさ

121
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/25 06:14:57
画像収集ツールって昔からいくつかあるけど
それを使わずにシェルスクリプト使った人が今何してるのか興味あるな

自分はOSもアプリも言語も道具だから何でもいいんだけど
獲得したものを特別なものと思って他人を見下すってのは余裕のない感じがするね
そのあたりがLinuxが流行らなかった理由なんじゃないかと思う
スマホ使ってる人なんてニコニコしながら嫌味無く教えてくれるときあるしw
コメント2件

122
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/25 06:32:05
やらされてるだけの人って嫌味なんだろうけど
ココで答えてくれてる人はそんな人なこと忘れてるよ
失礼な奴だな

123
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/25 09:39:07
シェルスクリプトを作れない人がやっかんでるだけに見えるな

画像収集ツールみたいなことをする場合、Windowsアプリも
cygwonでシェルスクリプト+コマンドのパターンも使う
一方しか出来ない人は時間を損してると思うよ

124
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/25 09:44:08
暇つぶしに聞いただけだろう
現役で職場でシェルスクリプト使う身からすると奇妙な質問には思えるが
これがCOBOLとかなら話分かったけど

125
名無しさん@お腹いっぱい。[]   投稿日:2017/04/25 10:09:42
>121
Unix界隈の人は性格悪いってま?

126
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/25 10:21:07
どこかのスレで質問してみれば分かるよ

127
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/25 10:29:48
画像収集ツールってWindowsで動く既存アプリがいくつもあるんだよ〜
自分はシェルスクリプトを否定はしていない

でも学んでも働いても無かった人(要するにシェルを使ってなかった人)が
画像収集するためにいきなりシェルを使うとは思えないんだな
シェルスクリプトに行き着くためには
UnixなりりLinuxなりCygwin、BoW、Services for UNIXが必要になるわけであって
画像収集するのに便利って言うのは違和感がある
そういう人が本当に使ってるとして今どのレベルなのかも興味があるね

まだ画像収集レベルなのかな?

まあ別に目的を達せられたら良いんだけどね(で振り出しに戻ると)

128
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/25 10:31:54
ちなみに自分は学んだし仕事でやってたよ
だから実装は楽だしやらせたいことを自動でやらせるためにスクリプト組んでるね

129
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/25 10:40:20
すまん、結局何が言いたいのか分からん
これは単にシェルスクリプト使ってるのを見下したいだけなのか?

130
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/25 10:46:20
自分が使える道具を、使うと何かの目的が達せられるところで使うだけだよ
環境、能力、目的は人によるから想像力の欠如をアピールしてもしょうがない

131
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/25 11:20:26
>121
CGIやSSIやISPはweb関連だ
wwwの世界はUnixばかりだからな
で何もなかった昔のwwwではCGIの設置改造とか普通
どうやって動いてるのかとか興味を持って調べた奴も多いだろう
つまり趣味で知った奴もいるってことだ

昔はWindowsでもcygwinとかでシェル使ってたけどな
今はないのかな
VBのツールのメンテとかもしてたけどUnixが吐くデータの処理だったからshで置き換えて効率化したな

やらされてる奴に性格悪い奴がいることはわかった

132
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/25 14:29:24
>132
お前こそ金にならないことやらされてるじゃん
コメント1件

133
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/25 14:33:19
やらされてる連呼クンに触るなよ
コメント1件

134
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/25 14:38:02
なんつうか、こんな話題で長文して結論がそれって
よほど嫌なことあって愚痴りたかったんだろうな

135
名無しさん@お腹いっぱい。[]   投稿日:2017/04/25 14:42:58
>108
ラズパイってむずい?

136
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/25 15:04:06
>132
今仕事何やってるの?

137
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/25 15:04:11
>133
VBのツールの置き換えは仕事だぞ
趣味はお金払ってでもするものだけどな
ただUnixワークステーションとか買えねえよ
コメント1件

138
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/25 15:05:57
>137
開発

139
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/25 15:32:19
なんだ結局仕事にしたんじゃん
素人でまだ触ってるかと思った

140
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/25 16:43:11
やらされに成り下がっててワロタ
コメント1件

141
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/25 17:46:11
>140
シェルスクリプトで開発の仕事なんて滅多にないよ
お前は無職?

142
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/25 17:53:41
いやなんで煽るんだよ
お前何しにこのスレ来たんだよ

143
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/25 17:53:50
開発経験者が趣味でシェルスクリプト書くって普通だと思う
てっきり営業とか企画とか別分野の人がシェルスクリプト書いたのかと思った

144
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/25 18:09:20
なぜ普通以外だと予想したのか

145
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/25 19:25:03
俺もまったくの異業種の奴が言ってるのかと思ったよ
>119とか見るとね
ニートがエロパワーで頑張ったのかと思ったw

146
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/25 19:42:41
アスペか

147
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/25 20:48:36
ハードウェア開発だったからまったくの独学だけどな

148
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/25 22:28:49
バージョン管理とかするだろうし環境作りでUnix使うだろ
どこまで無学なんだよ

149
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/26 00:06:14
ワークステーションとか商用Unix知らないのか無学だな

150
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/26 01:01:14
くだらない話題で申し訳ないんすけど
シェルスクリプトで使う変数の規則とかってどう決めてます?
自分は_HOGEがいいかなって思ってるんですけど、マジョリティはどうかなと(ここがマジョリティかどうかは別だけど)

151
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/26 01:38:09
>151
変数はhoge、環境変数はHOGE
コメント2件

152
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/26 08:25:15
>151
とくに名前に規則は設けず、関数内で local 宣言でできるだけ隔離。
気にはなるけど、個人的には実際に問題になったことが無いし、export しなければ大丈夫じゃないか?
コメント1件

153
名無しさん@お腹いっぱい。[]   投稿日:2017/04/26 08:45:28
>153
シェル内に影響するよ
スクリプトならシェルスクリプト内までその変数が生きる

154
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/26 08:52:37
localって業務用なら使うべきなんだろうがいまいち慣れないんだよなぁ
スコープ分けは基本ってのは分かっちゃいるんだがシェルスクリプトはどうもlocal使ったら負けな気がする
すげぇどうでもいいんだけどな

155
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/27 01:52:59
>151
俺は>152と同じ
↓を一度読んどくと良いと思う
https://www.gnu.org/software/autoconf/manual/autoconf.html#Special-Shell-Variables

156
名無しさん@お腹いっぱい。[]   投稿日:2017/04/27 08:52:30
おまえらただのニートじゃなさそうだな

157
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/27 08:55:21
お前は何を言ってるんだ

158
名無しさん@お腹いっぱい。[]   投稿日:2017/04/27 08:59:38
>158
ジョークだろなんでそんなにおこる?

159
名無しさん@お腹いっぱい。[sage]   投稿日:2017/04/27 09:01:08
>159
俺にしたって某画像のネタをそのまま貼っつけただけで別に怒っちゃいないぞ

160
名無しさん@お腹いっぱい。[]   投稿日:2017/04/27 09:25:43
>160
こりゃ一本取られたな

161
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/06 16:52:42
echo "${hoge[@]}" | xargs -P 10 -n 1 -J{} echo {} >> test.txt
てやると、期待するファイル内容は
aaa
bbb
ccc
...
なのに
aaa
bbccc
...
となってしまいます。
これを回避するいい方法ないですか?

162
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/06 18:13:00
hogeの中身はどうなってんの?

163
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/06 19:56:59
Debian GNU/Linuxでのbashなのですが、指定時間指定ユーザのログインが無ければ
シャットダウンするシェルスクリプト
https://pastebin.com/pJ3v4TYY
を勉強を兼ねて作ってみました。
正常に動作していますが、何か変なところありますか?

164
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/06 21:11:07
cronでやってそうだけど
ログインしてたらループ抜けないようになってるから
1日経つと重複起動すると思う

あと指定時刻なのか一定時間なのかはっきりした方がいい

動いてると思ってるならいいんでないの
コメント4件

165
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/06 21:31:34
>165
一定時間です。

/etc/rc.localってcronで1日ごとに起動されるのでしょうか。
PC電源投入後Linux起動時にただ一度だけ実行されると思っているのですが

166
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/06 22:28:29
シェルの前に日本語を学んだ方がいい
コメント1件

167
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/06 23:44:25
>164
常駐しないでlastとかでログインしなくなってから何分経ったか毎回計算した方がシンプルじゃない
なんだっけvarの下になんかあったよね

168
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/06 23:53:03
>168
それだと、PC起動直後(lastとかで経過時間計算直後)にシャットダウンが走る可能性があるような
コメント1件

169
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/07 01:18:18
>169
仕様通りだな

170
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/07 03:40:10
>164
ダメってわけじゃないけど、"$1"と比較するなら grep は要らないはず(12行目)

>166
一度だけ起動であってる
重複起動とか言ってる人は無知か勘違いなので無視していい

>168
varの下のなんかってwtmpのこと?
wtmpは確実に更新されるわけじゃないし時間の計算も面倒になるので
>164の方がシンプルだろうね
コメント1件

171
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/07 04:01:11
>170
確かに仕様通りだね
PC起動してlogin受け付ける前にpoweroffしてしまうようになるだろうけど
コメント1件

172
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/07 08:46:28
一定時刻ログインしてないんだから当たり前

173
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/07 10:22:50
15分でシャットダウンって考えられない
まあ習作だからいいんだろうが

174
名無しさん@お腹いっぱい。[]   投稿日:2017/05/07 16:02:10
>174
チャージマン研!第23話「恐怖!精神病院」
https://youtu.be/ckO9d_-qiPw
コメント2件

175
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/07 21:37:10
>174
そこは運用で調整してけばいい話だろう

176
161[sage]   投稿日:2017/05/07 22:15:23
みなさんありがとう。

>171
> "$1"と比較するなら grep は要らないはず(12行目)
他ユーザがログインしていても無視してシャットダウンする仕様にしたいのです。
> 一度だけ起動であってる
了解

>174
> 15分でシャットダウンって考えられない
トイレとかの時、5分ほどかかる自分環境自動バックアップの処理を走らせ
画面ロックして席を立ちます。
席に戻ったらまた作業に戻るのですが、とっさの用事で席に戻れない時は
電源が切れていて欲しいのです。
10分だと下痢の時短いかも。20分もいらない。だから15分。

画面ロック(ログイン状態)の時に電源切断するのは気持ち悪いので
ログオフ状態の時に切れるようにしたいのです。
(そのため、バックアップ処理完了後は自動でログオフされるようにしています)

ちなみにWindowsではそういう自作ServiceをCで書いて走らせています。
Linuxは簡単ですね。

177
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/08 01:49:41
タイムカードの無い現場で ふらっと早退してやろうって感じなのかね

178
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/08 05:13:08
そんなんならサスペンドでいいじゃん
久しくシャットダウンしてないや

179
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/08 07:30:05
Windows簡単だと思うけどな
Cならコンパイルとかの環境が必要だけど所詮慣れだし
Cなんか使わずにVBScript使えばいいんじゃないの

180
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/08 09:48:57
Windowsは簡単だな諦めるしかすることないから
コメント1件

181
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/08 19:53:34
>180
Windowsだと、Cでservice作る以外に>164を実現する方法ってあるのかな

182
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/08 21:53:34
Windowsできるアピールはいらん
ほかでやれ

183
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/09 20:02:44
そう、マッキントッシュならね

184
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/15 06:37:29
時間のかかるパイプライン処理中に現在の中間処理内容を
メッセージ表示させることはできませんか?
echo で標準出力に表示させようとしてもそれは次のパイプラインに渡って画面に表示されませんよね?
標準エラー出力で表示させるしかないでしょうか?

185
名無しさん@お腹いっぱい。[]   投稿日:2017/05/15 07:04:43
tee

186
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/15 11:20:57
このスレの無駄のなさすぎる回答好き

187
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/15 21:05:16
そう、マッキントッシュならね

188
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/15 23:50:07
でもteeの仕様って、一方をファイルじゃなく、stderrあたりに
しておいてくれれば、もっと汎用性上がったのにね

189
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/16 00:37:43
UNIXでは標準エラーもファイルだから問題ない

190
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/16 06:24:05
teeの出力先をstderrにすると、中間処理をモニタすることしかできなくなるのでは?
ファイルに書けばモニタも出来るし汎用的

191
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/16 07:42:47
>189
デフォルトでstderrに吐くと、teeのエラーを吐く場所がなくなるからでは? (例えば ls | tee --wrongoption とかの場合)
モニタしたければ tee /dev/stderr でよい。
コメント1件

192
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/16 08:32:03
>192
dev使うのはOS依存じゃね?

193
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/16 10:02:35
>191
stderrもリダイレクトできるよ

194
名無しさん@お腹いっぱい。[]   投稿日:2017/05/19 20:34:10
シェルってオブジェクト指向で書けないの?
暗黙的ルール多すぎだろ

195
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/19 22:16:49
>195
>> 暗黙的ルール多すぎだろ
例えば?
コメント5件

196
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/19 23:31:44
>195
OOPの本質を理解してれば出来る
もし出来ないなら個人の能力に問題がある

197
名無しさん@お腹いっぱい。[]   投稿日:2017/05/20 03:14:17
シェルはパイプで渡していくと
関数型っぽいけど

198
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/20 09:42:17
関数型と見るかメソッドチェーンと見るかの違いだな。

199
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/20 21:59:01

200
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/20 22:19:56
>195
オブジェクト指向で書くと暗黙のルールがなくなるの?

201
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/21 05:34:32
>195
別にシェルが嫌なら同じ処理をプログラミング言語で作れば良いじゃ無い。
LLならそんな手間じゃ無いし。

202
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/21 18:05:12
>195 はシェルの開発言語のことを聞いてるんだよね?
確かに、たいていのシェルはCで書かれてるし

203
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/21 19:34:04
だんだん分けわからなくなってきたわ

204
です。考えていたのはtexのファイルにするということなのですが。 []   投稿日:0000/00/00 00:00:00

205
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/23 15:38:50
ハイパーリンク作るまでやるならshの範疇じゃない気がするが
なんでも聞かずに少しはぐぐったらどうよ

206
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/23 16:05:32
ありがとうございます
ぐぐります

207
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/25 08:52:58
w3m . -dump_source >dir.html

208
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/26 02:49:12
>210
テキストファイルをhtmlにするには拡張子を変えただけでいいらしいです。
>210さんが教えてくれてのはhtmlをtxtファイルにするための
ものだと思います。markdownでリストを作ろうと思います

ありがとうございました

209
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/26 03:27:01
横から

Content-type: text/html
htmlはtextの中でどう書くかというルールに過ぎない
拡張子なんてのはexplorer.exeとかのソフトがどのアプリケーションソフトを起動するかのヒント程度
名前などどうでもいい

w3m . -dump_sourceは、.(このディレクトリ)をhtmlで書き出せ、と命令してる

210
名無しさん@お腹いっぱい。[sage]   投稿日:2017/05/26 07:39:50
>210さん
やりたかったことがそのままできるコードを教えてくれてありがとうございます。
それなのに申し訳ありません。>212さんが教えてくれるまでその意義をわからず、
失礼なことを書きました。
>212さん
本当にありがとうございます。
コメント2件

211
名無しさん@お腹いっぱい。[sage]   投稿日:2017/06/02 10:47:53
シェルスクリプトの本で、こんな便利なことができるという感じの
スクリプトを紹介するような感じでできてる本というのでお薦めの本は
あるでしょうか?

212
名無しさん@お腹いっぱい。[sage]   投稿日:2017/06/02 11:25:57
>214
クックブック
……ああでもあれはbashだったか
コメント2件

213
sage[]   投稿日:2017/06/02 20:17:29
(head ; tail ) < file
で、先頭10行・末尾10行が出るのはどういう仕組み?
FreeBSD+ash、bash で確認。
man にはそれらしい記述がないように見える。

214
名無しさん@お腹いっぱい。[sage]   投稿日:2017/06/02 21:17:20
ちなみに GNU coreutils の head, tail だと

seq 10 | { head -1; tail -1; }
1

となる。以下の場合は

seq 10240 | { head -1; tail -1; }
1
10240

となる。これは head コマンドが一定量のデータをバッファリングした
まま処理を終了してまうから。BSD系のコマンドでは未使用なデータは
パイプバッファに戻してくれるので tail コマンドで読み出すことができる。
コメント1件

215
名無しさん@お腹いっぱい。[sage]   投稿日:2017/06/03 15:49:14
ともにデフォルトが10行だからじゃないの?
コメント1件

216
名無しさん@お腹いっぱい。[sage]   投稿日:2017/06/04 01:26:27
>215
クックブック注文しました
ありがとう

217
名無しさん@お腹いっぱい。[sage]   投稿日:2017/06/05 08:12:28
どうやって実現してるの?パイプではseekできないと
ずっと思ってた
コメント2件

218
名無しさん@お腹いっぱい。[sage]   投稿日:2017/06/05 10:37:40
tailのソース読んでみたら?

219
名無しさん@お腹いっぱい。[sage]   投稿日:2017/06/06 12:55:43
>217
BSDは知らないけど、普通stdioで読む単位は4096byteとかだから
headがそれを読んでexitした場合残りをtailが読むことになる
入力データが4096byte以下ならheadしか受け取れないが、大きければ
headとtailがそれぞれ入力を受け取れる
パイプに戻すとかいうインタフェースはunixにはない

220
213[sage]   投稿日:2017/06/13 13:42:47
どうもです。
要は 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

221
213[sage]   投稿日:2017/06/13 13:51:01
>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 がそれを読めるわけでは
ないと思っています。

222
名無しさん@お腹いっぱい。[sage]   投稿日:2017/06/13 15:00:33
>223
seq 100は4096バイト以下だから。
seq 1042でtail -2
したら切れ目がわかるかと。

223
213[sage]   投稿日:2017/06/13 15:13:53
★1も★2 も seq 100 なのに、なぜ結果が違うのか、というのが疑問なのであります。
コメント2件

224
名無しさん@お腹いっぱい。[sage]   投稿日:2017/06/13 15:15:44
ファイルディスクリプタがプレーンファイルならlseekするから

225
名無しさん@お腹いっぱい。[sage]   投稿日:2017/06/13 15:19:58
ごめん、mmapだった


226
名無しさん@お腹いっぱい。[sage]   投稿日:2017/06/14 09:15:41
>226
要するに>227の通りなんだけど
&#11088;1の書き方の場合、標準入力がパイプになるので(lseekできないので)tailには何も渡らない
&#11088;2の場合標準入力は通常ファイルseq100.txtなのでtailはlseekして読み直すから読める

227
213[sage]   投稿日:2017/06/14 10:53:46
ありがとうございます。
https://svnweb.freebsd.org/base/head/usr.bin/tail/tail.c?revision=314436...;view=markup#l227
で lseek で先頭に戻るってのが成功するか否か、ってことですね。
コメント1件

228
名無しさん@お腹いっぱい。[sage]   投稿日:2017/06/14 11:09:43
head -1 じゃなくて read を使ってこんな事をしてたり

df -h | { read h; echo "$h"; sort -k5,5gr; }

229
名無しさん@お腹いっぱい。[]   投稿日:2017/07/01 20:45:46
流石に上手いわ

230
名無しさん@お腹いっぱい。[]   投稿日:2017/07/01 23:39:20
>231
惚れる。UNIX の基本コマンドだけじゃん

231
名無しさん@お腹いっぱい。[sage]   投稿日:2017/07/05 17:14:04
>231
やるやん(´・ω・`)
コメント1件

232
名無しさん@お腹いっぱい。[sage]   投稿日:2017/07/08 09:49:05
>223
子同士だから親から引き継いだ同じものを共有してる

233
名無しさん@お腹いっぱい。[sage]   投稿日:2017/07/15 18:10:48
Eclipse上でシェルスクリプトを動かしたいんだけど、どのサイトを参考にすればいいですか?

234
名無しさん@お腹いっぱい。[sage]   投稿日:2017/07/15 18:28:08
site:2ch.net 付けてググれ

235
名無しさん@お腹いっぱい。[age]   投稿日:2017/07/31 07:52:04
# 使用しているのは 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 独自の機能を要する文法があると思われます。
そこで質問なのですが,実際にログインプロセスを踏まずにそれを再現できるシェルスクリプトの作り方を教えてください。
長くて申し訳ないです。よろしくおねがいします。

236
名無しさん@お腹いっぱい。[sage]   投稿日:2017/07/31 07:59:41
内緒で妻のパソコンでインターネットして
ヌードとかHな写真を見まくっていたのですが、なんと
bネにかの表紙に血ゥていたエロ画荘怩ェパソコンの血繧?ノ
表示されたままになって元に戻せません!
前はプーさんの画像だったのに、今はアソコにバイブを挿した豊丸の画像です・・・。。
再起動しても表示されたままなんです。
早く直さないと妻が夜勤から帰ってきてしまします!(看護婦なので・・・・)
至急助けてください!!!
OSはウィンドウズXPです。
よろしくお願いします。

237
名無しさん@お腹いっぱい。[sage]   投稿日:2017/07/31 08:49:19
>239
金属バットでPCフルスイングすれば?

238
名無しさん@お腹いっぱい。[sage]   投稿日:2017/07/31 08:51:37
ここに到達する知識があるならgoogleで検索すれば見つかるだろうに
コメント3件

239
名無しさん@お腹いっぱい。[sage]   投稿日:2017/07/31 08:57:00
>238
再現する方法を模索するのではなく、再起動せずに切り分けすればいいだけでは?
tty でログインできなかったって点からすると、/usr/bin/sh を差し替えた後に再起動せずに
su - 一般ユーザ名 でテストするのが一番手っ取り早そう。

display-manager(gdmや同等のソフト) を停止した状態で tty でログイン(安全をみて tty1 と
tty2 など複数個所でログイン済にしておく)、 /usr/bin/sh を差し替えて再起動せずに
display-manager を起動してログインテストすればいいんじゃないでしょうか。
コメント3件

240
名無しさん@お腹いっぱい。[sage]   投稿日:2017/07/31 09:07:15
>239
これは履歴とかキャッシュ消せないだろうからどうせバレる
コメント1件

241
名無しさん@お腹いっぱい。[sage]   投稿日:2017/07/31 09:10:25
>238
Linux板へ

242
名無しさん@お腹いっぱい。[sage]   投稿日:2017/07/31 09:10:52
>239
懐かしコピペだな
コメント1件

243
名無しさん@お腹いっぱい。[sage]   投稿日:2017/07/31 11:49:07
>242
ありがとうございます。やってみます。
ご迷惑かもしれませんが,解決を見たら報告します。

244
名無しさん@お腹いっぱい。[sage]   投稿日:2017/07/31 11:54:40
>240
ありがとうございます。やってみます。
ご迷惑かもしれませんが,解決を見たら報告します。

245
名無しさん@お腹いっぱい。[sage]   投稿日:2017/07/31 15:19:17
>238
checkbashismsが使えるならそれでBashの機能の有無を確認出来る
http://wiki.archlinuxjp.org/index.php/Dash

246
名無しさん@お腹いっぱい。[sage]   投稿日:2017/07/31 16:15:55
/bin/shを差し替えるなんてFedora側で想定した使い方じゃないんだから
そもそもそんなことやっちゃいけない

247
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/01 02:25:49
>248
ありがとうございます。
5000 箇所くらい不適合が見つかりました。
パッケージ管理されているシェルスクリプトも多くあり,
全部直すとシステムの破壊も(今更かもしれないですが)心配なのでやはり bash のままにしようかなとも考えています。

>249
その通りなんですが dash は bash の4倍早いと聞いたのでつい……。

248
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/01 02:59:57
>250
autoconfのconfigureで5-10%速いくらい
https://lists.fedoraproject.org/pipermail/devel/2014-October/202891.html
SysVinitの昔ならともかくsystemdの今では関係ないだろうけどね
コメント1件

249
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/01 03:05:36
>250
chshだけでもしとけば
コメント1件

250
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/01 08:24:31
>250
4倍速いなんて誰が言ってたの
コメント2件

251
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/01 09:51:33
/bin/sh置き換えるとか奇形児かよ

252
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/01 10:19:55
configureで5-10%速いなら4倍どころじゃないだろうな

253
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/02 20:07:41
>254
debianはそういうとこあるぞ

254
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/03 07:34:52
あれは必死に直した結果達成したもので、同じような努力をそのdistroで
やらないとできない

そういやFreeBSDも昔base systemからperl排除するという大きな仕事を
やってたなあ
コメント1件

255
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/03 09:32:35
で、「4倍速い」のソースどこよ

256
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/03 09:35:10

257
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/03 21:23:18
シャア専用シェル

258
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/04 03:14:55
シェルから特定のプログラムの標準入力にデータを流すにはどうしたらいいでしょうか。

何がしたいかというと、
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はわかるので、そこに対してデータを送る方法があれば教えてください。

259
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/04 04:14:32
移植性がよくわからないけど
cat hoge > /proc/<pid of server>/fd/1

260
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/04 08:14:54
EOFってクリアできるものなの? よくわからんが
$ mkfifo /tmp/foo
$ exec < /tmp/foo
$ exec ./my-server.elf
で cat hoge > /tmp/foo とかどうよ

261
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/04 13:23:10
>261
EOFってstdinの送信側がcloseしたときに送られるんじゃないの?
それ実は再コネクトしてたりしない?
コメント1件

262
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/06 01:34:21
>261
> コマンドライン上から テキストデータ+EOFを何度か送る方法はないでしょうか?
テキストデータにEOF(^D)を入力するとか
^DはCtrl+V、Ctrl+D
https://en.wikipedia.org/wiki/End-of-Transmission_character

263
名無しさん@お腹いっぱい。[]   投稿日:2017/08/09 11:18:15
1<br>2<br>3<br>4<br>



1
2
3
4

にシェルで置き換えるコマンド教えれ
今viで開いて置き換えてます・・・

264
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/09 11:21:03
>266
sed

265
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/09 11:22:28
sed でもなんでもいいじゃん

266
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/09 13:07:15
あえてヘッドレスブラウザを使ってみよう
コメント1件

267
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/09 13:07:21
echo '1<br>2<br>3<br>4<br>' | tr '<>' '\n\n' | fgrep -v br

268
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/09 14:41:10
ありがとうございます
sedで出来ました

というか所定の文字列(今回は<br>)を改行に置き換えることと
改行を所定の文字列に置き換えることを混同していました

たしか後者はsedなどでできずperlとかでやった覚えがあります
まったくもって私の勘違いでした・・・

269
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/09 14:49:33
unhtmlだと改行入らないっけ

|w3m -dump

270
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/13 15:47:35
macのファイル名に使われるエンコーディングてutf-16だったんだね
てっきり、utf-8だと思ってた
http://tama-san.com/hfsplus/

んで、次のOSでは非正規化になるみたい
https://developer.apple.com/library/content/documentation/FileManagement/...

これで少し楽になれそう

271
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/13 15:56:24
内部表現はutf-16
ターミナルで扱うときはutf-8

272
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/13 18:10:53
知らなかった
ありがとう

273
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/20 22:32:53
シェルスクリプト とはほとんど関係ないんだけど,X 使ってる時,ターミナルエミュレータに ファイルマネージャの「ファイル」や「フォルダ」を D&D したらその絶対パスが入力されるんだな。
これ今迄知らずに手入力してた。

274
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/20 22:38:57
なんかしらんけど、本当だ(´・ω・`)

275
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/20 22:39:12
これどういう原理なんだろ

276
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/20 23:03:34
X 使ってないから分からんが、Windows でエクスプローラからコマンドプロンプトにドラッグ&ドロップするとファイルパスが入力されるのと同じ機能かな。
意外と知らない人もいるみたいだけど、便利だよね。

277
名無しさん@お腹いっぱい。[]   投稿日:2017/08/21 01:53:29
でもXってマウスすべるよな

278
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/21 08:54:21
Windows でも確認できた。へー,結構便利だな。

279
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/21 10:52:29
なぜ関係ない話をここでやるの

280
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/21 17:33:16
じゃあ関係ある話提供してください。

281
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/21 17:38:48
どうでもいいけどそれずっとsakuraエディタ使ってやってたわ
エディタ上にファイルペーストすると絶対パスに変換される

282
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/21 18:31:57
どうでもいいなら書き込むな

283
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/21 19:04:04
じゃあどうでもよくない話提供してください。

284
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/21 19:13:51
DEの機能じゃないの
ファイルマネージャー使わないが

285
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/22 09:14:59
Terminology「ガタッ(呼ばれたか)」

286
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/22 13:27:24
Terminology って何がすごいの? 画像の表示なら xterm ですら可能なのに。

287
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/22 18:53:12
lsとかした後ターミナル内でのD&Dとかの変態操作
動画再生と動画壁紙の無駄機能

すごくはない

288
286[sage]   投稿日:2017/08/23 03:10:27
ターミナル内で D&D できんのか。そりゃすげえ。

289
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/29 10:07:33
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
---

290
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/29 14:45:14
シェルじゃなくてシェルスクリプト

291
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/29 20:34:15
>292
その本知らないけど、標準入力を読み切ったあとをキー入力とするより
read response < /dev/tty
でキー入力する方が一般的じゃないかな

292
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/30 10:04:26
>294
実は、vmware上のlinuxにテラターム使ってテストしてたんだけど、
(unixと書いてあるのにスマン)
その時の端末のデバイスファイル?とやらが/dev/pts/0だったのよ。
`tty`でもパイプ使ってると「あいまいです」みたいに怒られちゃって、
苦し紛れに&2を使ってしまった。。

接続端末のデバイスファイルをいつでも取得できる方法ってあるのかな?
コメント1件

293
名無しさん@お腹いっぱい。[sage]   投稿日:2017/08/30 10:21:44
あ、あと今さっき教えてもらった
read response < /dev/tty
↑が、上手くいった!ありがと〜

unixだとreadコマンドはリダイレクションができなかったらしいが、
linuxだと出来るのか。。。

294
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/06 14:03:04
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 を補完しない、ってことですかね。
コメント1件

295
294[sage]   投稿日:2017/09/06 14:14:11
> 括弧等や -o に関係なく、引数 expression のどこかに
> アクションが 1つでも記述されていれば、-print を補完しない、ってことですかね。
ということのようでした。

https://svnweb.freebsd.org/base/head/usr.bin/find/function.c?revision=31...;view=markup#l1344
-print とかが見つかると isoutput=1 とする。

https://svnweb.freebsd.org/base/head/usr.bin/find/find.c?revision=314436...;view=markup#l113
!isoutput の場合のみ、-print を補完する。

expression のツリー構造をたどって、アクションがない expression が
見つかったら全部 -print を補完する、としていたらよかった気がしますが、
いまさらどうしようもないですね。

296
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/08 02:42:55
$ bc <<< '6*7'
42
とかの`<<<` ってなんという名称ですか?
ヒアドキュメンとだとずっと思っていたのですが,その仕様を調べようとしたらヒアドキュメントというのは
$ cat << . > ~/foo.txt
a
b
c
.
の << . から . を指すようなのでした。

297
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/08 04:08:06
ヒアストリング

298
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/08 07:40:56
ヒアストリングは未だに使い方がよく分かってない

299
名無しさん@お腹いっぱい。[sage All You Need is Shell]   投稿日:2017/09/09 13:43:30
>300
ありがとうございます!
お礼が遅くなり申し訳無いです。

300
名無しさん@お腹いっぱい。[]   投稿日:2017/09/11 20:58:07
あるマシン環境を仮想マシンとかでバックアップしておいて
1つのマシン上であるサーバを構築して、
historyからその構築したコマンド群を全部シェルスクリプトに
コピペして、そのシェルスクリプトを
サーバ構築前のマシン上で実行したら全く同じサーバが一瞬で構築できるの?
コメント1件

301
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/11 22:00:14
chefとか使えよ

302
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/11 22:47:46
冪等性が保証されてるスクリプトなら同じサーバーができる

303
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/12 16:18:38
ネットワーク経由のインストールとかしてて
サーバの状態により変わりそう

304
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/12 18:22:51
サーバーじゃないけど仮想マシンで似たような事してる
ヒストリーからってより自分でメモしといたコマンド群だけど
けっこう省力化出来てる
あとスクリプト書いてから時間が経過するとソフトウェアの
ダウンロード元のURLが変わったりしてエラーが出ることは多々ある

305
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/12 20:18:24
結局リプレイしたいときにはアプリやOSのバージョンが微妙に上がってて、
手順を修正しながらやらなきゃダメってのはありがちだな。

306
名無しさん@お腹いっぱい。[]   投稿日:2017/09/13 13:26:43
変数やコマンド文字列の展開と
ワイルドカード/正規表現の展開って原理が違うの?

307
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/13 14:55:00
どういう意味?

308
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/14 00:00:47
>309
言ってることが曖昧だが,「グロブ」と「正規表現」は違うよ
原理が違うかどうかは知らんが,少なくとも挙動は別物
例えばアスタリスクはグロブだとワイルドカードとして,正規表現だとクリーネ閉包としての役割を果す

309
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/14 01:58:23
グロブ(含ワイルドカード)と正規表現の違いを聞いてるのではないでしょう
コメント2件

310
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/14 05:18:47
質問の意味がわかんないんです(><)

311
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/14 06:04:07
すみませんが詳しい方のみ回答をお願いします

312
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/14 06:59:44
ここにはいません

313
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/14 10:48:20
みなさんコマンドの頭にバックスラッシュって付けてます?
私は安全を期して付けているのですが そうしているシェルスクリプトが以外に少ないので
気にしなくてもいいんですかね

314
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/14 10:59:51
付けないとどんな危険があると想定してるの?

315
173[sage]   投稿日:2017/09/14 12:57:09
alias cp='rm -rf'
cp a --> rm -rf a
\cp a --> cp a

316
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/14 13:21:22

317
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/14 13:26:37
cshだとaliasが機能しちゃうんだね

318
313[sage]   投稿日:2017/09/14 13:42:49
173 --> 313
コメント1件

319
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/14 14:22:08
cshはデフォルトだと必ず.cshrc読んじゃうからねぇ

320
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/14 14:51:18
>309
翻訳するとこういう感じだと想像

変数の展開: variable expansion ( e.g. ${var} )
コマンド文字列の展開: command substitusion ( e.g. $(command) )
ワイルドカードの展開: filename expansion ( e.g. *.sh )
正規表現の展開: ???

正規表現の展開って何? find -regexとかのこと言ってるの?
あと原理って? 同じか違うか知りたい理由は何?
人に伝わるように質問しないと誰も分からないぞ

321
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/14 14:57:45
cshを前提にしちゃいかんでしょう

322
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/14 16:44:13
>324
前提というか、 >316 はそういう環境なんだなと深読みしただけ

323
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/14 17:20:02
いまどきcshでスクリプトを書くおとこの人って…

324
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/14 18:02:43
>318はcshじゃないな。
むかしのcshで痛い目にあってなますを吹いてるとか?
コメント1件

325
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/14 18:37:11
>325
深読みが過ぎるのでは
Bシェル系使ってて心配しすぎてるだけという可能性もある

326
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/16 04:51:53
>316を見て思ったのが シェバンの書き方。
#!/bin/sh -
と書けと駱駝にはあったが 存外そうしている Shell Script がない
まあ余程のことがない限り sh がオプションを勘違いするなんてないが

327
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/16 08:20:15
#!/bin/sh -
set -x
set -u
...
set +u
set +x

328
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/17 11:16:56
set −xって要らないでしょ

329
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/17 13:02:27
sexに空目した

330
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/18 09:06:16
set -u 便利だな

331
名無しさん@お腹いっぱい。[age]   投稿日:2017/09/18 17:34:05
新しい関数として
ls () {
  \ls --width=`\echo $COLUMN`
}
という関数を作って,ls のエイリアスとして動作させたいのですが,
コマンドラインで $ ls と入力すると無限ループに陥ります。
多分というか確実に関数 ls が自分自身を呼び出している為に生じる現象だと思います。
これを回避し,ls という関数を安全に作製するにはどうすればいいでしょうか。
常用しているシェル bash です。
bash 独自の拡張でそのような(関数の再帰を防ぐ)機能があれば教えて下さい。

332
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/18 17:35:32
関数中のlsを絶対パスで呼ぶ

333
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/18 17:44:16
command ls --width=$(echo ${COLUMN:-50});

とかでいいんじゃない

334
331[sage]   投稿日:2017/09/18 18:25:53
>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
}

335
331[sage]   投稿日:2017/09/18 18:28:49
s:/`\\echo $COLUMNS`/$(\\echo ${COLUMNS})/
コメント1件

336
331[sage]   投稿日:2017/09/18 18:55:59
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 $@
}
コメント2件

337
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/18 20:05:49
lsを常に特定のオプション付けて実行したいのならLS_OPTIONS使えばいいと思う
それからfunction name ()はfunction nameかname () のどちらかにすべき
name()の方が汎用性高い

338
331[sage]   投稿日:2017/09/18 20:49:26
>340
ありがとうございます!
LS_OPTIONS は知りませんでした。MANOPT や LESS みたな感じなんですかね。
函数は POSIX に合わせて ls () にしようと思ったんですが,ちょっと個人的に気持ち悪くて,どうしても function が取っ払えませんでした……。

339
名無しさん@お腹いっぱい。[sage]   投稿日:2017/09/18 21:20:07
別に身勝手ってほどのことでもなくね
更新情報
・スレッド一覧ページで過去ログのタイトル検索・一覧表示ができるようになりました(2016/1/20)
NGワード登録
登録する
スレッド内検索

UNIX板 タイトル検索

このスレッドが人気です(実況系)
実況 ◆ フジテレビ 84400 (805)フジ実況
実況 ◆ 日本テレビ 56471 (970)NTV実況
実況 ◆ テレビ朝日 49227 This is 依田司 (800)テレ朝実況
NHK総合を常に実況し続けるスレ 138083 ストレッチ (547)NHK実況
ヅラテレビ (454)フジ実況
羽鳥慎一モーニングショー★3 (324)テレ朝実況
連続テレビ小説 ひよっこ★306 (760)NHK実況
おはよう!時代劇 暴れん坊将軍5 #29(第31話)[字][再] (794)テレ朝実況
このスレッドが人気です(ニュース系)
【国連演説】トランプ大統領の「北朝鮮完全破壊」発言に議場どよめく。北朝鮮大使は演説途中で退席★2 (821)ニュー速+
【国連演説】トランプ大統領の「北朝鮮完全破壊」発言に議場どよめく。北朝鮮大使は演説途中で退席 (1002)ニュー速+
【ビビット】豊田真由子議員、「吐いてでも食え!」「娘の顔にマジックで書け」と罵倒…元秘書ら緊急座談会で暴露 (981)音楽・芸能ニュース
【社会】三輪バイク「トライク」事故相次ぐ、販売元・連盟「運転は難しい」「曲がりきれないケース多い」と指摘 ヘルメット着用義務なし (612)ニュー速+
【加計隠しどころではない】「12月以降に北朝鮮を軍事攻撃」 米国が安倍首相に伝達で衆院選前倒しか…有事想定で解散決意か (47)ニュー速+
【国連】トランプ大統領、国連総会演説で北朝鮮の日本人拉致を非難 「13歳の少女を拉致した」★5 (1001)ニュー速+
【国連】トランプ大統領、国連総会演説で北朝鮮の日本人拉致を非難 「13歳の少女を拉致した」★6 (523)ニュー速+
【サッカー】Jリーグ秋春制断念へ、加盟51クラブの8割反対 (156)音楽・芸能ニュース
UNIX板の人気スレ
FreeBSDを語れ Part45 (966)
Emacs Part 50 (727)
初心者もOK! FreeBSD質問スレッド その122 (637)
Vim Part26 (966)
シェルスクリプト総合 その26 (342)
連番のH画像/動画を一気にダウンロードする6 (984)
Oracle Solaris 総合スレッド 其の2 (405)
Emacs Part 47 (995)
Emacs Part 46 (984)
雑談スレだよもん☆もんだよもんもんだよもん!{36} (672)
Cygwin使っている人いますか? その22 (717)
*BSDニュース@2ch その7 (771)
NetHack 地下:62 (496)
Cygwin使っている人いますか? その21 (980)
FreeBSDを語れ Part37 (992)
Emacs Part 48 (997)
Vim Part25 (988)
シェルスクリプト総合 その23 (1000)
NetHack 地下:61 (1017)
雑談スレだよもんもんもんだよ☆だよだよもん!{35} (991)
FreeBSDを語れ Part38 (984)
初心者もOK! FreeBSD質問スレッド その120 (1018)
シェルスクリプト総合 その24 (999)
\chapter{\TeX} % 第九章+ (1001)
*BSDニュース@2ch その6 (982)
\chapter{\TeX} % 第十章 (698)
このサイトについて
このサイトは2ちゃんねるからデータを取得し、表示するサービスです。
画像のインライン表示機能について
画像のURLの後ろにある[画像をインライン表示]をクリックすると、URLの下に表示します。
表示される画像は横幅100pxに縮小されていて、クリックすると原寸で表示します。
このサイトの特徴
1)スレッド内検索ができます
2)レス(「>>1」など)のポップアップができます
3)不適切な言葉を含む投稿を表示しません
4)ページ内で画像を直接表示できます
5)2ch他スレッドへのリンクはタイトル・板名つきでリンクします
6)すっきりとしたデザインで表示します
7)最新スレや前スレをチェック・一覧表示します
8)NGワード機能の搭載でイヤな言葉が目に入りません
9)荒らしを自動チェックします
10)スレッド内・同一IDの書き込みだけ表示できます
11)レスの返事をレスされた発言の下に表示する「まとめビュー」が利用できます
12)シリーズ化したスレッドの一覧を表示します
13)最新のスレッドがある場合はお知らせします
削除について
こちらをご覧ください
機能要望について
現在機能要望受付中です。
問い合わせについて
こちらのページからどうぞ
広告


首都圏の方、ソフトバンク光オススメですよ


このサイトは2ch.scからデータを取得・表示しています。削除などについてはこちらをご覧ください。 アクセスモード:差分取得 - 正常取得 - 39件 - 取得完了