シェルスクリプトの総合スレです。
□お約束
・特記なき場合はBourne Shell(/bin/sh)もしくはPOSIX準拠の互換シェルがデフォルトです。
bash/zsh/ksh/ash/dash/yash/poshなどの専用機能に依存する場合は明示しましょう。
Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。
FreeBSDユーザは/bin/shの正体がashなので注意。
・POSIXについてのリンクは https://en.wikipedia.org/wiki/POSIX にまとめられています
最新の仕様はこちらへ http://pubs.opengroup.org/onlinepubs/9699919799/
(左上の「Shell & Utilities」 から参照することができます。)
・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に逃げずにシェルスクリプトで処理するのが頭のいいやり方。
質問に対して問題が間違ってるといちゃもんをつけるのもやめましょう
前スレ シェルスクリプト総合 その26
https://mevius.5ch.net/test/read.cgi/unix/1489979246/
シェルスクリプト総合 その27
レス数が1000を超えています。これ以上書き込みはできません。
2018/05/03(木) 17:54:23.25
2018/05/03(木) 18:04:06.88
FAQ
Q. 秘密結社シェルショッカーってなんですか?
A. しらん。どっかの変態団体やろ。近寄らんほうが良い。
Q. USP友の会ってなんですか?
A. しらん。どっかの変態団体やろ。近寄らんほうが良い。
Q. シェル芸ってなんですか?
A. しらん。ヲタ芸みたいなもんやろ。恥ずべきものや。
Q. ユニケージ開発手法ってなんですか?
A. しらん。所でアプリの開発には普通のプログラム言語使ったほうが良いぞ
Q. 秘密結社シェルショッカーってなんですか?
A. しらん。どっかの変態団体やろ。近寄らんほうが良い。
Q. USP友の会ってなんですか?
A. しらん。どっかの変態団体やろ。近寄らんほうが良い。
Q. シェル芸ってなんですか?
A. しらん。ヲタ芸みたいなもんやろ。恥ずべきものや。
Q. ユニケージ開発手法ってなんですか?
A. しらん。所でアプリの開発には普通のプログラム言語使ったほうが良いぞ
2018/05/03(木) 18:07:31.65
シェルスクリプトの総合スレです。
初心者、学生、アマチュア、プロ、シェルの種類や 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 参照 )
初心者、学生、アマチュア、プロ、シェルの種類や 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 参照 )
2018/05/03(木) 18:07:48.98
★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
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
2018/05/03(木) 18:08:05.42
★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/
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/
2018/05/03(木) 18:08:24.32
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/
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/
2018/05/03(木) 18:08:40.89
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. ☆シェルスクリプトを勉強するにあたって☆
http://hibari.2ch.net/test/read.cgi/unix/989659936/
2. 便利なシェルスクリプト見せろ
http://pc.2ch.net/test/read.cgi/unix/996949546/
3. シェルスクリプト総合 その1
http://pc5.2ch.net/test/read.cgi/unix/1101820646/
後略。検索して下さい
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. ☆シェルスクリプトを勉強するにあたって☆
http://hibari.2ch.net/test/read.cgi/unix/989659936/
2. 便利なシェルスクリプト見せろ
http://pc.2ch.net/test/read.cgi/unix/996949546/
3. シェルスクリプト総合 その1
http://pc5.2ch.net/test/read.cgi/unix/1101820646/
後略。検索して下さい
2018/05/03(木) 18:08:56.47
★H. 関連スレ(UNIX板/プログラム板)
1. sed
http://peace.2ch.net/test/read.cgi/unix/1085730992/
2. 正規表現
http://peace.2ch.net/test/read.cgi/unix/1039165754/
3. Regular Expression(正規表現) Part13
http://peace.2ch.net/test/read.cgi/tech/1415149975/
4.Perlについての質問箱 64箱目 [転載禁止](c)2ch.net
http://peace.2ch.net/test/read.cgi/tech/1417291896/
5. ECMAScript デス 4
http://peace.2ch.net/test/read.cgi/tech/1325448978/
6. Ruby 初心者スレッド Part 57©2ch.net [転載禁止](c)2ch.net
http://peace.2ch.net/test/read.cgi/tech/1426165733/
7. Pythonのお勉強 Part50
http://peace.2ch.net/test/read.cgi/tech/1413474092/
8. 【node.js】サーバサイドjavascript 3【io.js】(c)2ch.net
http://peace.2ch.net/test/read.cgi/tech/1419673207/
★I. 現在評価待ち: X.n は予定した追加先。主にスレ立て人の判断保留用。
1. sed
http://peace.2ch.net/test/read.cgi/unix/1085730992/
2. 正規表現
http://peace.2ch.net/test/read.cgi/unix/1039165754/
3. Regular Expression(正規表現) Part13
http://peace.2ch.net/test/read.cgi/tech/1415149975/
4.Perlについての質問箱 64箱目 [転載禁止](c)2ch.net
http://peace.2ch.net/test/read.cgi/tech/1417291896/
5. ECMAScript デス 4
http://peace.2ch.net/test/read.cgi/tech/1325448978/
6. Ruby 初心者スレッド Part 57©2ch.net [転載禁止](c)2ch.net
http://peace.2ch.net/test/read.cgi/tech/1426165733/
7. Pythonのお勉強 Part50
http://peace.2ch.net/test/read.cgi/tech/1413474092/
8. 【node.js】サーバサイドjavascript 3【io.js】(c)2ch.net
http://peace.2ch.net/test/read.cgi/tech/1419673207/
★I. 現在評価待ち: X.n は予定した追加先。主にスレ立て人の判断保留用。
2018/05/03(木) 18:10:52.76
★え?Windowsでシェルを!?
Bash on Ubuntu on Windows©2ch.net
https://mevius.5ch.net/test/read.cgi/win/1470496450/
Win10がBash・linuxコマンドに公式ネイティブ対応★3 [無断転載禁止]©2ch.net
https://mevius.5ch.net/test/read.cgi/win/1459904955/
【Bash】Windows Subsystem for Linux【Ubuntu】2©2ch.net
https://mao.5ch.net/test/read.cgi/linux/1468149353/
Bash for Ubuntu for Windowsで開発しようぜ! [無断転載禁止]©2ch.net
https://medaka.5ch.net/test/read.cgi/prog/1493495197/
Bash on Ubuntu on Windows©2ch.net
https://mevius.5ch.net/test/read.cgi/win/1470496450/
Win10がBash・linuxコマンドに公式ネイティブ対応★3 [無断転載禁止]©2ch.net
https://mevius.5ch.net/test/read.cgi/win/1459904955/
【Bash】Windows Subsystem for Linux【Ubuntu】2©2ch.net
https://mao.5ch.net/test/read.cgi/linux/1468149353/
Bash for Ubuntu for Windowsで開発しようぜ! [無断転載禁止]©2ch.net
https://medaka.5ch.net/test/read.cgi/prog/1493495197/
2018/05/03(木) 18:32:16.95
乙
落ち着いたスレになりますように
落ち着いたスレになりますように
11名無しさん@お腹いっぱい。
2018/05/04(金) 01:42:33.99 シェルスクリプトの勉強をしたいです
WindowsよりMacの方がいいんですかね?
WindowsよりMacの方がいいんですかね?
2018/05/04(金) 02:42:43.21
今Windows使ってるならその上で環境作った方が楽だと思うけど
わざわざMac買ったって他のことで苦労するよ
わざわざMac買ったって他のことで苦労するよ
13名無しさん@お腹いっぱい。
2018/05/04(金) 05:30:58.55 >>12
ありがとうございます
今Windowsでvirtualboxにubuntu入れてやっているんです
Macだと仮想環境じゃなくてその物がUNIXだから勉強するにはもっといいかなと思ったんです
職場が今年からMacになってしまいましたし
ありがとうございます
今Windowsでvirtualboxにubuntu入れてやっているんです
Macだと仮想環境じゃなくてその物がUNIXだから勉強するにはもっといいかなと思ったんです
職場が今年からMacになってしまいましたし
2018/05/04(金) 08:56:52.55
手始めにbashの入力履歴を自在に編集できるスクリプト組んでごらん
2018/05/04(金) 12:11:06.16
Windows 10ならWSLでUbuntuがほぼそのまま使えるやん
2018/05/04(金) 12:37:28.42
WSLってちゃちな玩具みたいなもんだろ
あんなもの使ってる奴がここにいるのか?
そもそろWindows10て
あんなもの使ってる奴がここにいるのか?
そもそろWindows10て
2018/05/04(金) 15:36:37.70
>>16
使えるよ
いままでcygwin入れてたけど、代わりに使ってる。
最近はちゃんと動くし、
cygwinよりはちゃんとしてるから色々使いやすい。
飽くまでもローカルでのツール的な使い方でね
あとはGimpとかわざわざWin32版を使ってたようなものもそうする必要語なくなった。
サーバで動かすようなものを作る場合はちゃんとlinuxネイティブの環境でコンパイルから動作確認までする。
使えるよ
いままでcygwin入れてたけど、代わりに使ってる。
最近はちゃんと動くし、
cygwinよりはちゃんとしてるから色々使いやすい。
飽くまでもローカルでのツール的な使い方でね
あとはGimpとかわざわざWin32版を使ってたようなものもそうする必要語なくなった。
サーバで動かすようなものを作る場合はちゃんとlinuxネイティブの環境でコンパイルから動作確認までする。
2018/05/04(金) 16:42:49.37
2018/05/06(日) 17:57:39.06
このスレの親だっけか。aliasが便利っていうレスがあったけど、確かにそうだわ。
とりあえずalias NOP=':'として明示的に「何もしない」命令を作れる。
NOP() {:}より作るのが楽。
とりあえずalias NOP=':'として明示的に「何もしない」命令を作れる。
NOP() {:}より作るのが楽。
2018/05/06(日) 18:51:19.88
"NOP" 3文字
":" 1文字
":" 1文字
2018/05/07(月) 01:43:43.81
>>20 ←こういう奴ってオブジェクト指向とか理解できなさそう。
「クラス作るとかコードが長くなるだけじゃん」とか言って。
「クラス作るとかコードが長くなるだけじゃん」とか言って。
2018/05/07(月) 02:20:08.19
個人的にはnopより:の方が直感的に理解できる
2018/05/07(月) 02:40:25.27
シェルスクリプトにオブジェクト指向とか言い出す方がTPOをわきまえないトンチンカンだけどな
シェルスプリプトもオブジェクト指向な言語(?)になればいいね。いや、C言語が未だに基盤としては唯一なのと同じで必要としてない、されてないか
シェルスプリプトもオブジェクト指向な言語(?)になればいいね。いや、C言語が未だに基盤としては唯一なのと同じで必要としてない、されてないか
2018/05/07(月) 06:45:58.87
>>23
PowerShell
PowerShell
2018/05/07(月) 07:46:31.93
素人の頓珍漢な質問だと思います。すいません。
$ echo "$$" | echo "$(cat), $$"
とすると、
n, n
といったように同一の番号が表示されますが、これは正当な挙動なのでしょうか。
$$には現行コマンドのPIDが入っているとマニュアルで読んだのですが、なぜ違うコマンドが同じPIDを持っているのでしょうか……。
$ echo "$$" | echo "$(cat), $$"
とすると、
n, n
といったように同一の番号が表示されますが、これは正当な挙動なのでしょうか。
$$には現行コマンドのPIDが入っているとマニュアルで読んだのですが、なぜ違うコマンドが同じPIDを持っているのでしょうか……。
2018/05/07(月) 08:16:27.82
なんのマニュアルか知らんけど違うよ。シェルのPID。なので同じなのは当然
ps
ってしてみりゃ、そのPIDがそのシェルのPIDってわかるっしょ
($$にも問題あって、より正確には$BASHPIDの方がだけど)
ps
ってしてみりゃ、そのPIDがそのシェルのPIDってわかるっしょ
($$にも問題あって、より正確には$BASHPIDの方がだけど)
2018/05/07(月) 08:41:25.61
BASHPID
Expands to the process ID of the current bash process. This
differs from $$ under certain circumstances, such as subshells
that do not require bash to be re-initialized.
Expands to the process ID of the current bash process. This
differs from $$ under certain circumstances, such as subshells
that do not require bash to be re-initialized.
2018/05/07(月) 08:48:03.06
ディレクトリ→オブジェクト
実行ファイル→メソッド
テキストファイル→プロパティ
シンボリックリンク→継承、委譲
実行ファイル→メソッド
テキストファイル→プロパティ
シンボリックリンク→継承、委譲
2018/05/07(月) 10:22:35.44
2018/05/07(月) 10:25:40.68
2018/05/07(月) 12:56:16.64
構造体も配列もない言語で、そんな複雑なデータ構造使うプログラム書いちゃいかん。
そういうのは他の言語に任せて、シェルスクリプトはその間のグルーに徹するようにしないと保守不能になる。
そういうのは他の言語に任せて、シェルスクリプトはその間のグルーに徹するようにしないと保守不能になる。
2018/05/07(月) 16:38:07.46
>>31
おじさん誰にレスしてんの?
おじさん誰にレスしてんの?
2018/05/07(月) 18:26:06.42
>>31
配列あるよ?POSIXシェルにはないんだっけ?
配列あるよ?POSIXシェルにはないんだっけ?
2018/05/07(月) 19:03:39.00
少なくとも ksh で配列を使ったことはあるなあ。
2018/05/07(月) 21:25:39.68
2018/05/07(月) 21:27:58.28
オブジェクト志向じゃない、オブジェクト指向だ、すまん。
なんで変換ミスって送った直後に気づくんだろうなあ。
なんで変換ミスって送った直後に気づくんだろうなあ。
2018/05/08(火) 03:13:56.60
オブジェクト指向云々は、多分、
名前重要って事を言いたかったんだと思うよ
名前重要って事を言いたかったんだと思うよ
2018/05/08(火) 03:29:14.73
たぶん>>21はオブジェクト指向の文脈で名前の付け方の重要性を知って
んで、その前提でオブジェクト指向って単語を出したんだろうけど
他の人はその前提を共有してないから、シェルでオブジェクト指向(笑)となって
挙句関数型だの尾ひれはひれに揚げ足取りするに至ったと憶測しました
んで、その前提でオブジェクト指向って単語を出したんだろうけど
他の人はその前提を共有してないから、シェルでオブジェクト指向(笑)となって
挙句関数型だの尾ひれはひれに揚げ足取りするに至ったと憶測しました
2018/05/08(火) 03:39:56.61
納得した
2018/05/08(火) 04:42:22.78
2018/05/08(火) 06:28:52.79
名前に拘るならNOPも略さずにNoOperationで
2018/05/08(火) 08:53:21.78
名前の長さとオブジェクト指向は独立した話だからなあ。
オブジェクト指向って言うからにはクラスか、あるいは型のプロトタイプか、どっちかは必須だろう。
オブジェクト指向って言うからにはクラスか、あるいは型のプロトタイプか、どっちかは必須だろう。
2018/05/08(火) 09:49:10.08
2018/05/09(水) 20:50:52.59
秒を分に変更するにはどんなコマンドを使ったらいいですか?
3000という文字があったとして、50にしたいです
date -d "3000" +"%M"だとダメでした
3000という文字があったとして、50にしたいです
date -d "3000" +"%M"だとダメでした
2018/05/09(水) 21:22:02.94
$(( 3000 / 60 ))
`expr 3000 / 60`
普通に算術で
`expr 3000 / 60`
普通に算術で
2018/05/09(水) 21:32:59.67
2018/05/09(水) 21:34:52.98
2018/05/09(水) 22:11:38.47
date -d "@3000" +"%M"
これだと、59分以上を表せなかったです。
これだと、59分以上を表せなかったです。
2018/05/10(木) 00:27:18.20
まあ、算術コマンド使ったほうがいいわな。
2018/05/10(木) 00:34:52.62
2018/05/10(木) 01:12:34.32
だんだん数値が大きくなっていって閏年で悩むんだろうなあ
2018/05/10(木) 03:16:11.29
dc -e '3000 60 / p'
2018/05/10(木) 16:08:46.44
2018/05/10(木) 16:49:23.89
2018/05/10(木) 19:04:07.72
仕様が不明です
2018/05/10(木) 20:04:02.04
好きに解釈して脱線レスを繋げるスレ
2018/05/17(木) 08:37:52.41
すいません。
いま、誤ってログインシェルの設定ファイル(~/.bashrc)を空にしてしまいました。
しかし、まだログアウトしていないため、今稼動しているシェルはその設定を保持しています。
例えばエイリアスを知りたければ`alias`とやればいいはずですが、ほかにもシェル関数や環境変数なども読み込んでいます。
これらの値を今取得するにはどうすればいいですかね。
いま、誤ってログインシェルの設定ファイル(~/.bashrc)を空にしてしまいました。
しかし、まだログアウトしていないため、今稼動しているシェルはその設定を保持しています。
例えばエイリアスを知りたければ`alias`とやればいいはずですが、ほかにもシェル関数や環境変数なども読み込んでいます。
これらの値を今取得するにはどうすればいいですかね。
58名無しさん@お腹いっぱい。
2018/05/17(木) 08:57:58.082018/05/17(木) 08:58:54.79
変数はsetとかprintenv
関数知らん
関数知らん
2018/05/17(木) 10:41:31.20
関数はtypeで返ってくるんじゃない?
2018/05/17(木) 10:46:38.47
関数はsetで出てこね?
printenvなんてあったのね。env使ってた。diffってみたが違いがわからんな。printenvの意味を後で調べてみよう
printenvなんてあったのね。env使ってた。diffってみたが違いがわからんな。printenvの意味を後で調べてみよう
6257
2018/05/17(木) 11:04:55.79 みなさまありがとうございます。
set -oおよびprintenv(これはenvと同じ出力でした。なんとなくprintenvを使いました)でかなりの部分を取り戻すことができました。
ただ、set -oで出力されるオプション設定の項目数が少ないように思うんだけども、どうなんですかね。
allexport off
braceexpand on
emacs off
errexit off
errtrace off
functrace off
hashall on
histexpand on
history on
ignoreeof off
interactive-comments on
keyword off
monitor on
noclobber off
noexec off
noglob off
nolog off
notify off
nounset off
onecmd off
physical off
pipefail off
posix off
privileged off
verbose off
vi on
xtrace off
なお、これらの内allexportやxtraceなどは設定した覚えがありません。システム設定(/etc/bash.bashrcあたり)でも設定されてません。不思議です……。
厚かましいのですが、できれば全てのオプションの状態を把握したいです。
set -oおよびprintenv(これはenvと同じ出力でした。なんとなくprintenvを使いました)でかなりの部分を取り戻すことができました。
ただ、set -oで出力されるオプション設定の項目数が少ないように思うんだけども、どうなんですかね。
allexport off
braceexpand on
emacs off
errexit off
errtrace off
functrace off
hashall on
histexpand on
history on
ignoreeof off
interactive-comments on
keyword off
monitor on
noclobber off
noexec off
noglob off
nolog off
notify off
nounset off
onecmd off
physical off
pipefail off
posix off
privileged off
verbose off
vi on
xtrace off
なお、これらの内allexportやxtraceなどは設定した覚えがありません。システム設定(/etc/bash.bashrcあたり)でも設定されてません。不思議です……。
厚かましいのですが、できれば全てのオプションの状態を把握したいです。
6357
2018/05/17(木) 11:06:15.20 すいません。shoptで行けました。ほとんど修復できました。感謝します。
2018/05/17(木) 13:23:11.51
2018/05/17(木) 13:36:50.52
>>64
ですよね……。
なぜかバックアップとシンボリックリンクを張るという馬鹿な真似をしてました。
それはもうバックアップとは言わねぇか。
次にパソコンを買った時はLVMやらで柔軟なパーティションを組んでやります
ですよね……。
なぜかバックアップとシンボリックリンクを張るという馬鹿な真似をしてました。
それはもうバックアップとは言わねぇか。
次にパソコンを買った時はLVMやらで柔軟なパーティションを組んでやります
2018/05/17(木) 15:18:16.60
ドットファイルみたいにちょくちょく書き換えしててなくなると困るファイルは
RCSなんかで管理しとくといいんじゃない?
RCSなんかで管理しとくといいんじゃない?
2018/05/17(木) 17:13:16.93
RCSとか石器時代かよ
2018/05/17(木) 19:40:33.27
SCCSですよね
2018/05/17(木) 19:43:19.47
>>66
ホームぶっ飛ばしたバカを見たことがある。 多分 rm -fr ./work を rm -fr . /work って打ったんだろう。
ホームぶっ飛ばしたバカを見たことがある。 多分 rm -fr ./work を rm -fr . /work って打ったんだろう。
2018/05/17(木) 19:48:04.21
rm -rfは本当に怖いな
71名無しさん@お腹いっぱい。
2018/05/19(土) 07:42:41.44 ★★★共産●主義者とは言葉の通じない赤犬であり、決して人間と見なしてはならない!時たま本当らしいことを言うとしても、それはより大きな嘘を覆い隠す為の罠である。★★★
● この掲示板(万有サロン)に優秀な書き込みをして、総額148万円の賞金をゲット●しよう!(*^^)v
http://jbbs.livedoor.jp/study/37●29/ →リンクが不良なら、検索窓に入れる!●
● この掲示板(万有サロン)に優秀な書き込みをして、総額148万円の賞金をゲット●しよう!(*^^)v
http://jbbs.livedoor.jp/study/37●29/ →リンクが不良なら、検索窓に入れる!●
72名無しさん@お腹いっぱい。
2018/05/21(月) 09:50:43.86 /home直下にhoge00〜hoge99までの名前がついているディレクトリがあるとします
他にも/home直下にはディレクトリが存在します
ディレクトリ名を検索しながら、hoge00-hoge99の名前にマッチした複数のディレクトリの中の、ある特定のディレクトリに既存のファイルであるtestという名前のファイルをコピーしたいです
ある特定の、という意味は
・hoge○○ディレクトリ直下にtestというファイルがあったら→スルー
・testというファイル名のファイルがhoge○○直下になければ、既存のtestを該当hoge○○ディレクトリ直下にコピー
このようなシェルスクリプトを書きたいのですが教えてください
他にも/home直下にはディレクトリが存在します
ディレクトリ名を検索しながら、hoge00-hoge99の名前にマッチした複数のディレクトリの中の、ある特定のディレクトリに既存のファイルであるtestという名前のファイルをコピーしたいです
ある特定の、という意味は
・hoge○○ディレクトリ直下にtestというファイルがあったら→スルー
・testというファイル名のファイルがhoge○○直下になければ、既存のtestを該当hoge○○ディレクトリ直下にコピー
このようなシェルスクリプトを書きたいのですが教えてください
2018/05/21(月) 09:55:33.18
forで回してifで分岐してcpするだけだと思うけど、
自分ではどこまでできてんの?
自分ではどこまでできてんの?
74名無しさん@お腹いっぱい。
2018/05/21(月) 10:02:06.882018/05/21(月) 10:09:07.33
それを使わずにどうやろうというんだ
要するに連番ディレクトリに全てtestファイルがあるようにしたい、ただし既存のtestファイルは上書きしない、でいいのか
要するに連番ディレクトリに全てtestファイルがあるようにしたい、ただし既存のtestファイルは上書きしない、でいいのか
76名無しさん@お腹いっぱい。
2018/05/21(月) 10:10:59.07 >>75
全くおっしゃる通りです
全くおっしゃる通りです
2018/05/21(月) 10:19:49.89
filehoge="test"
[ ! -f "$filehoge" ] exit 1
seq -f 'hoge%02g' 1 99 | while read hogedir
do
[ -d "$hogedir" ] && [ ! -f "$hogedir/$filehoge" ] && { cp "$filehoge" "$hogedir"; echo "copied into $hogedir"; }
done
[ ! -f "$filehoge" ] exit 1
seq -f 'hoge%02g' 1 99 | while read hogedir
do
[ -d "$hogedir" ] && [ ! -f "$hogedir/$filehoge" ] && { cp "$filehoge" "$hogedir"; echo "copied into $hogedir"; }
done
2018/05/21(月) 10:20:58.69
seq -f 'hoge%02g' 0 99
の間違い。00からなので
の間違い。00からなので
79名無しさん@お腹いっぱい。
2018/05/21(月) 10:25:03.402018/05/21(月) 10:38:02.84
お題として遊ぶなら、findしてexec内でやっつけるとかかな
8172
2018/05/21(月) 10:39:59.27 自分はfindを使うやり方を考えていました
2018/05/21(月) 10:42:46.03
findは存在を確認するのは楽だろうけど、存在しないことを確認するのは面倒じゃない?
2018/05/21(月) 10:50:09.46
2018/05/21(月) 10:57:49.03
あー、" で括るだけか。アレの場合も
for hogedir in "$(seq -f 'hoge%02g' 1 99)"
が、よりかな
for hogedir in "$(seq -f 'hoge%02g' 1 99)"
が、よりかな
2018/05/21(月) 11:19:28.01
やっぱりダメなのかな??
touch 'hoge 01';touch 'hoge$02'
for name in "$(/bin/ls -1)"
/bin/ls -1 | while read name
やっぱforはメンドクサイから、安心簡単な while でいいやっ
touch 'hoge 01';touch 'hoge$02'
for name in "$(/bin/ls -1)"
/bin/ls -1 | while read name
やっぱforはメンドクサイから、安心簡単な while でいいやっ
8672
2018/05/21(月) 12:04:38.468772
2018/05/21(月) 12:08:42.09 初心者ですが面白くなってきました
今日中に仕上げられるよう頑張ります
今日中に仕上げられるよう頑張ります
2018/05/21(月) 12:31:18.57
楽しめるうちにたくさん学習しておくんだぞ
2018/05/21(月) 15:08:37.35
90名無しさん@お腹いっぱい。
2018/05/21(月) 18:16:23.91 質問です。
シェルスクリプトファイルを実行する方法として
1. 利用者に応じた実行権限を賦与する
$ chmod +x scriptfile.sh
$ ./scriptfile.sh
2. sh(1)コマンドの引数として実行する
$ sh scriptfile.sh
という方法がありますが,どちらがより良いか教えてください(というかスクリプトの実行結果自体にはたして違いはあるのでしょうか)。
今まで一つ目の方法しか知りませんでしたが,もし二つ目になんら欠点がなければよりコマンドの数が少ない
(極端に言えばchmod(1)コマンドがなくてもできる)後者の方法を使っていきたいです。
どうかよろしくおねがいします。
シェルスクリプトファイルを実行する方法として
1. 利用者に応じた実行権限を賦与する
$ chmod +x scriptfile.sh
$ ./scriptfile.sh
2. sh(1)コマンドの引数として実行する
$ sh scriptfile.sh
という方法がありますが,どちらがより良いか教えてください(というかスクリプトの実行結果自体にはたして違いはあるのでしょうか)。
今まで一つ目の方法しか知りませんでしたが,もし二つ目になんら欠点がなければよりコマンドの数が少ない
(極端に言えばchmod(1)コマンドがなくてもできる)後者の方法を使っていきたいです。
どうかよろしくおねがいします。
2018/05/21(月) 18:37:27.68
psで見てみ。1 でも、そのシェルスクリプトファイルのシバン(*1)で指定したインタプリタ(シェル)を、引数としてそのシェルスクリプトファイルをで起動してるから
1はコマンド、2はスクリプトファイルっていう違い。/usr/binなどの中のコマンドでも実態はシェルスクリプトやPerlスクリプト等なのがあるけど、そんなの気にしてない気づいてなくコマンドとして使ってたりするだろ?
まあ、コマンドとして必要じゃない(コマンドの数が少ないって意味がわからんが一時的とかか?)んだったら、別にスクリプトファイルとしてで全然普通
1) お約束事項のような
#!/bin/sh
もう俺は気にしてなくて
#!/bin/bash
だけど
1はコマンド、2はスクリプトファイルっていう違い。/usr/binなどの中のコマンドでも実態はシェルスクリプトやPerlスクリプト等なのがあるけど、そんなの気にしてない気づいてなくコマンドとして使ってたりするだろ?
まあ、コマンドとして必要じゃない(コマンドの数が少ないって意味がわからんが一時的とかか?)んだったら、別にスクリプトファイルとしてで全然普通
1) お約束事項のような
#!/bin/sh
もう俺は気にしてなくて
#!/bin/bash
だけど
2018/05/21(月) 19:05:05.59
使い捨てか頻繁に使うか
2018/05/21(月) 19:18:46.42
>>82
hogefile="test"
find . -maxdepth 1 -type d -name 'hoge[0-9][0-9]' -exec bash -c "test -f {}/$hogefile || cp $hogefile {}" \;
こんな感じとか?俺は、俺も、そうはしないけど。-exec は使ったことないのでどこまでできるのかよくわからんな。なのでbashスクリプトにした/逃げた
hogefile="test"
find . -maxdepth 1 -type d -name 'hoge[0-9][0-9]' -exec bash -c "test -f {}/$hogefile || cp $hogefile {}" \;
こんな感じとか?俺は、俺も、そうはしないけど。-exec は使ったことないのでどこまでできるのかよくわからんな。なのでbashスクリプトにした/逃げた
2018/05/21(月) 19:23:57.41
2018/05/21(月) 19:38:22.80
シェルプロセスが勝手に起動されるか明示的に起動するかで、なんかあった(rcやprofileを読まないとか起動時の環境設定の動作)が今回のようなのは関係ないだろう、気にすんなw
PIDはだいたい普通にインクリメント。なにかプロセスが起動するごとにそれの新しいPIDはインクリメントされた値かな
PIDはだいたい普通にインクリメント。なにかプロセスが起動するごとにそれの新しいPIDはインクリメントされた値かな
2018/05/21(月) 22:42:20.13
OSによってはセキュリティ的な理由でPIDをある程度ランダムに割り当てるので連続にはならない。
BSD系はどれもデフォルトだとランダムじゃないかな。
BSD系はどれもデフォルトだとランダムじゃないかな。
2018/05/21(月) 23:07:13.46
PIDが若いから特権があるわけでもないしPIDが推測しやすいからっていうセキュリティ懸念ってなんだろ?
2018/05/21(月) 23:36:33.95
cat >/tmp/tmpfile.$$
みたいに手抜きな一時ファイル作成してると
シンボリックリンク攻撃くらうからそのリスクを減らせたりする。
ちゃんと攻撃避ける正しい書き方してれば関係ない話だけど、
世の中にテキトーなスクリプトは尽きないから。
みたいに手抜きな一時ファイル作成してると
シンボリックリンク攻撃くらうからそのリスクを減らせたりする。
ちゃんと攻撃避ける正しい書き方してれば関係ない話だけど、
世の中にテキトーなスクリプトは尽きないから。
2018/05/21(月) 23:39:26.38
なるほど。OSのセキュリティではなくPIDを利用したナニかに対するか
2018/05/21(月) 23:43:34.05
ん?PIDを知ることができる(当然知ることは普通にできる)ってとこがキモで推測しやすいのとは別のような。まあ、いいや、ナニかあるなってことで
2018/05/21(月) 23:47:30.91
ああ、シンボリックリンク攻撃を誤解してた。事前に(大量に)シンボリックリンク作ってしまうわけね。なるほど
102名無しさん@お腹いっぱい。
2018/05/22(火) 02:34:29.36 知り合いから教えてもらったパソコン一台でお金持ちになれるやり方
時間がある方はみてもいいかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
GXGZT
時間がある方はみてもいいかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
GXGZT
2018/05/22(火) 12:13:09.28
シンボリック攻撃ってシンボリックリンクを作成する時にパーミッション関連の隙を突いて本来保護されているコマンドを改竄することだよね。
大量に作成する必要なないんじゃないかしらん。もちろんある種の陽動にはなるだろうけど。
大量に作成する必要なないんじゃないかしらん。もちろんある種の陽動にはなるだろうけど。
10472
2018/05/22(火) 19:13:09.08 >>77>>78
これで一発で成功しました
驚いています
このコードをもっと理解すると共に、自分も先輩のようなプログラマーになれるよう勉強を続けていきたいです
マジで助かり、勉強になりました
本当にありがとうございました
これで一発で成功しました
驚いています
このコードをもっと理解すると共に、自分も先輩のようなプログラマーになれるよう勉強を続けていきたいです
マジで助かり、勉強になりました
本当にありがとうございました
10572
2018/05/22(火) 23:19:32.732018/05/22(火) 23:39:50.60
>>105
別人だ。俺はスマホだからここにコードは書けん
別人だ。俺はスマホだからここにコードは書けん
2018/05/23(水) 03:10:49.54
あのなぁ、お前さんここをどこの板だと思っているんだい?
歴史あんだぜ
まあその話はもうほんとに一昔前の出来事になっちまったけどな
歴史あんだぜ
まあその話はもうほんとに一昔前の出来事になっちまったけどな
2018/05/23(水) 04:11:43.99
イザナミだ
2018/05/23(水) 10:26:18.02
伝説って?
2018/05/23(水) 10:49:34.46
なんだったか、2chの鯖に関する貢献があったような
当時からいたわけじゃないからどっかのサイトで知った話だが
Flash黄金期にその話がFlash化されてたから見て知ったな
当時からいたわけじゃないからどっかのサイトで知った話だが
Flash黄金期にその話がFlash化されてたから見て知ったな
2018/05/23(水) 12:29:35.00
read.cgiの改良作業だよね。
直接関わってはいないけど、当時はリアルタイムで見ていたし、手元の
どこかに運営から住民に開示されたread.cgiも残ってると思う。
アクセスが増えて通信量が増加して、当時借りてたホスティング業者から
追い出されそうになってたんだけど、HTTPの通信をgzipで圧縮して通信量を
削減しようという話だったかと思う。
ただ、UNIX板でも話をして作業には参加していたものの、プログラム板と
かの方でもガリガリやっていたような記憶がある。
直接関わってはいないけど、当時はリアルタイムで見ていたし、手元の
どこかに運営から住民に開示されたread.cgiも残ってると思う。
アクセスが増えて通信量が増加して、当時借りてたホスティング業者から
追い出されそうになってたんだけど、HTTPの通信をgzipで圧縮して通信量を
削減しようという話だったかと思う。
ただ、UNIX板でも話をして作業には参加していたものの、プログラム板と
かの方でもガリガリやっていたような記憶がある。
2018/05/23(水) 14:05:37.49
それとは別に SYN flood 攻撃に対し SYN cookie 有効化で対抗した時はUNIX板で主に議論してた気がする。
リアルタイムで見てたというか発言してたけど(SYN cacheと比較した得失とか書いた気が)、
こういうのはあくまで個人としての行動なので板自慢に繋げるのは好きじゃないな。
むしろ統一とかとれてなくてカオスなのが5chの良いところだと思うので。
リアルタイムで見てたというか発言してたけど(SYN cacheと比較した得失とか書いた気が)、
こういうのはあくまで個人としての行動なので板自慢に繋げるのは好きじゃないな。
むしろ統一とかとれてなくてカオスなのが5chの良いところだと思うので。
2018/05/23(水) 15:36:26.79
>>112
gzip圧縮ってapacheの設定じゃないの?
gzip圧縮ってapacheの設定じゃないの?
2018/05/23(水) 21:48:48.59
他の顧客がいるからミドルウェアで圧縮できない、というホスティング屋を使っていたんじゃなかったのかな(後から知った話だから、違うかもしれない)
116名無しさん@お腹いっぱい。
2018/05/23(水) 23:46:31.17 オイスター作戦ね
もう15年は前でしょ
もう15年は前でしょ
2018/05/24(木) 00:55:41.47
>>113
新ブラッドなつかしす
新ブラッドなつかしす
2018/05/24(木) 07:58:22.34
馴れ合いならよそでやれ(キリッ)
2018/05/24(木) 08:33:06.96
なれ合いですらなくて、おっさんが勝手に郷愁に浸ってるだけという。
2018/05/24(木) 20:05:30.06
$ cat a.file > b.file
とやるのと
$ cp a.file b.file
とやるので違いが生じる場合はありますか?
とやるのと
$ cp a.file b.file
とやるので違いが生じる場合はありますか?
2018/05/24(木) 20:22:49.22
>>120
パーミッションがどうのこうの
パーミッションがどうのこうの
2018/05/24(木) 21:28:22.51
>>120
b.fileというディレクトリがあった場合の動作
b.fileというディレクトリがあった場合の動作
2018/05/24(木) 22:42:29.15
ディレクトリの場合はケツに / つけろや
2018/05/24(木) 23:23:09.46
イミフ
2018/05/24(木) 23:30:13.33
2018/05/25(金) 00:17:51.08
意図してディレクトリじゃないからつけろもなんもないのにな
2018/05/25(金) 10:57:24.97
>>120
CoWが効いたり
CoWが効いたり
2018/05/25(金) 10:59:54.02
そんなcpの実装ってある?
2018/05/25(金) 11:34:57.95
Linuxのは実装はしてるみたいだな。デフォではないから話の流れでの実装してるとは言えんけど
2018/05/25(金) 14:50:09.69
シェルスクリプトの勉強をするのにおすすめの本はありますか?
2018/05/25(金) 15:20:37.79
2018/05/26(土) 04:09:24.19
お知恵お借りしたいです。
awk '($3 !~ /ここにパイプ区切りで記述したい/) && ($4 ~ /01/)' output.txt
上記のawkで条件に当てはまるファイルを絞り込みたいのですが
その1 別ファイルからのawkの結果を $aaa に設定してある
その2 $aaa は複数列の出力なので set コマンドにて位置パラメータに分けてある
その3 各変数を展開して文字列としてパイプで区切ってawkを使いたい。
以上のようなことをやってみたのですがどうもうまく行きません。
また、違うやり方もあるようでしたらご教示いただけるとありがたいです。
よろしくお願いします。
awk '($3 !~ /ここにパイプ区切りで記述したい/) && ($4 ~ /01/)' output.txt
上記のawkで条件に当てはまるファイルを絞り込みたいのですが
その1 別ファイルからのawkの結果を $aaa に設定してある
その2 $aaa は複数列の出力なので set コマンドにて位置パラメータに分けてある
その3 各変数を展開して文字列としてパイプで区切ってawkを使いたい。
以上のようなことをやってみたのですがどうもうまく行きません。
また、違うやり方もあるようでしたらご教示いただけるとありがたいです。
よろしくお願いします。
2018/05/26(土) 04:35:42.94
> $aaa は複数列の出力なので set コマンドにて位置パラメータに分けてある
これはどういう意味? set はシェル自身の設定だと思うんだけども
これはどういう意味? set はシェル自身の設定だと思うんだけども
2018/05/26(土) 05:07:26.79
cat ZZZ.txt |grep XXX
hoge
fuga
と複数行でしたので
aaa=$(cat ZZZ.txt |grep XXX) としてみました。
そして set $aaa と設定して
$1 $2 $3 ...と変数が自動で割り振られるなら増減しても対応できるのでは考えました。
(本来は0個のときもあるのでそれも考慮しなければならないんですが)
そして $1 等に入っている変数(hogeやfuga) を展開してパイプで区切れれば動くと思うんです。
hoge
fuga
と複数行でしたので
aaa=$(cat ZZZ.txt |grep XXX) としてみました。
そして set $aaa と設定して
$1 $2 $3 ...と変数が自動で割り振られるなら増減しても対応できるのでは考えました。
(本来は0個のときもあるのでそれも考慮しなければならないんですが)
そして $1 等に入っている変数(hogeやfuga) を展開してパイプで区切れれば動くと思うんです。
2018/05/26(土) 07:13:03.91
ごめん俺の理解が悪いと思うのだがあなたのやりたいことが見えない。
他の人にまかせるわ。
もしくはZZZ.txtの内容をプライバシーに障らない程度に具体的に教えてほしい。
「ZZZ.txtからgrepで取り出した値をパイプで連結して処理する」という文言からは
ZZZ.txtには命令が一行ずつ書かれているように受け取れるのだが、そうじゃないよね。
それとも「パイプで繋ぐ」というのはシェルのパイプ実行ではなく単に文字列としてパイプを区切りとして使うという意味?
もしそうなら
$ cat ZZZ.txt | grep XXX | tr '\n' '|' | sed 's/|$//1'
↑こういうので行けるけど。違うでしょ?
他の人にまかせるわ。
もしくはZZZ.txtの内容をプライバシーに障らない程度に具体的に教えてほしい。
「ZZZ.txtからgrepで取り出した値をパイプで連結して処理する」という文言からは
ZZZ.txtには命令が一行ずつ書かれているように受け取れるのだが、そうじゃないよね。
それとも「パイプで繋ぐ」というのはシェルのパイプ実行ではなく単に文字列としてパイプを区切りとして使うという意味?
もしそうなら
$ cat ZZZ.txt | grep XXX | tr '\n' '|' | sed 's/|$//1'
↑こういうので行けるけど。違うでしょ?
2018/05/26(土) 07:35:37.60
説明がヘタですみません。ZZZ.txtの中身はyoutube等の
URL タイトル 日付 がタブ区切りで複数行書かれているファイルです。
123.com hoge 02
456.com fuga 05
789.com peke 08
のような感じです。
それらから条件から当てはまる行や列を抜き出してパイプ区切りにしたいのです。
パイプの解釈は hoge|fuga で hoge or fuga と展開して awkのパターン入れて読ませたい訳です。
URL タイトル 日付 がタブ区切りで複数行書かれているファイルです。
123.com hoge 02
456.com fuga 05
789.com peke 08
のような感じです。
それらから条件から当てはまる行や列を抜き出してパイプ区切りにしたいのです。
パイプの解釈は hoge|fuga で hoge or fuga と展開して awkのパターン入れて読ませたい訳です。
2018/05/26(土) 08:23:21.90
>>137
なるほどね。こういうこと? (ZZZ.txtの代わりにヒアドキュメント使ってる)
$ cat <<. | awk '($2 ~ /(hoge|fuga)/) && ($3 ~ /02/) {print}'
example111.com hoge 02
example222.com hoge 03
456.com fuga 05
456example.com fuga 02
789.com peke 08
.
example111.com hoge 02
456example.com fuga 02
なるほどね。こういうこと? (ZZZ.txtの代わりにヒアドキュメント使ってる)
$ cat <<. | awk '($2 ~ /(hoge|fuga)/) && ($3 ~ /02/) {print}'
example111.com hoge 02
example222.com hoge 03
456.com fuga 05
456example.com fuga 02
789.com peke 08
.
example111.com hoge 02
456example.com fuga 02
2018/05/26(土) 09:09:37.27
勉強不足でヒアドキュメントの知識が浅くて申し訳ないのですが
多分合ってると思います。
うまくいかないのは hoge|fuga の部分が一定でなく
peke|hoge|miso だったり fuga のみだったりするので悩ましいのです。
多分合ってると思います。
うまくいかないのは hoge|fuga の部分が一定でなく
peke|hoge|miso だったり fuga のみだったりするので悩ましいのです。
2018/05/26(土) 09:53:14.80
条件をコマンドの結果から作りたい&その条件をawkの条件に埋め込みたいってだけ?
hogehuga=( $(cat ZZZ.txt |grep XXX) )
SAVEIFS=$IFS
IFS=$'|'
hogehuga="${hogehuga[*]}"
IFS=$SAVEIFS
[ "$hogehuga" = "" ] && hogehuga="0個の条件"
awk '($3 !~ /'"$hogehuga"'/) && ($4 ~ /01/)' output.txt
って感じとか
hogehuga=( $(cat ZZZ.txt |grep XXX) )
SAVEIFS=$IFS
IFS=$'|'
hogehuga="${hogehuga[*]}"
IFS=$SAVEIFS
[ "$hogehuga" = "" ] && hogehuga="0個の条件"
awk '($3 !~ /'"$hogehuga"'/) && ($4 ~ /01/)' output.txt
って感じとか
2018/05/26(土) 10:05:05.40
ああ、条件の作成は>>136の最後ですでにワンライナーで教えているのか。しつれい
2018/05/26(土) 10:44:16.45
2018/05/26(土) 10:58:04.08
2018/05/26(土) 11:18:16.86
条件文の | をパイプとかいうからわけわかんなくなる
145133
2018/05/26(土) 11:49:32.72 そういう場合はパイプって言わないんですか。失礼しました。
正規表現でつかう or の役割を hoge fuga の間には挟みたいのです。
正規表現でつかう or の役割を hoge fuga の間には挟みたいのです。
2018/05/26(土) 12:01:23.51
2018/05/26(土) 12:03:34.81
awkの手前で別途 fgrep -f か egrep -f を使った方が、改行→「|」変換をサボれて楽な気がする。
fgrep/egrep -f を使うときは bashないし zsh 依存になるけど
fgrep -f <(grep XXX ZZZ.txt)
と書くともっと楽だね。
fgrep/egrep -f を使うときは bashないし zsh 依存になるけど
fgrep -f <(grep XXX ZZZ.txt)
と書くともっと楽だね。
2018/05/26(土) 12:10:12.44
\じゃないよバックスラッシュだよ
というのがありそうな気もしないでもない
というのがありそうな気もしないでもない
149133
2018/05/26(土) 12:32:36.462018/05/26(土) 12:38:10.49
awk の文はただの文字列でしかない
awk '($3 !~ /'"$aaa"'/) && ($4 ~ /01/)' output.txt
でも、
awk "(\$3 !~ /${aaa}/) && (\$4 ~ /01/)" output.txt
でも(他にエスケープ必要なのあるかな?)、
普通にシェル変数を(文字列内に)展開するのと変わらんぞ
awk '($3 !~ /'"$aaa"'/) && ($4 ~ /01/)' output.txt
でも、
awk "(\$3 !~ /${aaa}/) && (\$4 ~ /01/)" output.txt
でも(他にエスケープ必要なのあるかな?)、
普通にシェル変数を(文字列内に)展開するのと変わらんぞ
2018/05/26(土) 12:42:16.30
書き損じどうこうじゃなくて、受け応えができないのが致命的ではあるなw
2018/05/26(土) 12:44:02.94
よく見たら、
hoge
fuga
から
hoge|fuga|neko
って、nekoはどこから来たっていう。まあうっかりだろけど
hoge
fuga
から
hoge|fuga|neko
って、nekoはどこから来たっていう。まあうっかりだろけど
153133
2018/05/26(土) 13:37:00.342018/05/27(日) 08:08:25.73
nekoです。nekoはいます。
2018/05/30(水) 15:51:14.73
寝た子は起こすな
寝子は起こすな
寝子は起こすな
156名無しさん@お腹いっぱい。
2018/05/30(水) 20:03:13.31 sedコマンドでSGRを扱いたいんですがどうすればいいですか。
$ echo abc | sed 's/^a/\033[1m&\033[0m/1'
などとしてaを太字にしたりしたいです。
$ echo abc | sed 's/^a/\033[1m&\033[0m/1'
などとしてaを太字にしたりしたいです。
2018/05/30(水) 20:16:35.46
echo abc | sed -e 's/^a/'$'\033[1m&'$'\033[0m/1'
2018/05/30(水) 21:08:39.87
横からだが、
なんのこっちゃと思ったら $'' はエスケープ文字処理してくれんのね。なるほど
最初のだけでいいのでは?もしくは最初に付ける。もしくは逐一付けて閉じる
echo abc | sed -e 's/^a/'$'\033[1m&\033[0m/1'
echo abc | sed -e $'s/^a/\033[1m&\033[0m/1'
echo abc | sed -e 's/^a/'$'\033''[1m&'$'\033''[0m/1'
と思いました
なんのこっちゃと思ったら $'' はエスケープ文字処理してくれんのね。なるほど
最初のだけでいいのでは?もしくは最初に付ける。もしくは逐一付けて閉じる
echo abc | sed -e 's/^a/'$'\033[1m&\033[0m/1'
echo abc | sed -e $'s/^a/\033[1m&\033[0m/1'
echo abc | sed -e 's/^a/'$'\033''[1m&'$'\033''[0m/1'
と思いました
159156
2018/05/31(木) 06:51:45.12 ありがとうございます。解決しました。
これは後出しになってしまいますが、POSIXの範囲でやりたかったので
$''ではなく$(printf)を使いました。
これは後出しになってしまいますが、POSIXの範囲でやりたかったので
$''ではなく$(printf)を使いました。
2018/06/02(土) 23:56:12.94
英語圏の序数詞を適切に処理するシェルスクリプト(というかワンライナー)を考えたのですが添削してください
$ for i in $(seq 15); do echo $i$(case $i in *1) echo st;; *2) echo nd;; *3) echo rd;; *) echo th;; esac); done
出力は一応望み通りでまたPOSIX utils+seq(1)のみで実行可能です。
$ for i in $(seq 15); do echo $i$(case $i in *1) echo st;; *2) echo nd;; *3) echo rd;; *) echo th;; esac); done
出力は一応望み通りでまたPOSIX utils+seq(1)のみで実行可能です。
2018/06/03(日) 00:35:29.50
11st とか 12nd になってるけどそれはいいの?
162名無しさん@お腹いっぱい。
2018/06/03(日) 00:38:58.53 なにいっとるんやこいつw
163名無しさん@お腹いっぱい。
2018/06/03(日) 01:12:42.26 なにいっとるんやってなにいっとるんやww
164160
2018/06/03(日) 01:46:34.86 すいません。>>161 さまのおっしゃる通りです。
$ for i in $(seq 30); do echo $i$(case $i in *1?) echo th;; *1) echo st;; *2) echo nd;; *3) echo rd;; *) echo th;; esac); done
これでどうでしょうか
$ for i in $(seq 30); do echo $i$(case $i in *1?) echo th;; *1) echo st;; *2) echo nd;; *3) echo rd;; *) echo th;; esac); done
これでどうでしょうか
2018/06/03(日) 16:20:05.98
クソ
2018/06/03(日) 16:34:12.72
いんでね
2018/06/03(日) 17:38:56.64
まず添削してくださいってどうしてほしいんだ
ちゃんと動いてんならそれはもう正解だと思うんだが
ちゃんと動いてんならそれはもう正解だと思うんだが
2018/06/03(日) 21:36:16.19
実際間違ってたんだし、いいじゃん
2018/06/04(月) 20:30:59.60
>>167
ちゃんと動いているかどうか判断できないから聞いてるんでは
ちゃんと動いているかどうか判断できないから聞いてるんでは
2018/06/04(月) 20:52:08.98
エラるのはbashのバージョンのせいかな?3.2.57ではエラる/4.3.48では問題ない
だとしたらPOSIX utils云々はちょっと違うんじゃねと思わなくもない。POSIX utils云々って書いている意図がよくわからんけど
だとしたらPOSIX utils云々はちょっと違うんじゃねと思わなくもない。POSIX utils云々って書いている意図がよくわからんけど
2018/06/04(月) 21:51:17.95
case文をこうしたら3.2.57で動いた
case $i in (*1?) echo th;; (*1) echo st;; (*2) echo nd;; (*3) echo rd;; (*) echo th;; esac
case $i in (*1?) echo th;; (*1) echo st;; (*2) echo nd;; (*3) echo rd;; (*) echo th;; esac
2018/06/04(月) 22:16:01.07
おおっ。ぱーふぇくつ(?)やねっ!
( が必要??なんなんなん??と謎だけど
( が必要??なんなんなん??と謎だけど
2018/06/04(月) 22:26:45.14
$() 内では、case の ) を case の ) と認識してないで、$( の終わりと見てまうってのか。それで普通は使わない ( をか。いちおう ( はつけてもいいのね。つけてもつけなくてもいい存在みたいだけど
2018/06/04(月) 22:42:04.72
え……
>>164 のやつ、GNU bash 4.4.12,zsh 5.3.1,dash全てで動いたんだけど(Debian GNU/Linux)。
もちろん$()判定の不具合を回避したcase ()版でも動いたけれども。
>>164 のやつ、GNU bash 4.4.12,zsh 5.3.1,dash全てで動いたんだけど(Debian GNU/Linux)。
もちろん$()判定の不具合を回避したcase ()版でも動いたけれども。
2018/06/04(月) 23:08:17.44
bashの前のバージョン 3.2.57 でのなんですけど
2018/06/04(月) 23:49:50.64
あ。>>170でそう書いてあるな……。すいません。
177名無しさん@お腹いっぱい。
2018/06/05(火) 00:18:12.94 sedなどで
1. 「%」以降改行までを削除
2. ただし「%」の直前に「\」があれば削除しない
(要するにTeXシステムのコメント除去)
をしたいです。また、できればなのですがPOSIXの範疇で行いたいです。
しかし2.を表わす正規表現が分かりません。教えていただけないでしょうか。
sedでsed -e '/%/{}'のようにして{}の内部で「\」が前置されているか判定するのが一番一般的かとは思うのですが
それさえ……。
どうかよろしくおねがいします。
1. 「%」以降改行までを削除
2. ただし「%」の直前に「\」があれば削除しない
(要するにTeXシステムのコメント除去)
をしたいです。また、できればなのですがPOSIXの範疇で行いたいです。
しかし2.を表わす正規表現が分かりません。教えていただけないでしょうか。
sedでsed -e '/%/{}'のようにして{}の内部で「\」が前置されているか判定するのが一番一般的かとは思うのですが
それさえ……。
どうかよろしくおねがいします。
2018/06/05(火) 00:27:24.06
sed -e '/^%/d' -e 's/\([^\]\)%.*$/\1/g'
でも確かTeXってオプション引数に%含まれてる場合コメントにならないんじゃなかったか?
\somecs[hoge=42%]{VAL}
↑こういうの。いや俺の記憶違いかもしれんが
でも確かTeXってオプション引数に%含まれてる場合コメントにならないんじゃなかったか?
\somecs[hoge=42%]{VAL}
↑こういうの。いや俺の記憶違いかもしれんが
2018/06/05(火) 01:22:58.47
sedのスレもあれば
正規表現のスレもある
なんでここで聞く
正規表現のスレもある
なんでここで聞く
2018/06/05(火) 01:34:56.97
使えるからかな
181名無しさん@お腹いっぱい。
2018/06/05(火) 15:36:09.34 以下のCのソースコードをシェルスクリプトに直したいのですが難しくてできない状態です
お願いできますでしょうか?
Cでは動作確認済みです
インデントするとここに貼れなかったので、見にくくなっていてすみません
どなたかよろしくお願いします
#include <stdio.h>
int main(void){
int res, i;
printf("2以上の整数をキーボードから入力してください。\n");
scanf("%d", &res);
for (i = 2; i <= res; i++) {
if (i == res) {
printf("%dは素数でした。\n", res);
}
else if ((res % i) == 0) {
printf("%dは素数ではありません。%dで割り切れます。\n", res, i);
break;
}
}
return 0;
}
お願いできますでしょうか?
Cでは動作確認済みです
インデントするとここに貼れなかったので、見にくくなっていてすみません
どなたかよろしくお願いします
#include <stdio.h>
int main(void){
int res, i;
printf("2以上の整数をキーボードから入力してください。\n");
scanf("%d", &res);
for (i = 2; i <= res; i++) {
if (i == res) {
printf("%dは素数でした。\n", res);
}
else if ((res % i) == 0) {
printf("%dは素数ではありません。%dで割り切れます。\n", res, i);
break;
}
}
return 0;
}
2018/06/05(火) 16:08:24.34
宿題っぽい
2018/06/05(火) 16:10:05.52
なんかここ最近大学の宿題か?っていう質問多いな
2018/06/05(火) 16:10:24.26
丸被りしててワロタ
2018/06/05(火) 16:12:56.96
さすがに今回のはな
2018/06/05(火) 16:18:19.15
判定方法から見直した方がいいんじゃないの
なんか無駄そう
なんか無駄そう
2018/06/05(火) 16:31:28.92
宿題は自分でやろう
188181
2018/06/05(火) 16:41:35.30 その通りっすね
スレ汚し失礼しました
スレ汚し失礼しました
2018/06/05(火) 17:10:33.43
以下のCのソースコードをシェルスクリプトに直したいのですが
× 難しくてできない状態です
○ 馬鹿だからできないです
勝手に難しい状態にするんじゃねーよ
× 難しくてできない状態です
○ 馬鹿だからできないです
勝手に難しい状態にするんじゃねーよ
2018/06/05(火) 17:13:20.82
普通に読めば自分にとっては難しいってことなんじゃ
大学生の宿題も困るが読解力の無いバカも困る
大学生の宿題も困るが読解力の無いバカも困る
2018/06/05(火) 17:14:42.20
だな
2018/06/05(火) 17:16:21.87
このスレは馬鹿ばかりいる状態ですwww
2018/06/05(火) 17:16:51.44
だな
2018/06/05(火) 17:18:07.86
プライドで自分が馬鹿でわかりませんって言うことができないから
それは悪くねぇけどさぁ、難しい状態になっちゃんてんのよー
って言いたいからそう書いてるんだろ
それぐらい読み取れよ
それは悪くねぇけどさぁ、難しい状態になっちゃんてんのよー
って言いたいからそう書いてるんだろ
それぐらい読み取れよ
2018/06/05(火) 17:19:01.78
だな
2018/06/05(火) 17:22:56.16
よほど気に障ったか気に入られたらしいwどっちかな?
2018/06/05(火) 17:37:21.07
だな
2018/06/05(火) 17:53:12.42
んだ
2018/06/05(火) 18:20:42.13
2018/06/05(火) 18:35:06.81
だな
2018/06/05(火) 18:35:44.97
>>199
あんたよっぽど気に触ったんだねw
あんたよっぽど気に触ったんだねw
2018/06/05(火) 19:00:07.82
>>194
わざわざまた出てくるとかどんだけプライド高いんだよ w
わざわざまた出てくるとかどんだけプライド高いんだよ w
2018/06/05(火) 19:25:49.18
>>202
拗らせるだけだからもう触んな。わかるやつにはわかってるから
拗らせるだけだからもう触んな。わかるやつにはわかってるから
204名無しさん@お腹いっぱい。
2018/06/05(火) 19:35:30.82 せやな
2018/06/05(火) 20:09:14.02
>>189は相当に痛い人だなw
2018/06/05(火) 20:28:47.22
Cからawkだとつまらない解になってしまうな。
awk '{for(i=2;i<=$0;i++){
if(i==$0){print $0"は素数でした 。"}
else if(($0%i)==0){print $0"は素数ではありません。"i"で割り切れます。";break;
}}}' <<< "$(read -p "2以上の整数をキーボードから入力してください。" res ;
cat <<< "$res")"
awk '{for(i=2;i<=$0;i++){
if(i==$0){print $0"は素数でした 。"}
else if(($0%i)==0){print $0"は素数ではありません。"i"で割り切れます。";break;
}}}' <<< "$(read -p "2以上の整数をキーボードから入力してください。" res ;
cat <<< "$res")"
2018/06/05(火) 21:20:01.96
>>205
いい加減にしろ。うざいって言われてるのはお前だってわかってないのか?
いい加減にしろ。うざいって言われてるのはお前だってわかってないのか?
2018/06/05(火) 21:49:44.22
だな
2018/06/05(火) 22:21:32.15
curl -s "http://hage.com.json" | jq -r '.main | .detail_list[] | .file_list[] | .date, .file_title, .file_name'
これだと、date と file_title とfile_name の内容が表示されるんですが、
detail_listと同じ階層にあるnavi_nameの内容も表示させたい場合はどう書けばいいですか?
よろしくお願いします。
これだと、date と file_title とfile_name の内容が表示されるんですが、
detail_listと同じ階層にあるnavi_nameの内容も表示させたい場合はどう書けばいいですか?
よろしくお願いします。
2018/06/06(水) 02:39:28.51
>>209
とくにこだわりがないのであれば jq じゃなく parsrj 使えば?
とくにこだわりがないのであれば jq じゃなく parsrj 使えば?
2018/06/06(水) 02:47:20.26
>>207
何言ってんだお前?
何言ってんだお前?
2018/06/06(水) 09:02:34.23
aaa=(888 犬 `date +"%Y%m%d"010000 -d last-sunday`)
bbb=(777 猫 `date +"%Y%m%d"150000 -d last-Saturday`)
ccc=(666 鳥 `date +"%Y%m%d"000000 -d last-friday`)
for hoge in "$aaa" "$bbb" "$ccc"
do
if [ -e ~/${hoge[1]}_${hoge[2]:0:4}_${hoge[2]:4:2}_${hoge[2]:6:2}.mp4 ]; then
exit 0
else
ffmpeg -i ~/output/${hoge[2]}-${hoge[0]}.aac ~/${hoge[1]}_${hoge[2]:0:4}_${hoge[2]:4:2}_${hoge[2]:6:2}.mp4
fi
done
こんな感じのスクリプト書いたのですが、配列が展開してくれません。
どうすれば変数に入れた配列が機能するでしょうか
アドバイスお願いします。
bbb=(777 猫 `date +"%Y%m%d"150000 -d last-Saturday`)
ccc=(666 鳥 `date +"%Y%m%d"000000 -d last-friday`)
for hoge in "$aaa" "$bbb" "$ccc"
do
if [ -e ~/${hoge[1]}_${hoge[2]:0:4}_${hoge[2]:4:2}_${hoge[2]:6:2}.mp4 ]; then
exit 0
else
ffmpeg -i ~/output/${hoge[2]}-${hoge[0]}.aac ~/${hoge[1]}_${hoge[2]:0:4}_${hoge[2]:4:2}_${hoge[2]:6:2}.mp4
fi
done
こんな感じのスクリプト書いたのですが、配列が展開してくれません。
どうすれば変数に入れた配列が機能するでしょうか
アドバイスお願いします。
2018/06/06(水) 09:51:21.96
2018/06/06(水) 09:51:56.75
>>212
配列はbash専用機能なので使うな
配列はbash専用機能なので使うな
2018/06/06(水) 13:07:10.63
2018/06/06(水) 13:12:22.57
なんだかんだレスに飢えてるよね
2018/06/06(水) 13:23:12.77
やりたいこと想像してベタにやってみたけど
printf "%s %s %s\n" ${aaa[@]} ${bbb[@]} ${ccc[@]} | while read hoge0 hoge1 hoge2; do
if [ -e ~/${hoge1}_${hoge2:0:4}_${hoge2:4:2}_${hoge2:6:2}.mp4 ]; then
exit 0
else
ffmpeg -nostdin -i ~/output/${hoge2}-${hoge0}.aac ~/${hoge1}_${hoge2:0:4}_${hoge2:4:2}_${hoge2:6:2}.mp4
fi
done
...て、ほぼ配列じゃなくなっちゃったは
printf "%s %s %s\n" ${aaa[@]} ${bbb[@]} ${ccc[@]} | while read hoge0 hoge1 hoge2; do
if [ -e ~/${hoge1}_${hoge2:0:4}_${hoge2:4:2}_${hoge2:6:2}.mp4 ]; then
exit 0
else
ffmpeg -nostdin -i ~/output/${hoge2}-${hoge0}.aac ~/${hoge1}_${hoge2:0:4}_${hoge2:4:2}_${hoge2:6:2}.mp4
fi
done
...て、ほぼ配列じゃなくなっちゃったは
2018/06/06(水) 13:55:28.85
2018/06/06(水) 14:36:06.61
よくいる偉そうにしたいのが主な目的なのがわいてる感じ
2018/06/06(水) 14:45:44.90
そういう言葉でしか言い返せないのな
悔しかったら技術で勝負しろ
悔しかったら技術で勝負しろ
2018/06/06(水) 14:49:07.49
どこに勝負要素があるのか分からない
しかし最近汚いコードがばらっと貼り付けられまくるのは同一人物なのか?
しかし最近汚いコードがばらっと貼り付けられまくるのは同一人物なのか?
2018/06/06(水) 14:51:48.88
身に覚えがなかったら勝負とか言わないよなあ。てか、勝負ってw
なにか偉そうにしたい/マウントとりたいのがありありだな
なにか偉そうにしたい/マウントとりたいのがありありだな
2018/06/06(水) 14:55:35.99
>>221
違うんじゃね。汚いとか言いだしたらきりがないぞな。言うなら整形して上げたほうが意味あるんじゃね
違うんじゃね。汚いとか言いだしたらきりがないぞな。言うなら整形して上げたほうが意味あるんじゃね
2018/06/06(水) 15:23:05.47
年月日を配列でw
printf "%s %s %s\n" ${aaa[@]} ${bbb[@]} ${ccc[@]} | while read hoge0 hoge1 hoge2; do
fuga=(`echo $hoge2 | sed 's/^\(....\)\(..\)\(..\).*/\1 \2 \3/'`)
if [ -e ~/${hoge1}_${fuga[0]}_${fuga[1]}_${fuga[2]}.mp4 ]; then
exit 0
else
ffmpeg -nostdin -i ~/output/${hoge2}-${hoge0}.aac ~/${hoge1}_${fuga[0]}_${fuga[1]}_${fuga[2]}.mp4
fi
done
からの〜
printf "%s %s %s\n" ${aaa[@]} ${bbb[@]} ${ccc[@]} | while read hoge0 hoge1 hoge2; do
set - `echo ${hoge2} | sed 's/^\(....\)\(..\)\(..\).*/\1 \2 \3/'`
if [ -e ~/${hoge1}_$1_$2_$3.mp4 ]; then
exit 0
else
ffmpeg -nostdin -i ~/output/${hoge2}-${hoge0}.aac ~/${hoge1}_$1_$2_$3.mp4
fi
done
printf "%s %s %s\n" ${aaa[@]} ${bbb[@]} ${ccc[@]} | while read hoge0 hoge1 hoge2; do
fuga=(`echo $hoge2 | sed 's/^\(....\)\(..\)\(..\).*/\1 \2 \3/'`)
if [ -e ~/${hoge1}_${fuga[0]}_${fuga[1]}_${fuga[2]}.mp4 ]; then
exit 0
else
ffmpeg -nostdin -i ~/output/${hoge2}-${hoge0}.aac ~/${hoge1}_${fuga[0]}_${fuga[1]}_${fuga[2]}.mp4
fi
done
からの〜
printf "%s %s %s\n" ${aaa[@]} ${bbb[@]} ${ccc[@]} | while read hoge0 hoge1 hoge2; do
set - `echo ${hoge2} | sed 's/^\(....\)\(..\)\(..\).*/\1 \2 \3/'`
if [ -e ~/${hoge1}_$1_$2_$3.mp4 ]; then
exit 0
else
ffmpeg -nostdin -i ~/output/${hoge2}-${hoge0}.aac ~/${hoge1}_$1_$2_$3.mp4
fi
done
2018/06/06(水) 15:51:47.08
元のソースが汚いと修正も面倒だなとw
まず一旦ループと変数をやめる
if [ -e ~/犬_2018_06_06.mp4 ]; then
exit 0
else
ffmpeg -i ~/output/20180603010000-888.aac ~/犬_2018_06_06.mp4
fi
if [ -e ~/猫_2018_06_06.mp4 ]; then
exit 0
else
ffmpeg -i ~/output/20180603150000-777.aac ~/猫_2018_06_06.mp4.mp4
fi
if [ -e ~/鳥_2018_06_06.mp4 ]; then
exit 0
else
ffmpeg -i ~/output/20180603010000-666.aac ~/鳥_2018_06_06.mp4.mp4
fi
まず一旦ループと変数をやめる
if [ -e ~/犬_2018_06_06.mp4 ]; then
exit 0
else
ffmpeg -i ~/output/20180603010000-888.aac ~/犬_2018_06_06.mp4
fi
if [ -e ~/猫_2018_06_06.mp4 ]; then
exit 0
else
ffmpeg -i ~/output/20180603150000-777.aac ~/猫_2018_06_06.mp4.mp4
fi
if [ -e ~/鳥_2018_06_06.mp4 ]; then
exit 0
else
ffmpeg -i ~/output/20180603010000-666.aac ~/鳥_2018_06_06.mp4.mp4
fi
2018/06/06(水) 15:57:58.57
つぎに、変数に入れ直す
そして書き込もうとしたらNGワードとか言われたから
ついでに関数にする
infile=~/output/20180603010000-888.aac
outfile=~/犬_2018_06_06.mp4
output "$infile" "$outfile"
infile=~/output/20180603150000-777.aac
outfile=~/猫_2018_06_06.mp4
output "$infile" "$outfile"
infile=~/output/20180603010000-666.aac
outfile=~/鳥_2018_06_06.mp4
output "$infile" "$outfile"
output() {
$infile=$1
$outfile=$2
if [ -e "$outfile" ]; then
exit 0
else
ffmpeg -i "$infile" "$outfile"
fi
}
そして書き込もうとしたらNGワードとか言われたから
ついでに関数にする
infile=~/output/20180603010000-888.aac
outfile=~/犬_2018_06_06.mp4
output "$infile" "$outfile"
infile=~/output/20180603150000-777.aac
outfile=~/猫_2018_06_06.mp4
output "$infile" "$outfile"
infile=~/output/20180603010000-666.aac
outfile=~/鳥_2018_06_06.mp4
output "$infile" "$outfile"
output() {
$infile=$1
$outfile=$2
if [ -e "$outfile" ]; then
exit 0
else
ffmpeg -i "$infile" "$outfile"
fi
}
2018/06/06(水) 16:00:15.08
一旦余計な変数を排除する
output ~/output/20180603010000-888.aac ~/犬_2018_06_06.mp4
output ~/output/20180603150000-777.aac ~/猫_2018_06_06.mp4
output ~/output/20180603010000-666.aac ~/鳥_2018_06_06.mp4
output() {
[ -e "$2" ] && exit 0
ffmpeg -i "$1" "$2"
}
output ~/output/20180603010000-888.aac ~/犬_2018_06_06.mp4
output ~/output/20180603150000-777.aac ~/猫_2018_06_06.mp4
output ~/output/20180603010000-666.aac ~/鳥_2018_06_06.mp4
output() {
[ -e "$2" ] && exit 0
ffmpeg -i "$1" "$2"
}
2018/06/06(水) 16:02:16.64
>元のソースが汚いと修正も面倒だなとw
だろ?w そこはスルーでええやん、別に求められているわけでもないんだし
まあ、お疲れ様です(嫌味ではない)
だろ?w そこはスルーでええやん、別に求められているわけでもないんだし
まあ、お疲れ様です(嫌味ではない)
2018/06/06(水) 16:15:15.79
日付の部分を元に戻す
output "$(date +"%Y%m%d010000" -d last-sunday)-888.aac" "犬_$(date +"%Y_%m_%d" -d last-sunday).mp4"
output "$(date +"%Y%m%d150000" -d last-saturday)-777.aac" "猫_$(date +"%Y_%m_%d" -d last-saturday).mp4"
output "$(date +"%Y%m%d000000" -d last-friday)-666.aac" "鳥_$(date +"%Y_%m_%d" -d last-friday).mp4"
output() {
[ -e "$HOME/$2" ] && exit 0
ffmpeg -i "$HOME/output/$1" "$HOME/$2"
}
くだらん文字列結合を省く
output "$(date +"%Y%m%d010000-888.aac" -d last-sunday)" "$(date +"犬_%Y_%m_%d.mp4" -d last-sunday)"
output "$(date +"%Y%m%d150000-777.aac" -d last-saturday)" "$(date +"猫_%Y_%m_%d.mp4" -d last-saturday)"
output "$(date +"%Y%m%d000000-666.aac" -d last-friday)" "$(date +"鳥_%Y_%m_%d.mp4" -d last-friday)"
output() {
[ -e "$HOME/$2" ] && exit 0
ffmpeg -i "$HOME/output/$1" "$HOME/$2"
}
output "$(date +"%Y%m%d010000" -d last-sunday)-888.aac" "犬_$(date +"%Y_%m_%d" -d last-sunday).mp4"
output "$(date +"%Y%m%d150000" -d last-saturday)-777.aac" "猫_$(date +"%Y_%m_%d" -d last-saturday).mp4"
output "$(date +"%Y%m%d000000" -d last-friday)-666.aac" "鳥_$(date +"%Y_%m_%d" -d last-friday).mp4"
output() {
[ -e "$HOME/$2" ] && exit 0
ffmpeg -i "$HOME/output/$1" "$HOME/$2"
}
くだらん文字列結合を省く
output "$(date +"%Y%m%d010000-888.aac" -d last-sunday)" "$(date +"犬_%Y_%m_%d.mp4" -d last-sunday)"
output "$(date +"%Y%m%d150000-777.aac" -d last-saturday)" "$(date +"猫_%Y_%m_%d.mp4" -d last-saturday)"
output "$(date +"%Y%m%d000000-666.aac" -d last-friday)" "$(date +"鳥_%Y_%m_%d.mp4" -d last-friday)"
output() {
[ -e "$HOME/$2" ] && exit 0
ffmpeg -i "$HOME/output/$1" "$HOME/$2"
}
2018/06/06(水) 16:20:37.87
なんかだらだらって感じ
2018/06/06(水) 16:25:36.02
最終的にこんな感じかな(適当にやったので途中のコードはバグありだろう)
output "%Y%m%d010000-888.aac" "犬_%Y_%m_%d.mp4" last-sunday
output "%Y%m%d150000-777.aac" "猫_%Y_%m_%d.mp4" last-saturday
output "%Y%m%d000000-666.aac" "鳥_%Y_%m_%d.mp4" last-friday
output() {
infile=$(date +"$1" -d "$3")
outfile=$(date +"$2" -d "$3")
[ -e "$HOME/$outfile" ] && exit 0
ffmpeg -i "$HOME/output/$infile" "$HOME/$outfile"
}
もっとやりたいならoutput関数を以下のような仕様の引数の関数ににしてもいいし
output 010000 888 犬 last-sunday
output 150000 777 猫 last-saturday
output 000000 666 鳥 last-friday
順番変えてこうすりゃ最初の配列と同じようになる
output 888 犬 010000 last-sunday
output 777 猫 150000 last-saturday
output 666 鳥 000000 last-friday
まあ、配列なんかいらんっちゅー話だ
output "%Y%m%d010000-888.aac" "犬_%Y_%m_%d.mp4" last-sunday
output "%Y%m%d150000-777.aac" "猫_%Y_%m_%d.mp4" last-saturday
output "%Y%m%d000000-666.aac" "鳥_%Y_%m_%d.mp4" last-friday
output() {
infile=$(date +"$1" -d "$3")
outfile=$(date +"$2" -d "$3")
[ -e "$HOME/$outfile" ] && exit 0
ffmpeg -i "$HOME/output/$infile" "$HOME/$outfile"
}
もっとやりたいならoutput関数を以下のような仕様の引数の関数ににしてもいいし
output 010000 888 犬 last-sunday
output 150000 777 猫 last-saturday
output 000000 666 鳥 last-friday
順番変えてこうすりゃ最初の配列と同じようになる
output 888 犬 010000 last-sunday
output 777 猫 150000 last-saturday
output 666 鳥 000000 last-friday
まあ、配列なんかいらんっちゅー話だ
2018/06/06(水) 16:26:18.74
2018/06/06(水) 16:32:01.63
これを続けるの?もうしないだろうw
2018/06/06(水) 16:45:31.82
シェルスクリプトの変数処理って型推論?
2018/06/06(水) 16:46:02.10
そうだな。やるつもりはなかったが、
例えば関数を作りたくなければ、こんな感じで行けるぞってことぐらいかな
while read -r a b c d; do
infile=$(適当に修正しろ)
outfile=$(適当に修正しろ)
[ -e "$HOME/$outfile" ] && exit 0
ffmpeg -i "$HOME/output/$infile" "$HOME/$outfile"
done <<DATA
888 犬 010000 last-sunday
777 猫 150000 last-saturday
666 鳥 000000 last-friday
DATA
こういう場合は標準入力として受け取ってループで回せってことだな
例えば関数を作りたくなければ、こんな感じで行けるぞってことぐらいかな
while read -r a b c d; do
infile=$(適当に修正しろ)
outfile=$(適当に修正しろ)
[ -e "$HOME/$outfile" ] && exit 0
ffmpeg -i "$HOME/output/$infile" "$HOME/$outfile"
done <<DATA
888 犬 010000 last-sunday
777 猫 150000 last-saturday
666 鳥 000000 last-friday
DATA
こういう場合は標準入力として受け取ってループで回せってことだな
2018/06/06(水) 16:46:21.13
>>209
これお願いします
これお願いします
2018/06/06(水) 16:46:50.03
>>210
それなんですか?
それなんですか?
2018/06/06(水) 16:47:01.39
2018/06/06(水) 16:56:31.38
白状する
181からここまで貼られてるソースコード全く読んでない
読む気起きない
181からここまで貼られてるソースコード全く読んでない
読む気起きない
2018/06/06(水) 17:11:54.82
別に構わんよ。きたねーコードだなって
直感的に思って、それを治すことで
俺の直感は正しいことを証明して
自分で納得してるだけだから
直感的に思って、それを治すことで
俺の直感は正しいことを証明して
自分で納得してるだけだから
2018/06/06(水) 17:24:58.19
それは自惚れすぎだなw
2018/06/06(水) 17:33:16.47
誰も求めてない証明ひけらかして悦に浸ってるだけか
2018/06/06(水) 17:41:52.35
自分が汚いコード書いてた(誰でもそうだろう)&そこから綺麗にすることを学んだとこってとこかな
もうちょっと経験つんだらそんな誰でもそうだったとこなんてスルーだろうな。綺麗にすることには際限がない/突き詰めれば&極論では個人の好みに帰結するってとこで、そんな初心者的なのにいちいち文句を言うのが低レベル的なw
もうちょっと経験つんだらそんな誰でもそうだったとこなんてスルーだろうな。綺麗にすることには際限がない/突き詰めれば&極論では個人の好みに帰結するってとこで、そんな初心者的なのにいちいち文句を言うのが低レベル的なw
2018/06/06(水) 17:59:50.87
>>236
もうその話題は終わったよ
もうその話題は終わったよ
2018/06/06(水) 18:30:15.42
>>244
終わってないです
終わってないです
2018/06/06(水) 18:47:23.92
>>245
つまらないからいいよ
つまらないからいいよ
2018/06/07(木) 01:01:10.78
2018/06/07(木) 02:03:34.31
>>212
for hoge in "$aaa" "$bbb" "$ccc"
"$aaa" "$bbb" "$ccc"は、最初のアイテムを示すだけ(888, 777, 666)で間違い
"${aaa[@]"が正しいもしくはとしたかったのだろうが、だったらforの機能的にも変数をArrayにする必要はないだろう。その記述以下でなんかするのでないなら
aaa/bbb/cccは単なる文字列として、for内で必要となったらArrayに分解すれば簡単に目的は達成するだろう
(てか、配列にするならaaa/bbb/cccなんて個々の変数じゃなくてそれこそそれを配列にすればいいのにと思うけど)
aaa="888 犬 `date +"%Y%m%d"010000 -d last-sunday`"
...
for fuga in "$aaa" "$bbb" "$ccc"
do
hoge=$($fuga)
if [ -e ~/${hoge[1]}_${hoge[2]:0:4}_${hoge[2]:4:2}_${hoge[2]:6:2}.mp4 ]; then
...
for hoge in "$aaa" "$bbb" "$ccc"
"$aaa" "$bbb" "$ccc"は、最初のアイテムを示すだけ(888, 777, 666)で間違い
"${aaa[@]"が正しいもしくはとしたかったのだろうが、だったらforの機能的にも変数をArrayにする必要はないだろう。その記述以下でなんかするのでないなら
aaa/bbb/cccは単なる文字列として、for内で必要となったらArrayに分解すれば簡単に目的は達成するだろう
(てか、配列にするならaaa/bbb/cccなんて個々の変数じゃなくてそれこそそれを配列にすればいいのにと思うけど)
aaa="888 犬 `date +"%Y%m%d"010000 -d last-sunday`"
...
for fuga in "$aaa" "$bbb" "$ccc"
do
hoge=$($fuga)
if [ -e ~/${hoge[1]}_${hoge[2]:0:4}_${hoge[2]:4:2}_${hoge[2]:6:2}.mp4 ]; then
...
2018/06/07(木) 02:12:29.31
>>247
必要となったら数値とみなす/数値に変換するだけだろう
a=hoge
の場合は、hogeは数値に変換できないからしょうがないので0にしてまうし、
[ a -eq 0 ]
なんて場合は、数値に変換できないのでエラーになるし。逆にa=1とかでエラーにならないのは数値だからと思えそうだが、単に数値に変換できてエラーにならないだけだろう
あくまでも文字列でしかないのは、
a=1
a="1"
a='1'
のどれも同じってとこからもそう推察できそうな。そもそも明らかな文字列でさえa=hogeだったりするけど
必要となったら数値とみなす/数値に変換するだけだろう
a=hoge
の場合は、hogeは数値に変換できないからしょうがないので0にしてまうし、
[ a -eq 0 ]
なんて場合は、数値に変換できないのでエラーになるし。逆にa=1とかでエラーにならないのは数値だからと思えそうだが、単に数値に変換できてエラーにならないだけだろう
あくまでも文字列でしかないのは、
a=1
a="1"
a='1'
のどれも同じってとこからもそう推察できそうな。そもそも明らかな文字列でさえa=hogeだったりするけど
2018/06/07(木) 02:24:52.46
2018/06/07(木) 02:25:47.02
2018/06/07(木) 02:27:10.73
あら、なんか恥ずかしい
2018/06/07(木) 05:10:54.45
2018/06/07(木) 12:21:50.51
2018/06/07(木) 12:33:31.74
質問です。bashの配列を他のbashスクリプトに
コマンドライン経由でわたすにはどうしたら良いのでしょうか?
コマンドライン経由でわたすにはどうしたら良いのでしょうか?
2018/06/07(木) 12:34:23.18
ちなみに配列変数は一つじゃなくて複数です。
2018/06/07(木) 12:58:55.50
Arrayひとつを単一の文字列で渡して、受けたとった方がArrayに戻すかなあ
sub-script.sh "${array1[*]}" "${array2[*]}" "${array3[*]}" ...
sub-script.sh:
array1=($1)
array2=($2)
array3=($3)
Arrayのアイテムの内容がIFSに引っかかってたらIFSを書き換える(/同調)するかなあ。よくありそうなアイテムがスペースありとかだったら、アイテムの内容として入ってなさそうなタブにするとか
(IFS=$'\t'; sub-script.sh "${array1[*]}" "${array2[*]}" "${array3[*]}" ...)
sub-script.sh:
array1=($1)
array2=($2)
array3=($3)
(分解時のセパレータとしてはタブもデフォルトIFSに入っているので分解時には特に設定する必要はない)
てか、そんなに配列をばんばん使わない方がいいんじゃねと思わなくもないw
sub-script.sh "${array1[*]}" "${array2[*]}" "${array3[*]}" ...
sub-script.sh:
array1=($1)
array2=($2)
array3=($3)
Arrayのアイテムの内容がIFSに引っかかってたらIFSを書き換える(/同調)するかなあ。よくありそうなアイテムがスペースありとかだったら、アイテムの内容として入ってなさそうなタブにするとか
(IFS=$'\t'; sub-script.sh "${array1[*]}" "${array2[*]}" "${array3[*]}" ...)
sub-script.sh:
array1=($1)
array2=($2)
array3=($3)
(分解時のセパレータとしてはタブもデフォルトIFSに入っているので分解時には特に設定する必要はない)
てか、そんなに配列をばんばん使わない方がいいんじゃねと思わなくもないw
2018/06/07(木) 13:38:14.12
>>255
コマンドライン経由の意味はよくわからないが、
多分ファイルを使うのがいいと思う。
[渡す側]
declare | grep "渡したい変数" > /path/save
[受け取る側]
source /path/save
コマンドライン経由の意味はよくわからないが、
多分ファイルを使うのがいいと思う。
[渡す側]
declare | grep "渡したい変数" > /path/save
[受け取る側]
source /path/save
2018/06/07(木) 16:52:21.73
つまり配列そのままで渡せないってことですね
2018/06/07(木) 17:07:52.55
そのままでできると思う方が全くわかってないなという。まあ全くわかってないんだろうけど
2018/06/07(木) 17:16:31.55
ここ数日で盛り上がりすぎやろ
2018/06/07(木) 21:43:15.08
あかんか?
2018/06/07(木) 21:46:19.66
ええで
2018/06/07(木) 22:15:48.04
>>255
xmlなりjsonなり独自形式なりで渡せよ
xmlなりjsonなり独自形式なりで渡せよ
2018/06/07(木) 22:39:09.40
言語のオブジェクト(配列)を他のプロセスにそのまんま渡せるスクリプト言語ってなんかあったっけ?
間にはシリアラズ/デシリアライズなどの仕組みがあるのは当然だが、そんなの全く意識させない言語でサポートしている言語って。フレームワークなど使えばは抜きで。スクリプト言語でなくてもいいけどとりあえずこのスレなのでスクリプト言語で
間にはシリアラズ/デシリアライズなどの仕組みがあるのは当然だが、そんなの全く意識させない言語でサポートしている言語って。フレームワークなど使えばは抜きで。スクリプト言語でなくてもいいけどとりあえずこのスレなのでスクリプト言語で
2018/06/07(木) 23:15:52.17
>>257
あ、
>分解時のセパレータとしてはタブもデフォルトIFSに入っているので分解時には特に設定する必要はない
何言ってんだか。せっかくスペースをセパレータとされるのを避けているのに、設定しなきゃダメだろう
sub-script.sh:
ORIGINAL_IFS="$IFS"
IFS=$'\t'
array1=($1)
array2=($2)
array3=($3)
IFS="$ORIGINAL_IFS"
あ、
>分解時のセパレータとしてはタブもデフォルトIFSに入っているので分解時には特に設定する必要はない
何言ってんだか。せっかくスペースをセパレータとされるのを避けているのに、設定しなきゃダメだろう
sub-script.sh:
ORIGINAL_IFS="$IFS"
IFS=$'\t'
array1=($1)
array2=($2)
array3=($3)
IFS="$ORIGINAL_IFS"
2018/06/07(木) 23:26:19.86
>>265
じぇーそんとかそういうためにあるんじゃないの?
じぇーそんとかそういうためにあるんじゃないの?
2018/06/08(金) 00:05:04.96
2018/06/08(金) 00:07:58.91
見えないってのがどういう意味なのか。
PowerShellみたいのなら見えないに入るのかな?
PowerShellみたいのなら見えないに入るのかな?
2018/06/08(金) 00:18:14.42
分散オブジェクトに近い...つうても実装/言語により全然見えないにはならんけど
process.TheFunc(anObject)
と、呼んだら、別プロセスの
TheFunc(anObject) {
}
に、まんまオブジェクト(ただの配列でもいいけど)が入ってるくるような
PowerShellはそんなんなん?分散オブジェクトかな?
process.TheFunc(anObject)
と、呼んだら、別プロセスの
TheFunc(anObject) {
}
に、まんまオブジェクト(ただの配列でもいいけど)が入ってるくるような
PowerShellはそんなんなん?分散オブジェクトかな?
2018/06/08(金) 00:53:32.27
スレチ
2018/06/08(金) 01:16:08.95
いや、>>259なんて思うのはどういう根拠からかなあと。他のスクリプト言語でそんなんあるんかと
また現れるかもしれんだろw まあ、スレチではある
また現れるかもしれんだろw まあ、スレチではある
2018/06/08(金) 01:20:44.78
>>257,258,254 全部、シリアライズ/デシリアライズのことで、どういうシリアライズ/デシリアライズを使うかでしかなく、まあ、普通はそれしかないわなで終わってることなんだけどね
ちょっとなんか他のスクリプト言語であるのかと気になったので
ちょっとなんか他のスクリプト言語であるのかと気になったので
2018/06/08(金) 03:20:33.75
最近他板でも意味も分からず答える輩が増えていますね。何ででしょう。
2018/06/08(金) 03:21:57.82
新入社員が先輩よりプログラミング知識あることを知って俺結構世間の中でも出来る方なんじゃね?って勘違いする時期だな
2018/06/08(金) 03:49:58.80
解答のクオリティまで下がってるな
パソコンの大先生混ざっとるやろ
パソコンの大先生混ざっとるやろ
2018/06/08(金) 05:43:51.14
>>270
同一プロセス(要するにPowerShell内で閉じてる)ならそんな感じの記述でオブジェクトを渡せる
ちなみにパイプでも渡せる
他のプロセスへコマンドラインとなると無理だろうね
そもそもOSレベルでもたいていのOSはコマンドラインとして文字列の配列しか渡せないし
同一プロセス(要するにPowerShell内で閉じてる)ならそんな感じの記述でオブジェクトを渡せる
ちなみにパイプでも渡せる
他のプロセスへコマンドラインとなると無理だろうね
そもそもOSレベルでもたいていのOSはコマンドラインとして文字列の配列しか渡せないし
2018/06/08(金) 05:51:30.48
JSONは不気味な拡張子なので使ってはいけません
2018/06/08(金) 07:18:25.50
パソコンの大先生なら使いこなせよ
2018/06/08(金) 22:06:27.92
POSIXで定義されているどの環境でも利用できる環境変数ってあります?
$PWDとか。
$PWDとか。
2018/06/08(金) 22:54:13.95
>>280
環境変数で決まってるのは
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html
ただしOS起動中まで含めると、必ず定義されてる環境変数はない。
PWDも昔のシェルだと定義してくれなかったりする。
まあ一般ユーザー権限で動いてるならPATH、HOMEあたりの存在は期待してもいいけど。
環境変数で決まってるのは
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html
ただしOS起動中まで含めると、必ず定義されてる環境変数はない。
PWDも昔のシェルだと定義してくれなかったりする。
まあ一般ユーザー権限で動いてるならPATH、HOMEあたりの存在は期待してもいいけど。
282名無しさん@お腹いっぱい。
2018/06/08(金) 23:18:13.62 Excelから出力したCSVのように一行(?)の中に改行が含まれた
データを扱うにはどうしたら良いでしょうか?
もう少し具体的に書きます。
カンマ区切りのCSVデータだと仮定して、
シェルスクリプトの中に関数を一行ごとに呼び出し、
列を引数に対応させたいです。
例えば以下のような内容のファイルがあったとして
a1,a2,a3,a4
b1,b2,b3,b4
c1,c2,c3,c4
syori "a1" "a2" "a3" "a4"
syori "b1" "b2" "b3" "b4"
syori "c1" "c2" "c3" "c4"
という風にsyori関数を呼び出したいのです。
ただし実際には各項目(a1等の部分)にExcelから出力したデータのように
改行やカンマやダブルクォートやシングルクォートや空白が入ることがあるのです
データを扱うにはどうしたら良いでしょうか?
もう少し具体的に書きます。
カンマ区切りのCSVデータだと仮定して、
シェルスクリプトの中に関数を一行ごとに呼び出し、
列を引数に対応させたいです。
例えば以下のような内容のファイルがあったとして
a1,a2,a3,a4
b1,b2,b3,b4
c1,c2,c3,c4
syori "a1" "a2" "a3" "a4"
syori "b1" "b2" "b3" "b4"
syori "c1" "c2" "c3" "c4"
という風にsyori関数を呼び出したいのです。
ただし実際には各項目(a1等の部分)にExcelから出力したデータのように
改行やカンマやダブルクォートやシングルクォートや空白が入ることがあるのです
2018/06/08(金) 23:18:34.79
各項目には \ が入ることもあります。
今回はCSVではありませんが、RFC4180(=ExcelのCSVの仕様)では
改行が\nのようにエスケープされません
https://ja.wikipedia.org/wiki/Comma-Separated_Values
> フィールドがコンマ、ダブルクォート、改行を含む場合は、かならずダブルクォートで囲む。
> また、フィールドに含まれるダブルクォートは2つ並べてエスケープする。
>
> "日本 CRLF
> 国","""東京""","127,767,944" CRLF
↑「日本国」の国の前に改行が入っている場合
今回はCSVではありませんが、RFC4180(=ExcelのCSVの仕様)では
改行が\nのようにエスケープされません
https://ja.wikipedia.org/wiki/Comma-Separated_Values
> フィールドがコンマ、ダブルクォート、改行を含む場合は、かならずダブルクォートで囲む。
> また、フィールドに含まれるダブルクォートは2つ並べてエスケープする。
>
> "日本 CRLF
> 国","""東京""","127,767,944" CRLF
↑「日本国」の国の前に改行が入っている場合
2018/06/08(金) 23:19:28.84
>>282-283は、ここから移動してきました
【Bash】Windows Subsystem for Linux【WSL】3
https://mao.5ch.net/test/read.cgi/linux/1528141781/
【Bash】Windows Subsystem for Linux【WSL】3
https://mao.5ch.net/test/read.cgi/linux/1528141781/
2018/06/08(金) 23:23:17.66
286名無しさん@お腹いっぱい。
2018/06/08(金) 23:24:41.882018/06/08(金) 23:31:03.89
2018/06/08(金) 23:35:52.21
2018/06/08(金) 23:57:15.15
邪道としては、改行コードとか\を絶対に使われない文字に置換して最後にまた戻すとかやったな
アルメニア文字とかに置換するんやで
アルメニア文字とかに置換するんやで
2018/06/09(土) 00:06:32.51
今時、シェルスクリプトが使える環境でperlやpythonがデフォルトで入ってないOSの方が稀だろう。なんかここ最近のPOSIXと言えばいいというようなのはなんかアレだな
2018/06/09(土) 00:12:49.10
>>290
busybox、alpine
busybox、alpine
2018/06/09(土) 00:14:40.86
>>291
そういう環境で、CSVファイルの扱いが必要かあ?
そういう環境で、CSVファイルの扱いが必要かあ?
2018/06/09(土) 00:17:26.20
2018/06/09(土) 00:21:35.51
てゆうか問題に適した言語を組み合わせて問題を解くってのが
もともとのUNIXの思想だと思うので、
CSV扱うならCSVに向いた言語使う方がUNIX的だと思うのよね。
まあケースバイケースなんだけど。
もともとのUNIXの思想だと思うので、
CSV扱うならCSVに向いた言語使う方がUNIX的だと思うのよね。
まあケースバイケースなんだけど。
295名無しさん@お腹いっぱい。
2018/06/09(土) 00:23:20.54 つまりC++ってことか。
2018/06/09(土) 00:25:28.50
https://codezine.jp/article/detail/8323
>gawkの開発は「完全を目指すのではなく9割をサクサクこなし、フィールドに改行を含むようなCSVファイルは専用のツールで処理すれば良い」
ですらだからなあ
Linuxはawk=gawkだが、BSDは巣の(?)awkでgawkは別に入れなければならなく、gawkの機能を使うかどうかっていう話ならわかるけど、そんなんだったらperlやpython使った方がLinuxとBSDの違いも無いだろしな
>gawkの開発は「完全を目指すのではなく9割をサクサクこなし、フィールドに改行を含むようなCSVファイルは専用のツールで処理すれば良い」
ですらだからなあ
Linuxはawk=gawkだが、BSDは巣の(?)awkでgawkは別に入れなければならなく、gawkの機能を使うかどうかっていう話ならわかるけど、そんなんだったらperlやpython使った方がLinuxとBSDの違いも無いだろしな
2018/06/09(土) 00:34:57.73
>>287は単に他の言語/知識までは自分の手に余るっていう逃げだろうとしか見えんな
そこに山があるから登るっていうあえてメンドくさいことをしたいってのなら、のらないでもないけどw
そこに山があるから登るっていうあえてメンドくさいことをしたいってのなら、のらないでもないけどw
2018/06/09(土) 00:45:11.89
CSVじゃないって書いてるのに
読めない人多いね
読めない人多いね
2018/06/09(土) 00:50:25.58
とは言ってるけど、CSVとはどう違うとかは全くだな。てか、延々とCSVのここがってしかないやん
CSVと似た何か特殊なものなら、普通にストリームの一文字一文字処理できるスクリプト使ったほうがいいだろう、てかそれしかないだろう
CSVと似た何か特殊なものなら、普通にストリームの一文字一文字処理できるスクリプト使ったほうがいいだろう、てかそれしかないだろう
2018/06/09(土) 01:21:51.27
> シェルスクリプト(POSIX)
(;^ω^)
(;^ω^)
2018/06/09(土) 01:40:22.57
POSIXはまあいいとしてPOSIXという単語が出る度アレルギーのごとく反発する人はなんなの?
OpenGroupに親でも殺されたのか?
OpenGroupに親でも殺されたのか?
2018/06/09(土) 01:46:42.05
>>290
だって課題がそうなってるんだもん
だって課題がそうなってるんだもん
2018/06/09(土) 01:53:39.41
2018/06/09(土) 02:06:03.67
nkfとかiconvで 改行コードを調べたらええんちゃう?
busybox, alpineぐらいのコンテナに nkf を足したぐらいで大してでかくならんやろうに。
busybox, alpineぐらいのコンテナに nkf を足したぐらいで大してでかくならんやろうに。
2018/06/09(土) 02:11:54.28
>>287でposix shellだけで言うてるからダメだよ
2018/06/09(土) 03:14:25.32
ぽ…POSIX
2018/06/09(土) 03:39:18.86
今日はみなさん夜更かしですね
まるで自えn(ry
まるで自えn(ry
2018/06/09(土) 06:55:43.82
>>293
お前さんこの間から痛いぞ
お前さんこの間から痛いぞ
2018/06/09(土) 09:19:07.59
はいはい
2018/06/09(土) 12:31:39.35
はい、は一回
2018/06/09(土) 13:35:30.76
はいは一回 と
はいぱー回 ってにてるな
はいぱー回 ってにてるな
2018/06/09(土) 13:36:18.92
そうか?
2018/06/09(土) 16:10:28.91
ぽしっくすなの?
ぽじっくすなの?
ぽずぃっぐずなの?
なんなの?
ぽじっくすなの?
ぽずぃっぐずなの?
なんなの?
2018/06/09(土) 18:01:39.57
トマトとか言ってる日本人が気にすんな。特定のそういう発音違いをめっちゃ馬鹿にしたりするのも日本人だけど
2018/06/09(土) 18:02:59.74
相対するをあいたいするって読んだら漫画の読みすぎだろって馬鹿にされたこと思い出したわ
2018/06/09(土) 18:45:27.81
なんのスレやねん
2018/06/09(土) 19:40:22.27
ぽちっとな
2018/06/09(土) 23:38:49.68
質問です。一データの中に改行が含まれた
データを扱うにはどうしたら良いでしょうか?
データを扱うにはどうしたら良いでしょうか?
2018/06/09(土) 23:39:51.65
改行を置換して読み取る
2018/06/10(日) 00:19:36.87
1データとは
2018/06/10(日) 00:30:51.68
2018/06/10(日) 01:40:53.84
シェルスクリプトだって適切に扱える(場合はある)
例えば1データがファイル単位に分かれてるとか1データの処理が1プロセスの寿命と同じでいいとか
例えば1データがファイル単位に分かれてるとか1データの処理が1プロセスの寿命と同じでいいとか
2018/06/10(日) 02:20:54.22
U+001EやU+001Fを区切り文字として利用してる方いらっしゃいますか?
結構便利(絶対に他の文字と衝突しない)だと思うんですが、そういうシェルスクリプトを見たことがありません。
結構便利(絶対に他の文字と衝突しない)だと思うんですが、そういうシェルスクリプトを見たことがありません。
2018/06/10(日) 02:29:16.89
はっはっは。一データの中に改行が含まれてる
ものすら扱えないここの連中にそんな発想ができるやつはいない
その程度の陳腐なアイデアであったとしてもな
ものすら扱えないここの連中にそんな発想ができるやつはいない
その程度の陳腐なアイデアであったとしてもな
2018/06/10(日) 02:38:52.56
ここだけのシェルスクリプトだけを言っているわけではないと思うけど
2018/06/10(日) 08:14:53.42
>>323
正直、そういう解答を出してほしかったね。だせるかなーって思っていたけど
シェルスクリプトでそういうデータを扱うなんておかしいとかのたまうばかり
\x1c(ファイル分離)、\x1d(グループ分離)、\x1e(レコード分離)、\x1f(ユニット分離)は
まさにそういう用途で使うもの。ここの連中の技術力の低下を感じる。
正直、そういう解答を出してほしかったね。だせるかなーって思っていたけど
シェルスクリプトでそういうデータを扱うなんておかしいとかのたまうばかり
\x1c(ファイル分離)、\x1d(グループ分離)、\x1e(レコード分離)、\x1f(ユニット分離)は
まさにそういう用途で使うもの。ここの連中の技術力の低下を感じる。
2018/06/10(日) 09:06:40.68
見たことがないって言ってんのに、
このスレ住人の話に限定してどうすんだ
このスレ住人の話に限定してどうすんだ
2018/06/10(日) 09:26:13.67
いや>289で答えとるやん
>318ってようは>282の質問し直しでしょ
>318ってようは>282の質問し直しでしょ
2018/06/10(日) 11:02:49.39
>>327
住民に限定し、しかも馬鹿にしたい欲求を生んだ過去があったのだろう。馬鹿にされたとか、単になにか否定されたとか
住民に限定し、しかも馬鹿にしたい欲求を生んだ過去があったのだろう。馬鹿にされたとか、単になにか否定されたとか
2018/06/10(日) 12:04:18.14
2018/06/10(日) 12:18:36.59
イミフ
2018/06/10(日) 12:42:33.56
改行コード含んだデータ扱いたいという前提の質問かと思ったら
改行コード含んだデータなどナンセンスであるという主張だった
改行コード含んだデータなどナンセンスであるという主張だった
2018/06/10(日) 13:18:33.58
イミフ
データの中に改行コードがあるってだけだろ
データの中に改行コードがあるってだけだろ
2018/06/10(日) 13:18:58.61
データの中に改行コードがあっても置換する必要はありませんよねぇ
2018/06/10(日) 13:19:57.33
>>289はデータの中に改行コードがあるのはナンセンスだから置換しろという主張
そんなことをする必要はない
そんなことをする必要はない
2018/06/10(日) 13:40:18.16
なんかただ否定している感じにしか見えんけど
シェルスクリプトで扱うまでも考えて否定してんのかな?
シェルスクリプトで扱うまでも考えて否定してんのかな?
2018/06/10(日) 13:41:43.48
>>289はナンセンス云々でなくて、現実的なだろと思うけど
2018/06/10(日) 14:38:11.53
2018/06/10(日) 15:07:33.90
速度が問題になるかは条件次第で
現実的じゃないと言いきれる根拠は今のところ無い
現実的じゃないと言いきれる根拠は今のところ無い
2018/06/10(日) 15:18:07.55
2018/06/10(日) 15:18:34.26
2018/06/10(日) 15:46:39.73
一度全部置換してから読み取ればいいんじゃないですか(名推理
2018/06/10(日) 15:59:54.35
因みにCSVはRFCで「内部改行はCRLF」と定まっているので
ここから攻めるというのもアリ。
「\r\n」という組はフィールド区切りとしては無効にすればよろし
え? CSV出力すると内部改行がLFになるLibreOffice Calc?
知らない子ですね…
ここから攻めるというのもアリ。
「\r\n」という組はフィールド区切りとしては無効にすればよろし
え? CSV出力すると内部改行がLFになるLibreOffice Calc?
知らない子ですね…
2018/06/10(日) 16:03:53.76
2018/06/10(日) 16:07:14.39
> "Excelから出力したCSVのように" 一行(?)の中に改行が含まれた
> データを扱うにはどうしたら良いでしょうか?
> カンマ区切りのCSVデータだと "仮定して" 、
> 今回はCSVではありませんが、
こう書いてあるのに、CSV形式だって思い込むのは
頭が悪いと思います。
> データを扱うにはどうしたら良いでしょうか?
> カンマ区切りのCSVデータだと "仮定して" 、
> 今回はCSVではありませんが、
こう書いてあるのに、CSV形式だって思い込むのは
頭が悪いと思います。
2018/06/10(日) 16:07:56.46
2018/06/10(日) 16:10:01.41
だったらお前がそのわけわからんCVS形式でない答えを応えれtばええんちゃんですかね?具体的に何も言ってないのに対する汎用的な
自称賢いらしいから時間かけずになんでもござれの汎用的的なのかけるだろ?
自称賢いらしいから時間かけずになんでもござれの汎用的的なのかけるだろ?
2018/06/10(日) 16:10:06.96
>>345
だったら好きにすれば?
だったら好きにすれば?
2018/06/10(日) 16:10:50.12
>>343
> 一度全部置換してから読み取ればいいんじゃないですか(名推理
そして一行ずつ読み取るわけですねw
そりゃそうでしょう。\nを全部改行コードに戻してしてしまったら、
区別できないですからね
> 一度全部置換してから読み取ればいいんじゃないですか(名推理
そして一行ずつ読み取るわけですねw
そりゃそうでしょう。\nを全部改行コードに戻してしてしまったら、
区別できないですからね
2018/06/10(日) 16:11:08.39
2018/06/10(日) 16:11:30.84
2018/06/10(日) 16:12:08.78
>>347
> だったらお前がそのわけわからんCVS形式でない答えを応えれtばええんちゃんですかね
データの中に改行コードがあるってだけで、
フォーマットは最初から指定してないよ?
その場合どういうやり方があるでしょうって話なんだが、
CSVだと思いこんで効率の悪い方法しか思いつかず
指摘したら逆ギレするのやめなよ?ダサいから
> だったらお前がそのわけわからんCVS形式でない答えを応えれtばええんちゃんですかね
データの中に改行コードがあるってだけで、
フォーマットは最初から指定してないよ?
その場合どういうやり方があるでしょうって話なんだが、
CSVだと思いこんで効率の悪い方法しか思いつかず
指摘したら逆ギレするのやめなよ?ダサいから
2018/06/10(日) 16:12:51.65
>>338
MINIX でも使ってるの?
MINIX でも使ってるの?
2018/06/10(日) 16:13:10.06
2018/06/10(日) 16:13:34.23
>>353
へー、MINIXも遅いんですねー
へー、MINIXも遅いんですねー
2018/06/10(日) 16:14:28.24
えっ、一行づつ fork + exec してるって本気で思い込んでるんだ…
2018/06/10(日) 16:16:58.31
2018/06/10(日) 16:22:35.88
2018/06/10(日) 16:23:33.86
データ | フィルタ | シェルスクリプト(関数なり) | フィルタ > データ
フィルタをどう作るかは具体的じゃないとでCVSしか例にあげてないからCVSなだけなんだが
っていういたって普通のことなのに。そうじゃないナニかを想定しているらしけど、そのナニかの具体的なことは全く言わずに指摘wという否定なだけだもんな
その指摘もトンチンカンなこともあり、ただただ無闇に偉ぶりたいだけにしか見えんなあ
フィルタをどう作るかは具体的じゃないとでCVSしか例にあげてないからCVSなだけなんだが
っていういたって普通のことなのに。そうじゃないナニかを想定しているらしけど、そのナニかの具体的なことは全く言わずに指摘wという否定なだけだもんな
その指摘もトンチンカンなこともあり、ただただ無闇に偉ぶりたいだけにしか見えんなあ
2018/06/10(日) 16:24:15.94
>>357
仕様よんでこい
http://www.kasai.fm/wiki/rfc4180jp
CSVの仕様においてエスケープとは
ダブルクォート " を "" と二つ連続させるものだ
\記号でエスケープする仕様はない
仕様よんでこい
http://www.kasai.fm/wiki/rfc4180jp
CSVの仕様においてエスケープとは
ダブルクォート " を "" と二つ連続させるものだ
\記号でエスケープする仕様はない
2018/06/10(日) 16:25:32.32
2018/06/10(日) 16:26:22.60
もう一つ解説記事
https://codezine.jp/article/detail/2364
> 改行コードはプラットフォームによって異なります。一般的にWindowsは
> <CR><LF>、UNIXは<LF>です。
> ※2008/04/16追記:RFCでは末尾(レコードの区切りとして)の改行は
> <CR><LF>を推奨しています。CSVを解釈するプログラムではどちらの
> 改行コードでも読めるように作ることをお勧めします
> ダブルクォートで囲む場合
> "山田","太郎","値に
> 改行や,カンマや""ダブルクォートが含まれても問題ありません。"
> まれにCSVの方言で\エスケープを行うことがあります。
>
>\エスケープを行う特殊な例
>"山田","太郎","値に改行\nや\,カンマや\"ダブルクォートが含まれても問題ありません。"
> この方言はあまり普及していませんので、利用するのは避けましょう。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
https://codezine.jp/article/detail/2364
> 改行コードはプラットフォームによって異なります。一般的にWindowsは
> <CR><LF>、UNIXは<LF>です。
> ※2008/04/16追記:RFCでは末尾(レコードの区切りとして)の改行は
> <CR><LF>を推奨しています。CSVを解釈するプログラムではどちらの
> 改行コードでも読めるように作ることをお勧めします
> ダブルクォートで囲む場合
> "山田","太郎","値に
> 改行や,カンマや""ダブルクォートが含まれても問題ありません。"
> まれにCSVの方言で\エスケープを行うことがあります。
>
>\エスケープを行う特殊な例
>"山田","太郎","値に改行\nや\,カンマや\"ダブルクォートが含まれても問題ありません。"
> この方言はあまり普及していませんので、利用するのは避けましょう。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2018/06/10(日) 16:26:49.29
2018/06/10(日) 16:27:48.82
>>363
シェルスクリプトでどう扱うかだぞ?処理をどうするかだぞ?なに言ってるの?プログラミング知らないの?
シェルスクリプトでどう扱うかだぞ?処理をどうするかだぞ?なに言ってるの?プログラミング知らないの?
365名無しさん@お腹いっぱい。
2018/06/10(日) 16:28:23.86 CSVスレになってんのはなぜなんだ
勉強にはなるけど
勉強にはなるけど
2018/06/10(日) 16:28:48.64
もう一つw
https://www.upken.jp/kb/csv.html
> RFC4180準拠
> 基本
> ヘッダーはあってもなくてもよい
> 空データフィールドがある
> 前後にスペースがあっても無視しない
> ダブルクォーテーションで囲む場合は同じレコードのすべてのフィールドをダブルクォーテーションで囲む
> 改行、ダブルクォーテーション、カンマを含むフィールドは、ダブルクォーテーションで囲むべき
> ダブルクォーテーションで囲まれているフィールドでダブルクォーテーションを使用する場合は、ダブルクォーテーションでエスケープする
> 非常に長い文字列を考慮
> 複合パターン
https://www.upken.jp/kb/csv.html
> RFC4180準拠
> 基本
> ヘッダーはあってもなくてもよい
> 空データフィールドがある
> 前後にスペースがあっても無視しない
> ダブルクォーテーションで囲む場合は同じレコードのすべてのフィールドをダブルクォーテーションで囲む
> 改行、ダブルクォーテーション、カンマを含むフィールドは、ダブルクォーテーションで囲むべき
> ダブルクォーテーションで囲まれているフィールドでダブルクォーテーションを使用する場合は、ダブルクォーテーションでエスケープする
> 非常に長い文字列を考慮
> 複合パターン
2018/06/10(日) 16:29:45.29
2018/06/10(日) 16:31:47.04
>>367
お前はどうかしてる。ここにきてCVSの仕様を得意げにあげてるのと同じヤツってことはないよな?
お前はどうかしてる。ここにきてCVSの仕様を得意げにあげてるのと同じヤツってことはないよな?
2018/06/10(日) 16:34:02.42
2018/06/10(日) 16:35:15.34
2018/06/10(日) 16:36:40.96
2018/06/10(日) 16:36:59.71
2018/06/10(日) 16:39:16.71
2018/06/10(日) 16:39:21.31
1データの中に改行が含まれてる
そのままだとデータ区切りの改行と見分けがつかない
CSV形式の話はしていない
\nにエスケープする方法では、1データずつ処理しなければならず
外部コマンド呼び出しの必要があるから遅い
ここまでは理解できてんのかなー?
そのままだとデータ区切りの改行と見分けがつかない
CSV形式の話はしていない
\nにエスケープする方法では、1データずつ処理しなければならず
外部コマンド呼び出しの必要があるから遅い
ここまでは理解できてんのかなー?
2018/06/10(日) 16:39:51.59
2018/06/10(日) 16:40:34.63
>>375
俺は最初からCSV形式のデータを扱う話なんかしてないんですが?
俺は最初からCSV形式のデータを扱う話なんかしてないんですが?
2018/06/10(日) 16:42:26.75
2018/06/10(日) 16:43:16.71
>>376
だったら何を言いたいのかさっぱり。単に絡みたいだけか
だったら何を言いたいのかさっぱり。単に絡みたいだけか
2018/06/10(日) 16:45:59.83
今更なんの話かわかってませんっていうのかよw
↓この話だろ。「?」で聞いているところが質問だよ。それぐらいわかれアホ
Excelから出力したCSVのように一行(?)の中に改行が含まれた
データを扱うにはどうしたら良いでしょうか?
もう少し具体的に書きます。
カンマ区切りのCSVデータだと仮定して、
シェルスクリプトの中に関数を一行ごとに呼び出し、
列を引数に対応させたいです。
例えば以下のような内容のファイルがあったとして
a1,a2,a3,a4
b1,b2,b3,b4
c1,c2,c3,c4
syori "a1" "a2" "a3" "a4"
syori "b1" "b2" "b3" "b4"
syori "c1" "c2" "c3" "c4"
という風にsyori関数を呼び出したいのです。
ただし実際には各項目(a1等の部分)にExcelから出力したデータのように
改行やカンマやダブルクォートやシングルクォートや空白が入ることがあるのです
↓この話だろ。「?」で聞いているところが質問だよ。それぐらいわかれアホ
Excelから出力したCSVのように一行(?)の中に改行が含まれた
データを扱うにはどうしたら良いでしょうか?
もう少し具体的に書きます。
カンマ区切りのCSVデータだと仮定して、
シェルスクリプトの中に関数を一行ごとに呼び出し、
列を引数に対応させたいです。
例えば以下のような内容のファイルがあったとして
a1,a2,a3,a4
b1,b2,b3,b4
c1,c2,c3,c4
syori "a1" "a2" "a3" "a4"
syori "b1" "b2" "b3" "b4"
syori "c1" "c2" "c3" "c4"
という風にsyori関数を呼び出したいのです。
ただし実際には各項目(a1等の部分)にExcelから出力したデータのように
改行やカンマやダブルクォートやシングルクォートや空白が入ることがあるのです
2018/06/10(日) 16:50:13.04
何を言っているのだか。最初からCSV形式のデータ扱う話なんかしてないって言っておきながら、前レスではCVSのこと「だけ」のレスなことだから、そのCVSのことだけのことを何を言いたいのかだよ
すでに書いたが、
データ | フィルタ | シェルスクリプト(関数なり) | フィルタ > データ
でしかない。CVSはどうフィルタを書く上では具体的にそれしかでしかないからだけだな
てか、その設問がそんなにきになるならお前が答えろよっw
すでに書いたが、
データ | フィルタ | シェルスクリプト(関数なり) | フィルタ > データ
でしかない。CVSはどうフィルタを書く上では具体的にそれしかでしかないからだけだな
てか、その設問がそんなにきになるならお前が答えろよっw
2018/06/10(日) 16:54:06.97
2018/06/10(日) 16:54:09.52
2018/06/10(日) 16:55:28.23
2018/06/10(日) 16:56:05.49
ダメだ。異次元すぎる>>381なんて言われると、バカだろとしかおもえん
2018/06/10(日) 16:57:43.94
2018/06/10(日) 17:01:19.44
387386
2018/06/10(日) 17:02:32.48 最 初 の フ ィ ル タ で デ ー タ に 含 ま れ る
改 行 コ ー ド を 他 の な に か に 変 換 す る な ら ば
今度はシェルスクリプトの関数に渡す前に
改行コードに戻さないといけません
でないとこれが実現できません
> syori "a1" "a2" "a3" "a4"
> syori "b1" "b2" "b3" "b4"
> syori "c1" "c2" "c3" "c4"
>
> という風にsyori関数を呼び出したいのです。
なので1データごとに改行コードをもとに戻す処理が必要になります。
すでに指摘してますがforkが発生し遅くなります。
改 行 コ ー ド を 他 の な に か に 変 換 す る な ら ば
今度はシェルスクリプトの関数に渡す前に
改行コードに戻さないといけません
でないとこれが実現できません
> syori "a1" "a2" "a3" "a4"
> syori "b1" "b2" "b3" "b4"
> syori "c1" "c2" "c3" "c4"
>
> という風にsyori関数を呼び出したいのです。
なので1データごとに改行コードをもとに戻す処理が必要になります。
すでに指摘してますがforkが発生し遅くなります。
2018/06/10(日) 17:02:57.65
言質ww
まあ、永遠に「否定だけ」してろ。もうオツムの具合わかったので、いいよ、どう思われようが
まあ、永遠に「否定だけ」してろ。もうオツムの具合わかったので、いいよ、どう思われようが
2018/06/10(日) 17:04:45.37
2018/06/10(日) 17:05:24.55
2018/06/10(日) 17:07:18.69
2018/06/10(日) 17:07:51.94
多分\エスケープ云々は途中でなんらか処理をする時にRFC準拠のエスケープだと不都合だからじゃないかな
「Mika says "I'm Happy"」という文を一つのフィールドとして処理するとき
RFC準拠だと
「Mika says ""I'm Happy""」になるけど、例えばこれをsed(1)やらawk(1)に通したいと思ったときは
「Mika says \"I'm Happy\"」という形にしたほうが処理しやすいでしょう?
そういうことなんじゃないかな。
「Mika says "I'm Happy"」という文を一つのフィールドとして処理するとき
RFC準拠だと
「Mika says ""I'm Happy""」になるけど、例えばこれをsed(1)やらawk(1)に通したいと思ったときは
「Mika says \"I'm Happy\"」という形にしたほうが処理しやすいでしょう?
そういうことなんじゃないかな。
2018/06/10(日) 17:09:13.29
>>389
シェルスクリプトに合わせた出力すればええねん
シェルスクリプトに合わせた出力すればええねん
2018/06/10(日) 17:09:28.43
>>390
だから デ ー タ の中の改 行を何かに変 換すると
もとに戻す処 理を 一 行 一 行やらない といけないから
遅くなるって指摘をずーっと前にした
その遅く なる理由を思 いつかなかった んだろ?
だから デ ー タ の中の改 行を何かに変 換すると
もとに戻す処 理を 一 行 一 行やらない といけないから
遅くなるって指摘をずーっと前にした
その遅く なる理由を思 いつかなかった んだろ?
2018/06/10(日) 17:09:57.89
2018/06/10(日) 17:10:08.09
つーかなんでさっきから、おっぱいがいっぱいとかで
書き込めないんだ?変な言葉書いてないだろ
書き込めないんだ?変な言葉書いてないだろ
2018/06/10(日) 17:17:21.14
>>394
なんで一行一行なんだか。sedかtrでやりゃええことやん。それが一行一行か?
遅くなる遅くなるって遅くなるに決まってるやん。条件によりそれが妥当かどうかなんてなんでそう否定できるのか不思議でならない
んな速度速度言うなら、Cなりでやればって言うw 遅い遅い言うてるけど、お前のもじゃどうすんの?ってのがさっぱりだな
なんで一行一行なんだか。sedかtrでやりゃええことやん。それが一行一行か?
遅くなる遅くなるって遅くなるに決まってるやん。条件によりそれが妥当かどうかなんてなんでそう否定できるのか不思議でならない
んな速度速度言うなら、Cなりでやればって言うw 遅い遅い言うてるけど、お前のもじゃどうすんの?ってのがさっぱりだな
2018/06/10(日) 17:18:30.12
>>395
何を言いたのかわかりません
何を言いたのかわかりません
2018/06/10(日) 17:22:11.92
>>392
> 「Mika says \"I'm Happy\"」という形にしたほうが処理しやすいでしょう?
今の話はもっと複雑で
「Mika says "I'm Happy
'couse picked up \10."」
という文だったらどうするか?って話なんだけどな。
いやわかるよ。どうすればいいかは。
問題はどうやってそれを実現するかって話
sedやawkに通す前に、変換すんの?
> 「Mika says \"I'm Happy\"」という形にしたほうが処理しやすいでしょう?
今の話はもっと複雑で
「Mika says "I'm Happy
'couse picked up \10."」
という文だったらどうするか?って話なんだけどな。
いやわかるよ。どうすればいいかは。
問題はどうやってそれを実現するかって話
sedやawkに通す前に、変換すんの?
2018/06/10(日) 17:24:25.73
>>399
最後にマジれすすると最初のフィルタはひとつのawkだけでできる。めーんどくさいけど
最後にマジれすすると最初のフィルタはひとつのawkだけでできる。めーんどくさいけど
2018/06/10(日) 17:25:37.95
2018/06/10(日) 17:26:19.38
>>400
最初だけできてもだめ駄目
これが実現できないと駄目
> syori "a1" "a2" "a3" "a4"
> syori "b1" "b2" "b3" "b4"
> syori "c1" "c2" "c3" "c4"
>
> という風にsyori関数を呼び出したいのです。
最初だけできてもだめ駄目
これが実現できないと駄目
> syori "a1" "a2" "a3" "a4"
> syori "b1" "b2" "b3" "b4"
> syori "c1" "c2" "c3" "c4"
>
> という風にsyori関数を呼び出したいのです。
2018/06/10(日) 17:39:23.49
>>401,402
ダメダメ言ってないで、少しは考えろ。どっちも指摘がトンチンカン
ダメダメ言ってないで、少しは考えろ。どっちも指摘がトンチンカン
2018/06/10(日) 17:48:10.30
思ったんだが
正規表現でやらずに有限状態機械を作って
if ダブルクオートで始まらない
コンマを探して終了
else
""でない"に続くコンマを探して終了
とすれば解決するんじゃないかな。少なくともRFC勧告に則ってるCSVは。
正規表現でやらずに有限状態機械を作って
if ダブルクオートで始まらない
コンマを探して終了
else
""でない"に続くコンマを探して終了
とすれば解決するんじゃないかな。少なくともRFC勧告に則ってるCSVは。
2018/06/10(日) 18:47:23.27
どういうことだ
2018/06/10(日) 19:24:35.96
盛り上がりすぎだろwwww一日100近く伸びるってどんだけだwwww
2018/06/10(日) 20:05:44.39
>>385
どうやってそれを区別するの?
どうやってそれを区別するの?
2018/06/10(日) 20:07:14.87
>>397
sedは改行コードで切れちゃうから、データ中の改行と行の区切りの区別をつけられないだろ
sedは改行コードで切れちゃうから、データ中の改行と行の区切りの区別をつけられないだろ
2018/06/10(日) 20:08:19.79
>>404
CSVじゃないらしいので、"が閉じてる必要はないだろう?
CSVじゃないらしいので、"が閉じてる必要はないだろう?
410名無しさん@お腹いっぱい。
2018/06/10(日) 20:27:13.49 【またカミカゼ暴走、群馬のスーパー、重傷9人】 放射能が原因だけど、国防上、トップシークレット?
http://rosie.5ch.net/test/read.cgi/liveplus/1528627781/l50
http://rosie.5ch.net/test/read.cgi/liveplus/1528627781/l50
2018/06/10(日) 20:50:13.84
>>408
後処理のだぞ。そのデータ中の改行と行の区切りの区別をつけるために最初にータ中の改行を処理して、終わったらデータ中の改行を戻すって話だぞ?
少しは処理を想像そしてからなんか言ったら?すごい近視眼で明後日な文句言う前に
後処理のだぞ。そのデータ中の改行と行の区切りの区別をつけるために最初にータ中の改行を処理して、終わったらデータ中の改行を戻すって話だぞ?
少しは処理を想像そしてからなんか言ったら?すごい近視眼で明後日な文句言う前に
2018/06/10(日) 20:55:32.25
>>409
CSVじゃないからあって言うのもいるけど、だったらデータはどう表すのだろうな
データ中の改行と行の区切りの改行ってわからなくね?そのためにデータの始め終わりを表す何かが必要でそれが何かを言ってないんだったら、それを " として話をしてもおかしくはないってか、それしかないだろう
なんでそんな近視眼なツッコミばかりやねん
CSVじゃないからあって言うのもいるけど、だったらデータはどう表すのだろうな
データ中の改行と行の区切りの改行ってわからなくね?そのためにデータの始め終わりを表す何かが必要でそれが何かを言ってないんだったら、それを " として話をしてもおかしくはないってか、それしかないだろう
なんでそんな近視眼なツッコミばかりやねん
2018/06/10(日) 20:56:07.54
>>282
GNU awk の FPAT を使ってみる。一論理行のデータ数は4個で固定、という前提。
gawk -v RS='\0' -v FPAT='"(([^,\n]*)|(([^"]|\\\\"|\"\")*))"' \
'function syori(v1,v2,v3,v4){ ## ここで何らかの処理 ## }
{
i=1
while(i<NF){
syori($(i++),$(i++),$(i++),$(i++))
}
}' data.txt
GNU awk の FPAT を使ってみる。一論理行のデータ数は4個で固定、という前提。
gawk -v RS='\0' -v FPAT='"(([^,\n]*)|(([^"]|\\\\"|\"\")*))"' \
'function syori(v1,v2,v3,v4){ ## ここで何らかの処理 ## }
{
i=1
while(i<NF){
syori($(i++),$(i++),$(i++),$(i++))
}
}' data.txt
2018/06/10(日) 22:03:59.12
>>411
> 終わったらデータ中の改行を戻すって話だぞ?
そのときに全データの改行を一度に戻すとデータの中の改行と
データ区切りの改行の区別がつかなくなってしまうので、
1データずつ処理する=1行ずつsedなどを実行して遅くなるってことには
気づきましたか?
> 終わったらデータ中の改行を戻すって話だぞ?
そのときに全データの改行を一度に戻すとデータの中の改行と
データ区切りの改行の区別がつかなくなってしまうので、
1データずつ処理する=1行ずつsedなどを実行して遅くなるってことには
気づきましたか?
2018/06/10(日) 22:29:15.51
2018/06/10(日) 22:30:35.05
2018/06/10(日) 22:42:11.32
>>414-416
前処理と後処理を混同してあーだこーだ言われても。アホかっ
前処理と後処理を混同してあーだこーだ言われても。アホかっ
2018/06/10(日) 22:48:58.34
2018/06/10(日) 22:49:09.09
2018/06/10(日) 22:49:14.03
もう一から説明しないと、情報処理の基本すらわかってないようなので
バカバカしすぎだけど、
・改行がデータ中とレコードの終わりを示すのが混在している
・シェルスクリプトは基本、改行は改行でしかなく、データ中なんて知らんただの一行=レコードがブッタ切られる
・データ中の改行を他のナニかに変えれば、シェルスクリプトは一行=1レコードと認識する
前処理:データ中の改行だけをナニかに変える
本処理:改行が終端の一行=1レコードを処理する
後処理:ナニかに変えたのを改行に戻す
たった、これだけのことをなぜ理解できないでトンチンカンなことばっかり言うのか。前処理をsedでできるなんて言ったことないぞ(できるかもだが、それはもっと面倒なの俺は考えんw)。後処理はsedでできることは馬鹿でもわかるだろうにぃぃぃ
バカバカしすぎだけど、
・改行がデータ中とレコードの終わりを示すのが混在している
・シェルスクリプトは基本、改行は改行でしかなく、データ中なんて知らんただの一行=レコードがブッタ切られる
・データ中の改行を他のナニかに変えれば、シェルスクリプトは一行=1レコードと認識する
前処理:データ中の改行だけをナニかに変える
本処理:改行が終端の一行=1レコードを処理する
後処理:ナニかに変えたのを改行に戻す
たった、これだけのことをなぜ理解できないでトンチンカンなことばっかり言うのか。前処理をsedでできるなんて言ったことないぞ(できるかもだが、それはもっと面倒なの俺は考えんw)。後処理はsedでできることは馬鹿でもわかるだろうにぃぃぃ
2018/06/10(日) 22:50:39.10
2018/06/10(日) 22:50:59.99
>>420に補足すると、
(POSIXの範囲では)readは必ず改行コードでぶった切られる
(POSIXの範囲では)readは必ず改行コードでぶった切られる
2018/06/10(日) 22:53:10.76
>>420
> 前処理:データ中の改行だけをナニかに変える
> 本処理:改行が終端の一行=1レコードを処理する
> 後処理:ナニかに変えたのを改行に戻す
それは理解しているが、
1. 改行を何かに また 何かを改行にするには、どうやるのか?
2. 変える または 戻す 処理は1コマンドで実行できるのか?
の答えが、1行ずつfork、execしなきゃならないから
データ量に比例して遅くなるって話をしてる
> 前処理:データ中の改行だけをナニかに変える
> 本処理:改行が終端の一行=1レコードを処理する
> 後処理:ナニかに変えたのを改行に戻す
それは理解しているが、
1. 改行を何かに また 何かを改行にするには、どうやるのか?
2. 変える または 戻す 処理は1コマンドで実行できるのか?
の答えが、1行ずつfork、execしなきゃならないから
データ量に比例して遅くなるって話をしてる
2018/06/10(日) 22:55:00.78
2018/06/10(日) 22:55:49.68
やたらスレが延びてるけど動くモノが出来上がる気配がない
さっさと手を動かせよ
さっさと手を動かせよ
2018/06/10(日) 22:56:51.41
2018/06/10(日) 22:56:58.92
> 1行ずつfork、execしなくてもいい方法もあるのに
それがもっと遅くなる方法だったら笑うがねw
それがもっと遅くなる方法だったら笑うがねw
2018/06/10(日) 22:58:11.88
2018/06/10(日) 22:58:14.56
最初の質問者じゃなかった、何を目的に延々と絡んでるのか意味不明すぎ
できないできないってばかりで
できないできないってばかりで
430426
2018/06/10(日) 22:59:16.28 あ、「安全な文字」っていうのは「通常の用途に使われるけれども日本語圏では滅多に使われない文字」の意味だったのね。
俺の解釈としてはUnicodeに収録されてる四種の区切り文字も「安全な文字」の類に入るからさ。
勘違いしてすまんな
俺の解釈としてはUnicodeに収録されてる四種の区切り文字も「安全な文字」の類に入るからさ。
勘違いしてすまんな
2018/06/10(日) 22:59:31.44
bash拡張は置換命令あるけど、
POSIXシェルの場合、外部コマンドを呼び出す以外に
置換命令はないんだよ。知ってる?
POSIXシェルの場合、外部コマンドを呼び出す以外に
置換命令はないんだよ。知ってる?
2018/06/10(日) 23:03:46.06
>>430
> 俺の解釈としてはUnicodeに収録されてる四種の区切り文字も「安全な文字」の類に入るからさ。
まさに、ぽか〜んだわw
今度はお前にUTF-8の講釈をしないといかんのか?
Unix系で簡単に使えるUnicodeはUTF-8しかないが
(その他のエンコードは、文字の中にNULL文字が入るためシェルスクリプトで扱えない)
そのUTF-8はASCII互換であるため、U+001EやU+001Fは
ASCIIコードの0x1Eと0x1Fと全く同じであるため、
この文脈で、Unicodeかどうかなんて考える必要ないんだよ
> 俺の解釈としてはUnicodeに収録されてる四種の区切り文字も「安全な文字」の類に入るからさ。
まさに、ぽか〜んだわw
今度はお前にUTF-8の講釈をしないといかんのか?
Unix系で簡単に使えるUnicodeはUTF-8しかないが
(その他のエンコードは、文字の中にNULL文字が入るためシェルスクリプトで扱えない)
そのUTF-8はASCII互換であるため、U+001EやU+001Fは
ASCIIコードの0x1Eと0x1Fと全く同じであるため、
この文脈で、Unicodeかどうかなんて考える必要ないんだよ
2018/06/10(日) 23:05:23.11
2018/06/10(日) 23:07:34.36
2018/06/10(日) 23:13:46.83
>>433
> それは元々のデータがそうであるってこと?
ちょっと違うな
「元々のデータがそうであってもよい」ってこと
元々のデータ形式について指定はないのだから
(処理するには効率の悪い)CSVデータでもOKだし、
どんなデータでもよい
そのデータ形式も含めて、
どうしたらいいでしょうか?という話だ
> それは元々のデータがそうであるってこと?
ちょっと違うな
「元々のデータがそうであってもよい」ってこと
元々のデータ形式について指定はないのだから
(処理するには効率の悪い)CSVデータでもOKだし、
どんなデータでもよい
そのデータ形式も含めて、
どうしたらいいでしょうか?という話だ
2018/06/10(日) 23:15:22.00
>>435
データの改行とそうじゃない改行をどうすんの?どうやんの?
データの改行とそうじゃない改行をどうすんの?どうやんの?
437435
2018/06/10(日) 23:16:17.88 まあ、そのデータもシェルスクリプトで生成はするんだけどな
シェルスクリプト1 → 何らかのデータ形式 → シェルスクリプト2
「何らかのデータ形式」のデータの中に(データ区切りの改行とは別に)
1データの値として改行等が含まれることがあるのでどうすっかなーって話
シェルスクリプト1 → 何らかのデータ形式 → シェルスクリプト2
「何らかのデータ形式」のデータの中に(データ区切りの改行とは別に)
1データの値として改行等が含まれることがあるのでどうすっかなーって話
2018/06/10(日) 23:16:40.28
2018/06/10(日) 23:17:19.92
>>436
> データの改行とそうじゃない改行をどうすんの?どうやんの?
そこをどうするのが質問だって〜の
> Excelから出力したCSVのように一行(?)の中に改行が含まれた
> データを扱うにはどうしたら良いでしょうか?
って書いてあるんだろ
> データの改行とそうじゃない改行をどうすんの?どうやんの?
そこをどうするのが質問だって〜の
> Excelから出力したCSVのように一行(?)の中に改行が含まれた
> データを扱うにはどうしたら良いでしょうか?
って書いてあるんだろ
2018/06/10(日) 23:18:11.57
>>437
ん?変換するんじゃないの?変換するなら別にコードがどの値とかは関係ないだろうし??ん??
ん?変換するんじゃないの?変換するなら別にコードがどの値とかは関係ないだろうし??ん??
2018/06/10(日) 23:19:01.94
2018/06/10(日) 23:19:23.68
>>439
初期から出てるだろ
初期から出てるだろ
2018/06/10(日) 23:20:29.10
>>440
だから 改行コードとか\を 安全な文字に置換すんなってw
だから 改行コードとか\を 安全な文字に置換すんなってw
2018/06/10(日) 23:21:35.91
また変換すんな君が出てるし。代替案を何も言わずに遅い遅いだけな。お前が遅々として進まんわっ
2018/06/10(日) 23:21:59.29
>>442
> 初期から出てるだろ
残念 ながら出てない。 \ を安全 な文字に変 換ってことは
つまりデータを 変 換すると言ってる わけだが、
データは 変換(置換)するななってのが
俺の煽ってる内容
> 初期から出てるだろ
残念 ながら出てない。 \ を安全 な文字に変 換ってことは
つまりデータを 変 換すると言ってる わけだが、
データは 変換(置換)するななってのが
俺の煽ってる内容
2018/06/10(日) 23:22:01.17
>>435
CSVのRFCはフィールド・レコード区切りにU+001F/Eを使えなんて一言も言ってねぇぞ
つーかそれこそコンマと改行が区切り文字ですよと言ってる。
そういうデータを扱うことを議論してる時に、横から偉そうな態度で
「データ区切り専用の文字があるんだから元のデータにそれを使うべき」
なんて言われてもなぁ……。
あなたは論理的思考に弱いようだからもう一度同じことを違う言い方で繰り返すと、
「前提を無視した発言は控えてください」
分かった?
CSVのRFCはフィールド・レコード区切りにU+001F/Eを使えなんて一言も言ってねぇぞ
つーかそれこそコンマと改行が区切り文字ですよと言ってる。
そういうデータを扱うことを議論してる時に、横から偉そうな態度で
「データ区切り専用の文字があるんだから元のデータにそれを使うべき」
なんて言われてもなぁ……。
あなたは論理的思考に弱いようだからもう一度同じことを違う言い方で繰り返すと、
「前提を無視した発言は控えてください」
分かった?
2018/06/10(日) 23:22:47.84
>>445
お前は何も進まないので、もう以後無視します
お前は何も進まないので、もう以後無視します
2018/06/10(日) 23:23:45.97
2018/06/10(日) 23:24:21.02
2018/06/10(日) 23:24:54.06
2018/06/10(日) 23:26:44.47
2018/06/10(日) 23:28:24.22
>>450
お前本当に馬鹿だなw
1データの中に改行コードが含まれてるなら、
(データの中に含まれる改行コードではなく)
データの区切りの方を改行コードではなく、
そのために作られた制御文字を使うって話で
代替案になってるだろ
頭硬すぎw
なんで1データを必ず改行コード区切りにしないといけないのか
シェルスクリプトは1行ずつ読み取る(のが得意)ってだけで
データの区切りまで改行コード区切りにする必要はない
つーかこの制御文字がなぜ用意されているかに気づかんの?
いやはや、ここまで言わんと理解できないのか
お前本当に馬鹿だなw
1データの中に改行コードが含まれてるなら、
(データの中に含まれる改行コードではなく)
データの区切りの方を改行コードではなく、
そのために作られた制御文字を使うって話で
代替案になってるだろ
頭硬すぎw
なんで1データを必ず改行コード区切りにしないといけないのか
シェルスクリプトは1行ずつ読み取る(のが得意)ってだけで
データの区切りまで改行コード区切りにする必要はない
つーかこの制御文字がなぜ用意されているかに気づかんの?
いやはや、ここまで言わんと理解できないのか
2018/06/10(日) 23:28:31.79
2018/06/10(日) 23:31:18.96
なんでこんなに荒れてんのよ
2018/06/10(日) 23:31:40.43
2018/06/10(日) 23:33:06.87
2018/06/10(日) 23:33:38.89
2018/06/10(日) 23:35:13.32
2018/06/10(日) 23:36:47.05
2018/06/10(日) 23:40:01.41
2018/06/10(日) 23:43:44.04
2018/06/10(日) 23:49:44.49
2018/06/11(月) 00:03:29.86
>>461
ん? ようやく理解したのか?
煽りフェーズが終わると途端につまらなくなるなw
普通にできるし、俺はすでに近い形のものを実装している
自分の用途に合わせて最適化してるんで、汎用的にはなってないがな
(その後に>>282を質問という形でおまいらに問題を出したのだよ)
最初はデータの方をエスケープしてたんだが目に見えて遅くなってな
エスケープの方式をシェルビルトインのprintfでアンエスケープ
できるようにもしたが大した効果はなかった。
そこで制御文字を眺めていたら、その用途ピッタリの文字を見つけたのだよ
データとしては、0x1F(US: Unit Separator)を各項目の区切り(CSVでいうカンマ相当)
0x1Eを(RS: Record Separator)を名前の通り、データ区切りとして使ってる
USの方はIFSを使うことでPOSIX準拠でforなどで処理することができる
さらに0x1D(GS: Group Separotor)を使えば階層構造があるデータを取り扱えるだろうし
0x1C(FS: File Separator)を使えば標準入力で複数のファイルを渡すようなこともできるだろう
便利だがそれに気づいたのは>>323が最初。
おまいらは最初、シェルスクリプトで扱うもんじゃないとか言っていた
>>323のあともその使い道に気づかないでいた。まだまだだなw
ん? ようやく理解したのか?
煽りフェーズが終わると途端につまらなくなるなw
普通にできるし、俺はすでに近い形のものを実装している
自分の用途に合わせて最適化してるんで、汎用的にはなってないがな
(その後に>>282を質問という形でおまいらに問題を出したのだよ)
最初はデータの方をエスケープしてたんだが目に見えて遅くなってな
エスケープの方式をシェルビルトインのprintfでアンエスケープ
できるようにもしたが大した効果はなかった。
そこで制御文字を眺めていたら、その用途ピッタリの文字を見つけたのだよ
データとしては、0x1F(US: Unit Separator)を各項目の区切り(CSVでいうカンマ相当)
0x1Eを(RS: Record Separator)を名前の通り、データ区切りとして使ってる
USの方はIFSを使うことでPOSIX準拠でforなどで処理することができる
さらに0x1D(GS: Group Separotor)を使えば階層構造があるデータを取り扱えるだろうし
0x1C(FS: File Separator)を使えば標準入力で複数のファイルを渡すようなこともできるだろう
便利だがそれに気づいたのは>>323が最初。
おまいらは最初、シェルスクリプトで扱うもんじゃないとか言っていた
>>323のあともその使い道に気づかないでいた。まだまだだなw
2018/06/11(月) 00:07:10.97
キモ偉そう
2018/06/11(月) 00:15:39.42
おまけで、一つだけ>>431に補足しておいてやろう
(もちろん>>431を書いたのも俺だけどなw)
> bash拡張は置換命令あるけど、
> POSIXシェルの場合、外部コマンドを呼び出す以外に
> 置換命令はないんだよ。知ってる?
置換命令は無いが、fork相当のことをせずにprintfも使わずに
エスケープされた文字をアンエスケープする方法はある
例えばエスケープの方式がよくある\記号を使うやり方だとして、
IFS='\' (エスケープが必要だったかも知れない)でデータをsplitして
caseで n*) なら改行を表すエスケープ文字と解釈して
一文字目のnを ${STRING#?} で削除しつつ、
改行コードを一文字目に加えるという方法だ
これはこれで遅くなるので却下したんだがなw
(もちろん>>431を書いたのも俺だけどなw)
> bash拡張は置換命令あるけど、
> POSIXシェルの場合、外部コマンドを呼び出す以外に
> 置換命令はないんだよ。知ってる?
置換命令は無いが、fork相当のことをせずにprintfも使わずに
エスケープされた文字をアンエスケープする方法はある
例えばエスケープの方式がよくある\記号を使うやり方だとして、
IFS='\' (エスケープが必要だったかも知れない)でデータをsplitして
caseで n*) なら改行を表すエスケープ文字と解釈して
一文字目のnを ${STRING#?} で削除しつつ、
改行コードを一文字目に加えるという方法だ
これはこれで遅くなるので却下したんだがなw
2018/06/11(月) 00:18:20.26
性格が歪んでるな。これ以後の質問者とかどうするとか思わないのだろうな
2018/06/11(月) 00:19:46.66
相手にするだけ時間の無駄だと思うが…
2018/06/11(月) 00:20:59.85
>>466
もう人は俺がたどり着いた答えとは別の
もっといい案が出るのではないかと思って
先入観を与えないために、あえて俺がたどり着いた答えを出さずに
質問の形でかいた。
しかし、俺がたどり着いた答えに辿り着く前に
諦める奴らばかりだった。情けないなw
もう人は俺がたどり着いた答えとは別の
もっといい案が出るのではないかと思って
先入観を与えないために、あえて俺がたどり着いた答えを出さずに
質問の形でかいた。
しかし、俺がたどり着いた答えに辿り着く前に
諦める奴らばかりだった。情けないなw
2018/06/11(月) 00:21:27.45
× もう人は俺がたどり
○ もう一つは俺がたどり
○ もう一つは俺がたどり
2018/06/11(月) 00:22:08.47
>>467
確かに。性格が歪んでるのを自覚してないようで
確かに。性格が歪んでるのを自覚してないようで
2018/06/11(月) 00:26:05.87
2018/06/11(月) 00:27:33.78
某原理主義者のニオイがする
2018/06/11(月) 00:29:42.66
2018/06/11(月) 01:13:05.93
たしかにリッチー大佐は酷い人格だけど間違ったことは言ってねえし
しかも有用なツールを作ってから、ああいう毒を吐いてる。
上で喚いてるなんの解決策も出さず人を否定し馬鹿にすることしかできない人間と比較するのは失礼千万
しかも有用なツールを作ってから、ああいう毒を吐いてる。
上で喚いてるなんの解決策も出さず人を否定し馬鹿にすることしかできない人間と比較するのは失礼千万
2018/06/11(月) 01:13:17.92
誰かちょっと流れをまとめてくれ
誰が何を言いたいのかさっぱりわからん
誰が何を言いたいのかさっぱりわからん
2018/06/11(月) 01:21:58.95
2018/06/11(月) 01:22:56.01
2018/06/11(月) 01:42:28.78
見た目でわかる文字列への置き換え派ですが、いにしえのエスケープコードの流用はいいアイデアだと思いました。
2018/06/11(月) 01:43:29.77
>>463
後で使うかもだからブログに簡単にまとめとけw 荒らした罰な
後で使うかもだからブログに簡単にまとめとけw 荒らした罰な
2018/06/11(月) 02:22:50.42
>>479
俺は書かないよ。だけどこのスレを参考にして誰かが書くかもしれないね。
その場合、このスレを参考にしましたって書いても書かなっくてもいいよ
他の誰かがこことは別に思いついて書くかもしれないけどw
俺は書かないよ。だけどこのスレを参考にして誰かが書くかもしれないね。
その場合、このスレを参考にしましたって書いても書かなっくてもいいよ
他の誰かがこことは別に思いついて書くかもしれないけどw
2018/06/11(月) 02:45:32.35
スレチの自覚が無いとか、本当バカ
2018/06/11(月) 02:49:17.37
シェルスクリプトの話題なのにスレチってどういうこと?
2018/06/11(月) 02:57:45.51
2018/06/11(月) 03:07:25.04
ん? シェルスクリプト総合でしょ?
質問スレじゃないし
シェルスクリプトの話題で楽しめばいいじゃん?
質問スレじゃないし
シェルスクリプトの話題で楽しめばいいじゃん?
2018/06/11(月) 03:30:27.23
そろそろ仲直りしろよお前ら
2018/06/11(月) 03:44:51.73
確かにそれ専用の文字があるならそれを使ったほうがいいね。
some data␟other data␟42␞
some data␟other data␟42␞
↑こういうの。
既にそういうフォーマットがあってもいいと思うけどざっと検索したところでは見付からない。
なにか不都合でもあるのか、単純にU+001E/Fの知名度が低すぎるのか。
ところでPOSIX awkはRsやFSに任意の文字って指定できたっけ。GNU awkではできたんだけれど。
some data␟other data␟42␞
some data␟other data␟42␞
↑こういうの。
既にそういうフォーマットがあってもいいと思うけどざっと検索したところでは見付からない。
なにか不都合でもあるのか、単純にU+001E/Fの知名度が低すぎるのか。
ところでPOSIX awkはRsやFSに任意の文字って指定できたっけ。GNU awkではできたんだけれど。
2018/06/11(月) 04:48:35.52
>>486
https://www.freebsd.org/cgi/man.cgi?query=awk&sektion=1
あるし、STANDARDSはもとより本文でも拡張したよってのは無いからPOSIXとしてあるんじゃね
https://www.freebsd.org/cgi/man.cgi?query=awk&sektion=1
あるし、STANDARDSはもとより本文でも拡張したよってのは無いからPOSIXとしてあるんじゃね
2018/06/11(月) 04:51:18.43
2018/06/11(月) 06:07:49.77
つまらない点だから指摘していなかったが、
この話で U+ という表記はだめだぞ
U+ というのはUnicodeの話で+の後の16進数は
文字集合におけるコードポイントだ
U+001Eは符号方式がUTF-8だと0x1Eになるが、
UTF-16だと 0x00 0x1E(ビッグエンディアンの場合)
もしくは 0x1E 0x00 (リトルエンディアンの場合) となる
U+ だとUnicodeという文字集合を表すことになるが
符号方式がUTF-8だと決めつけることはできない
この話で U+ という表記はだめだぞ
U+ というのはUnicodeの話で+の後の16進数は
文字集合におけるコードポイントだ
U+001Eは符号方式がUTF-8だと0x1Eになるが、
UTF-16だと 0x00 0x1E(ビッグエンディアンの場合)
もしくは 0x1E 0x00 (リトルエンディアンの場合) となる
U+ だとUnicodeという文字集合を表すことになるが
符号方式がUTF-8だと決めつけることはできない
2018/06/11(月) 09:45:54.74
あほか
最初に本データの形式仕様から制定してもいいという条件を書かないから
みんな処理元のデータ形式は弄れない前提で答えてるんやん
説明不足なのに自分だけ神視点でお題気取りか
死ぬほど痛々しいわ
最初に本データの形式仕様から制定してもいいという条件を書かないから
みんな処理元のデータ形式は弄れない前提で答えてるんやん
説明不足なのに自分だけ神視点でお題気取りか
死ぬほど痛々しいわ
2018/06/11(月) 10:09:41.26
ようやく気づいたわ
スレを盛り上げたかったんやな
スレを盛り上げたかったんやな
2018/06/11(月) 10:26:48.37
俺が主役が強すぎて贔屓目にみてもだな
2018/06/11(月) 10:40:14.39
日本語で
2018/06/11(月) 11:22:26.93
>>490
> 最初に本データの形式仕様から制定してもいいという条件を書かないから
> みんな処理元のデータ形式は弄れない前提で答えてるんやん
データを加工(エスケープ)していいと書いてないのに勝手に加工してるやん?
だから変えたら駄目って書いてないなら変えていいって前提で
答えてるでしょ?
> 最初に本データの形式仕様から制定してもいいという条件を書かないから
> みんな処理元のデータ形式は弄れない前提で答えてるんやん
データを加工(エスケープ)していいと書いてないのに勝手に加工してるやん?
だから変えたら駄目って書いてないなら変えていいって前提で
答えてるでしょ?
2018/06/11(月) 11:29:27.18
スレは十分伸びたからもうええやろ
何と戦ってるんや
何と戦ってるんや
2018/06/11(月) 11:43:52.49
自作自演ではないか
2018/06/11(月) 13:33:30.08
結局特に解決や参考になるような話は出なかったね
まあ今更CSVで新ネタも出ないだろう
まあ今更CSVで新ネタも出ないだろう
2018/06/11(月) 13:38:57.30
まだお前CSVって言ってんのか?
そんなにCSVの話だと勘違いしていたことが
ショックだったのか?
そんなにCSVの話だと勘違いしていたことが
ショックだったのか?
2018/06/11(月) 13:40:15.04
もう引っ張るなや子供かよ
2018/06/11(月) 13:42:59.29
元データの上書きとバッファにコピーしての加工を同列に語っちゃうんだすげえな
ていうか元データの仕様からやっていいなら最初から↓で
改行的な区切り文字を許さない仕様にすればいいだけじゃね
> syori "a1" "a2" "a3" "a4"
> syori "b1" "b2" "b3" "b4"
> syori "c1" "c2" "c3" "c4"
ていうか元データの仕様からやっていいなら最初から↓で
改行的な区切り文字を許さない仕様にすればいいだけじゃね
> syori "a1" "a2" "a3" "a4"
> syori "b1" "b2" "b3" "b4"
> syori "c1" "c2" "c3" "c4"
2018/06/11(月) 13:44:44.59
さんざん偉そうだが全くコードを出さないのでお察しでもういいだろう
2018/06/11(月) 14:09:05.24
>>500
特に指定がない部分に関しては、
自由に変えていいと言ったの
改行が含まれてるとか、カンマやダブルクォートが含まれてるとかは
指定されているので、そこは変えたら駄目
当たり前だろ、ガキみたいな言い訳すんな
特に指定がない部分に関しては、
自由に変えていいと言ったの
改行が含まれてるとか、カンマやダブルクォートが含まれてるとかは
指定されているので、そこは変えたら駄目
当たり前だろ、ガキみたいな言い訳すんな
2018/06/11(月) 14:10:12.79
> 自由に変えていいと言ったの
変えていいと言うか、もともと指定がないから
変えるのではなくどんなものでもOKってことだが
変えていいと言うか、もともと指定がないから
変えるのではなくどんなものでもOKってことだが
2018/06/11(月) 14:11:48.62
2018/06/11(月) 15:25:33.31
もういい加減コードで語れ
どれほど偉そうにしてもコードがアレだったらアレだし、偉そうにしてなくても素晴らしいコードはそれだけで尊敬されるだろう。後者が断然かっこいいのに
どれほど偉そうにしてもコードがアレだったらアレだし、偉そうにしてなくても素晴らしいコードはそれだけで尊敬されるだろう。後者が断然かっこいいのに
2018/06/11(月) 16:00:25.01
意訳 参考にしたいのでコード教えてください
2018/06/11(月) 16:04:12.37
いや、全然。使わないもの。それも勝手なお題のだし
まあ勉強のためというのでなら、それはあるかもだが、どんなんだかだな。そもそもコードはそういうものだろうし、教えてやるって立場なんだしなw
まあ勉強のためというのでなら、それはあるかもだが、どんなんだかだな。そもそもコードはそういうものだろうし、教えてやるって立場なんだしなw
2018/06/11(月) 16:50:37.25
>>506
言ってやるなw
言ってやるなw
2018/06/11(月) 17:10:06.71
結局一行も書けてない
2018/06/11(月) 17:15:08.96
ようやくこのスレも静かになるな…
2018/06/11(月) 17:51:10.54
そう思うやろ? 次のネタ準備中やで
2018/06/11(月) 17:56:57.42
なにこいつ
2018/06/11(月) 18:49:50.82
こいつもしかしてこの間の「標準入力と標準エラー出力を同時に操作したい」のアホか。
2018/06/11(月) 18:55:33.57
これ以上くだらん問答するならコテハンつけてくれ
2018/06/12(火) 03:51:38.30
>>513
これって解決したんだっけ
これって解決したんだっけ
2018/06/12(火) 06:46:40.08
今時Python使わないでわざわざシェル使う理由って?
2018/06/12(火) 08:01:38.11
Pythonを使う理由が特にないから
2018/06/12(火) 08:37:27.40
pythonであるコマンドを実行して
それを他のコマンドに流すみたいな
ことが簡単にできたらね
それを他のコマンドに流すみたいな
ことが簡単にできたらね
2018/06/12(火) 10:53:58.20
普通にできるぞ
2018/06/12(火) 11:54:38.75
2018/06/12(火) 11:55:23.82
>>519
じゃあ、これ相当のことをやってみて
cat /etc/password | grep /bin/bash | cut -d: -f1
(なんかブロックされたからパスワードを大文字にしてる)
ここまで簡潔に書ける言語をシェルスクリプト以外しらない
シェルスクリプトは(特定の用途に対して)最善だから使ってるんだよ
じゃあ、これ相当のことをやってみて
cat /etc/password | grep /bin/bash | cut -d: -f1
(なんかブロックされたからパスワードを大文字にしてる)
ここまで簡潔に書ける言語をシェルスクリプト以外しらない
シェルスクリプトは(特定の用途に対して)最善だから使ってるんだよ
2018/06/12(火) 12:05:07.20
2018/06/12(火) 12:10:52.66
大文字w
2018/06/12(火) 12:12:33.73
2018/06/12(火) 12:13:42.07
2018/06/12(火) 12:14:36.84
そりゃまあ、冗長でいいなら、アセンブラでなんでも作れますわなw
作れるか作れないかの話なんかしてない
作れるか作れないかの話なんかしてない
2018/06/12(火) 12:34:38.85
>>521
そういうのはperlやawk向きだな。
perl -F: -anle 'print $F[0] if $F[6] eq "/bin/bash"' /etc/passwd
awk -F: '$7=="/bin/bash" {print $1}' /etc/passwd
pythonはもっと汎用言語よりだからずっと長くなる。
こんな感じか?
f = open("/etc/passwd", "r");
for l in f :
c = l[:-1].split(":")
if c[6] == "/bin/bash" :
print(c[0])
ふだんpython書いてないからよくわからん。
専用言語がそれに向いた用途なら、汎用言語よりもコンパクトに書けるのは当たり前。
でなきゃ専用言語の存在価値がない。
でもたとえば改行もデータの一部として扱いたいみたいに向いてない用途だと
書きやすさも長さも逆転したりする。
ひとつの言語にこだわるんじゃなくて、用途に応じて言語を選択するのが
UNIX流だよ。
そういうのはperlやawk向きだな。
perl -F: -anle 'print $F[0] if $F[6] eq "/bin/bash"' /etc/passwd
awk -F: '$7=="/bin/bash" {print $1}' /etc/passwd
pythonはもっと汎用言語よりだからずっと長くなる。
こんな感じか?
f = open("/etc/passwd", "r");
for l in f :
c = l[:-1].split(":")
if c[6] == "/bin/bash" :
print(c[0])
ふだんpython書いてないからよくわからん。
専用言語がそれに向いた用途なら、汎用言語よりもコンパクトに書けるのは当たり前。
でなきゃ専用言語の存在価値がない。
でもたとえば改行もデータの一部として扱いたいみたいに向いてない用途だと
書きやすさも長さも逆転したりする。
ひとつの言語にこだわるんじゃなくて、用途に応じて言語を選択するのが
UNIX流だよ。
2018/06/12(火) 12:43:39.68
import csv
[p[0] for p in csv.reader(open('/etc/pas@wd'), delimiter=':') if p[-1] == '/bin/bash']
[p[0] for p in csv.reader(open('/etc/pas@wd'), delimiter=':') if p[-1] == '/bin/bash']
2018/06/12(火) 12:44:23.95
2018/06/12(火) 13:05:44.44
>>528
やっぱりそのわかりにくいのが限界ですよね
やっぱりそのわかりにくいのが限界ですよね
2018/06/12(火) 13:48:35.13
2018/06/12(火) 13:51:53.23
老害じじいかよ
2018/06/12(火) 13:55:48.66
その話続けたければいい加減名前つけろ
NGするから
NGするから
2018/06/12(火) 13:57:32.52
だな。なんで、へー、そう書けるんだとかならずに、あれが駄目これが駄目ってばっかなんかな。会話として見ててくもそ面白くない、いらいらすんなw
2018/06/12(火) 14:08:40.82
2018/06/12(火) 18:38:07.06
2018/06/12(火) 18:40:26.84
よほどお前がこだわってるな。てかキモいわ
2018/06/12(火) 18:46:13.86
俺はレスしただけだけど?
>>529が書かなければ、この話をすることもなかった
>>529が書かなければ、この話をすることもなかった
2018/06/12(火) 18:49:00.93
2018/06/12(火) 18:51:25.65
お前の落ち度だってのはわかった
2018/06/12(火) 18:52:26.75
2018/06/12(火) 19:00:28.24
自分のことだって自覚してるからレスしたんだろ?
2018/06/12(火) 19:03:32.17
2018/06/12(火) 19:12:05.82
2018/06/12(火) 19:16:54.17
自作自演
2018/06/12(火) 19:18:03.28
いつまでも俺のこと話題にしつづけてくれ! まで読んだ
自意識過剰すぎてきもい
自意識過剰すぎてきもい
2018/06/12(火) 19:21:22.12
2018/06/12(火) 19:23:17.23
自作自演2
2018/06/12(火) 19:27:22.55
なにか気に触るようだな、繰り返しとはwなにが気に触ってるのかさっぱりだな
2018/06/12(火) 19:37:04.17
これ以上そのクソを撒き散らすなら大量のコピペでスレ埋め尽くすぞ
2018/06/12(火) 19:39:25.91
問題定義をはっきりせずに、回答に対して一方的にダメ出ししてるから当たり前だろ。
>>521 だって awk や perl の解は >>521 とほぼ同程度の記述量なのに
(GECOS に /bin/bash とか書いてあっても誤動作しないという点ではむしろ優れてる)
「シェルスクリプト以外しらない」とかいう視野の狭さを撤回しないし。
ほぼすべてのプログラマーにとってシェルスクリプトってのは
第二・第三言語であって、シェルスクリプトが最適な用途なら使うけど、
そうじゃない場合があることは当然知ってて、
こんな風に威張って使うものじゃないんだよ。
インフラ担当ならシェルスクリプトが第一言語ってのもありうるけど、
そういう場合にはこんなに威張らないよなあ。
>>521 だって awk や perl の解は >>521 とほぼ同程度の記述量なのに
(GECOS に /bin/bash とか書いてあっても誤動作しないという点ではむしろ優れてる)
「シェルスクリプト以外しらない」とかいう視野の狭さを撤回しないし。
ほぼすべてのプログラマーにとってシェルスクリプトってのは
第二・第三言語であって、シェルスクリプトが最適な用途なら使うけど、
そうじゃない場合があることは当然知ってて、
こんな風に威張って使うものじゃないんだよ。
インフラ担当ならシェルスクリプトが第一言語ってのもありうるけど、
そういう場合にはこんなに威張らないよなあ。
2018/06/12(火) 19:40:09.57
なんでやねんっwヤツより悪質/ヤツ以下になってどうするねん
まさかお前(てか、ここ一連の)はヤツじゃないよな?
まさかお前(てか、ここ一連の)はヤツじゃないよな?
2018/06/12(火) 19:42:22.47
この板ってワッチョイは使えるんだっけ?
次回からいれるか
次回からいれるか
2018/06/12(火) 19:42:45.45
2018/06/12(火) 21:34:04.16
シェルスクリプトのデバグに関する質問です
eval XXX
というコマンドで実行されるコマンドを確かめるには
evalをechoに置き換えて
echo XXX
とやればいいですかね。
両者の間に、実行されるか表示されるだけかの違い以外の差異はありますか?
例えばある種の展開が行われないとか。
eval XXX
というコマンドで実行されるコマンドを確かめるには
evalをechoに置き換えて
echo XXX
とやればいいですかね。
両者の間に、実行されるか表示されるだけかの違い以外の差異はありますか?
例えばある種の展開が行われないとか。
2018/06/12(火) 22:22:58.09
eval を echo に書き換えるという方法でデバッグはできるんだけど、
a='echo $PATH'
という状況で
echo $a →「echo $PATH」と表示する
eval $a →「echo /bin:/usr/bin:/usr/local」を実行する
みたいな違いはある。
eval は引数文字列に含まれるシェルのメタキャラクタを再評価するけど、
eval 以外の普通のコマンドではそういうことはないので。
あとデバッグは sh -x スクリプト名(ないしスクリプト先頭で「set -x」)して
実行状況を標準エラーに表示させるってやり方もお勧め。
a='echo $PATH'
という状況で
echo $a →「echo $PATH」と表示する
eval $a →「echo /bin:/usr/bin:/usr/local」を実行する
みたいな違いはある。
eval は引数文字列に含まれるシェルのメタキャラクタを再評価するけど、
eval 以外の普通のコマンドではそういうことはないので。
あとデバッグは sh -x スクリプト名(ないしスクリプト先頭で「set -x」)して
実行状況を標準エラーに表示させるってやり方もお勧め。
2018/06/12(火) 22:40:48.60
2018/06/12(火) 22:45:26.76
>>557
ちなみにevalで再評価されてるシェルのメタキャラクタは
シングルクオートじゃなくて $PATH の $ の方ね。
シングルクオートは代入時に字句解釈されるだけで、
$a の中身には残ってないので。
ちなみにevalで再評価されてるシェルのメタキャラクタは
シングルクオートじゃなくて $PATH の $ の方ね。
シングルクオートは代入時に字句解釈されるだけで、
$a の中身には残ってないので。
2018/06/12(火) 23:19:14.33
>>551
> >>521 だって awk や perl の解は >>521 とほぼ同程度の記述量なのに
> (GECOS に /bin/bash とか書いてあっても誤動作しないという点ではむしろ優れてる)
いや、そんなことドヤ顔で言われましても・・・
4文字追加で終わりだし
cat /etc/password | grep ':/bin/bash$' | cut -d: -f1
減らそうと思えば減らせるし
grep ':/bin/bash$' /etc/password | cut -d: -f1
あれあれ、じゃあこれ↑は、"grep向き" の問題ってことですかね?w
俺が言ってるシェルスクリプト向きの問題っていうのは
既存のコマンドの実行と組み合わせが簡単に実行できるってことだよ
> >>521 だって awk や perl の解は >>521 とほぼ同程度の記述量なのに
> (GECOS に /bin/bash とか書いてあっても誤動作しないという点ではむしろ優れてる)
いや、そんなことドヤ顔で言われましても・・・
4文字追加で終わりだし
cat /etc/password | grep ':/bin/bash$' | cut -d: -f1
減らそうと思えば減らせるし
grep ':/bin/bash$' /etc/password | cut -d: -f1
あれあれ、じゃあこれ↑は、"grep向き" の問題ってことですかね?w
俺が言ってるシェルスクリプト向きの問題っていうのは
既存のコマンドの実行と組み合わせが簡単に実行できるってことだよ
2018/06/12(火) 23:34:25.44
>>551
> ほぼすべてのプログラマーにとってシェルスクリプトってのは
> 第二・第三言語であって、シェルスクリプトが最適な用途なら使うけど、
はぁ?第二とか第三とか何いってんだか。
適切な言語を使うだけの話だろ
シェルスクリプトじゃなくてPythonを使えばいいと言われたから、
"シャルスクリプトで普段やってること" = >>521で書いたような
外部コマンドの実行とそれをパイプでつないで簡単に処理することが
簡単にできるって例に出したのに、
お前は「catを実行して、その出力結果をgrep に渡して、さらにcutにわたす」
というお題を、awkやperlに置き換えるしpythonで全く違うコードに書き換えるしw
今からでも良いんやで、pythonで
「catを実行して、その出力結果をgrep に渡して、さらにcutにわたす」
を書いてみなよ。
いいか? catコマンドとgrepコマンドとcutコマンドを
ちゃんと呼び出すんだぞ。今度は間違えるなよw
ほんとシェルスクリプトがなにが得意なのか全くわかってねーわw
> ほぼすべてのプログラマーにとってシェルスクリプトってのは
> 第二・第三言語であって、シェルスクリプトが最適な用途なら使うけど、
はぁ?第二とか第三とか何いってんだか。
適切な言語を使うだけの話だろ
シェルスクリプトじゃなくてPythonを使えばいいと言われたから、
"シャルスクリプトで普段やってること" = >>521で書いたような
外部コマンドの実行とそれをパイプでつないで簡単に処理することが
簡単にできるって例に出したのに、
お前は「catを実行して、その出力結果をgrep に渡して、さらにcutにわたす」
というお題を、awkやperlに置き換えるしpythonで全く違うコードに書き換えるしw
今からでも良いんやで、pythonで
「catを実行して、その出力結果をgrep に渡して、さらにcutにわたす」
を書いてみなよ。
いいか? catコマンドとgrepコマンドとcutコマンドを
ちゃんと呼び出すんだぞ。今度は間違えるなよw
ほんとシェルスクリプトがなにが得意なのか全くわかってねーわw
2018/06/12(火) 23:41:12.01
な?www
2018/06/12(火) 23:43:50.91
な?問題を誤解して的はずれなレスを出すんやで
話にならんわ
話にならんわ
2018/06/12(火) 23:46:19.16
>>559
> あれあれ、じゃあこれ↑は、"grep向き" の問題ってことですかね?w
勿論そうだよ。
正規表現で書ける条件だったから、grepでうまくいった。
世の中には正規表現で書けない条件とかも当然あって、そういう場合
perlやawkなら自明にかけるけど、スクリプト言語使わずに
シェルだけで書こうとすると面倒だったりする。
> 俺が言ってるシェルスクリプト向きの問題っていうのは
> 既存のコマンドの実行と組み合わせが簡単に実行できるってことだよ
それに反対してる人は誰もいないと思うよ。
それこそがシェルが特化している応用分野なわけで。
しかし>>521はそれを示す例題としてはよろしくない。
他の言語ならコマンドの組み合わせとかせずに容易に解ける問題だからね。
> あれあれ、じゃあこれ↑は、"grep向き" の問題ってことですかね?w
勿論そうだよ。
正規表現で書ける条件だったから、grepでうまくいった。
世の中には正規表現で書けない条件とかも当然あって、そういう場合
perlやawkなら自明にかけるけど、スクリプト言語使わずに
シェルだけで書こうとすると面倒だったりする。
> 俺が言ってるシェルスクリプト向きの問題っていうのは
> 既存のコマンドの実行と組み合わせが簡単に実行できるってことだよ
それに反対してる人は誰もいないと思うよ。
それこそがシェルが特化している応用分野なわけで。
しかし>>521はそれを示す例題としてはよろしくない。
他の言語ならコマンドの組み合わせとかせずに容易に解ける問題だからね。
2018/06/12(火) 23:47:07.64
お前に言ってない。さすがだなwwいつもその調子。問題出すのもその調子だからなあw
2018/06/12(火) 23:48:09.54
2018/06/13(水) 00:13:02.23
2018/06/13(水) 00:20:43.06
>>563
あとなやっぱりわかってないわお前
grepもperlもawkもコマンドなんだよ。
シェルスクリプトっていうのは、そのコマンドを
"組み合わせる"のが得意って話だ。
だからgrepもperlもawkもシェルスクリプトのパワーの一つなんだよ。
もちそんそれだけじゃない。便利な多くのコマンドが
用意されてる。それらはシェルスクリプトの関数であると言える
pythonで、せっかく用意されたこれらのコマンドを使わないで
python用ライブラリとか使って冗長にコードを書くならそれは無駄だし
コマンドを使う場合でも、シェルスクリプトほど簡潔にできない。
シェルスクリプト(grep, perl, awkを組み合わせること)
VS
python(grep, perl, awkコマンドを使う もしくは 使わない)
って話であって、perlの方が〜awkの方が〜っていうのは
シェルスクリプトの方がシンプルに書けることの反論になってないんだよ。
あとなやっぱりわかってないわお前
grepもperlもawkもコマンドなんだよ。
シェルスクリプトっていうのは、そのコマンドを
"組み合わせる"のが得意って話だ。
だからgrepもperlもawkもシェルスクリプトのパワーの一つなんだよ。
もちそんそれだけじゃない。便利な多くのコマンドが
用意されてる。それらはシェルスクリプトの関数であると言える
pythonで、せっかく用意されたこれらのコマンドを使わないで
python用ライブラリとか使って冗長にコードを書くならそれは無駄だし
コマンドを使う場合でも、シェルスクリプトほど簡潔にできない。
シェルスクリプト(grep, perl, awkを組み合わせること)
VS
python(grep, perl, awkコマンドを使う もしくは 使わない)
って話であって、perlの方が〜awkの方が〜っていうのは
シェルスクリプトの方がシンプルに書けることの反論になってないんだよ。
2018/06/13(水) 00:23:56.99
なんか変な人が居着いちゃった
2018/06/13(水) 00:24:50.12
2018/06/13(水) 01:18:17.08
IDもワッチョイもないからオレオレ言われてもレスの時系列で追えないし面倒だわ
まあキチガイ君がお題の条件だしが決定的に出来ない子なのはよく分かる
>「catを実行して、その出力結果をgrep に渡して、さらにcutにわたす」
>521読んで道程まで完全に一致させろいう意図だと理解できたやつがいたら天才だわ
普段から人と会話してなさそう
まあキチガイ君がお題の条件だしが決定的に出来ない子なのはよく分かる
>「catを実行して、その出力結果をgrep に渡して、さらにcutにわたす」
>521読んで道程まで完全に一致させろいう意図だと理解できたやつがいたら天才だわ
普段から人と会話してなさそう
2018/06/13(水) 01:27:58.12
>>521
grep /bin/bash </etc/password | cut -d: -f1
grep /bin/bash </etc/password | cut -d: -f1
2018/06/13(水) 01:32:08.64
2018/06/13(水) 01:38:12.94
普段から人と会話してなさそうが如実
2018/06/13(水) 01:40:17.86
そういう悪口しか言えなくなったらおしまい
2018/06/13(水) 01:55:40.86
そろそろ名前つけてくれませんかね
2018/06/13(水) 02:14:43.53
POSIX shで絶対値をなるべく簡単に扱いたいんだけどいい方法ありますかね
exprコマンドにabsとかがあればよかったんだけども
exprコマンドにabsとかがあればよかったんだけども
2018/06/13(水) 02:31:02.70
>>571
入力側のリダイレクトって読みにくいので、自分もcatで書くかも
入力側のリダイレクトって読みにくいので、自分もcatで書くかも
2018/06/13(水) 03:18:10.80
2018/06/13(水) 03:20:58.92
お前じゃないよ自意識過剰
2018/06/13(水) 05:05:47.59
2018/06/13(水) 05:23:49.94
なんで俺が短く書いたのに、わざわざ冗長なコード書くかね?
しかも三項演算子を使ってもっと短くかけるし
$(((0 < a)?a:a * -1))
$((a>0?a:-a))
$((${a#-}))
${a#-}
しかも三項演算子を使ってもっと短くかけるし
$(((0 < a)?a:a * -1))
$((a>0?a:-a))
$((${a#-}))
${a#-}
2018/06/13(水) 06:09:33.52
>>581
おまえのコードは本質的じゃない
彼が望むのは「絶対値」であって「マイナスを除いたもの」ではない
OK?
分かったらひっこんでろ低能
もしこれに反論があったら「分かってない」ことになるからな?
おまえのコードは本質的じゃない
彼が望むのは「絶対値」であって「マイナスを除いたもの」ではない
OK?
分かったらひっこんでろ低能
もしこれに反論があったら「分かってない」ことになるからな?
2018/06/13(水) 06:26:16.58
2018/06/13(水) 06:48:30.93
なんで阿呆が二人に増えるんだよ
2018/06/13(水) 08:16:13.42
もう消えろお前ら
このスレに相応しくない
なんだよ最近のこのスレの雰囲気最悪じゃねーか
長文ダラダラ返信長々と最後にレスしたほうが勝ちみたいな古い争いしやがってからに
このスレに相応しくない
なんだよ最近のこのスレの雰囲気最悪じゃねーか
長文ダラダラ返信長々と最後にレスしたほうが勝ちみたいな古い争いしやがってからに
2018/06/13(水) 08:17:03.30
ヒント:一人二役
2018/06/13(水) 08:17:43.72
>>577
簡潔に書きたいというお題じゃなかったのか
簡潔に書きたいというお題じゃなかったのか
2018/06/13(水) 08:31:11.05
2018/06/13(水) 08:38:00.62
いや読みにくいって話であってだな
2018/06/13(水) 08:45:03.32
>>577
そりゃあんたの頭のレベルが低いからだと思うよ
そりゃあんたの頭のレベルが低いからだと思うよ
2018/06/13(水) 08:58:22.24
>583の脳内では全く論がない噛みつくだけの行為も反「論」になるらしい
これもう日本語が分かってないってレベルじゃないな
ただの小学生だわ
これもう日本語が分かってないってレベルじゃないな
ただの小学生だわ
2018/06/13(水) 09:13:46.26
小学生なら簡単に構ってちゃんになりそうなのはわかるな。もう構うなw
2018/06/13(水) 09:49:23.22
GNU grep なら
$ grep -Po '^.+?(?=:.+:/bin/bash$)' /etc/passwd
$ grep -Po '^.+?(?=:.+:/bin/bash$)' /etc/passwd
2018/06/13(水) 09:56:16.86
2018/06/13(水) 10:00:11.88
さいごにレスしたぼくがしょうりなんだ!
2018/06/13(水) 10:17:30.52
2018/06/13(水) 10:21:55.43
なんにでもレスするやつ
2018/06/13(水) 10:56:37.40
レスしなきゃ負けると信じてるみたいだからしょうがないね
2018/06/13(水) 11:34:13.17
$ cat <<. <<.
1AAA
.
2BBB
.
とやると
2BBB
とだけ出力されるんだけど、これどういう理屈か分かる?
標準入力ってヒアドキュメントでさえ上書きされる仕様なの?
1AAA
.
2BBB
.
とやると
2BBB
とだけ出力されるんだけど、これどういう理屈か分かる?
標準入力ってヒアドキュメントでさえ上書きされる仕様なの?
2018/06/13(水) 11:42:05.35
strace で見ると 2BBB だけ read してるな(1AAA は無視)。
2018/06/13(水) 12:01:06.03
2018/06/13(水) 12:22:00.85
>>595
0x03e8 ばんさえとれればあなたのしょうりです。
0x03e8 ばんさえとれればあなたのしょうりです。
2018/06/13(水) 16:23:41.49
2018/06/13(水) 16:51:47.47
リダイレクトは引数じゃないからね
実質これと同じわけだし
exec </proc/loadavg
exec </proc/uptime
cat
実質これと同じわけだし
exec </proc/loadavg
exec </proc/uptime
cat
2018/06/13(水) 17:56:57.18
>>604
なるほど、納得
なるほど、納得
2018/06/13(水) 18:05:22.98
2018/06/13(水) 18:44:51.04
なんか嫌らしい感じ
2018/06/14(木) 18:54:32.62
コロンを含むディレクトリを$PATHに登録した場合ってどういう挙動になるんだろう
2018/06/14(木) 20:11:28.93
コロンがセパレータなのでそこで分かれる
2018/06/14(木) 20:52:33.17
findでexecオプションの引数のあとにシェルに渡すパイプを付けるとexecに渡したコマンドがシグナル13パイプ破壊を出してくるんですけど
どうにかなりませんかね。
今のところ/dev/nullに標準エラー出力を捨てることで解決してるんですけども。
find . -exec basename \{\} \; | head
↑これで再現するはずです。
解決するときはできればPOSIXの範囲でやりたいです。findのGNU拡張で解決できるならそれでもいいんですが
メインPCがOS Xなので、最低でもBSD拡張、さらに言えばPOSIXに限定してほしいです すいません。
どうにかなりませんかね。
今のところ/dev/nullに標準エラー出力を捨てることで解決してるんですけども。
find . -exec basename \{\} \; | head
↑これで再現するはずです。
解決するときはできればPOSIXの範囲でやりたいです。findのGNU拡張で解決できるならそれでもいいんですが
メインPCがOS Xなので、最低でもBSD拡張、さらに言えばPOSIXに限定してほしいです すいません。
2018/06/14(木) 21:25:25.31
macOSだが再現しないなあ
2018/06/14(木) 22:13:02.03
FreeBSDは再現しない。
CentOSは再現した。
対策は後で考える。
CentOSは再現した。
対策は後で考える。
2018/06/14(木) 22:18:48.70
なにか最近やけに POSIX にこだわってる奴が多いが同一人物か?
2018/06/14(木) 22:31:37.92
>>613
単純にPOSIXの価値というかシェルスクリプト全体の有用性が見直されているだけでは
たとえば*BSDのスレでGNUライセンスに拘ったレスが連続するのはおかしいが
BSDライセンスを重視するスレがたくさんあっても別におかしくはないだろう
単純にPOSIXの価値というかシェルスクリプト全体の有用性が見直されているだけでは
たとえば*BSDのスレでGNUライセンスに拘ったレスが連続するのはおかしいが
BSDライセンスを重視するスレがたくさんあっても別におかしくはないだろう
2018/06/14(木) 22:32:42.05
パイプでなのでfindとhead が同時にプロセスとして存在
findが標準出力に出力するとパイプを通して/パイプとして繋がってるheadの標準入力に入力として
headが目的を達して終了=パイプが無くなる、だがしかし、findは出力を続けようとし出力しようとしたらパイプが壊れてるうううっ
普通何もしなくても、パイプが損失したらSIGPIPEが飛んできて(強制)終了するんだけど(フィルタとしてもなUNIX的な望ましいデフォルト動作)、なぜかSIGPIPE無視して続けようという謎動作?
findとheadが直接は繋がっていなくてかもしれんが。パイプの送出側がSIGPIPEを無視って謎動作なのは変わらないかな
findが標準出力に出力するとパイプを通して/パイプとして繋がってるheadの標準入力に入力として
headが目的を達して終了=パイプが無くなる、だがしかし、findは出力を続けようとし出力しようとしたらパイプが壊れてるうううっ
普通何もしなくても、パイプが損失したらSIGPIPEが飛んできて(強制)終了するんだけど(フィルタとしてもなUNIX的な望ましいデフォルト動作)、なぜかSIGPIPE無視して続けようという謎動作?
findとheadが直接は繋がっていなくてかもしれんが。パイプの送出側がSIGPIPEを無視って謎動作なのは変わらないかな
2018/06/14(木) 22:38:09.62
>>615
basenameが標準出力につながってるだけだから、findはwriteしないのでSIGPIPEを受け取らないよ。
basenameが事故死したのをfindが報告してるだけ。
というわけで、basenameが事故死したらfindを続けるのをやめるようにしてみた。
この方が無駄にbasenameを続けるよりよかろう。
find /var \( -exec basename {} \; -o -quit \) | head
ただし、最初の事故死についてだけはfindがおせっかいに報告してしまう。
あとはまかせた。
basenameが標準出力につながってるだけだから、findはwriteしないのでSIGPIPEを受け取らないよ。
basenameが事故死したのをfindが報告してるだけ。
というわけで、basenameが事故死したらfindを続けるのをやめるようにしてみた。
この方が無駄にbasenameを続けるよりよかろう。
find /var \( -exec basename {} \; -o -quit \) | head
ただし、最初の事故死についてだけはfindがおせっかいに報告してしまう。
あとはまかせた。
2018/06/14(木) 22:41:30.04
>>616
そのへんが実装によりちょっと違うってとこなのかなあ。出る出ないは
そのへんが実装によりちょっと違うってとこなのかなあ。出る出ないは
2018/06/14(木) 22:48:28.09
>>613
自分側で「なにか違って」動かなかったらめんどくさいってだけじゃないの、単に
自分側で「なにか違って」動かなかったらめんどくさいってだけじゃないの、単に
2018/06/14(木) 22:49:53.08
2018/06/14(木) 22:50:38.44
CentOS$ strings /bin/find | grep -i signal
signal
%s terminated by signal %d
FreeBSD$ strings /usr/bin/find | grep -i signal
なんもなし
以上、findのおせっかい度の差。
signal
%s terminated by signal %d
FreeBSD$ strings /usr/bin/find | grep -i signal
なんもなし
以上、findのおせっかい度の差。
621619
2018/06/14(木) 22:51:53.48 すまん間違えて送信しちゃった
$ find /etc -exec sh -c 'basename {}' \; | head
これでどうだろう。
-quitオプションはPOSIXの範疇ではないけどこれはPOSIXに準拠してる
ちなみに>>610のコマンドラインはDebian GNU/Linuxのfind 4.7で再現した。
$ find /etc -exec sh -c 'basename {}' \; | head
これでどうだろう。
-quitオプションはPOSIXの範疇ではないけどこれはPOSIXに準拠してる
ちなみに>>610のコマンドラインはDebian GNU/Linuxのfind 4.7で再現した。
2018/06/14(木) 22:55:42.54
2018/06/14(木) 22:57:07.67
>>621
ん? それSIGPIPEは回避できるけど別の問題が発生しない?
「basename: 余分な演算子 XXX」←みたいに怒られるんだが
あと
$ find /etc -exec sh -c 'echo {}' \; | head
↑これをやるとやっぱりSIGPIPEが出されるようだ。
ん? それSIGPIPEは回避できるけど別の問題が発生しない?
「basename: 余分な演算子 XXX」←みたいに怒られるんだが
あと
$ find /etc -exec sh -c 'echo {}' \; | head
↑これをやるとやっぱりSIGPIPEが出されるようだ。
2018/06/15(金) 00:01:24.90
2018/06/15(金) 00:03:14.56
>>610
>findでexecオプションの引数のあとにシェルに渡すパイプを付けるとexecに渡したコマンドがシグナル13パイプ破壊を出してくるんですけど
この動作は、POSIX的にはどうなの?
まずいというならPOSIX的にどうまずいの?
>findでexecオプションの引数のあとにシェルに渡すパイプを付けるとexecに渡したコマンドがシグナル13パイプ破壊を出してくるんですけど
この動作は、POSIX的にはどうなの?
まずいというならPOSIX的にどうまずいの?
2018/06/15(金) 00:08:14.14
find . -exec basename \{\} \; | { head; cat >/dev/null; }
2018/06/15(金) 00:14:45.23
>>626
どういう仕組みなん?
どういう仕組みなん?
2018/06/15(金) 00:39:45.42
-execにこだわりがないのであれば、
find . -print0 | xargs -0 -L 1 basename | head
今度はxargsがお節介メッセージ出すけど、findはheadが終了したら終了する
find . -print0 | xargs -0 -L 1 basename | head
今度はxargsがお節介メッセージ出すけど、findはheadが終了したら終了する
2018/06/15(金) 01:01:37.95
xargs(1)に-0オプションはない(POSIX厨)
2018/06/15(金) 02:22:41.09
findにも-print0は無いけどな。BSDにもあるからいいんじゃね
2018/06/15(金) 08:25:40.13
find . -print | xargs -n1 basename 2>/dev/null | head
2018/06/15(金) 20:58:34.50
execオプションはやめといたほうがいいね
2018/06/15(金) 21:35:58.85
元々何が気に入らなかったのかイマイチわからない
2018/06/15(金) 22:35:17.99
POSIX的に気に入らない
2018/06/15(金) 23:11:38.57
POSIX POSIXうっせー
2018/06/15(金) 23:13:05.02
2018/06/16(土) 00:18:50.65
findutilsのソース取って来てあのメッセージ出ないようにパッチして使っちゃえよもう
http://git.savannah.gnu.org/cgit/findutils.git/tree/find/exec.c?h=v4.6.0#n354
http://git.savannah.gnu.org/cgit/findutils.git/tree/find/exec.c?h=v4.6.0#n354
2018/06/16(土) 00:33:50.14
>>616
find . -exec sh -c 'trap "exit" pipe; basename {}' \; -o -quit | head
find . -exec sh -c 'trap "exit" pipe; basename {}' \; -o -quit | head
2018/06/16(土) 01:07:40.99
>>638
試してないけど、trapせずにbasenameのあとにexitするだけでだめなん?
試してないけど、trapせずにbasenameのあとにexitするだけでだめなん?
2018/06/16(土) 08:33:03.61
find /etc -exec basename \{\} \; |& head
これでエラーも出ず余計な出力も引っ掛らなかったんだけど
理屈が分からん
|& は標準出力と標準エラー出力両方を通すはずなので
SIGPIPEのエラーが出力されるはずだがgrepしても見当らない
これでエラーも出ず余計な出力も引っ掛らなかったんだけど
理屈が分からん
|& は標準出力と標準エラー出力両方を通すはずなので
SIGPIPEのエラーが出力されるはずだがgrepしても見当らない
2018/06/16(土) 10:03:37.06
find自身がSIGPIPEで終了してんじゃない
実行時間も短くなってるし
実行時間も短くなってるし
2018/06/16(土) 10:39:12.35
Linux なら strace で見ると分かる
$ strace -f bash -c 'find /etc -exec basename \{\} \; |& head'
$ strace -f bash -c 'find /etc -exec basename \{\} \; |& head'
2018/06/16(土) 11:10:29.82
stderrが(標準出力)のパイプになりの、そのパイプが無くなり、find自身がエラーメッセージをそれに書き込もうとしてSIGPIPEを受けるってとこか
find . -exec basename {} \; -o -print | head
としても同じように終わるってとこで
find . -exec basename {} \; -o -print | head
としても同じように終わるってとこで
2018/06/16(土) 12:55:30.00
>>644
ほほう
ほほう
2018/06/16(土) 13:02:42.26
2018/06/16(土) 13:15:44.53
2018/06/16(土) 13:16:47.78
2018/06/16(土) 13:26:10.67
ああ、|& は元々はzshのなのか(?)
macOS Sierra標準のzshでは/でも、>>640のままで特に何も問題なく終わった
macOS Sierra標準のzshでは/でも、>>640のままで特に何も問題なく終わった
2018/06/16(土) 14:10:29.68
>>649
|&はcsh由来。zshはパクっただけ。
|&はcsh由来。zshはパクっただけ。
2018/06/16(土) 17:20:45.43
|&はPOSIXなの?
2018/06/16(土) 17:32:28.45
やかましいわっw、おばかさん
2018/06/16(土) 17:58:54.17
それはPOSIXですか?POSIXじゃないのですか?
2018/06/16(土) 18:00:34.28
ところで俺のPOSIXを見てくれ。こいつをどう思う?
2018/06/16(土) 18:14:03.11
すごく、標準的です
2018/06/16(土) 18:39:24.01
Is it POSIX?
2018/06/16(土) 18:58:44.20
No, it is Apple
2018/06/16(土) 19:58:16.75
まあPOSIXじゃないので質問者の要請は満たしてないよね
俺が提案するとしたらexecは使わず
find . | xargs -I @ basename @ | head
↑これ。
俺が提案するとしたらexecは使わず
find . | xargs -I @ basename @ | head
↑これ。
2018/06/16(土) 20:06:12.48
それじゃあかんだろ。xargsのオプションが足りない
2018/06/16(土) 20:09:55.36
いいのか。すまん
2018/06/16(土) 20:37:42.14
俺がやるなら xargs -I には {} を 指定するがな
@というのは見たことがない 社内規約かなにかかな?
@というのは見たことがない 社内規約かなにかかな?
2018/06/16(土) 20:51:48.06
>>656-657
定冠詞がないよ
定冠詞がないよ
2018/06/16(土) 20:56:44.95
この問題って本質的には、 find は /etc の下の全部のファイル(10以上)を返すが、
head は 10行で打ち切ってしまうという矛盾にある。
そこは目をつぶるって方針なんだから、最初に書いてあったstderrを捨てるって
方法で正しいと思うよ
head は 10行で打ち切ってしまうという矛盾にある。
そこは目をつぶるって方針なんだから、最初に書いてあったstderrを捨てるって
方法で正しいと思うよ
2018/06/16(土) 20:59:20.95
2018/06/16(土) 21:30:02.51
2018/06/16(土) 22:02:52.02
>>662
マジレスアッポー
マジレスアッポー
2018/06/16(土) 23:19:14.74
コマンドの重複を数える(つまり$PATHに登録され実行可能なファイルの重複を列挙する)一番短い方法をってなんでしょう。ただし確実に動作しかつ可搬であることが条件です。
僕が考えたのは
$ echo $PATH | tr ':' '\n' | xargs -I @ find @ \( -type f -a -perm -+x \) -exec basename \{\} \; | sort | uniq -c
です。
僕が考えたのは
$ echo $PATH | tr ':' '\n' | xargs -I @ find @ \( -type f -a -perm -+x \) -exec basename \{\} \; | sort | uniq -c
です。
2018/06/16(土) 23:24:18.70
basenameにしたらファイル名じゃなくなるじゃん
2018/06/16(土) 23:36:17.54
2018/06/17(日) 04:18:06.91
パスの中に空白が入ってる or PATHの中身が多すぎたらおそらくアウト
( IFS=:; find $PATH -type f -a -perm -+x ) | sed 's|.*/||g' | sort | uniq -c
( IFS=:; for i in $PATH; do find "$i" -type f -a -perm -+x; done ) | sed 's|.*/||g' | sort | uniq -c
( IFS=:; find $PATH -type f -a -perm -+x ) | sed 's|.*/||g' | sort | uniq -c
( IFS=:; for i in $PATH; do find "$i" -type f -a -perm -+x; done ) | sed 's|.*/||g' | sort | uniq -c
2018/06/17(日) 08:19:10.40
できればsedでやりたいことなんですが
aaa
<<
bbb
>>
もしくは
aaa
<<bbb>>
というようなファイルがあったとしてaaaの次行から「>>」を含む行までを読み出したいです。
(aaaが存在する行はすでに具体的な数値で判明しています; ここでは42行目とします)
特に二番目の場合には sed -n -e '43,/>>/p'とやると43行目に「>>」があるのに見つけてくれません。
なにか手助けをおねがいします。
aaa
<<
bbb
>>
もしくは
aaa
<<bbb>>
というようなファイルがあったとしてaaaの次行から「>>」を含む行までを読み出したいです。
(aaaが存在する行はすでに具体的な数値で判明しています; ここでは42行目とします)
特に二番目の場合には sed -n -e '43,/>>/p'とやると43行目に「>>」があるのに見つけてくれません。
なにか手助けをおねがいします。
672名無しさん@お腹いっぱい。
2018/06/17(日) 09:24:18.61 >>671
sed -e '42,/>>/!d' -e 42d
sed -e '42,/>>/!d' -e 42d
2018/06/17(日) 12:39:57.71
あれんじ
sed -e '43,$!d;/>>/q'
sed -e '43,$!d;/>>/q'
2018/06/17(日) 14:39:23.57
2018/06/17(日) 14:43:41.30
言いたいことがわからない
2018/06/17(日) 16:46:05.17
言っても無駄なんだろうが、そんなファイルを処理しようってのが間違ってると思う
2018/06/17(日) 19:18:43.97
>>676
処理したい時はどうすればいいですかね。
処理したい時はどうすればいいですかね。
2018/06/17(日) 19:23:59.83
POSIXで。
2018/06/17(日) 19:24:04.76
Windowsだと%TEMP%で一時ファイルの格納場所が指定できますがUnixではそういう環境変数はないのですか?
$TEMPとか
$TEMPとか
2018/06/17(日) 19:27:47.07
>>669
basenameって拡張子消えるよね?
basenameって拡張子消えるよね?
2018/06/17(日) 19:28:33.83
>>679
誰に対して使用して欲しいのか分からないな
誰に対して使用して欲しいのか分からないな
2018/06/17(日) 19:40:16.19
>>680
消せと言えばね
消せと言えばね
2018/06/17(日) 19:43:21.15
>>679
TMPDIR
かな
/tmp
が古からあるからな。TMPDIRが設定されていたら(OSとして初期設定されているか、なんらかの形でTMPDIR設定されてたら)TMPDIR。設定されてなかったら普通に /tmp かな
TMPDIR
かな
/tmp
が古からあるからな。TMPDIRが設定されていたら(OSとして初期設定されているか、なんらかの形でTMPDIR設定されてたら)TMPDIR。設定されてなかったら普通に /tmp かな
2018/06/17(日) 19:45:54.91
2018/06/17(日) 20:07:00.69
>>681
一応、TMPDIRはPOSIX標準環境変数らしい。 tmpfile(3)やmkstem(3)なんぞはPOSIXとしてはTMPDIRを参照しろとはなってないらしい
が、実装するならTMPDIR参照するだろうし、してる。ちゃんとtmpfile(3)やmkstem(3)やmktemp(1)などを使っていれば、誰でもなんだろうけどね
一応、TMPDIRはPOSIX標準環境変数らしい。 tmpfile(3)やmkstem(3)なんぞはPOSIXとしてはTMPDIRを参照しろとはなってないらしい
が、実装するならTMPDIR参照するだろうし、してる。ちゃんとtmpfile(3)やmkstem(3)やmktemp(1)などを使っていれば、誰でもなんだろうけどね
2018/06/17(日) 20:58:57.79
>>685
それってPOSIX shellの話なの?
それってPOSIX shellの話なの?
2018/06/17(日) 21:18:57.03
シェルじゃなくてシステム
2018/06/17(日) 21:19:01.81
>>686
何を聞いてるのかわからん
何を聞いてるのかわからん
2018/06/17(日) 21:19:45.24
俺…POSIXだったのか…?
2018/06/17(日) 21:59:03.03
関数のなかってalias使えないっぽいね
somefnc() {
alias AAA='pwd'
AAA
}
# → AAA: command not found
somefnc() {
alias AAA='pwd'
AAA
}
# → AAA: command not found
2018/06/17(日) 23:04:57.63
6.6 Aliases
...
Aliases are expanded when a function definition is read, not when the function is executed, because a function
definition is itself a compound command. As a consequence, aliases defined in a function are not available until
after that function is executed.
somefnc () { alias AAA='pwd'; }
somefnc
AAA
otherfnc () { AAA; }
otherfnc
...
Aliases are expanded when a function definition is read, not when the function is executed, because a function
definition is itself a compound command. As a consequence, aliases defined in a function are not available until
after that function is executed.
somefnc () { alias AAA='pwd'; }
somefnc
AAA
otherfnc () { AAA; }
otherfnc
2018/06/18(月) 03:25:19.77
aaa="cat /etc/*release | grep -E '^NAME='"
echo ${aaa}
上を実行すると、
$ ./hoge.sh
cat /etc/os-release | grep -E '^NAME='
こうなってしまいます。
cat 〜の結果をaaaに入れる方法教えて欲しいです。
echo ${aaa}
上を実行すると、
$ ./hoge.sh
cat /etc/os-release | grep -E '^NAME='
こうなってしまいます。
cat 〜の結果をaaaに入れる方法教えて欲しいです。
2018/06/18(月) 03:35:59.29
自己レス
evalで出来ました
evalで出来ました
2018/06/18(月) 07:01:47.43
>>690
関数の中でaliasが使えないと言うよりか、
関数の定義が実行された時点でのalias情報が反映される。
つまりシェルスクリプトを上から実行していって、
somefunc()関数定義文が見つかると、
この関数 "全体" に対して、alias展開処理が行われてから関数が定義される
だからsomefunc()関数定義文よりも前にaliasが設定されていれば
そのとおりに展開されるが、関数の中はすでにalias展開済みなので
もう処理されない
関数の中でaliasが使えないと言うよりか、
関数の定義が実行された時点でのalias情報が反映される。
つまりシェルスクリプトを上から実行していって、
somefunc()関数定義文が見つかると、
この関数 "全体" に対して、alias展開処理が行われてから関数が定義される
だからsomefunc()関数定義文よりも前にaliasが設定されていれば
そのとおりに展開されるが、関数の中はすでにalias展開済みなので
もう処理されない
2018/06/18(月) 07:11:33.65
ちなみにこれだとうまくいく
somefnc() {
alias AAA='pwd'
eval AAA
}
evalは実行する段階でalias展開されるようだ
evalで実行する文は、実行段階ならないと
わからないのだから当然ではあるが
somefnc() {
alias AAA='pwd'
eval AAA
}
evalは実行する段階でalias展開されるようだ
evalで実行する文は、実行段階ならないと
わからないのだから当然ではあるが
2018/06/18(月) 08:15:26.93
2018/06/18(月) 09:27:00.32
なるほど。大阪だけにおしゃかになったわけだな
2018/06/18(月) 09:36:50.09
は?
2018/06/18(月) 09:40:49.35
うちの研究室もすごいことになった。
ところで前々から関数のなかで alias が展開されないのを歯痒くおもっていたので
eval 使えばいいというのは非常に有益な Tips だわ。
ところで前々から関数のなかで alias が展開されないのを歯痒くおもっていたので
eval 使えばいいというのは非常に有益な Tips だわ。
2018/06/18(月) 10:09:39.01
あまりにもPOSIX、POSIXしつこいから、POSIXでNGにしたったわ
2018/06/18(月) 10:13:14.51
PSOIXでいこう
2018/06/18(月) 10:15:28.33
P0SIX(いやがらせ)
2018/06/18(月) 10:20:36.56
P051X
2018/06/18(月) 10:23:39.71
ぽじっくす
2018/06/18(月) 17:53:22.33
706名無しさん@お腹いっぱい。
2018/06/18(月) 20:47:12.932018/06/19(火) 04:10:29.03
関数の中、もしくはmakefileやcrontabで
aliasを使いたい状況っていうのがよくわからないが
どんなときに使うの?
aliasではなく変数とかじゃ駄目なの?
aliasを使いたい状況っていうのがよくわからないが
どんなときに使うの?
aliasではなく変数とかじゃ駄目なの?
2018/06/19(火) 04:54:42.99
自分は引数を取らず固定されたフィルタはaliasで定義することにしている
例えばeraelコマンド(ERAce Empty Line)。
alias erael='sed -e "/^$/d"'
ただ大抵はシェルスクリプトの先頭に記述するのであなたの言う通り関数の中で宣言する意図は分からん。
例えばeraelコマンド(ERAce Empty Line)。
alias erael='sed -e "/^$/d"'
ただ大抵はシェルスクリプトの先頭に記述するのであなたの言う通り関数の中で宣言する意図は分からん。
2018/06/19(火) 05:16:14.31
つづりeraseやで
2018/06/19(火) 05:53:06.78
2018/06/19(火) 06:00:33.38
2018/06/19(火) 06:15:17.17
関数とエイリアスの使い分けに意味はあるの?
使用メモリ?性能?
使用メモリ?性能?
2018/06/19(火) 06:31:47.07
2018/06/19(火) 07:04:14.39
みんな知ってるかい?
関数の中で関数を定義できるってことを
foo() {
bar() {
echo bar
}
}
foo
bar
関数の中で関数を定義できるってことを
foo() {
bar() {
echo bar
}
}
foo
bar
2018/06/19(火) 07:22:52.49
全角字下げやめてくれ
コピペで試せん
コピペで試せん
2018/06/19(火) 07:27:20.24
foo() {
bar() {
echo bar
}
}
foo
bar
bar() {
echo bar
}
}
foo
bar
2018/06/19(火) 08:03:40.13
5chに貼られたソースコードをコピペするってwセキュリティ意識ゼロかよw
絶対こんなの相手に発注したくねぇww
絶対こんなの相手に発注したくねぇww
2018/06/19(火) 13:37:44.18
アクalias飲みてぇ
2018/06/19(火) 18:46:56.46
>>717
たかが数行のソースが危険かどうかもわからん奴には発注したくないな
たかが数行のソースが危険かどうかもわからん奴には発注したくないな
2018/06/20(水) 02:21:04.28
somefunc() {
echo "${1:='need a arg'}"
}
のような関数を作ったのですが引数なしで起動すると
-bash: $1: この方法で割当はできません
と怒られるのですがどうすればいいですかね。
echo "${1:='need a arg'}"
}
のような関数を作ったのですが引数なしで起動すると
-bash: $1: この方法で割当はできません
と怒られるのですがどうすればいいですかね。
2018/06/20(水) 03:20:33.94
somefunc() {
arg="$1"
echo "${arg:='need a arg'}"
}
arg="$1"
echo "${arg:='need a arg'}"
}
2018/06/20(水) 03:34:23.66
>>721
ありがとうございます!
できました!
すいませんが、もしよければなぜ直接引数に:=変数置換を適用できないのか教えていただけないでしょうか。
例えば${1:-aaa}などはごく普通にできるので、不思議です。
ありがとうございます!
できました!
すいませんが、もしよければなぜ直接引数に:=変数置換を適用できないのか教えていただけないでしょうか。
例えば${1:-aaa}などはごく普通にできるので、不思議です。
2018/06/20(水) 05:12:57.83
bash: $1: この方法で割当はできません
bash: $1: cannot assign in this way
代入文を使って位置パラメータへの代入を行うことはできません。
Positional parameters may not be assigned to with assignment statements.
bash: $1: cannot assign in this way
代入文を使って位置パラメータへの代入を行うことはできません。
Positional parameters may not be assigned to with assignment statements.
2018/06/20(水) 06:53:00.27
すべての言語で引数に対する代入は禁止されればいいのに
2018/06/20(水) 07:57:59.37
引数に代入できる言語って例えば?
2018/06/20(水) 08:43:18.41
ば…bat
2018/06/20(水) 10:20:31.09
それ言語?
2018/06/20(水) 11:38:13.87
Cだとargvは一度どこかに書き出さないと置換とか操作できないよね。
2018/06/20(水) 12:45:30.95
>>728
別に直接書き換えもできる。constを「自分で」付ければできないようにもできるけど
Cで書き換えるのは危険すぎるだけだな。配列/文字列等のメモリ境界保護なんてないから。OSによってはargvがメモリ保護域にあるのもあるだろけど
別に直接書き換えもできる。constを「自分で」付ければできないようにもできるけど
Cで書き換えるのは危険すぎるだけだな。配列/文字列等のメモリ境界保護なんてないから。OSによってはargvがメモリ保護域にあるのもあるだろけど
2018/06/20(水) 12:48:49.26
>>728
argv の指す先は変更できないけど argv 自体は変更し放題
argv の指す先は変更できないけど argv 自体は変更し放題
2018/06/20(水) 12:56:35.45
>>730
argvの指す先(char **argv/*argv[]の中身/値でいいの?)も変更できるよ
argv = myArgv;
argv[1] = myArg;
argv[1][0] = myChar;
どれもできる
argvの指す先(char **argv/*argv[]の中身/値でいいの?)も変更できるよ
argv = myArgv;
argv[1] = myArg;
argv[1][0] = myChar;
どれもできる
2018/06/20(水) 15:25:21.41
ああそうか。728だけど,すごいまぬけな発言をしてたわ。
Cでのargvはあくまで約束事としての変数名だからなんの保護・制約も掛けられてないのか。
一方シェルスクリプトでは引数変数を明確に他と区別できるようになってる。
ただし半保護状態。
Cでのargvはあくまで約束事としての変数名だからなんの保護・制約も掛けられてないのか。
一方シェルスクリプトでは引数変数を明確に他と区別できるようになってる。
ただし半保護状態。
2018/06/21(木) 05:57:06.66
script(1)コマンドかそれと似たCLI記録ツールで、
~/.profile(←ここに~/.bashrcなどを読みこむコマンドが書いてある)を読み込ませたいのですがどうすればいいですかね。
~/.profile(←ここに~/.bashrcなどを読みこむコマンドが書いてある)を読み込ませたいのですがどうすればいいですかね。
734名無しさん@お腹いっぱい。
2018/06/21(木) 06:34:26.14 >>733
#!/bin/sh
exec /bin/bash --init-file "$HOME"/.profile "$@"
こういうスクリプトを書く
ファイル名を mysh でホームに保存したとして、次のようにして script に使わせる
env SHELL="$HOME"/mysh script
#!/bin/sh
exec /bin/bash --init-file "$HOME"/.profile "$@"
こういうスクリプトを書く
ファイル名を mysh でホームに保存したとして、次のようにして script に使わせる
env SHELL="$HOME"/mysh script
2018/06/21(木) 08:42:01.32
>>733
surce ~/.profile ではだめなの?
surce ~/.profile ではだめなの?
2018/06/21(木) 09:33:47.42
✕ surce
△ source
◯ .
△ source
◯ .
2018/06/21(木) 09:34:32.68
1行目は×な。
2018/06/21(木) 09:45:45.51
bashの場合、インタラクティブでログインシェルでなければ.bashrcを読むはずだけど、それじゃ足らんの?
2018/06/21(木) 15:08:24.51
2018/06/21(木) 15:25:56.39
733です。すいません。もうひとつ訊きたいことがあるのですが
script(1)実行中はCOLUMNS=80,LINES=25に固定したいです。
しかしそのmyshに
export COLUMNS=80
などと記述しても反映されません。
~/.profileなどでは特にCOLUMNSの値を設定している訳ではないです。
これどうすればいいですかね
script(1)実行中はCOLUMNS=80,LINES=25に固定したいです。
しかしそのmyshに
export COLUMNS=80
などと記述しても反映されません。
~/.profileなどでは特にCOLUMNSの値を設定している訳ではないです。
これどうすればいいですかね
2018/06/21(木) 17:29:46.87
stty cols 80 rows 25
なんかLINESもってとこから、ターミナルのウィンドウサイズなんぞもってぽいけど、それは個々のターミナルアプリ次第&一方通行っぽい(COLUMNSの値を設定している訳ではないのはそゆこと)けど
なんかLINESもってとこから、ターミナルのウィンドウサイズなんぞもってぽいけど、それは個々のターミナルアプリ次第&一方通行っぽい(COLUMNSの値を設定している訳ではないのはそゆこと)けど
2018/06/22(金) 07:10:56.19
シェルスクリプトってeval使えばメタプログラミングっぽいことできるよね。
例えば引数をfor文で増加さしてeval arg$i=\$$iみたいな。
例えば引数をfor文で増加さしてeval arg$i=\$$iみたいな。
2018/06/22(金) 08:39:33.18
>>742
evalはインタープリタそのものだからね
evalはインタープリタそのものだからね
2018/06/22(金) 08:56:09.19
evalは一番最初に現れたプリミティブなメタプログラミング機能だからまあ当然だな。
ちな最初にeval を発明した言語はLisp な。
ちな最初にeval を発明した言語はLisp な。
2018/06/22(金) 15:33:32.30
eval is evilを発明したのはLISPか
2018/06/23(土) 05:10:08.14
eval is evilはJSでは
2018/06/23(土) 10:04:22.34
evalは強力すぎて危険だからどの言語でも濫用はevil扱いだと思う。
REPLみたいにevalがぴったりした応用もあるから禁止はできんし、
シェルスクリプトは比較的ミニマムな言語だからevalしか解がないケースも多いけど。
REPLみたいにevalがぴったりした応用もあるから禁止はできんし、
シェルスクリプトは比較的ミニマムな言語だからevalしか解がないケースも多いけど。
2018/06/23(土) 11:22:58.87
「ミニマルな言語」って他には例えばなに?
それLLとはまた違うの?
いや煽ってるんではなくて単純に訊ねたい。
それLLとはまた違うの?
いや煽ってるんではなくて単純に訊ねたい。
2018/06/23(土) 11:42:26.04
コマンド置換の入れ子の限界を試そうと思って
$ i=1; while true; do echo $i; eval $( (yes '$(echo' | head -n $i | tr -d '\n'); (yes ')' | head -n $i | tr -d '\n') ); : $((i++)); done
↑こんなコードを実行してみた。
100あたりから面白いくらいに遅くなっていく
しかし500くらいまで試したけど表示は続き、限界を探る目的は達成できなかった。
$ i=1; while true; do echo $i; eval $( (yes '$(echo' | head -n $i | tr -d '\n'); (yes ')' | head -n $i | tr -d '\n') ); : $((i++)); done
↑こんなコードを実行してみた。
100あたりから面白いくらいに遅くなっていく
しかし500くらいまで試したけど表示は続き、限界を探る目的は達成できなかった。
2018/06/23(土) 13:19:07.15
ミニマムはすき
2018/06/23(土) 14:46:23.27
eval関連なんですがaliasの出力結果をevalする方法を教えてください。
具体的にはroot権限でlsがしたいのですが、その時通常のlsと同じオプションを付けて実行したいのです。
ですので(通常の状態での)alias lsの結果を変数かなにかに格納してそれを実行しようと思ったのですが良い方法が思い付きません。
そのコマンド自体もaliasにしたい(具体的にはls@rootコマンドとしてalias ls@root=の形で定義したい)です。
どうかよろしくお願いします。
具体的にはroot権限でlsがしたいのですが、その時通常のlsと同じオプションを付けて実行したいのです。
ですので(通常の状態での)alias lsの結果を変数かなにかに格納してそれを実行しようと思ったのですが良い方法が思い付きません。
そのコマンド自体もaliasにしたい(具体的にはls@rootコマンドとしてalias ls@root=の形で定義したい)です。
どうかよろしくお願いします。
752752
2018/06/23(土) 14:52:25.95 すいません。一番上の行は無視してください。
evalでできるかなと考えてたプロセスが漏れてしまっただけです。
多分このアプローチは間違っているので無視してください。
evalでできるかなと考えてたプロセスが漏れてしまっただけです。
多分このアプローチは間違っているので無視してください。
2018/06/23(土) 19:13:35.47
2018/06/23(土) 19:18:52.33
>>751
普通にぐぐれ
普通にぐぐれ
2018/06/24(日) 00:39:25.04
>>751
aliasでなくてsudo使って関数定義するのがいいと思うけどだめなの?
aliasでなくてsudo使って関数定義するのがいいと思うけどだめなの?
2018/06/24(日) 07:01:44.49
LS=`alias ls`
じゃだめなの?
じゃだめなの?
2018/06/24(日) 09:15:58.74
>>753
詳しく
詳しく
2018/06/24(日) 10:16:34.78
/tmpでいいじゃん
2018/06/24(日) 22:14:10.69
2018/06/26(火) 16:44:06.12
こんにちは
ド素人です。
VPSの立ち上げ時にスタートアップシェルスクリプトを使って効率化したいです。
とあるwgetを叩くと、user名とパスワード、パスワードの再入力を求められるのですが、
このuser名、パスワードをシェルスクリプトで入力させるにはどうしたらよいでしょうか。
ド素人です。
VPSの立ち上げ時にスタートアップシェルスクリプトを使って効率化したいです。
とあるwgetを叩くと、user名とパスワード、パスワードの再入力を求められるのですが、
このuser名、パスワードをシェルスクリプトで入力させるにはどうしたらよいでしょうか。
2018/06/26(火) 17:04:46.28
wgetでgithub上にある既存のシェルスクリプトを叩くと
ユーザー名とパスワードを聞かれるのですが、
その入力を自動化したいという意味です。
github上のシェルスクリプトは変更できません・・・
ユーザー名とパスワードを聞かれるのですが、
その入力を自動化したいという意味です。
github上のシェルスクリプトは変更できません・・・
2018/06/26(火) 17:16:35.68
wgetでシェルスクリプト叩くてどういう意味?
出力をシェルに流し込むって事?
出力をシェルに流し込むって事?
2018/06/26(火) 17:25:22.13
なんかパスワード 自動入力 あたりでggったらすぐ出てきそうやな
2018/06/26(火) 17:29:12.30
>>761
相手側の要求に従ったuser名パスワードの提供方法をwgetでするとよいでしょう
どのVPS?どういう相手側のサービス?その使ったというはGitHubのどれ?
https://gist.github.com/kevinold/216077/4d725773b46a2ac32c0f5a689339d3da004d7f5d
これでいいのか?適当にぐぐったらVPSだしwget使ってるしw
>>762
まあ、なんかセットアップでコマンド叩いたりするのだろう。そういえばwgetで認証できなかったら再入力なんて求められないよな...??あったかな??
相手側の要求に従ったuser名パスワードの提供方法をwgetでするとよいでしょう
どのVPS?どういう相手側のサービス?その使ったというはGitHubのどれ?
https://gist.github.com/kevinold/216077/4d725773b46a2ac32c0f5a689339d3da004d7f5d
これでいいのか?適当にぐぐったらVPSだしwget使ってるしw
>>762
まあ、なんかセットアップでコマンド叩いたりするのだろう。そういえばwgetで認証できなかったら再入力なんて求められないよな...??あったかな??
2018/06/26(火) 17:55:18.59
wgetは--userと--passwordでユーザー名とパスワードを指定できるはずだけど
2018/06/26(火) 18:04:40.17
httpのBASIC認証やftpのならそれで問題はないよね。普通にBASIC認証でそのオプションを教えてっていうことだけかな
2018/06/26(火) 18:12:51.93
manくらい嫁カス案件
2018/06/26(火) 19:26:12.11
wgetが書かれたシェルスクリプトを呼び出すシェルスクリプトを書きたいように見えるが…
まあ質問が日本語的に不自由すぎるね
まあ質問が日本語的に不自由すぎるね
2018/06/26(火) 20:51:22.89
wgetがBASIC認証を要求してくるんですが、
パスワードをシェルスクリプトに書きたくないです。
別ファイルに生パスワードを書くのも嫌です。
かといって毎回入力するのは面倒です。
ssh-agent利用して最初に一回いれて覚えさせるだけで
あとはパスワードなしにできたりしないですかね?
パスワードをシェルスクリプトに書きたくないです。
別ファイルに生パスワードを書くのも嫌です。
かといって毎回入力するのは面倒です。
ssh-agent利用して最初に一回いれて覚えさせるだけで
あとはパスワードなしにできたりしないですかね?
2018/06/26(火) 21:11:05.80
ssh-agent/ssh-keychainはどうなんだろ、無理じゃねと思うが、keyring(Linux/BSD)/Keychain Access(macOS)を使えばふつーにできるだろうな
2018/06/26(火) 21:17:58.64
最初の質問と内容か変わってるし、パスワード書きたくないらしいので、役にたたないだろうけど、俺ならexpectでスクリプト書く
2018/06/26(火) 21:25:16.46
最初の質問者と別人じゃね?レスの書き方から同一人物にも見えるけどw
2018/06/26(火) 22:26:52.66
まあなんか知らんがもっとドキュメントに当たったらって気がする
2018/06/27(水) 00:54:07.84
jqについて教えてください。
https://ideone.com/SZlhR4
やり方が分からないので、以下のようにとりあえすyenを指定したら並び順が思ったようになりませんでした。
$ cat kudamono.json | jq -r '.genre_name, .list[].name, .list[].hinshu_list[].yen'
くだもの
りんご
みかん
いちご
180
500
200
50
63
300
null
null
null
続く
https://ideone.com/SZlhR4
やり方が分からないので、以下のようにとりあえすyenを指定したら並び順が思ったようになりませんでした。
$ cat kudamono.json | jq -r '.genre_name, .list[].name, .list[].hinshu_list[].yen'
くだもの
りんご
みかん
いちご
180
500
200
50
63
300
null
null
null
続く
2018/06/27(水) 00:54:30.18
以下のように標準出力に出す方法を教えてください。
くだもの
りんご
ふじ
180
サンふじ
500
つがる
200
みかん
きんかん
50
いよかん
63
せとみ
300
いちご
あまおう
null
ひのしずく
null
とちおとめ
null
くだもの
りんご
ふじ
180
サンふじ
500
つがる
200
みかん
きんかん
50
いよかん
63
せとみ
300
いちご
あまおう
null
ひのしずく
null
とちおとめ
null
2018/06/27(水) 01:36:22.49
>>772
別の人ですよー。やりたいことを思い出したので、書いてみたの♪
別の人ですよー。やりたいことを思い出したので、書いてみたの♪
777名無しさん@お腹いっぱい。
2018/06/27(水) 03:13:21.88 >>774-775
. | .genre_name, (.list[] | .name, (.hinshu_list[] | .hinshu, .yen))
https://stedolan.github.io/jq/tutorial/ https://stedolan.github.io/jq/manual/ 見つつ https://jqplay.org で試した
jq初めての俺でもすぐできたじゃねーか
まじめにやれ
. | .genre_name, (.list[] | .name, (.hinshu_list[] | .hinshu, .yen))
https://stedolan.github.io/jq/tutorial/ https://stedolan.github.io/jq/manual/ 見つつ https://jqplay.org で試した
jq初めての俺でもすぐできたじゃねーか
まじめにやれ
2018/06/27(水) 07:24:03.91
2018/06/28(木) 16:24:57.87
dashで動くシェルスクリプトってPOSIX準拠のシェルスクリプトだと思って問題ない?
2018/06/28(木) 17:11:46.11
そいつから呼ぶコマンドもPOSIXじゃないとな。
2018/06/29(金) 00:29:23.70
dashはPOSIX準拠である
だからPOSIX準拠のコードはdashで期待どおり動く
だけどdash専用のコードはPOSIX準拠ではない
だからPOSIX準拠のコードはdashで期待どおり動く
だけどdash専用のコードはPOSIX準拠ではない
2018/06/29(金) 01:00:02.18
kshのposixモードがかな。POSIX仕様の元となった自負があるだろうからposixモードもちゃんとしてそう
2018/06/30(土) 22:10:41.02
あの,すごく初歩的なことだと思うのですが,
Excelなどのように隣のセルの値を参照して現在のセルの値を計算するという手法を
シェルスクリプトで行うにはどうすればいいでしょうか。
具体的には,参照した値をaとして,(1-sin^2(a))/2^aを計算したいです。
Excelだと,A列に値を入力していき,B1セルに「(1-(SIN(A1))^2)/2^A1」と入力した後ドラッグすればいいのですが……。
Excelなどのように隣のセルの値を参照して現在のセルの値を計算するという手法を
シェルスクリプトで行うにはどうすればいいでしょうか。
具体的には,参照した値をaとして,(1-sin^2(a))/2^aを計算したいです。
Excelだと,A列に値を入力していき,B1セルに「(1-(SIN(A1))^2)/2^A1」と入力した後ドラッグすればいいのですが……。
2018/06/30(土) 22:52:18.06
a=値
echo "(1-s($a)^2)/2^$a" | bc -l
とか?
echo "(1-s($a)^2)/2^$a" | bc -l
とか?
2018/07/01(日) 20:12:26.02
cat <<. | xargs -I @ echo (1-s(@)^2)/2^@ | bc -l
3
44
-6
.
こんなのでどう?
3
44
-6
.
こんなのでどう?
2018/07/02(月) 14:00:06.28
cat と echo と print の違いが分からない
あと、print と printfの違いも
教えて
あと、print と printfの違いも
教えて
2018/07/02(月) 14:00:38.56
less と moreも
2018/07/02(月) 14:07:32.55
manすりゃいいんじゃないの
2018/07/02(月) 14:15:59.23
cat と echo,printf は全然違う。主に出力するソースが(ゆえにパイプで入力受ける受けないとなり?)
echo と printf は、書式が指定できるかというか、コマンド由来とC由来かな
printって?awk内のならprintはechoのようなもんかな(Ubuntuには print がコマンドであるけど Mailcap とかナニそれな普通じゃないのだな)
echo と printf は、書式が指定できるかというか、コマンド由来とC由来かな
printって?awk内のならprintはechoのようなもんかな(Ubuntuには print がコマンドであるけど Mailcap とかナニそれな普通じゃないのだな)
2018/07/02(月) 14:19:26.23
ググったらechoは改行されてしまうけどprintfは自分で\nしないと改行されないってあった
2018/07/02(月) 14:23:46.00
それらの違いが分からないのは使ってないからだろ
使ってないなら知る必要もないし知ろうとも思わない
自作自演かな?
使ってないなら知る必要もないし知ろうとも思わない
自作自演かな?
2018/07/02(月) 14:26:27.85
>>791
宿題
宿題
2018/07/02(月) 14:27:23.78
コマンド由来とC由来ゆうてるやんw
printf(1) は printf(3) と同じと思えば不思議ではないだろう。echo も -n で改行しないようにもできるけどイレギュラー、コマンド由来だからな
>>791
まあ、なんの目的で聞いてるのかさっぱりわからんくはあるな。なんの自作自演なのかさっぱりだけど
printf(1) は printf(3) と同じと思えば不思議ではないだろう。echo も -n で改行しないようにもできるけどイレギュラー、コマンド由来だからな
>>791
まあ、なんの目的で聞いてるのかさっぱりわからんくはあるな。なんの自作自演なのかさっぱりだけど
2018/07/02(月) 14:27:58.46
>>792
宿題かああ。程度が低いな。高校でとかか?
宿題かああ。程度が低いな。高校でとかか?
2018/07/02(月) 14:28:13.36
>>792
あぁ…
あぁ…
2018/07/02(月) 14:39:06.49
>コマンド由来
コマンドはつねに改行されるの?
コマンドはつねに改行されるの?
2018/07/02(月) 14:40:31.96
あと、printfのfって何?
f付けたのはcが最初?
fって?
f付けたのはcが最初?
fって?
2018/07/02(月) 14:44:50.94
少しは自分で調べろよ
2018/07/02(月) 14:47:13.07
調べたから改行の事分かったんだけど?
2018/07/02(月) 14:47:50.56
もっと自分で調べろよ
2018/07/02(月) 14:49:35.35
じゃぁfだけヒント教えて
2018/07/02(月) 14:50:22.47
それな
2018/07/02(月) 14:50:43.52
2018/07/02(月) 14:55:17.35
>>803
どうもありがとうございました
どうもありがとうございました
2018/07/02(月) 15:22:33.69
礼儀正しいな
少し見直したw
少し見直したw
2018/07/02(月) 15:24:56.72
manとinfoどっち使ってる?
infoは文中から別のページに飛べるから便利そうだけどウェブブラウザのように戻る進むボタンがあるわけでも無いし全部文字だけだから現在位置が分からなくなるからmanがいいと思うんだけどどう?
infoは文中から別のページに飛べるから便利そうだけどウェブブラウザのように戻る進むボタンがあるわけでも無いし全部文字だけだから現在位置が分からなくなるからmanがいいと思うんだけどどう?
2018/07/02(月) 15:25:43.12
なんか最近ほんとこういうアンケートみたいなの増えたな
どっかから流れてきたか?
どっかから流れてきたか?
2018/07/02(月) 15:27:19.76
この質問は乾燥機かせてほしいだけだから
2018/07/02(月) 15:29:11.19
UNIX板だからmanだな
2018/07/02(月) 15:31:13.31
何を乾燥させたいのかしばらく悩んだ
2018/07/02(月) 18:41:01.45
「乾燥機貸して」ってアンジャッシュのネタにあったなそういや
812名無しさん@お腹いっぱい。
2018/07/02(月) 19:09:02.32 man manて口で言うと恥ずかしいからinfo
2018/07/02(月) 19:35:17.38
rcsのco(1)を
2018/07/02(月) 21:56:08.50
tinfo
2018/07/02(月) 22:32:14.11
そのあたりのネタはもう聞き飽きた
2018/07/03(火) 00:21:24.80
ディレクトリの中の拡張子がm2tsのファイル全てをtsselectというコマンドに投げてその標準出力をひとつのファイルに追記で書き込みたいんですが、その際、ファイル名も一緒に書き込みたいです。
どうやってファイル名を取得するんでしょうか?
$ tsselect *.m2ts > ana.log
どうやってファイル名を取得するんでしょうか?
$ tsselect *.m2ts > ana.log
2018/07/03(火) 00:43:49.80
1行で書けなかったので、複数行に分けてfor分を使いました。
2018/07/03(火) 01:01:05.23
こんなん?
for i in *.m2ts; do echo $i >>ana.log; tsselect $i >>ana.log; done
for i in *.m2ts; do echo $i >>ana.log; tsselect $i >>ana.log; done
2018/07/04(水) 07:39:11.34
近頃のどこか(このスレかも)で,
「fgrepはgrepより遅い」というような話を耳にしたんですが,ほんとうですか?
手元のgrepで試したところ,ほとんど有意な差はありませんでしたが……。
「fgrepはgrepより遅い」というような話を耳にしたんですが,ほんとうですか?
手元のgrepで試したところ,ほとんど有意な差はありませんでしたが……。
2018/07/04(水) 08:10:45.64
それぞれ独自バイナリだった昔の話な。
あとgrepよりegrepの方が速かったんで、
今でも手はegrepを優先して打っちゃうけどな。
あとgrepよりegrepの方が速かったんで、
今でも手はegrepを優先して打っちゃうけどな。
2018/07/04(水) 08:43:22.98
いや独自バイナリだった頃もfgrepの方が速かったような。
grepだけ非決定性オートマトンで遅い的な。
grepだけ非決定性オートマトンで遅い的な。
2018/07/04(水) 15:23:44.48
ファイルの一括リネームで
$ find . -name "*X*" | while read F; do mv $F ${F/X/Y}; done
だとXXXがYXXになるんですけどYYYにするには繰り返さなきゃいけないんですかね?
$ find . -name "*X*" | while read F; do mv $F ${F/X/Y}; done
だとXXXがYXXになるんですけどYYYにするには繰り返さなきゃいけないんですかね?
2018/07/04(水) 16:18:50.48
If pattern begins with /, all matches of pattern are replaced with string.
2018/07/04(水) 16:22:26.78
日本語で書いてくれないとわかりません
できれば修正したコマンドを書いてください
できれば修正したコマンドを書いてください
2018/07/04(水) 16:25:40.84
お断りします
2018/07/04(水) 16:27:15.37
断る理由とは?
2018/07/04(水) 16:29:57.71
ひな鳥に餌を上げるのはひな鳥がかわいいからだ
なんかこのひな鳥うざいって思ったら餌は与えない
なんかこのひな鳥うざいって思ったら餌は与えない
2018/07/04(水) 16:31:49.67
可愛く思われる質問の仕方でもあったんですかね
2018/07/04(水) 16:34:15.63
とりあえず「sh 変数展開」あたりでggってからここに来い
それで分からなきゃどこかの暇人が餌与えてくれるまでずっと待ってな
それで分からなきゃどこかの暇人が餌与えてくれるまでずっと待ってな
2018/07/04(水) 16:35:48.08
ありがとうございました
2018/07/04(水) 16:54:10.40
もう来んなよ
2018/07/04(水) 18:24:31.29
すみません
ワードとかに出来る~$で始まるファイルを一括で消したいのですがどうすればいいですか。
find ./ -name "~$*" -exec rm -rf {} \;
これだと上手くいかないです。
find ./ -name "~\$*" -exec rm -rf {} \;
エスケープしてもダメです。
find ./ -name "~*" -exec rm -rf {} \;
これだと上手くいきますが$も指定するためにはどうすればいいですか。
ワードとかに出来る~$で始まるファイルを一括で消したいのですがどうすればいいですか。
find ./ -name "~$*" -exec rm -rf {} \;
これだと上手くいかないです。
find ./ -name "~\$*" -exec rm -rf {} \;
エスケープしてもダメです。
find ./ -name "~*" -exec rm -rf {} \;
これだと上手くいきますが$も指定するためにはどうすればいいですか。
2018/07/04(水) 18:27:42.16
シングルクォート使っとけばぁ
2018/07/04(水) 18:30:53.83
>>833
上手くいかないです
$ find . -name ~'$'*
Unknown user: $*.
$ find . -name "~'$'*"
Illegal variable name.
$ find . -name ~"$"*
Illegal variable name.
$ find . -name '~"$"*'
何も出力されない
上手くいかないです
$ find . -name ~'$'*
Unknown user: $*.
$ find . -name "~'$'*"
Illegal variable name.
$ find . -name ~"$"*
Illegal variable name.
$ find . -name '~"$"*'
何も出力されない
2018/07/04(水) 18:41:11.43
自己解決
bashにしたら\で普通にエスケープできました
find . -name "~\$*"
なんでcsh使ってたんだろ
bashにしたら\で普通にエスケープできました
find . -name "~\$*"
なんでcsh使ってたんだろ
2018/07/04(水) 18:44:18.71
csh使ってたならプロンプト$にすんなよ紛らわしい
2018/07/04(水) 18:46:56.81
cshだと%でしたねすみません
% find . -name "~\$*"
% find . -name "~\$*"
2018/07/04(水) 20:48:13.14
なんで-rつけてんねん
2018/07/04(水) 20:56:00.21
ファイルフォルダ関係なく消したいからフォルダがないとわかっていても付けてる
2018/07/04(水) 21:12:02.88
\; より + かな。forkの遅いCygwinでは特に。
2018/07/04(水) 21:21:14.22
最後以外の改行を削除する単純で可搬な方法を探しています。
私が現在使っている方法は
cat <<. | tr -d '\n' | printf '%s\n' "$(cat)"
a
bbb
cc
.
です。これは可搬性は抜群ですが、冗長すぎると感じています。
できれば一つのコマンド(sedとか?)で済ませたいです。よろしくお願いします。
私が現在使っている方法は
cat <<. | tr -d '\n' | printf '%s\n' "$(cat)"
a
bbb
cc
.
です。これは可搬性は抜群ですが、冗長すぎると感じています。
できれば一つのコマンド(sedとか?)で済ませたいです。よろしくお願いします。
2018/07/04(水) 21:32:09.95
awkで
2018/07/04(水) 21:34:23.01
フォルダっつーかディレクトリ
2018/07/04(水) 21:37:25.99
同じだろ
2018/07/04(水) 21:40:52.56
2018/07/04(水) 22:22:07.40
2018/07/04(水) 23:00:04.93
2018/07/05(木) 09:36:25.04
Mac付属のsedじゃうまく行かなかった、ってお呼びじゃないか
最近のBSD sedはどうかわからないけど
最近のBSD sedはどうかわからないけど
2018/07/05(木) 10:23:41.12
2018/07/05(木) 12:53:17.75
macOSだけでなくBSDでだめっぽい。BSDでだめというか、GNU sedでなら動くか
2018/07/05(木) 14:18:26.92
主にパターンスペースに対して処理した直後にどうするってとこの違いかな。他ではBSDでもmacOSとOpenBSDでは行を処理しなかった場合どうするがちょっと動作が違ったり、いろいろ鬼門だなsedは
sed '$!{H;d;};${H;g;s/\n//g;}'
で、いちおう、sedもGNU sedものようだけど、ゴテっとはしてんな
sed '$!{H;d;};${H;g;s/\n//g;}'
で、いちおう、sedもGNU sedものようだけど、ゴテっとはしてんな
2018/07/05(木) 14:50:09.34
2018/07/05(木) 15:36:04.46
>>845のMacやBSD向け変種でけた
sed -e :l -e 'N;s/\n//;$p;bl'
sed -e :l -e 'N;s/\n//;$p;bl'
2018/07/05(木) 15:51:48.45
おおっ
ラベルを別にすれば/しなきゃなのか
$はそこに入れるのか、なるほど
GNU sedではそれだと...オプションで変えられるかな
くせが強いw
ラベルを別にすれば/しなきゃなのか
$はそこに入れるのか、なるほど
GNU sedではそれだと...オプションで変えられるかな
くせが強いw
2018/07/05(木) 17:34:11.18
教訓。移植性を重視するならsedで変なことするな。普通の正規表現だけ使え
2018/07/05(木) 18:25:50.29
昔はもっと酷かったんだろうな #移植性
sedだけじゃなくてgrepとかも。
sedだけじゃなくてgrepとかも。
2018/07/05(木) 18:33:28.39
2018/07/05(木) 18:41:45.18
ぐぬぅ
2018/07/05(木) 22:10:39.00
sed で可搬性を考えると、セミコロンで分ける方法はちょっとあやしいから、
愚直に -e で分けるしか無いのかも知れない、短く書けないけどw
それはさておき、sed の「無限ループに N を入れる」って、趣があると思うんだよね。
C で「ファイルを while の条件文で fgets() が EOF になるまで読み込む処理」に近いというか。
愚直に -e で分けるしか無いのかも知れない、短く書けないけどw
それはさておき、sed の「無限ループに N を入れる」って、趣があると思うんだよね。
C で「ファイルを while の条件文で fgets() が EOF になるまで読み込む処理」に近いというか。
2018/07/05(木) 22:32:39.96
2018/07/05(木) 23:00:24.55
>>859
溜めに溜めて溜め込んでってイメージしかないなw
そのwhile〜fgets〜で言うなら、中にreallocでどんどこ的な
実際どうなんだろと65Mのファイルで「ちょっと」試したら、使用メモリは増えない(??)けど終わらんぞw
溜めに溜めて溜め込んでってイメージしかないなw
そのwhile〜fgets〜で言うなら、中にreallocでどんどこ的な
実際どうなんだろと65Mのファイルで「ちょっと」試したら、使用メモリは増えない(??)けど終わらんぞw
2018/07/06(金) 00:57:10.67
bashのプロセス置換なんですけど、最初のプロセス置換が/dev/fd/63に固定(?)されているのはなにか理由があるんですかね。
bash-4.4$ eval echo $(yes '<(echo) ' | head -n 63)
とやったら/dev/fd/63からデクリメントされていって/dev/fd/5→/dev/fd/3→/dev/fd/64
という謎の変化を経てインクリメントされていくという……。
これ仕様ですかね。
bash-4.4$ eval echo $(yes '<(echo) ' | head -n 63)
とやったら/dev/fd/63からデクリメントされていって/dev/fd/5→/dev/fd/3→/dev/fd/64
という謎の変化を経てインクリメントされていくという……。
これ仕様ですかね。
2018/07/07(土) 16:45:13.41
仕様です
63は昔は大きい数字だったのですが
最近は小さくなってしまった
63は昔は大きい数字だったのですが
最近は小さくなってしまった
2018/07/07(土) 19:05:22.41
数千行のCSVの値を一個一個指定の条件に沿っているかチェックするにはシェルスクリプトでも出来ますかね?
参考書教えて頂けたら嬉しいです。
それともこういうのは他のスクリプトの方が適してたりしますか?
perlも使える環境ではあります。
参考書教えて頂けたら嬉しいです。
それともこういうのは他のスクリプトの方が適してたりしますか?
perlも使える環境ではあります。
2018/07/07(土) 19:24:54.18
>>864
そのチェックが他の行の参照を含まなくて、shellでできるかという質問にawkやsedも含まれているのなら、できる
というか、excelでやったりしないし、最近はpythonでやることが多い
そのチェックが他の行の参照を含まなくて、shellでできるかという質問にawkやsedも含まれているのなら、できる
というか、excelでやったりしないし、最近はpythonでやることが多い
2018/07/07(土) 20:21:55.89
指定の条件によるな。CSVの項目も数値や文字列だけだったらシェルスクリプトだけでもできるだろう
2018/07/07(土) 20:52:55.66
ああ、文字列の中のフィールドセパレータ(,)をフィールドセパレータとして除外というのはしないか。awkも同じかな。やってできないこともないだろうけどめんどくさいな
perlはcsv処理するモジュールを入れてだっけ、pythonは最初から入っているよな
perlはcsv処理するモジュールを入れてだっけ、pythonは最初から入っているよな
2018/07/07(土) 21:04:50.61
それ以前にCSVのフォーマットによると思う
改行とかカンマとかダブルクォーテーションを含むとかをきちんとやりだすとシェルだけでもできるだろうけどやりたくない
改行とかカンマとかダブルクォーテーションを含むとかをきちんとやりだすとシェルだけでもできるだろうけどやりたくない
2018/07/07(土) 23:07:51.61
またCSV嵐が来てんのか
2018/07/07(土) 23:12:15.86
カンマ入っている場合には "" もしくは '' で囲わなければならないから、それはシェルスクリプトにとっても都合がいい、
IFS=',' fields=($raw)
で簡単にと思ったがそう甘くはなかった。最近流行りのevalでなんとかだとしても、$とかまた別の問題があるしなあ
IFS=',' fields=($raw)
で簡単にと思ったがそう甘くはなかった。最近流行りのevalでなんとかだとしても、$とかまた別の問題があるしなあ
2018/07/07(土) 23:14:30.65
>>869
別にあれとは違うだろうにw 単にCSVだからって拒否反応示しすぎ
別にあれとは違うだろうにw 単にCSVだからって拒否反応示しすぎ
2018/07/07(土) 23:47:30.31
皆さんお答えありがとうございます。
出来るけど面倒だという感じですね。
PHP使いたいけど仕様上ダメみたいなんですよね。。。
後にメンテナンスが面倒くさそう
出来るけど面倒だという感じですね。
PHP使いたいけど仕様上ダメみたいなんですよね。。。
後にメンテナンスが面倒くさそう
2018/07/07(土) 23:50:19.59
>>867
残念ながらpythonは入ってなかったです。DBサーバーなんで
残念ながらpythonは入ってなかったです。DBサーバーなんで
2018/07/08(日) 00:37:11.05
>>873
perlで高機能な(?)Text::CSVを入れればだけど、それすらなら、
http://t2aki.doncha.net/?id=1403586022
なんぞの数行のをコピペってでもかな。後はperlスレだな
perlで高機能な(?)Text::CSVを入れればだけど、それすらなら、
http://t2aki.doncha.net/?id=1403586022
なんぞの数行のをコピペってでもかな。後はperlスレだな
2018/07/09(月) 08:36:49.76
>>869
いいえ、また "お前" が来てるんですよ
いいえ、また "お前" が来てるんですよ
2018/07/09(月) 09:05:14.05
2018/07/09(月) 13:02:45.84
素直にCで書けばw
2018/07/09(月) 15:13:46.00
1990年代には確かにこういうプログラムもCで書いてたが、今では はやらんよ。
スクリプト言語とかJava VM系言語とかでCSVライブラリ呼ぶように書くのが普通。
もっと低レイヤの処理ならCも使うけど、業務システムにCを使うってのは、
開発効率が悪いせいで、ほぼ亡びた。
スクリプト言語とかJava VM系言語とかでCSVライブラリ呼ぶように書くのが普通。
もっと低レイヤの処理ならCも使うけど、業務システムにCを使うってのは、
開発効率が悪いせいで、ほぼ亡びた。
2018/07/09(月) 19:00:09.14
compgenによる補完候補の絞り込みですが
bashでは正常に動作するもののzshでは絞り込まれません。
なぜでしょう?
# bash 4.4.19 on Ubuntu 18.04
$ compgen -W "aaa bbb ccc" a
aaa
# zsh 5.5.1 on Ubuntu 18.04
% compgen -W "aaa bbb ccc" a
aaa
bbb
ccc
.zshrcでは
autoload -U +X compinit && compinit
autoload -U +X bashcompinit && bashcompinit
してます
bashでは正常に動作するもののzshでは絞り込まれません。
なぜでしょう?
# bash 4.4.19 on Ubuntu 18.04
$ compgen -W "aaa bbb ccc" a
aaa
# zsh 5.5.1 on Ubuntu 18.04
% compgen -W "aaa bbb ccc" a
aaa
bbb
ccc
.zshrcでは
autoload -U +X compinit && compinit
autoload -U +X bashcompinit && bashcompinit
してます
2018/07/09(月) 22:19:36.10
>>878
すでに入ってるLL使うならわかるが、JavaVM入れるくらいならCでいだろ。
すでに入ってるLL使うならわかるが、JavaVM入れるくらいならCでいだろ。
2018/07/10(火) 08:36:39.48
2018/07/15(日) 05:45:07.54
シェルスクリプトでwebpackみたいに結合して1ファイルにしてくれるものとか
babelみたいにトランスパイルすることで言語を拡張するものって無いかな
babelみたいにトランスパイルすることで言語を拡張するものって無いかな
2018/07/15(日) 13:28:22.06
>>882
シェルアーカイブ形式とか?
file.sharという形で,ファイル後半に(圧縮した)バイナリーファイル,前半(というかヘッダ)に展開用シェルスクリプトとインストールスクリプトを書いておく)
最近のソフトウェアだとVMWare Horizon ClientsのLinux向けインストーラーがその形式だった。
シェルアーカイブ形式とか?
file.sharという形で,ファイル後半に(圧縮した)バイナリーファイル,前半(というかヘッダ)に展開用シェルスクリプトとインストールスクリプトを書いておく)
最近のソフトウェアだとVMWare Horizon ClientsのLinux向けインストーラーがその形式だった。
2018/07/16(月) 09:08:44.64
2018/07/16(月) 11:20:08.69
>>884
それがshar
それがshar
886名無しさん@お腹いっぱい。
2018/07/17(火) 14:15:20.692018/07/17(火) 14:17:28.78
shar知らない人のために説明しておくと、
これは単なる自己解凍形式の圧縮ファイル形式に過ぎない
これは単なる自己解凍形式の圧縮ファイル形式に過ぎない
2018/07/17(火) 14:31:39.62
それよりwebpackとやらについて説明しておくべきだったろ
聞き方が悪い
聞き方が悪い
2018/07/17(火) 14:59:08.62
名前出てるんだから調べればいいだけだろ
2018/07/17(火) 15:01:52.39
なんで聞く側が偉そうなんだよって話だろ
2018/07/17(火) 16:41:05.27
どう使いたいかとかわからんのにな
>>887って言ってるけど、得られるのは自分でそれを使ってダイレクトにも頑張ればできる範囲だし
>>887って言ってるけど、得られるのは自分でそれを使ってダイレクトにも頑張ればできる範囲だし
2018/07/17(火) 18:43:00.23
webpackはCのプリプロセッサのincludeみたいなやつだよ
2018/07/17(火) 19:48:43.74
バンドルじゃないの。macOSのバンドルのようなのを単一ファイルでの
単にincludeだったらシェルスクリプトにcatでくっつければええやん。目的は単一のファイルにしたいだけなんだから
バンドルなんだからバンドルをハンドルするヤツが必要じゃないの。んなのはshar使って自分で作ればってとこじゃね
単にincludeだったらシェルスクリプトにcatでくっつければええやん。目的は単一のファイルにしたいだけなんだから
バンドルなんだからバンドルをハンドルするヤツが必要じゃないの。んなのはshar使って自分で作ればってとこじゃね
2018/07/18(水) 07:15:49.95
webpackとかbabelとか覚えたてのキーワード並べてみたかったんでしょ
そんなのが必要になる状況がクソなんだがなw
そんなのが必要になる状況がクソなんだがなw
2018/07/18(水) 10:45:31.69
2018/07/18(水) 10:47:00.38
>>894
単一のファイルで何千行も書きたいの?
単一のファイルで何千行も書きたいの?
2018/07/18(水) 10:48:08.70
ちなみにsharの問題は展開しないと使えないって所
ルータのような書き込み回数に制限があるシステムでは致命的
ルータのような書き込み回数に制限があるシステムでは致命的
2018/07/18(水) 10:48:51.53
あと展開のためのコマンドが入ってない可能性もあるしな
ファイル結合するだけなら、外部のコマンドにも依存しない
ファイル結合するだけなら、外部のコマンドにも依存しない
2018/07/18(水) 12:29:11.73
シェルスクリプトは実行可能なままファイル結合する必要性があんまりないってこと
そんなのとかトランスパイルとかが必要になるJavaScriptを指して、クソだなって言われてるんじゃない?
そんなのとかトランスパイルとかが必要になるJavaScriptを指して、クソだなって言われてるんじゃない?
2018/07/18(水) 14:24:18.43
てゆうかそれ以前に、そんな長いプログラムをシェルスクリプトで書いちゃいかんやろ。
他の言語を使うべき。
JavaScriptくらい高級な言語ならアリだけど。
他の言語を使うべき。
JavaScriptくらい高級な言語ならアリだけど。
2018/07/18(水) 19:30:47.19
ディレクトリ A の中のファイルを全部
ディレクトリ B の中の同名のファイルと diff を撮りたいんですけどどうすればいいですか
xarg で1つの引き数を渡す方法しかわからないのでおねがいします
ディレクトリ B の中の同名のファイルと diff を撮りたいんですけどどうすればいいですか
xarg で1つの引き数を渡す方法しかわからないのでおねがいします
2018/07/18(水) 19:32:58.08
diff -r A B
でいいのでは?
でいいのでは?
2018/07/18(水) 20:29:52.99
少しはggるとかしてからここに恋や
2018/07/18(水) 21:00:07.83
その前にmanすれ
2018/07/18(水) 21:33:29.76
システムのスクリプトにも参考になるものがたくさんあるよね。zgrepとかzdiffとか
linuxだけどlddがシェルスクリプトだったのには驚いた
linuxだけどlddがシェルスクリプトだったのには驚いた
2018/07/18(水) 21:51:54.45
bashのHISTTIMEFORMATを設定した環境だと
sshログアウトしてもbgプロセス消えないみたいなんだが
なんでなん?
sshログアウトしてもbgプロセス消えないみたいなんだが
なんでなん?
2018/07/18(水) 22:33:43.46
設定してなくてもsshログアウトしてもbgプロセス消えないけど、うちでは
他の設定じゃね
他の設定じゃね
2018/07/18(水) 23:31:51.58
うーむ
会社の環境だとその設定の有無で変わったんだけど
今vmでcentのminimal立てたら設定なしにbgプロセス生きてた
何か勘違いしてるのか
会社の環境だとその設定の有無で変わったんだけど
今vmでcentのminimal立てたら設定なしにbgプロセス生きてた
何か勘違いしてるのか
2018/07/19(木) 00:16:48.11
https://serverfault.com/questions/117152/do-background-processes-get-a-sighup-when-logging-off
だって。ちょい昔からデフォで子プロセスにHUP送らなくなってるんだなあ。OSやディストリによってデフォが違うだろうけど
huponexitオンにして、HISTTIMEFORMATを設定してもbgプロセスは消えるねえ
だって。ちょい昔からデフォで子プロセスにHUP送らなくなってるんだなあ。OSやディストリによってデフォが違うだろうけど
huponexitオンにして、HISTTIMEFORMATを設定してもbgプロセスは消えるねえ
2018/07/19(木) 09:21:29.33
case文で,Bash特有の高速化オプションとかありませんかね。
2018/07/19(木) 10:02:38.02
2018/07/19(木) 10:34:16.62
>>902
Aにあるファイル名だけ比較したいんです
Bのなかにはほかにもファイルがあったりするので
diff A/$f B/$f
とか場合によっては
diff A/$f B/*/$f みたいなことがしたかったのです…
ls なり find なりの出力ファイル名を変数に取り出すのってやっぱり難しいんですね
諦めます
レスありがとうございました
Aにあるファイル名だけ比較したいんです
Bのなかにはほかにもファイルがあったりするので
diff A/$f B/$f
とか場合によっては
diff A/$f B/*/$f みたいなことがしたかったのです…
ls なり find なりの出力ファイル名を変数に取り出すのってやっぱり難しいんですね
諦めます
レスありがとうございました
2018/07/19(木) 11:14:05.74
お題としてはちょっと楽しめると思うけど、諦めちゃうのか
2018/07/19(木) 11:19:41.98
find A -type fして、それぞれbasenameとって、find B -name filename -exec hogeってかんじかな。
B側で何度もfindするのを減らしたいけど、キャッシュされればそれほど負荷じゃないか。
B側で何度もfindするのを減らしたいけど、キャッシュされればそれほど負荷じゃないか。
2018/07/19(木) 12:11:39.09
diffの話ついでに
(GNU) diffでディレクトリごと比較したときに、一方のディレクトリにのみあるファイルを無視するオプションってある?
diff -r /dirA /dirB | grep -v 'にのみ存在'
とやればまあ大抵の場合解決するんだけども、たまたまあるファイルの変更箇所に「にのみ存在」っていう文があった時に
困るので、できればオプションで解決したい。
(GNU) diffでディレクトリごと比較したときに、一方のディレクトリにのみあるファイルを無視するオプションってある?
diff -r /dirA /dirB | grep -v 'にのみ存在'
とやればまあ大抵の場合解決するんだけども、たまたまあるファイルの変更箇所に「にのみ存在」っていう文があった時に
困るので、できればオプションで解決したい。
2018/07/19(木) 12:28:48.82
LANG=Cで^Onlyにマッチさせてはじく
2018/07/19(木) 12:35:37.30
diffの出力って行頭の文字が重要なのに、
これを無視した日本語ロケール作者は反省するべき。
これを無視した日本語ロケール作者は反省するべき。
2018/07/19(木) 12:53:00.49
結果に対してsedで…ってのはさすがに無駄だな
2018/07/19(木) 12:57:00.83
2018/07/19(木) 15:19:36.24
詳しい解説サンクス
2018/07/19(木) 20:13:49.97
2018/07/20(金) 01:50:52.37
>>900
> てゆうかそれ以前に、そんな長いプログラムをシェルスクリプトで書いちゃいかんやろ。
行数で使う言語を決めるなや
シェルスクリプトは、コマンドの連携処理を一番シンプルに書くことができる言語
シェルスクリプトが適している問題を、長いからという理由で他の言語を使うともっと長くなる
なぜ非効率な言語を使うのか?
> てゆうかそれ以前に、そんな長いプログラムをシェルスクリプトで書いちゃいかんやろ。
行数で使う言語を決めるなや
シェルスクリプトは、コマンドの連携処理を一番シンプルに書くことができる言語
シェルスクリプトが適している問題を、長いからという理由で他の言語を使うともっと長くなる
なぜ非効率な言語を使うのか?
2018/07/20(金) 02:03:28.48
はいはい
2018/07/20(金) 06:54:58.07
この引用符…あっ(察し
2018/07/20(金) 07:21:43.92
引用符?
2018/07/20(金) 12:12:45.33
>>922
まさにシェルスクリプトがプログラム間連携のための言語だからだよ。
1000行以上にも及ぶ複雑なプログラム間連携処理を
シェルスクリプトで書く状況ってのは
モジュール分割に失敗してる可能性がきわめて高い。
100行くらいの単体でも十分に使えるシェルスクリプトが10個ならば問題ないが。
シェルスクリプトは現代的プログラミング言語の持つ数々の抽象化機能を
欠いていて大規模プログラミングに向かないことは常に意識するべき。
まさにシェルスクリプトがプログラム間連携のための言語だからだよ。
1000行以上にも及ぶ複雑なプログラム間連携処理を
シェルスクリプトで書く状況ってのは
モジュール分割に失敗してる可能性がきわめて高い。
100行くらいの単体でも十分に使えるシェルスクリプトが10個ならば問題ないが。
シェルスクリプトは現代的プログラミング言語の持つ数々の抽象化機能を
欠いていて大規模プログラミングに向かないことは常に意識するべき。
2018/07/20(金) 16:50:00.03
仕事でならな。個人的なのでもそういう学習習得意欲がないんだったら馬の耳に念仏かと
2018/07/20(金) 20:11:37.10
ケンカはやめて(><)
2018/07/21(土) 02:15:31.20
二人をとめて \(^o^)/
2018/07/21(土) 02:44:08.71
私だ
2018/07/21(土) 09:20:03.54
あえて不向きなことをやるのは好きだよ
2018/07/21(土) 13:29:23.62
>>926
> 1000行以上にも及ぶ複雑なプログラム間連携処理を
> シェルスクリプトで書く状況ってのは
> モジュール分割に失敗してる可能性がきわめて高い。
だからシェルスクリプトでモジュール分割するんでしょ?
> 1000行以上にも及ぶ複雑なプログラム間連携処理を
> シェルスクリプトで書く状況ってのは
> モジュール分割に失敗してる可能性がきわめて高い。
だからシェルスクリプトでモジュール分割するんでしょ?
2018/07/21(土) 13:30:12.48
2018/07/21(土) 15:15:10.19
2018/07/21(土) 15:36:08.22
>>932
できてるならそんな話題になってないな
できてるならそんな話題になってないな
2018/07/21(土) 16:05:41.70
>>935
普通に . (source)を使用するだけだけど?
普通に . (source)を使用するだけだけど?
2018/07/21(土) 16:08:19.12
>>934
内部コマンドだけで処理できるなら
普通の言語のほうが良いよ
外部コマンドの連携に強いシェルスクリプトは
外部コマンドを呼び出すために使うもの
逆に普通の言語だと外部コマンドの呼び出しは面倒なんだ。
内部コマンドだけで処理できるなら
普通の言語のほうが良いよ
外部コマンドの連携に強いシェルスクリプトは
外部コマンドを呼び出すために使うもの
逆に普通の言語だと外部コマンドの呼び出しは面倒なんだ。
2018/07/21(土) 16:16:33.64
そろそろ板違い
2018/07/21(土) 16:30:52.91
2018/07/22(日) 19:37:39.33
>>934
includeやimportも禁止な
includeやimportも禁止な
941名無しさん@お腹いっぱい。
2018/07/22(日) 22:44:37.34 やっぱ次のスレからワッチョイ付きにしようね
2018/07/22(日) 23:49:40.49
>>939
だからモジュール分割は . で出来てるから話題になってないってことでしょ?
だからモジュール分割は . で出来てるから話題になってないってことでしょ?
2018/07/23(月) 01:44:04.51
この掲示板ってワッチョイないのでは…
というかidもなかった
というかidもなかった
2018/07/23(月) 01:57:54.18
使えないのかもしかして
2018/07/23(月) 02:50:48.89
掲示板ごとの設定だからね
2018/07/23(月) 03:47:58.52
じゃあもうこの板捨てるか?
Linux板にでも移動すりゃいいでしょ
Linux板にでも移動すりゃいいでしょ
2018/07/23(月) 04:20:40.19
ワンチャンある
最近精神年齢キッズが多すぎるしな
最近精神年齢キッズが多すぎるしな
2018/07/23(月) 11:29:23.13
test
2018/07/23(月) 11:56:50.52
false
2018/07/23(月) 20:31:02.18
>>946
OSの話じゃないから向こうでやってもいいかもね
OSの話じゃないから向こうでやってもいいかもね
2018/07/23(月) 20:36:06.85
あっ、でも向こうだと動かすOSがLInux前提になってしまうのか
2018/07/23(月) 21:56:56.76
プログラム板にすれば?
2018/07/23(月) 22:23:40.05
するならそっちだな
2018/07/23(月) 22:28:36.47
ム板に賛成する
2018/07/23(月) 22:46:21.28
ム板にしましょう
2018/07/23(月) 22:48:33.03
バッチ、パワシェのスレがム板にあるから不自然じゃないよね
2018/07/24(火) 01:25:43.39
賛成だ
しかしシェルスクリプトがunixにいられなくなるってのもなんかすごいな
しかしシェルスクリプトがunixにいられなくなるってのもなんかすごいな
2018/07/24(火) 01:37:47.14
俺も賛成だわ
2018/07/24(火) 01:43:21.92
まあUnixもそれだけ多くの人に知られてきたってことじゃない?
もちろんキチガイは不要だけども。
もちろんキチガイは不要だけども。
2018/07/24(火) 06:02:37.30
テンプレは同じでいいな
もし嫌ならそいつが新しいの考えろ
もし嫌ならそいつが新しいの考えろ
2018/07/24(火) 11:06:17.93
とりあえず立てました。
テンプレを書き込もうとしたら長すぎと怒られたので、分割するついでにちょっと改変しました。
https://mevius.5ch.net/test/read.cgi/tech/1532397676/l50
テンプレを書き込もうとしたら長すぎと怒られたので、分割するついでにちょっと改変しました。
https://mevius.5ch.net/test/read.cgi/tech/1532397676/l50
2018/07/24(火) 11:25:29.69
IDだけか?
ワッチョイいれるんじゃないのか
ワッチョイいれるんじゃないのか
963961
2018/07/24(火) 11:43:21.78 >>962
実はワッチョイを提案したのは俺なんだけど
あんまり賛同者がいないようだし
勝手にやるのもどうかなと思ったんだわ。
今はID板でやって
それでも荒れるようであればワッチョイ付けるっていう方針でいいかなと思ってる
実はワッチョイを提案したのは俺なんだけど
あんまり賛同者がいないようだし
勝手にやるのもどうかなと思ったんだわ。
今はID板でやって
それでも荒れるようであればワッチョイ付けるっていう方針でいいかなと思ってる
2018/07/24(火) 11:51:50.17
>>963
俺はワッチョイも含めて賛成してたけど、まぁそれでいいか
ざっと厶板の他のスレみた感じワッチョイまで採用してるスレほとんどないみたいだし、あっちでもあまり使わない文化なのかもしれん、どうなんだろ
俺はワッチョイも含めて賛成してたけど、まぁそれでいいか
ざっと厶板の他のスレみた感じワッチョイまで採用してるスレほとんどないみたいだし、あっちでもあまり使わない文化なのかもしれん、どうなんだろ
2018/07/24(火) 11:53:47.82
ヘタレすぐる
2018/07/24(火) 12:31:44.59
プログラム板移動とか計画通りすぎるwww
2018/07/24(火) 12:32:21.76
どうせならIPアドレス表示まですればいいのに
攻撃してやんよ
攻撃してやんよ
2018/07/24(火) 12:41:26.67
プログラム板という修羅の国に移動か
969961
2018/07/24(火) 12:54:08.96 プログラム板ってここと違って保守しなきゃいけないよね
誰かどのくらいで落ちるか分かる人います?
誰かどのくらいで落ちるか分かる人います?
2018/07/24(火) 12:54:54.13
20
2018/07/24(火) 12:55:43.39
あぁ時間か
どうだったっけな、さすがに覚えてない
20レスすれば当面落ちないとだけしか
どうだったっけな、さすがに覚えてない
20レスすれば当面落ちないとだけしか
2018/07/24(火) 13:29:33.13
先日lispスレ立てたけど、4レスのまま全然落ちる気配ないよ。
2018/07/24(火) 20:36:12.16
2018/07/25(水) 04:22:56.20
UNIX板伝統のシェルスクスレもム板行きかあ
UNIX板に限らず、専門板って過疎ってるところ多いから、統廃合してほしいな
UNIX板に限らず、専門板って過疎ってるところ多いから、統廃合してほしいな
2018/07/25(水) 15:06:43.63
シェルスクリプトはもはやUNIXだけのものじゃなくなったからなぁ。
クロスプラットフォームが当たり前になって、
OS別のマターというのもだいぶ限られてきたね。
クロスプラットフォームが当たり前になって、
OS別のマターというのもだいぶ限られてきたね。
2018/07/25(水) 16:55:26.81
UNIX板の中でシェルスクリプト総合スレが一番、というか唯一勢いがあるんだが、
これなくなると凄まじい限界集落になるな…
Vim/Emacs/TeXあたりもソフトウエア板あたりなんか行ったら、もう…(´;ω;`)
これなくなると凄まじい限界集落になるな…
Vim/Emacs/TeXあたりもソフトウエア板あたりなんか行ったら、もう…(´;ω;`)
2018/07/25(水) 18:05:53.09
せめてIDが出る板だったらよかったのにね…
2018/07/25(水) 18:31:00.38
まぁ言っても仕方ない
変わらない環境なんざないさ
変わらない環境なんざないさ
2018/07/25(水) 20:33:48.37
WindowsではWSLでシェルスクリプトが動く
だけどWSL環境なんだよなぁ
Windows標準でbusyboxとか採用してくれればいいのに
バッチファイルの代わりとして使えるんだが
だけどWSL環境なんだよなぁ
Windows標準でbusyboxとか採用してくれればいいのに
バッチファイルの代わりとして使えるんだが
2018/07/25(水) 21:09:31.29
>>979
どんなことにつかいたいの?
どんなことにつかいたいの?
2018/07/25(水) 21:12:51.81
バッチの意味不明なsyntaxと貧相なコマンド類は発狂しそうになるけど、パワシェではいかんの?
パワシェ使ったことないけど、さすがにまともに設計されてるんだろ
パワシェ使ったことないけど、さすがにまともに設計されてるんだろ
2018/07/25(水) 22:21:31.92
PowerShellは、普段使いのシェルとしては使えない
983名無しさん@お腹いっぱい。
2018/07/25(水) 23:38:49.24 Powershellは高機能なんだろうけど、高機能すぎて、あれこれ調べているうちに疲れた
結果として、Powershellの機能を呼び出すバッチファイルが出来上がってしまった
結果として、Powershellの機能を呼び出すバッチファイルが出来上がってしまった
2018/07/26(木) 05:51:18.22
2018/07/27(金) 11:09:39.45
>>984
太ってるの?
太ってるの?
2018/07/27(金) 11:11:30.73
2018/07/27(金) 21:15:51.75
>>986
いつのまにか感染してました、で会社をクビになるんですね。
いつのまにか感染してました、で会社をクビになるんですね。
988名無しさん@お腹いっぱい。
2018/08/01(水) 17:27:03.042018/08/02(木) 01:46:48.23
>>988
SFU や WSL の流れからして、Busybox 相当の標準搭載も需要も無いと思いますよ。
必要ならば Sysinternals 等の TechNet フォーラムに参加して要望を出してみては。
SFU や WSL の流れからして、Busybox 相当の標準搭載も需要も無いと思いますよ。
必要ならば Sysinternals 等の TechNet フォーラムに参加して要望を出してみては。
2018/08/02(木) 04:05:27.78
>>989
需要がないのになんで次から次へと出てくるの?
需要がないのになんで次から次へと出てくるの?
2018/08/02(木) 04:15:34.43
もうすぐみんなとお別れなの(´;ω;`)
2018/08/02(木) 05:22:46.59
2018/08/02(木) 06:31:33.06
2018/08/02(木) 08:08:24.46
悪意だろ
2018/08/02(木) 08:24:36.20
そう先に思うのはお前自身が腐ってるからだろう
2018/08/02(木) 09:08:24.13
埋め
2018/08/02(木) 09:08:47.19
埋め
2018/08/02(木) 09:09:28.02
2018/08/02(木) 09:09:44.23
埋め
1000名無しさん@お腹いっぱい。
2018/08/02(木) 09:09:52.51 お前らあばよ
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 90日 15時間 15分 29秒
新しいスレッドを立ててください。
life time: 90日 15時間 15分 29秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
