シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。
・「POSIX原理主義」「ユニケージ」「USP研究所」はPOSIXとUnixを曲解し
間違ったシェルスクリプトを広めている宗教です。洗脳されないようにしてください。
前スレ: シェルスクリプト総合 その36
https://mevius.5ch.net/test/read.cgi/tech/1614212414/
関連スレ
・【Bash】Windows Subsystem for Linux【WSL】11
https://mao.5ch.net/test/read.cgi/linux/1627507889/
・Bashでプログラミング [転載禁止](c)2ch.net
https://mao.5ch.net/test/read.cgi/linux/1443885102/
・シェルスクリプト総合 その28
https://mevius.5ch.net/test/read.cgi/unix/1533154936/
・zsh その7
https://mevius.5ch.net/test/read.cgi/unix/1337844883/
・過去UNIXで使われていた ksh というシェルについて
https://mevius.5ch.net/test/read.cgi/unix/1582358403/
・【POSIX】UNIXプログラミング【BSD】 [転載禁止](c)2ch.net
https://mevius.5ch.net/test/read.cgi/unix/1443103705/
・おまえら! shell は何を使っているんですか?
https://mevius.5ch.net/test/read.cgi/unix/1012330865/
探検
シェルスクリプト総合 その37
■ このスレッドは過去ログ倉庫に格納されています
2021/10/05(火) 22:49:30.91ID:KsbWuyFp
641637
2022/02/04(金) 17:49:45.92ID:mKMsSnzj Unity は、UnityYAML と呼ばれる、独自に最適化された、YAML ライブラリを使用します。
UnityYAML ライブラリは、完全な YAML 仕様をサポートしません
--- で始まる行を、--- に置換すると、Ruby のYAMLでも動いた
require 'yaml'
# 行末の改行を削除して、1行ずつ処理する。accum は蓄積変数
input_yaml = File.foreach( "ServerCameraSpot.prefab", chomp: true ).with_object( String.new( ) ) do |line, accum|
line = "---" if line.start_with?( "---" )
accum.concat( line, "\n" )
end
docs = YAML.load_stream( input_yaml ) # 複数文書
p docs.dig( 1, "GameObject", "m_Name" ) #=> "ServerCameraSpot"
UnityYAML ライブラリは、完全な YAML 仕様をサポートしません
--- で始まる行を、--- に置換すると、Ruby のYAMLでも動いた
require 'yaml'
# 行末の改行を削除して、1行ずつ処理する。accum は蓄積変数
input_yaml = File.foreach( "ServerCameraSpot.prefab", chomp: true ).with_object( String.new( ) ) do |line, accum|
line = "---" if line.start_with?( "---" )
accum.concat( line, "\n" )
end
docs = YAML.load_stream( input_yaml ) # 複数文書
p docs.dig( 1, "GameObject", "m_Name" ) #=> "ServerCameraSpot"
642637
2022/02/05(土) 12:59:45.97ID:Wxa6LWM/ >>641
の最後の行を、コメントにして、
# p docs.dig( 1, "GameObject", "m_Name" ) #=> "ServerCameraSpot"
その後ろに、下の2行を付け加えると、内容を変更して出力できる。
docs[ 3 ][ "MonoBehaviour" ][ "m_Name" ] = "あいう" # 変更
puts YAML.dump_stream( *docs ) # 複数文書
ただし最初の、% で始まる、2行のディレクティブが出力されない。
それと、複数文書の区切りが、--- となる
--- !u!1001 &100100000
みたいな、Unity の型を、Ruby では解釈できない
UnityのYAMLは正規形じゃないから、普通のパーサーで解釈するのは、骨が折れる
の最後の行を、コメントにして、
# p docs.dig( 1, "GameObject", "m_Name" ) #=> "ServerCameraSpot"
その後ろに、下の2行を付け加えると、内容を変更して出力できる。
docs[ 3 ][ "MonoBehaviour" ][ "m_Name" ] = "あいう" # 変更
puts YAML.dump_stream( *docs ) # 複数文書
ただし最初の、% で始まる、2行のディレクティブが出力されない。
それと、複数文書の区切りが、--- となる
--- !u!1001 &100100000
みたいな、Unity の型を、Ruby では解釈できない
UnityのYAMLは正規形じゃないから、普通のパーサーで解釈するのは、骨が折れる
643デフォルトの名無しさん
2022/03/01(火) 06:59:09.07ID:/KEw0dOm timeコマンドみたいな感じで、あるプロセスとその子プロセスが読み書きした
ファイルのデータ量を簡単に調べる方法ないですかね?
Linux板に書き込めなかったのでここで
ファイルのデータ量を簡単に調べる方法ないですかね?
Linux板に書き込めなかったのでここで
644デフォルトの名無しさん
2022/03/01(火) 07:24:58.47ID:2BqTSfQO 俺が知らないだけかもしれんが、コマンドとしてはないんじゃないかな?
mmapのメモリコピーによる書き出しの捕捉はカーネル空間じゃないと無理だろうし
比較的簡易的なのはstraceだけど、mmapのは漏らす
面倒なのでstapとか思いつく
mmapのメモリコピーによる書き出しの捕捉はカーネル空間じゃないと無理だろうし
比較的簡易的なのはstraceだけど、mmapのは漏らす
面倒なのでstapとか思いつく
645デフォルトの名無しさん
2022/03/01(火) 07:49:43.09ID:/KEw0dOm でもiostatとかで書き込み量わかるじゃん?
646デフォルトの名無しさん
2022/03/01(火) 07:49:59.81ID:/KEw0dOm リアルタイムなら
647デフォルトの名無しさん
2022/03/01(火) 21:44:05.39ID:84NGcGuL Linux 板は、荒らし退治がすごい
もう何か月も書けない。まだ、何年も続きそう
もう何か月も書けない。まだ、何年も続きそう
648デフォルトの名無しさん
2022/03/01(火) 21:55:02.49ID:84NGcGuL 「linux メモリ使用量 プロセス 監視」などで、検索すれば?
Zabbix などに、そういう項目は無いのか?
Zabbix などに、そういう項目は無いのか?
649デフォルトの名無しさん
2022/03/02(水) 06:37:00.21ID:ZAk/CGpZ >>648
そのコマンドって一瞬で実行が終わるんですよね
そのコマンドって一瞬で実行が終わるんですよね
650デフォルトの名無しさん
2022/03/04(金) 16:44:51.36ID:ooZxW1Kt >>645
/proc/$pid/io は?
/proc/$pid/io は?
651デフォルトの名無しさん
2022/03/23(水) 04:36:10.53ID:SaPfQQES ちんちんシュッ!シュッ!シュッ!
652デフォルトの名無しさん
2022/03/23(水) 12:28:20.41ID:ETZJHb21 sh!sh!
653デフォルトの名無しさん
2022/03/25(金) 23:16:30.56ID:ztMhdJXY 久しぶりにこのスレ来たけどPOSIX云々言ってた人消えたんだな
一気に過疎ったな
一気に過疎ったな
654デフォルトの名無しさん
2022/03/25(金) 23:41:47.44ID:gyoQnKSX そりゃま過疎らせるためにやってたんだし
655デフォルトの名無しさん
2022/03/26(土) 00:16:03.42ID:zwuOpZDB perlジジイとかワンライナー大嫌いマンとか
656デフォルトの名無しさん
2022/03/26(土) 04:10:35.39ID:fJwm7Jgq 一時期は数ヶ月で1スレ消火するぐらいの勢いがあったのに。つわものどもが夢の跡
657デフォルトの名無しさん
2022/03/29(火) 02:20:12.64ID:6KgrCIX2 今度はTwitterで騒いでるよw
658デフォルトの名無しさん
2022/03/29(火) 09:16:04.55ID:3XcWZYBt 見てきたけど酷いな。よくシェルショッカーなんて相手にするよ
リッチー大佐も冷静を装ってるが完全に脅迫になってるのわかってないのかな
リッチー大佐も冷静を装ってるが完全に脅迫になってるのわかってないのかな
659デフォルトの名無しさん
2022/04/05(火) 14:11:34.15ID:dKCEu0lS BourneがALGOL策定に関わってたからfiとかesacになった、odは名前被りで免れたという小噺は聞いたことあったが、ここまで染まりきってたとは思わなかった
さすがにソース内までは免れきってない、あとPOOLってなんだよ…
https://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/cmd/sh/mac.h
さすがにソース内までは免れきってない、あとPOOLってなんだよ…
https://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/cmd/sh/mac.h
660デフォルトの名無しさん
2022/04/05(火) 15:31:19.76ID:0XOZrJsf 昔は、マクロでCを他の言語っぽく書けるようにする、つー流派?があったからなあ。w
begin/endを定義してPascalっぽくとか。
begin/endを定義してPascalっぽくとか。
661デフォルトの名無しさん
2022/04/05(火) 23:33:41.59ID:evtsrebn662デフォルトの名無しさん
2022/04/05(火) 23:34:11.57ID:evtsrebn >>660
COBOLっぽくしてるのを見たことがあるな
COBOLっぽくしてるのを見たことがあるな
663デフォルトの名無しさん
2022/04/06(水) 16:06:26.14ID:S7CGIPqQ doが対称性を崩してるよな
キーワード …; do
…
done
FOR-ROF
LOOP-POOL
WHILE-ELIHW
美しい対称性
キーワード …; do
…
done
FOR-ROF
LOOP-POOL
WHILE-ELIHW
美しい対称性
664デフォルトの名無しさん
2022/04/07(木) 16:39:39.21ID:pi20fczf xargs コマンドの -P オプションに、3時間ぐらい前に気付いた。
665デフォルトの名無しさん
2022/04/11(月) 13:29:24.85ID:KjtEvxV7 >>659
#define POOL }
これやったことあるわ…
cの式とbrainf**kの命令は一対一対応してるので、main()内にそのまま展開すればbfトランスパイラになる
これそのままで動く
https://en.m.wikipedia.org/wiki/Brainfuck
brainfuck command C equivalent
(Program Start) char array[30000] = {0}; char *ptr = array;
> ++ptr;
< --ptr;
+ ++*ptr;
- --*ptr;
. putchar(*ptr);
, *ptr = getchar();
[ while (*ptr) {
] }
大体合法なCトークンじゃないので、一度BRAに置き換えてsedで置換する必要はあったけど
#define POOL }
これやったことあるわ…
cの式とbrainf**kの命令は一対一対応してるので、main()内にそのまま展開すればbfトランスパイラになる
これそのままで動く
https://en.m.wikipedia.org/wiki/Brainfuck
brainfuck command C equivalent
(Program Start) char array[30000] = {0}; char *ptr = array;
> ++ptr;
< --ptr;
+ ++*ptr;
- --*ptr;
. putchar(*ptr);
, *ptr = getchar();
[ while (*ptr) {
] }
大体合法なCトークンじゃないので、一度BRAに置き換えてsedで置換する必要はあったけど
666デフォルトの名無しさん
2022/04/15(金) 15:18:31.03ID:LoHMCFtw bashの
[[ -a ${TMP_FILE} ]] && rm -f ${TMP_FILE}
って-aとか[[ ]] &&とかそれぞれどういう意味なの?
TMP_FILEがあったら消すってことなんだろうけど
[[ -a ${TMP_FILE} ]] && rm -f ${TMP_FILE}
って-aとか[[ ]] &&とかそれぞれどういう意味なの?
TMP_FILEがあったら消すってことなんだろうけど
667デフォルトの名無しさん
2022/04/15(金) 16:01:54.46ID:hbtBlxLh -aはファイルが存在すれば真になるという古い書き方
ANDの意味の-aと間違いやすいから-eを使え
&&は普通にANDだろ
ANDの意味の-aと間違いやすいから-eを使え
&&は普通にANDだろ
668デフォルトの名無しさん
2022/04/15(金) 16:05:53.77ID:LoHMCFtw >>667
古い書き方なのねandの-aと紛らわしいな
古い書き方なのねandの-aと紛らわしいな
669デフォルトの名無しさん
2022/04/15(金) 19:25:44.34ID:b3yZs9Hw man bash
670デフォルトの名無しさん
2022/04/16(土) 09:12:23.33ID:AbnHWb9H 短絡評価。真、偽の順で表示される
and の場合は、左辺が偽なら、右辺を評価せずに、偽が確定する。
or の場合は、左辺が真なら、右辺を評価せずに、真が確定する
[ a = a ] && echo 真
[ a = b ] && echo 表示されない
[ a = a ] || echo 表示されない
[ a = b ] || echo 偽
and の場合は、左辺が偽なら、右辺を評価せずに、偽が確定する。
or の場合は、左辺が真なら、右辺を評価せずに、真が確定する
[ a = a ] && echo 真
[ a = b ] && echo 表示されない
[ a = a ] || echo 表示されない
[ a = b ] || echo 偽
671デフォルトの名無しさん
2022/04/18(月) 16:18:56.11ID:GGXXVNot bashは構文を拡張しすぎたせいで、変なのを書くやつが増産されてしまった。
672デフォルトの名無しさん
2022/04/18(月) 16:20:19.34ID:GGXXVNot >>668
[]がコマンドであることを認識した方がいい
[]がコマンドであることを認識した方がいい
673デフォルトの名無しさん
2022/04/18(月) 17:06:06.95ID:CQwGdbgT >>671
変なのって?
変なのって?
674デフォルトの名無しさん
2022/04/18(月) 18:56:00.27ID:IfcMEIPj >>672
testコマンドってこと?
testコマンドってこと?
675デフォルトの名無しさん
2022/04/20(水) 11:54:29.01ID:e4Ywa9g+ 昔は [ が test にシンボリックリンクされていたものぢゃ
676デフォルトの名無しさん
2022/04/20(水) 17:00:20.67ID:SrakFfBy ファイルの先頭と末尾だけを表示させたくて
$ (head;tail) < tmp
みたいなことをしててふとハマったんだけど、
$ for i in {00..60};do echo "22-04-20 00:$i"; done > tmp
$ (head;tail) < <(grep 22-04-20 tmp)
だと head 分しか表示されなかった
多分シグナルとかの関係だろう、と思ってるんだけどイケてる回避策ってあるかな?
まあなければ愚直にファイルに書き出すだけなんだけども
$ (head;tail) < tmp
みたいなことをしててふとハマったんだけど、
$ for i in {00..60};do echo "22-04-20 00:$i"; done > tmp
$ (head;tail) < <(grep 22-04-20 tmp)
だと head 分しか表示されなかった
多分シグナルとかの関係だろう、と思ってるんだけどイケてる回避策ってあるかな?
まあなければ愚直にファイルに書き出すだけなんだけども
677デフォルトの名無しさん
2022/04/20(水) 17:17:12.72ID:65nfU3ze たぶんheadが複数行まとめて読み込んで行数とか判断してるんだと思う
回避策はないかな
stdinから読み込む挙動を変えるオプションも無さそうだし
回避策はないかな
stdinから読み込む挙動を変えるオプションも無さそうだし
678デフォルトの名無しさん
2022/04/20(水) 18:43:04.89ID:z0poUMkB (sed -u 10q;tail) < <(grep 22-04-20 tmp)
679デフォルトの名無しさん
2022/04/21(木) 12:40:10.24ID:yp5x7VDG せやったら全部Sedだけでええやろ!w
と思ったけど、なるほど、むつかしいんやな。。。
末尾複数行を簡単につまめないんやった。
$(($(wc ...)-N))を埋め込んだらできるけど、それもなー。
と思ったけど、なるほど、むつかしいんやな。。。
末尾複数行を簡単につまめないんやった。
$(($(wc ...)-N))を埋め込んだらできるけど、それもなー。
680デフォルトの名無しさん
2022/04/21(木) 12:49:57.95ID:zIIL/8l3 どうでもいいけど22-04-20 00:60ってなによ
681デフォルトの名無しさん
2022/04/21(木) 13:00:42.66ID:kU09vtpu そりゃまあ20年4月22日のことやろ
682デフォルトの名無しさん
2022/04/21(木) 14:22:25.48ID:zIIL/8l3 年月日ではなく時分のところ
683デフォルトの名無しさん
2022/04/21(木) 17:47:43.38ID:ADsYJBoB684デフォルトの名無しさん
2022/04/21(木) 21:22:45.77ID:+ZjRtsOn readでcsvのヘッダを読んで、本体だけが次のパイプに渡って処理され、最後にcatで再結合する技は見たことある
つまり、head じゃなくて10行readならいけるんでないか?
つまり、head じゃなくて10行readならいけるんでないか?
685デフォルトの名無しさん
2022/04/21(木) 21:39:19.32ID:KpiRnbrU686684
2022/04/21(木) 22:14:40.59ID:+ZjRtsOn >>685
検索力に惚れるわ
俺は過去ログ取得に不快な広告見せられたのでコピペっておく
231 名無しさん@お腹いっぱい。 sage 2017/06/14(水) 11:09:43.34 .net
head -1 じゃなくて read を使ってこんな事をしてたり
df -h | { read h; echo "$h"; sort -k5,5gr; }
そうそうこんなん書いてたわ、例の通りdf -hやtsv/csvのヘッダ一時退避に重宝するイディオム
しかし-nは覚えてるけど行数オプションとかあったかな?
whileで包んで10回数えるのも多分行けるとは思うが、まあ最悪
read line; read line;…
なら通るでしょう()
検索力に惚れるわ
俺は過去ログ取得に不快な広告見せられたのでコピペっておく
231 名無しさん@お腹いっぱい。 sage 2017/06/14(水) 11:09:43.34 .net
head -1 じゃなくて read を使ってこんな事をしてたり
df -h | { read h; echo "$h"; sort -k5,5gr; }
そうそうこんなん書いてたわ、例の通りdf -hやtsv/csvのヘッダ一時退避に重宝するイディオム
しかし-nは覚えてるけど行数オプションとかあったかな?
whileで包んで10回数えるのも多分行けるとは思うが、まあ最悪
read line; read line;…
なら通るでしょう()
687デフォルトの名無しさん
2022/04/21(木) 22:29:49.14ID:Q2Q995JA { for _ in {1..10};do read l; echo "$l"; done; tail; } < <(grep 22-04-20 tmp)
688デフォルトの名無しさん
2022/04/21(木) 22:37:33.49ID:Q2Q995JA grep 22-04-20 tmp | tee >(head) >(tail) >/dev/null
689デフォルトの名無しさん
2022/04/22(金) 01:40:46.85ID:p9VEf+/q lsの日時の書式をyyyy/mm/dd hh:mm:ss固定にしたいのですがどっかに設定あるんでしょうか
690デフォルトの名無しさん
2022/04/22(金) 02:32:55.95ID:SxzvmxoM >>688
これ動くような気もするけど、エッジケースの詰め合わせみたいで関心するわ…ぜひ明日試したい
teeはプロセス置換への分配を均等に進めるのか?
head/tail でなければ入力も出力も数ブロックのバッファ単位で入り交じるはずだけど、バッファ単位に収まる10行のhead/tailの出力は一塊で吐かれるはず、つまりhead→tail/tail->headのいずれか
先頭だけ舐めるheadの方がtailより先に処理を終えるからhead->tail、の出力になるのだろうか?
これ動くような気もするけど、エッジケースの詰め合わせみたいで関心するわ…ぜひ明日試したい
teeはプロセス置換への分配を均等に進めるのか?
head/tail でなければ入力も出力も数ブロックのバッファ単位で入り交じるはずだけど、バッファ単位に収まる10行のhead/tailの出力は一塊で吐かれるはず、つまりhead→tail/tail->headのいずれか
先頭だけ舐めるheadの方がtailより先に処理を終えるからhead->tail、の出力になるのだろうか?
691デフォルトの名無しさん
2022/04/22(金) 02:54:12.16ID:AtJxm6z2 tee, head, tailの実装とバッファリングモード、入力データの素性の全てに依存してそうなヤバさ
692デフォルトの名無しさん
2022/04/22(金) 03:06:07.22ID:xNmupzsw とりあえず手元のandroidとかいう玩具で
GNU bash, version 5.1.8(1)-release (aarch64-unknown-linux-android)
$ seq 100 | tee >(head) >(tail) >/dev/null
91
92
93
94
95
96
97
98
99
100
1
2
3
4
5
6
7
8
9
10
GNU bash, version 5.1.8(1)-release (aarch64-unknown-linux-android)
$ seq 100 | tee >(head) >(tail) >/dev/null
91
92
93
94
95
96
97
98
99
100
1
2
3
4
5
6
7
8
9
10
693デフォルトの名無しさん
2022/04/22(金) 03:07:10.32ID:xNmupzsw あとコマンドはgnuの
694デフォルトの名無しさん
2022/04/22(金) 03:15:13.30ID:fjQN0Ax7 seq 100000にしたらheadが勝ったわw
695デフォルトの名無しさん
2022/04/22(金) 03:34:30.65ID:SxzvmxoM 入力が小さいときに限っては、teeも実質引数に一回渡したきりだからheadの速さも関係ないんだろうね
seqの引数を二分していけば均衡して、結果はランダムになりそう
seqの引数を二分していけば均衡して、結果はランダムになりそう
696デフォルトの名無しさん
2022/04/22(金) 05:38:09.18ID:rkPZZrpS awk -v N=10 '{ if (NR <= N) print $0; buf[NR % N] = $0 } END { for (i = (NR - N + 1 > N + 1 ? NR - N + 1 : N + 1); i <= NR; i++) print buf[i % N] }'
697デフォルトの名無しさん
2022/04/22(金) 09:43:04.69ID:9We3r0d8698デフォルトの名無しさん
2022/04/22(金) 11:42:06.75ID:bWbp9a44 seq 100 | pee head tail
peeでだめなん?
peeでだめなん?
699デフォルトの名無しさん
2022/04/22(金) 11:52:54.17ID:IqSZbuIe700デフォルトの名無しさん
2022/04/22(金) 12:15:37.42ID:IW9biBQV >>697
そもそもgrepが律速なんだから効率とか野暮だけど、あえて言うなら
元のファイルがダンプしてしまえるならストレージは食うが終端にシークしてしまうのが最速だし、ストリーム処理なら初めの10行プリントする自明な処理の後、10行のバッファを保持して終端が見えるまでひたすら読みまくるしかアルゴリズムはないわけで
それはsed N;N;...でもなんでもいいが、timeするまでもなく10行保持して読み捨て専用マシーンとしてガリガリチューンされてるtailを使うのが最速に決まっとるがな
そもそもgrepが律速なんだから効率とか野暮だけど、あえて言うなら
元のファイルがダンプしてしまえるならストレージは食うが終端にシークしてしまうのが最速だし、ストリーム処理なら初めの10行プリントする自明な処理の後、10行のバッファを保持して終端が見えるまでひたすら読みまくるしかアルゴリズムはないわけで
それはsed N;N;...でもなんでもいいが、timeするまでもなく10行保持して読み捨て専用マシーンとしてガリガリチューンされてるtailを使うのが最速に決まっとるがな
701デフォルトの名無しさん
2022/04/22(金) 12:22:41.13ID:IW9biBQV 変な流れになってるのは>>688という爆弾に完全に食われてしまったからな…
俺にも挙動が予測不能過ぎて興味が尽きない
俺にも挙動が予測不能過ぎて興味が尽きない
702デフォルトの名無しさん
2022/04/22(金) 12:37:37.28ID:QL3esWpR703デフォルトの名無しさん
2022/04/22(金) 12:45:37.78ID:SxzvmxoM 並スペックのx86-64Debian/bash5/coreutils環境で問題のを検証
>>692
うちではseq 100だとheadが勝った、なおheadとtailを交換しても同じ
10000(適当)でも大体同じ結果が出る、そもそも再現性あるの?と思って十回くらい再実行してたら
1 2 3 4 5 6 7 99991 9992 9993 9994 9995 9996 9997 9998 9999 10000 8 9 10
という入り交じるケースを発見したw
>>692
うちではseq 100だとheadが勝った、なおheadとtailを交換しても同じ
10000(適当)でも大体同じ結果が出る、そもそも再現性あるの?と思って十回くらい再実行してたら
1 2 3 4 5 6 7 99991 9992 9993 9994 9995 9996 9997 9998 9999 10000 8 9 10
という入り交じるケースを発見したw
704デフォルトの名無しさん
2022/04/22(金) 13:13:46.93ID:SxzvmxoM head or tailだけにコイントスってか(裏でも表でもないが)
https://i.imgur.com/uQBk3cx.jpg
https://i.imgur.com/uQBk3cx.jpg
705デフォルトの名無しさん
2022/04/22(金) 13:21:40.45ID:4sYij9Dr バックグラウンドの割り込み遅延やその時点での負荷が影響するだろうから、エントロピー源に出来るな
もっとも一様乱数に近付けるにはおま環固有の定数を探す必要はあるが
マウスグリグリで乱数吐く/dev/randomと原理的には同じもの
もっとも一様乱数に近付けるにはおま環固有の定数を探す必要はあるが
マウスグリグリで乱数吐く/dev/randomと原理的には同じもの
706デフォルトの名無しさん
2022/04/22(金) 13:48:09.59ID:MIuZAVWA そもそもteeから非同期に投げたプロセスが順序良く出力することを期待するのがおかしいわけで
何のコマンドでもいいが、それを暗喩する名前のheadとtailというチョイスがツボに嵌まって面白い
というか>>688は狙ってやってるだろ
pidやマウス座標とか拾って改善目指すとかは無粋
何のコマンドでもいいが、それを暗喩する名前のheadとtailというチョイスがツボに嵌まって面白い
というか>>688は狙ってやってるだろ
pidやマウス座標とか拾って改善目指すとかは無粋
707デフォルトの名無しさん
2022/04/22(金) 14:06:12.36ID:SxzvmxoM 字面とその挙動、足すことも引くことも躊躇われる簡潔さ
完成し尽くされてるよな
今スレのベストコマンド賞にノミネートしたい
完成し尽くされてるよな
今スレのベストコマンド賞にノミネートしたい
708デフォルトの名無しさん
2022/04/22(金) 14:37:33.47ID:E3Z2WeTR ユーモア部門なw
プロセス置換がposixで無いのだけが惜しいが、一番面白いワンライナーなのは間違いない
プロセス置換がposixで無いのだけが惜しいが、一番面白いワンライナーなのは間違いない
709デフォルトの名無しさん
2022/04/22(金) 17:37:52.50ID:QL3esWpR >>703
tailのほうにsleep 0.1でも入れとけば充分安定するな。
tailのほうにsleep 0.1でも入れとけば充分安定するな。
710デフォルトの名無しさん
2022/04/22(金) 17:51:31.59ID:XoRdeeG7 そこまでやるならもういっそ行番号振って最後にソートしろよ…
711デフォルトの名無しさん
2022/04/22(金) 17:55:41.86ID:Llc7G82k というか、気紛れさが可愛いという話なのに安定させてどうする
712デフォルトの名無しさん
2022/04/22(金) 19:07:59.33ID:t4x32peS もうとっくに解決してるので…
爆弾落としてった誰かが悪い
>>687でいいと思うが、あえて添削するとすれば、まずコマンド置換は不要
grep pat file | { for i in {1..10}; do read line; echo "$line"; done; tail; }
再利用したいならパラメトライズが面倒なブレース展開を避けるべき(パラメータ展開より先)
{1..10} -> $(seq $n)
もちろんwhileでカウントしてもいい、どちらの版も適当なファイルで取り敢えず動作確認済
爆弾落としてった誰かが悪い
>>687でいいと思うが、あえて添削するとすれば、まずコマンド置換は不要
grep pat file | { for i in {1..10}; do read line; echo "$line"; done; tail; }
再利用したいならパラメトライズが面倒なブレース展開を避けるべき(パラメータ展開より先)
{1..10} -> $(seq $n)
もちろんwhileでカウントしてもいい、どちらの版も適当なファイルで取り敢えず動作確認済
713デフォルトの名無しさん
2022/04/22(金) 19:10:33.14ID:t4x32peS まちがい
✗コマンド置換
↓
✔プロセス置換
です
✗コマンド置換
↓
✔プロセス置換
です
714デフォルトの名無しさん
2022/04/24(日) 09:09:54.95ID:tpsbRsIR 質問です
if [-z $cmwt ]の-zは何なん?
if [-z $cmwt ]の-zは何なん?
715デフォルトの名無しさん
2022/04/24(日) 09:26:53.94ID:R/F29R42 プーチン親衛隊
716デフォルトの名無しさん
2022/04/24(日) 10:21:41.54ID:TEfYtyVL $ man [
717デフォルトの名無しさん
2022/04/24(日) 10:30:43.78ID:tpsbRsIR718デフォルトの名無しさん
2022/04/24(日) 10:41:04.67ID:agfo7zfZ bash$ help test | grep -A1 -e '-z'
719デフォルトの名無しさん
2022/04/25(月) 23:07:17.30ID:OWEpx0GO720デフォルトの名無しさん
2022/04/26(火) 02:19:34.78ID:JTn9J471 UNIX シェルスクリプト・コマンドブック 第3版、山下哲典、2015
721デフォルトの名無しさん
2022/04/26(火) 09:41:05.59ID:abeO/U+d [ がコマンドで、ゆえに直後にスペースが必要
というのは初心者が見落としやすいところではある
というのは初心者が見落としやすいところではある
722デフォルトの名無しさん
2022/04/26(火) 12:36:05.16ID:60BzfgWB シェルスクリプトの基礎をすっとばして
いきなりコマンドの使いこなしから始めましょう
みたいなのは害悪だと思う
シェル芸から始めるんじゃなくて、シェルスクリプトを勉強すべき
いきなりコマンドの使いこなしから始めましょう
みたいなのは害悪だと思う
シェル芸から始めるんじゃなくて、シェルスクリプトを勉強すべき
723デフォルトの名無しさん
2022/04/26(火) 12:54:52.42ID:uKDaCZCW 言い出したら切りがないけどコンピューターの仕組みからやるべき
724デフォルトの名無しさん
2022/04/26(火) 14:33:11.23ID:QfJATbip もうシリコンの採掘からやれや!
725デフォルトの名無しさん
2022/04/26(火) 18:21:48.39ID:TDP9zkh+ 多結晶シリコンのインゴットは作ったことあるわ
726デフォルトの名無しさん
2022/04/26(火) 18:31:04.23ID:lyut1+Mp その辺の河原で拾った事ならあるな
727デフォルトの名無しさん
2022/04/26(火) 19:24:30.73ID:hbZUgTG0 金の採掘もやっとくか…
728デフォルトの名無しさん
2022/04/26(火) 19:31:31.14ID:9HhSqCwG 今年は天候不良で収穫量が少ないとか
729デフォルトの名無しさん
2022/04/26(火) 19:32:36.15ID:G+JzaZJD まずはマニュアルくらい一通り読まんとな
俺は座り無精なのでマニュアルだけ読んでマスターした気になってる言語の方が多いくらい()
俺は座り無精なのでマニュアルだけ読んでマスターした気になってる言語の方が多いくらい()
730デフォルトの名無しさん
2022/04/28(木) 23:43:17.98ID:a4NDWJu+ vimでshebangを自動で入力してくれる機能ありますか?
731デフォルトの名無しさん
2022/04/29(金) 00:29:58.42ID:lUnjMOza #!/usr/bin/env ruby
732デフォルトの名無しさん
2022/04/29(金) 00:34:04.74ID:gP3ffc3T スレ違いだと思うけどまあ一応
:autocmd BufNewFile *.sh [コマンド]
put='#! /path/to/sh'
多分dieとかgetoptとかtrap含めたテンプレを用意して日付とかファイル名とかお前の名前とか置換
r /path/to/tmpl.sh | s/__DATE__/\=strftime('%Y-%m-%d')/
未テスト
:autocmd BufNewFile *.sh [コマンド]
put='#! /path/to/sh'
多分dieとかgetoptとかtrap含めたテンプレを用意して日付とかファイル名とかお前の名前とか置換
r /path/to/tmpl.sh | s/__DATE__/\=strftime('%Y-%m-%d')/
未テスト
733デフォルトの名無しさん
2022/04/29(金) 00:49:51.62ID:iZ0Puaoh >>732
ありがとうございます、:autcmdですか
ありがとうございます、:autcmdですか
734デフォルトの名無しさん
2022/06/21(火) 19:32:07.61ID:0jGPid+s スペースを含む複数のファイル名を一括でリネームしたいんですが、上手い方法はありますか?
スペース無しならfind+sed+xargsで行けるのですが
スペース無しならfind+sed+xargsで行けるのですが
735デフォルトの名無しさん
2022/06/21(火) 20:31:37.09ID:q62JFBwI \x20で行けたりしないかな
736デフォルトの名無しさん
2022/06/21(火) 20:45:32.09ID:eKSiaONm findのオプションでprint0とかしたらいけないんだっけ?
737デフォルトの名無しさん
2022/06/21(火) 21:06:17.83ID:EjbRTWsP738デフォルトの名無しさん
2022/06/21(火) 21:13:42.89ID:EjbRTWsP それからあとはどんなリネームをしたいのかを書くこと
739デフォルトの名無しさん
2022/06/22(水) 19:28:36.54ID:EcTc17L7 Ruby で作ってみた
ファイル名に含まれる全ての半角空白を、アンダーバーへ変換する。
ただし、DryRun なので実際には変更されません。
ファイル名が変更された時に、既に同名のファイルが存在する場合は、エラーとする
require 'fileutils'
require 'set'
# 絶対パスのディレクトリ名の後ろに、* を付けること!
# . で始まる、隠し directory, file を除く
glob_pattern = "C:/Users/Owner/Documents/test/*"
target_dir = File.dirname( glob_pattern ) # ディレクトリパスだけを取り出す
# そのディレクトリ内の全てのファイル名だけを抜き出す
old_filenames = Dir.glob( glob_pattern ).map { |full_path| File.basename( full_path ) }
old_filenames_set = Set.new( old_filenames ) # エラー処理用に、set にも入れる
# ファイル名に含まれる全ての半角空白を、アンダーバーへ変換する
new_filenames = old_filenames.map do |filename|
new_fn = filename.tr( " ", "_" )
# ファイル名が変更された時に、既に同名のファイルが存在する場合は、エラー!
if new_fn != filename
raise "ファイル名 #{ filename } が重複します!" if old_filenames_set.include?( new_fn )
end
new_fn
end
次へ続く
ファイル名に含まれる全ての半角空白を、アンダーバーへ変換する。
ただし、DryRun なので実際には変更されません。
ファイル名が変更された時に、既に同名のファイルが存在する場合は、エラーとする
require 'fileutils'
require 'set'
# 絶対パスのディレクトリ名の後ろに、* を付けること!
# . で始まる、隠し directory, file を除く
glob_pattern = "C:/Users/Owner/Documents/test/*"
target_dir = File.dirname( glob_pattern ) # ディレクトリパスだけを取り出す
# そのディレクトリ内の全てのファイル名だけを抜き出す
old_filenames = Dir.glob( glob_pattern ).map { |full_path| File.basename( full_path ) }
old_filenames_set = Set.new( old_filenames ) # エラー処理用に、set にも入れる
# ファイル名に含まれる全ての半角空白を、アンダーバーへ変換する
new_filenames = old_filenames.map do |filename|
new_fn = filename.tr( " ", "_" )
# ファイル名が変更された時に、既に同名のファイルが存在する場合は、エラー!
if new_fn != filename
raise "ファイル名 #{ filename } が重複します!" if old_filenames_set.include?( new_fn )
end
new_fn
end
次へ続く
740739
2022/06/22(水) 19:29:18.14ID:EcTc17L7 前の続き
# ファイル名を変更する
old_filenames.zip( new_filenames ) do |old_filename, new_filename|
# 変換されなかったファイルは、処理しない
next if old_filename == new_filename
old_path = target_dir + "/" + old_filename
new_path = target_dir + "/" + new_filename
FileUtils::DryRun.move( old_path, new_path)
end
# ファイル名を変更する
old_filenames.zip( new_filenames ) do |old_filename, new_filename|
# 変換されなかったファイルは、処理しない
next if old_filename == new_filename
old_path = target_dir + "/" + old_filename
new_path = target_dir + "/" + new_filename
FileUtils::DryRun.move( old_path, new_path)
end
741デフォルトの名無しさん
2022/06/22(水) 21:31:19.80ID:r+zxbhox スペース含みの対処はレコード区切りを'\0'にすること
(普通だったら'\n'区切り)
find ... -print0 | sed -z 's/...//' | xargs -0 ...
renameが目的なら1レコードをsedで2レコードに分割して、
xargs -0 -n2 mv で受け取ることになるんじゃない?
パイプに流れてるものを見たけりゃxxdでも使えばいい
(普通だったら'\n'区切り)
find ... -print0 | sed -z 's/...//' | xargs -0 ...
renameが目的なら1レコードをsedで2レコードに分割して、
xargs -0 -n2 mv で受け取ることになるんじゃない?
パイプに流れてるものを見たけりゃxxdでも使えばいい
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【赤坂ライブハウス刺傷】逃走していた自衛官の男(43)を殺人未遂の疑いで逮捕 警視庁 被害女性とは知人関係 [Ailuropoda melanoleuca★]
- 【千葉】コンビニに尿入りペットボトル並べた疑い、26歳男「むしゃくしゃして」…購入した客が飲もうとしたところ臭いに違和感 [ぐれ★]
- 中国官製報道「日本経済はもう持たない」にネット民ツッコミ「ニュースだけ見てたら日本はもう百回くらい爆発してる」 [1ゲットロボ★]
- 「ふざけんな!」 国会議員給与、『月5万円増』報道にネット騒然 「国民が物価高で困っているのに」「定数削減とか言いながら…」★2 [♪♪♪★]
- 植田日銀総裁 「円安進行が物価高を起こしている」 ★4 [お断り★]
- 【硬貨】500円だと思ったら「500ウォンが入っていた」価値は約10分の1 全国で飲食店などで“500ウォントラブル”相次いで報告 [ぐれ★]
- 集英社「積丹・海田副議長のクマ駆除への介入は、迫りくる脅威の前で、人間が無益な内紛に時間を浪費しうるか、その愚かさの象徴」 [932029429]
- ペヤング超大盛り完食出来そうもない
- 2018年に手取り14万残業全てサービス残業で働いてた
- 私はアドルフヒトラー
- 【神奈川新聞】「暇空茜」を県警追送検 [746833765]
- NHKニュースウオッチ9「日本側は対話にオープンな姿勢で安定した日中関係を築きたい考えなのに中国が意固地で糸口が見いだせない」 [904151406]
