シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
前スレ:
シェルスクリプト総合 その29
https://mevius.5ch.net/test/read.cgi/tech/1537540487/
探検
シェルスクリプト総合 その30
■ このスレッドは過去ログ倉庫に格納されています
2019/07/01(月) 23:04:27.02ID:/rKj5XUf
201デフォルトの名無しさん
2019/07/12(金) 00:13:06.93ID:Iwx9PgjW cmdのオプションが/なのは当て付けなんだろうか
XENIXを売ってた頃のMS知らんけど
XENIXを売ってた頃のMS知らんけど
202デフォルトの名無しさん
2019/07/12(金) 00:38:52.25ID:hw+u6C0G 階層がないファイルシステムだと - でも / でもどっちでも違和感が無いのだろう
単に好みでそれにしたってだけじゃないかな
階層があるようになって / を好みで選んで失敗したと思ったけどどうにもならななかったよう
手立ては用意したがサードパーティがそれを使わないとか
単に好みでそれにしたってだけじゃないかな
階層があるようになって / を好みで選んで失敗したと思ったけどどうにもならななかったよう
手立ては用意したがサードパーティがそれを使わないとか
203デフォルトの名無しさん
2019/07/12(金) 00:54:25.43ID:hw+u6C0G ああ、どうにもならなかったのは、
オプションを/にしてしまったからとりあえずパス区切りはバックスラッシュにしたよ、でも、/ にもできるよ
だった。オプションを - に変えるのは今でも前のいつでもできるだろうな
コマンドによっては別の意味を持たせてとかありそうだが、なんの拘りなんだかよくわからんな
オプションを/にしてしまったからとりあえずパス区切りはバックスラッシュにしたよ、でも、/ にもできるよ
だった。オプションを - に変えるのは今でも前のいつでもできるだろうな
コマンドによっては別の意味を持たせてとかありそうだが、なんの拘りなんだかよくわからんな
204デフォルトの名無しさん
2019/07/12(金) 08:37:34.85ID:paORMduQ https://packages.debian.org/ja/experimental/ksh
kshはずっと93uだったはずだが、2020なんてのがでるのか?
kshはずっと93uだったはずだが、2020なんてのがでるのか?
205デフォルトの名無しさん
2019/07/12(金) 10:59:03.44ID:paORMduQ 同じPCで一つがWSL1上のUbuntu、もう一つがDocker上のUbuntuで
lsb_release -aしてどちらも同じUbuntu 18.04.2 LTSなのに
kshのシェルに入ってから以下のコマンドを実行すると違いがある
echo $((99999999999999999))
=> 100000000000000000 # WSL
=> 99999999999999999 # Docker
KSV_VERSIONは両方とも同じ Version AJM 93u+ 2012-08-01
カーネル関係なさそうなのに、なんでだろう?
lsb_release -aしてどちらも同じUbuntu 18.04.2 LTSなのに
kshのシェルに入ってから以下のコマンドを実行すると違いがある
echo $((99999999999999999))
=> 100000000000000000 # WSL
=> 99999999999999999 # Docker
KSV_VERSIONは両方とも同じ Version AJM 93u+ 2012-08-01
カーネル関係なさそうなのに、なんでだろう?
206デフォルトの名無しさん
2019/07/12(金) 11:04:55.32ID:OtxPhCkg 大きな数の取り扱いの限界が違うのかも
207デフォルトの名無しさん
2019/07/12(金) 12:04:33.46ID:uJ9G3Ton ディレクトリごとの正確なファイル数が高速に知りたいです。
208デフォルトの名無しさん
2019/07/12(金) 12:15:53.93ID:OtxPhCkg ls より find が早い
再帰ディレクトリ探索とファイル名出力はそれに任せて
その出力をパイプで変換していったらいいんじゃないか?
再帰ディレクトリ探索とファイル名出力はそれに任せて
その出力をパイプで変換していったらいいんじゃないか?
209デフォルトの名無しさん
2019/07/12(金) 12:22:05.68ID:gCudY7G9 なぜduでファイル数も調べられるようにしなかったのか?
210デフォルトの名無しさん
2019/07/12(金) 12:22:27.56ID:gCudY7G9 duの作者に問い詰めたい
211デフォルトの名無しさん
2019/07/12(金) 12:24:06.88ID:OtxPhCkg やるべきことは最小限の1つ
UNIXの哲学でしょ
小さいから早い
小さいからパイプでつなげていろいろ実現できる
小さいから保守できる
UNIXの哲学でしょ
小さいから早い
小さいからパイプでつなげていろいろ実現できる
小さいから保守できる
212デフォルトの名無しさん
2019/07/12(金) 12:27:18.37ID:gCudY7G9 その理屈だと、lsコマンドはファイルの名前だけじゃなくて
ファイルサイズまで表示している。
最小限になってない。findコマンドを見習え
って話になるんだがw
ファイルサイズまで表示している。
最小限になってない。findコマンドを見習え
って話になるんだがw
213デフォルトの名無しさん
2019/07/12(金) 12:28:12.53ID:gpn1wbN7 >>209
ファイルを数えるのはduの仕事じゃないから
ファイルを数えるのはduの仕事じゃないから
214デフォルトの名無しさん
2019/07/12(金) 12:30:19.18ID:gCudY7G9 ファイルを数えるのは誰の仕事?
仕事は一番うまくできる人がするべきですよ
仕事は一番うまくできる人がするべきですよ
215デフォルトの名無しさん
2019/07/12(金) 12:32:27.12ID:gCudY7G9 そういやファイル名に改行が含まれる場合、
POSIX準拠コマンド&オプションだけで数えられるの?
POSIX準拠コマンド&オプションだけで数えられるの?
216デフォルトの名無しさん
2019/07/12(金) 12:35:41.89ID:gCudY7G9 やるべきことは最小限っていったら
duコマンドなんていらんよな
findでファイル検索して、lsでファイルの情報出して
awkで加算すれば良い
パイプでつなげていろいろ実現できる
duコマンドなんていらんよな
findでファイル検索して、lsでファイルの情報出して
awkで加算すれば良い
パイプでつなげていろいろ実現できる
217デフォルトの名無しさん
2019/07/12(金) 12:53:26.46ID:433S/V3Z218デフォルトの名無しさん
2019/07/12(金) 13:00:19.57ID:WQ2UtQMj219デフォルトの名無しさん
2019/07/12(金) 13:39:06.41ID:uwyqXnfJ 元々、浮動小数点は誤差があるから、どっちでも良い
誤差無しなら、プログラミング言語で、Decimal などのライブラリを使わないといけない
誤差無しなら、プログラミング言語で、Decimal などのライブラリを使わないといけない
220デフォルトの名無しさん
2019/07/12(金) 13:49:24.26ID:OtxPhCkg221デフォルトの名無しさん
2019/07/12(金) 13:57:13.80ID:q8HbeEfz >>207
$ find 〈対象ディレクトリ〉 -type f | wc -l
$ find 〈対象ディレクトリ〉 -type f | wc -l
222デフォルトの名無しさん
2019/07/12(金) 13:59:45.00ID:q8HbeEfz bcコマンド使いなよ。POSIXで定められたほとんど唯一といっていい任意精度演算ができるコマンドだぜ。
残念ながらなぜかUbuntuには初期状態で入っていない……。
残念ながらなぜかUbuntuには初期状態で入っていない……。
223デフォルトの名無しさん
2019/07/12(金) 14:11:11.28ID:OtxPhCkg >>207
find ~/web -type f | perl -pe 's{[^/]+$}{\n}m'|uniq -c
27 /home/web/
11 /home/web/elona/
5 /home/web/elona/.git/
9 /home/web/elona/.git/hooks/
1 /home/web/elona/.git/info/
...
find ~/web -type f | perl -pe 's{[^/]+$}{\n}m'|uniq -c
27 /home/web/
11 /home/web/elona/
5 /home/web/elona/.git/
9 /home/web/elona/.git/hooks/
1 /home/web/elona/.git/info/
...
224デフォルトの名無しさん
2019/07/12(金) 14:17:11.58ID:OtxPhCkg やっぱりシェルスクリプトのパイプやばい
たった1行の短いのでそこそこ早いのが書きあがっちゃう
たった1行の短いのでそこそこ早いのが書きあがっちゃう
225デフォルトの名無しさん
2019/07/12(金) 17:35:59.38ID:greuAEFm >>220
emacsは出自がUnixじゃないから
emacsは出自がUnixじゃないから
226デフォルトの名無しさん
2019/07/12(金) 18:42:09.14ID:q8HbeEfz ちなみにPlan 9(Unixの後釜)のlsはもっと洗練された体系になってる。
あとPlan 9のEmacsの手引書がおもしろい
あとPlan 9のEmacsの手引書がおもしろい
227デフォルトの名無しさん
2019/07/12(金) 19:16:50.62ID:13weq3zY Plan 9の今後のプランは!?
228デフォルトの名無しさん
2019/07/12(金) 19:39:49.25ID:gpn1wbN7 Plan 9も最初からGPLで公開していればLinuxと肩を並べてたかもね
229デフォルトの名無しさん
2019/07/12(金) 20:39:39.59ID:fylm51D9230デフォルトの名無しさん
2019/07/13(土) 10:28:41.44ID:H4ToI7wx231デフォルトの名無しさん
2019/07/13(土) 10:36:29.63ID:006l8Xk5232デフォルトの名無しさん
2019/07/13(土) 10:51:01.49ID:Q8eoyE6C 並列「プログラミング」ではないな
単に仕組みとしてプロセスが同時並行しているだけで
単に仕組みとしてプロセスが同時並行しているだけで
233デフォルトの名無しさん
2019/07/13(土) 13:12:58.10ID:PcwCdG6p234デフォルトの名無しさん
2019/07/13(土) 14:39:07.51ID:4CNtNVmB 単機能のコマンドを組み合わせて処理するのがシェルスクリプトだからな
それで速度が遅いだの言うならシェルスクリプトなんか使わなければいい
それで速度が遅いだの言うならシェルスクリプトなんか使わなければいい
235デフォルトの名無しさん
2019/07/13(土) 16:01:43.14ID:Lat3oh38 >>223
uniq -cの前にsortしなくていいの?
uniq -cの前にsortしなくていいの?
236デフォルトの名無しさん
2019/07/13(土) 16:32:06.44ID:006l8Xk5237デフォルトの名無しさん
2019/07/13(土) 16:34:17.14ID:006l8Xk5 ソートはたぶん早くないから
つまりコストが高いから
たぶん定番のあれやったほうがいい
1行ずつ読みこんだそれでハッシュ作って インクリメントしてくあれ
つまりコストが高いから
たぶん定番のあれやったほうがいい
1行ずつ読みこんだそれでハッシュ作って インクリメントしてくあれ
238デフォルトの名無しさん
2019/07/13(土) 18:44:37.37ID:Wy302ne8 実はPOSIX sortならsort -uでuniq | sortと同等ことができるのでuniqは実質要らない子
239デフォルトの名無しさん
2019/07/13(土) 19:00:08.87ID:Q8eoyE6C uniqは重複したのを抽出する目的での利用が多いな
純粋にuniqで使う機会の方が極端に少ない
純粋にuniqで使う機会の方が極端に少ない
240デフォルトの名無しさん
2019/07/13(土) 19:23:10.38ID:56OavmE8 uniq | sortって使い方分かってない奴かよw
uniqくらいソース読んでみなよ
uniqくらいソース読んでみなよ
241デフォルトの名無しさん
2019/07/13(土) 19:38:16.75ID:Wy302ne8242デフォルトの名無しさん
2019/07/13(土) 20:35:19.67ID:yaak8A3v ls .-lのrwxに8進数表記も追加できないかな
243デフォルトの名無しさん
2019/07/13(土) 22:25:11.39ID:h6vp2MpA244デフォルトの名無しさん
2019/07/13(土) 22:28:56.59ID:h6vp2MpA あ、setuid/setgid/sticky bit のこと忘れてたわ
245デフォルトの名無しさん
2019/07/13(土) 22:47:31.71ID:YCgasS9+ find ~TEST -type f -printf "%h\n" |sort |uniq -c
これは早いわ
これは早いわ
246デフォルトの名無しさん
2019/07/13(土) 23:30:54.16ID:yaak8A3v duのファイル版は俺も作ったけど未熟なんでこんな出来に
find ./ -type d -printf "%p " -exec bash -c 'ls -b "{}" | wc -l' \; | sed -r 's/(.* )(\w+)/\2\t\1/g'
find ./ -type d -printf "%p " -exec bash -c 'ls -b "{}" | wc -l' \; | sed -r 's/(.* )(\w+)/\2\t\1/g'
247デフォルトの名無しさん
2019/07/13(土) 23:43:20.86ID:PcwCdG6p >>246
見易くていいね!
見易くていいね!
248デフォルトの名無しさん
2019/07/14(日) 00:22:33.01ID:KitiOp9Q249デフォルトの名無しさん
2019/07/14(日) 02:01:57.73ID:ygf6VvPi >>207
Ruby の、1-liner で、特定のディレクトリ以下を再帰的にたどりながら(find)、
ディレクトリ以外(reject)を表示する。
%Q("〜") は、" を、Windows のPowerShell に解釈させないために、クォートする
-r で、pathname モジュールを読み込む
ただし、途中で改行しているけど、実際には改行しないで下さい!
ruby -rpathname -e 'Pathname( %Q("C:/Users/Owner/Documents/Ruby/test") ).find
{ |path| if File.directory?( path ) then; puts path, path.children.reject( &:directory? ).length end; }'
出力
C:/Users/Owner/Documents/Ruby/test
11
C:/Users/Owner/Documents/Ruby/test/a
4
C:/Users/Owner/Documents/Ruby/test/a/b
0
Ruby の、1-liner で、特定のディレクトリ以下を再帰的にたどりながら(find)、
ディレクトリ以外(reject)を表示する。
%Q("〜") は、" を、Windows のPowerShell に解釈させないために、クォートする
-r で、pathname モジュールを読み込む
ただし、途中で改行しているけど、実際には改行しないで下さい!
ruby -rpathname -e 'Pathname( %Q("C:/Users/Owner/Documents/Ruby/test") ).find
{ |path| if File.directory?( path ) then; puts path, path.children.reject( &:directory? ).length end; }'
出力
C:/Users/Owner/Documents/Ruby/test
11
C:/Users/Owner/Documents/Ruby/test/a
4
C:/Users/Owner/Documents/Ruby/test/a/b
0
250デフォルトの名無しさん
2019/07/14(日) 06:45:35.11ID:GSQZGuhE stat -c '%A %U %G %z %n' .*
↑こういうのどう? lsのパーミッション表示を8進数に
まあPOSIXに規定されてないけど
↑こういうのどう? lsのパーミッション表示を8進数に
まあPOSIXに規定されてないけど
251デフォルトの名無しさん
2019/07/14(日) 10:08:35.55ID:niuQOGKU >>245
sort を差し替えた
~/ 対象にしたら倍速
find ~/ -type f -printf "%h\n" | perl -ne '$dirs{$_} += 1; END{for $key (keys %dirs) {printf "%5s %s", $dirs{$key}, $key } }'
sort を差し替えた
~/ 対象にしたら倍速
find ~/ -type f -printf "%h\n" | perl -ne '$dirs{$_} += 1; END{for $key (keys %dirs) {printf "%5s %s", $dirs{$key}, $key } }'
252デフォルトの名無しさん
2019/07/14(日) 10:11:35.12ID:niuQOGKU 途中だった
最後に | sort -k 2,2 入れても入れなくてもあまり変わらない
やはり指数関数的にsort に大量渡すと遅くなる
最後に | sort -k 2,2 入れても入れなくてもあまり変わらない
やはり指数関数的にsort に大量渡すと遅くなる
253デフォルトの名無しさん
2019/07/14(日) 12:30:16.97ID:GSQZGuhE LANG=Cでやってみ。
254デフォルトの名無しさん
2019/07/14(日) 13:29:14.61ID:VYOKuUQn POSIX の find って -printf がないのな。
難しいことは -exec でなんとかしろということか。
難しいことは -exec でなんとかしろということか。
255デフォルトの名無しさん
2019/07/14(日) 13:32:10.29ID:VYOKuUQn256デフォルトの名無しさん
2019/07/14(日) 14:08:00.15ID:Vo3Tn1vW Perlようわからんけど、findのところもまとめていわゆるVisitorパターンでやると?
シェルだと時間掛かる。
#!/bin/bash
shopt -s dotglob
walk() {
local c=0
for p in "$1"/*; do
if [ -d "$p" ]; then
walk "$p" # recursive call
elif [ -f "$p" ]; then
((c++))
fi
done
echo "$1: $c"
}
start_dir=$(basename "$1")
walk "$start_dir"
シェルだと時間掛かる。
#!/bin/bash
shopt -s dotglob
walk() {
local c=0
for p in "$1"/*; do
if [ -d "$p" ]; then
walk "$p" # recursive call
elif [ -f "$p" ]; then
((c++))
fi
done
echo "$1: $c"
}
start_dir=$(basename "$1")
walk "$start_dir"
257デフォルトの名無しさん
2019/07/14(日) 14:15:10.09ID:niuQOGKU258デフォルトの名無しさん
2019/07/14(日) 15:14:56.46ID:GSQZGuhE どうせPerl使うんならPerlに用意されているfindコマンド的な関数使えばいいのに。
いや正直Perl書けないので外部コマンドのほうが効率いいのかも知れんけど
いや正直Perl書けないので外部コマンドのほうが効率いいのかも知れんけど
259デフォルトの名無しさん
2019/07/14(日) 15:43:17.08ID:niuQOGKU 今回たまたま perl が早かったのは
>237
ということ
つまり C は10倍ぐらい早いけど
何十倍も無駄なことやってたら遅くなってしまう
高速な find の出力を |sort |uniq -c したら一応答えでるけど
そのsort がウルトラ処理多い
だったらperl で1行ずつ読んで正しいアルゴリズムで処理したほうが早いだけ
>237
ということ
つまり C は10倍ぐらい早いけど
何十倍も無駄なことやってたら遅くなってしまう
高速な find の出力を |sort |uniq -c したら一応答えでるけど
そのsort がウルトラ処理多い
だったらperl で1行ずつ読んで正しいアルゴリズムで処理したほうが早いだけ
260デフォルトの名無しさん
2019/07/14(日) 16:48:51.97ID:XOVWGW1L perlでソートしてないから
261デフォルトの名無しさん
2019/07/14(日) 19:10:07.29ID:BEvjoRaR なんだperlでソートしたら遅いのか
262デフォルトの名無しさん
2019/07/14(日) 19:11:22.06ID:AAGaqnKC >>227
Plan無いん
Plan無いん
264デフォルトの名無しさん
2019/07/14(日) 20:02:48.24ID:XOVWGW1L awk版。ディレクトリ名でソートするなら sort -k2
find . -type f -exec dirname {} + | awk '{c[$0]++}END{for(i in c){printf"%4d %s\n",c[i],i}}' | sort
find . -type f -exec dirname {} + | awk '{c[$0]++}END{for(i in c){printf"%4d %s\n",c[i],i}}' | sort
265デフォルトの名無しさん
2019/07/14(日) 20:08:54.86ID:XOVWGW1L xargs使ったほうが良いかな
find . -type f | xargs dirname | awk '{c[$0]++}END{for(i in c){printf"%4d %s\n",c[i],i}}' | sort
find . -type f | xargs dirname | awk '{c[$0]++}END{for(i in c){printf"%4d %s\n",c[i],i}}' | sort
266デフォルトの名無しさん
2019/07/15(月) 08:12:50.57ID:jP+0UVPX どうせなら計測結果も付記してくれよ
267デフォルトの名無しさん
2019/07/15(月) 10:56:15.79ID:Ww8nr7y5 やってることが同じなら、Perlとawkは比較するまでもないのでは?
268デフォルトの名無しさん
2019/07/15(月) 12:22:56.47ID:E9YINa1F 数分で書けるのがシェルスクリプトの良いところなんだし
数百万のファイルを何分以内で処理せよとか性能要件があるなら
そもそもシェルスクリプトなんかで書かないわ
数百万のファイルを何分以内で処理せよとか性能要件があるなら
そもそもシェルスクリプトなんかで書かないわ
269デフォルトの名無しさん
2019/07/15(月) 15:08:49.68ID:3UWFYY1V 高速化するならC言語使うな。
270デフォルトの名無しさん
2019/07/15(月) 16:42:34.21ID:jP+0UVPX なんかシェルスクリプトを貶す人間ってシェルスクリプトを本来の目的とは違う方法で使った結果失敗して
その恨みを自分の無能さではなくシェルスクリプトにぶつけてる印象。
その恨みを自分の無能さではなくシェルスクリプトにぶつけてる印象。
271デフォルトの名無しさん
2019/07/15(月) 16:46:57.72ID:tvlJQJn9 このパーツは意外と頻度多いからCで書いておいてもいいかもね
| perl -ne '$dirs{$_} += 1; END{for $key (sort keys %dirs) {printf "%5s %s", $dirs{$key}, $key } }'
| perl -ne '$dirs{$_} += 1; END{for $key (sort keys %dirs) {printf "%5s %s", $dirs{$key}, $key } }'
272デフォルトの名無しさん
2019/07/15(月) 19:25:46.44ID:jP+0UVPX 端末の応答(例えば$ printf '\e]11;?\e\\'で返ってくる\e]11;rgb:〈赤〉/〈緑〉/〈青〉\e\\っていう文字列)を
sedやらなにやらで加工できるように標準出力に流したいんだど
そのままの状態だと端末そのものに文字列が渡ってしまって加工できない。
$ printf '\e]11;?\e\\' | od
みたいにすると(当然だけど)\e]11;?\e\\という文字列がパイプを通ってしまう。
個人的にはsttyとかをうまくやりくりしたらいけそうな気もするのだけど
そういう文書や記事がないのと俺があまり端末の処理に詳しくないのとで今のところ成功していない。
端末応答を標準出力として処理できる方法知らないですかね。
sedやらなにやらで加工できるように標準出力に流したいんだど
そのままの状態だと端末そのものに文字列が渡ってしまって加工できない。
$ printf '\e]11;?\e\\' | od
みたいにすると(当然だけど)\e]11;?\e\\という文字列がパイプを通ってしまう。
個人的にはsttyとかをうまくやりくりしたらいけそうな気もするのだけど
そういう文書や記事がないのと俺があまり端末の処理に詳しくないのとで今のところ成功していない。
端末応答を標準出力として処理できる方法知らないですかね。
273デフォルトの名無しさん
2019/07/15(月) 19:47:51.35ID:iDG/5azN >>272
色というものが何者かわかってないんじゃね?
色を付けるためのエスケープシーケンスっていうのは、
エスケープ文字、ASCIIコード表でESC(0x1B)の文字8進数だと033
ESC文字から始まる一連の文字列の流れ(シーケンス)ってだけだよ
だから0x1Bで始まるその文字列を加工すりゃ良い。
\e]11;の ]11;は単なる文字だけど、\eは(シェルによりけりだが)
0x1Bの文字に置き換わる。だからsedなんかで\eを見つけようとしてもだめ
そんな文字列は流れてこないんだから
色というものが何者かわかってないんじゃね?
色を付けるためのエスケープシーケンスっていうのは、
エスケープ文字、ASCIIコード表でESC(0x1B)の文字8進数だと033
ESC文字から始まる一連の文字列の流れ(シーケンス)ってだけだよ
だから0x1Bで始まるその文字列を加工すりゃ良い。
\e]11;の ]11;は単なる文字だけど、\eは(シェルによりけりだが)
0x1Bの文字に置き換わる。だからsedなんかで\eを見つけようとしてもだめ
そんな文字列は流れてこないんだから
274デフォルトの名無しさん
2019/07/15(月) 19:59:18.87ID:jP+0UVPX >>273
あー。いやそうじゃなくて 端末の応答を取得したいんよ。
試しに
$ printf '\e]11;?\e\\'
ってやってみて。多分端末の上に
^[]11;rgb:0c0c/0c0c/0c0c^[\
みたいな文字列が表われる。
この文字列をtestコマンドの対象にしたりしたい。
でも普通の方法ではこの文字列は標準出力ではなく端末の上に直接出力されてるから
そういう加工ができない。
あー。いやそうじゃなくて 端末の応答を取得したいんよ。
試しに
$ printf '\e]11;?\e\\'
ってやってみて。多分端末の上に
^[]11;rgb:0c0c/0c0c/0c0c^[\
みたいな文字列が表われる。
この文字列をtestコマンドの対象にしたりしたい。
でも普通の方法ではこの文字列は標準出力ではなく端末の上に直接出力されてるから
そういう加工ができない。
275デフォルトの名無しさん
2019/07/15(月) 20:00:57.13ID:iDG/5azN >>274
話の内容を単純化しよう。
文字の内容は今どうでもいい話だろ?
printf 'hogehoge' ってやってみたら
端末の上に、hogehoge って表示されるな?
それでこの文字列をどうしたいって?
話の内容を単純化しよう。
文字の内容は今どうでもいい話だろ?
printf 'hogehoge' ってやってみたら
端末の上に、hogehoge って表示されるな?
それでこの文字列をどうしたいって?
276デフォルトの名無しさん
2019/07/15(月) 20:20:16.67ID:f1G4msuO わかってない奴が話に絡んでいくなよ
文字列なんか関係ない
奴はttyの出力(もしくは入力)を横取りしてパスワードを盗みたいという話をしてる
文字列なんか関係ない
奴はttyの出力(もしくは入力)を横取りしてパスワードを盗みたいという話をしてる
277デフォルトの名無しさん
2019/07/15(月) 20:21:36.85ID:iDG/5azN $ printf '\e]11;?\e\\' の話だろ?
278デフォルトの名無しさん
2019/07/15(月) 21:13:36.27ID:f1G4msuO ぜんぜん違う
279デフォルトの名無しさん
2019/07/15(月) 21:15:41.25ID:iDG/5azN280デフォルトの名無しさん
2019/07/15(月) 21:21:51.85ID:qldwvqW5281デフォルトの名無しさん
2019/07/15(月) 21:35:01.81ID:f1G4msuO282デフォルトの名無しさん
2019/07/15(月) 21:42:13.41ID:qldwvqW5 >>274
そういうのが出る Terminalアプリ もあるし出ないのもある
Terminalアプリが出しているんでしょ、その エスケープシーケンスを Terminalの画面制御 のために
Terminalアプリの作りによるんじゃないかなあ、また、Terminalアプリで何か提供してなきゃダメなんじゃないかなあ
>281
そもそもは出力をだから出力で入力をは無理だな。エコーバックは今時はローカルではしてないんじゃね、パスワードを生で表示だろしw
そういうのが出る Terminalアプリ もあるし出ないのもある
Terminalアプリが出しているんでしょ、その エスケープシーケンスを Terminalの画面制御 のために
Terminalアプリの作りによるんじゃないかなあ、また、Terminalアプリで何か提供してなきゃダメなんじゃないかなあ
>281
そもそもは出力をだから出力で入力をは無理だな。エコーバックは今時はローカルではしてないんじゃね、パスワードを生で表示だろしw
283デフォルトの名無しさん
2019/07/15(月) 22:20:41.82ID:qldwvqW5 なんのエスケープシーケンスなのか知らずにだったが、OSC Operating System Commandつうのね。で、制御ではなくてリポート(情報)なのね
Teminalアプリは、それを相手(シェルプログラム)への入力として出力しているのでできそうか
Teminalアプリは、それを相手(シェルプログラム)への入力として出力しているのでできそうか
284デフォルトの名無しさん
2019/07/15(月) 22:24:08.87ID:EBIcrGzb ls結果をテキストエディタで開いた時[0mだらけで焦った思い出
ANSIカラーコードって正規表現で消せるのかしら
ANSIカラーコードって正規表現で消せるのかしら
285デフォルトの名無しさん
2019/07/15(月) 22:38:58.41ID:tvlJQJn9286デフォルトの名無しさん
2019/07/15(月) 22:54:17.82ID:qldwvqW5 >>274
#!/bin/bash
result=''
printf '\e]11;?\e\\'
while read -s -N 1 -t 0.2 char
do
result="$result$char"
done
printf "%s" "$result" > hoge
試行錯誤中だけど、こんなんで取れてる
#!/bin/bash
result=''
printf '\e]11;?\e\\'
while read -s -N 1 -t 0.2 char
do
result="$result$char"
done
printf "%s" "$result" > hoge
試行錯誤中だけど、こんなんで取れてる
287デフォルトの名無しさん
2019/07/15(月) 22:55:24.82ID:jP+0UVPX >>275
その文字列はパイプで処理できるじゃん。
例えば
$ printf 'hogehoge' | sed -e 's/hoge/fuga/'
でも端末応答の文字列はそういう処理ができないのよ。
試してみると分かる。
その文字列はパイプで処理できるじゃん。
例えば
$ printf 'hogehoge' | sed -e 's/hoge/fuga/'
でも端末応答の文字列はそういう処理ができないのよ。
試してみると分かる。
288デフォルトの名無しさん
2019/07/15(月) 22:59:10.56ID:jP+0UVPX289デフォルトの名無しさん
2019/07/16(火) 01:24:24.20ID:b8YViJ87 こんな感じかなぁ
$ stty -echo;printf '\e]11;?\e\\'; IFS=';' read -r -d '\' _ bgcolor;stty echo
$ echo $bgcolor
rgb:3232/3232/3232
$ stty -echo;printf '\e]11;?\e\\'; IFS=';' read -r -d '\' _ bgcolor;stty echo
$ echo $bgcolor
rgb:3232/3232/3232
290デフォルトの名無しさん
2019/07/16(火) 01:27:52.36ID:b8YViJ87 あ、尻尾に ESC(0x1b) が付いてるから適当に削ってちょ
291デフォルトの名無しさん
2019/07/16(火) 02:07:13.54ID:6ZdisLnD292デフォルトの名無しさん
2019/07/16(火) 16:37:09.91ID:6ZdisLnD シェルスクリプトでラムダ計算を実装するとしたらどんなインターフェースがいいんだろう。
lambda -x @ 'echo @ | tr "[A-Z]" "[a-z]"'
でもこれだとこの後に適用したい変数を持って来たときにlambdaコマンドの引数と見分けがつかなくなる…。
lambda -x @ 'echo @ | tr "[A-Z]" "[a-z]"'
でもこれだとこの後に適用したい変数を持って来たときにlambdaコマンドの引数と見分けがつかなくなる…。
293デフォルトの名無しさん
2019/07/16(火) 16:40:13.19ID:cpfSTA9t パイプつなげるのが普通だから
xargs とか
なんか {} みたいなのでこれまでのパイプの流れてきたのを表現する
コマンドがあったからそれでいいんじゃないか?
xargs とか
なんか {} みたいなのでこれまでのパイプの流れてきたのを表現する
コマンドがあったからそれでいいんじゃないか?
294デフォルトの名無しさん
2019/07/16(火) 16:55:42.40ID:zaQ9s3Gk >>292
何が問題なのかわからんけど、
1. ラムダ計算だとしてlambdaコマンドに引数なんているの?
2. 'echo なんたら' の前がlambdaコマンド引数、後ろがechoの引数でいいだろ?
3. 'echo なんたら' で区切れない場合、-- で区切るのがよくある実装方法
って言っておくよ
何が問題なのかわからんけど、
1. ラムダ計算だとしてlambdaコマンドに引数なんているの?
2. 'echo なんたら' の前がlambdaコマンド引数、後ろがechoの引数でいいだろ?
3. 'echo なんたら' で区切れない場合、-- で区切るのがよくある実装方法
って言っておくよ
295デフォルトの名無しさん
2019/07/16(火) 17:34:51.11ID:6ZdisLnD >>293
そうそう。xargsみたいなのを妄想してるw
そうそう。xargsみたいなのを妄想してるw
296デフォルトの名無しさん
2019/07/16(火) 19:39:35.56ID:6ZdisLnD >>294
例えばPython3のラムダ計算だと
(lambda x: x * x)(3)
みたいな形式じゃん。
キーワードlambdaをコマンド
変数宣言x:を、どんな変数を扱うかというオプション
(xargsで言う-I)
演算本体のx * xは被演算子
としてみた。
例えばPython3のラムダ計算だと
(lambda x: x * x)(3)
みたいな形式じゃん。
キーワードlambdaをコマンド
変数宣言x:を、どんな変数を扱うかというオプション
(xargsで言う-I)
演算本体のx * xは被演算子
としてみた。
297デフォルトの名無しさん
2019/07/17(水) 23:26:41.26ID:ySrAQEz0 このラムダ計算は偽物だ。食べられないよ。
また明日来てください。僕が本当のラムダ計算をお見せしますよ。
また明日来てください。僕が本当のラムダ計算をお見せしますよ。
298デフォルトの名無しさん
2019/07/17(水) 23:47:22.37ID:ycSiezB+ このラムダは食べられないよ。ラムダこりゃ〜
299デフォルトの名無しさん
2019/07/17(水) 23:56:54.05ID:Lq1+nMLH >>297
楽しみにしております ^ ^;
楽しみにしております ^ ^;
300デフォルトの名無しさん
2019/07/18(木) 11:57:22.02ID:BkvY1rKv >>297
本物のラムダ計算はよ。
本物のラムダ計算はよ。
301デフォルトの名無しさん
2019/07/18(木) 11:58:54.05ID:832IkKkF いくら待ってもムラダ。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★12 [蚤の市★]
- 女性天皇「賛成」69%、将来の皇位継承「不安」68%…読売世論調査 [蚤の市★]
- 不倫疑惑の永野芽郁さん、CM削除ドミノの違約金“やはり発生は免れない”可能性 約10億円になる見込み、本人は全額支払う覚悟 [牛丼★]
- 旧姓使用拡大に連合会長が反発 「何の説明もない。選択的夫婦別氏制度導入を」 男女共同参画会議 ★2 [ぐれ★]
- 開業4ヵ月でこれは…“国民の税金”投入の『ジャングリア沖縄』で見た衝撃的な光景と、モチベーションが低い一部スタッフの現状 ★2 [ぐれ★]
- 【芸能】『女芸人No.1決定戦THE W』 粗品が最後にバッサリ「優勝賞金1000万円にしてはレベル低い大会」 [冬月記者★]
- 【悲報】中学受験、意味がなかった…「中学受験をやっても大部分の子供は無勉で入れるMARCH地方国立大に行くのが精一杯です [483447288]
- ジムでインターバルの時にウロウロ歩くやつなんなの?
- レイプはとっても気持ちがいい
- 【悲報】ドイツ人「なんで日本人って自炊するの?出来合の惣菜や冷食食った方が楽でコスパいいやん。そんなんだから低生産性なんだよ [786648259]
- 大阪行くわよーーーッ!!!
- 近所の騒音おじさんが俺にだけ優しくしてくる
