シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。
前スレ: シェルスクリプト総合 その35
https://mevius.5ch.net/test/read.cgi/tech/1606221440/
関連スレ
・【Bash】Windows Subsystem for Linux【WSL】9
https://mao.5ch.net/test/read.cgi/linux/1607589861/
・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/
シェルスクリプト総合 その36
■ このスレッドは過去ログ倉庫に格納されています
2021/02/25(木) 09:20:14.64ID:ZyJLXTlk
616デフォルトの名無しさん
2021/05/16(日) 22:34:03.36ID:vtPLFS21 >>615
含んでないことを前提にできるならええがな。
含んでないことを前提にできるならええがな。
617デフォルトの名無しさん
2021/05/17(月) 00:20:52.65ID:HtlvZdi5 https://twitter.com/col_richie/status/1393925115386101766
> 「POSIX原理主義とはPOSIX文書に従うこと」と思われがちだが、
> 我々の定義は少し違う。「POSIX文書が言わんとすることを読み取り、実践する」だ
>
> 例えば、日本国憲法24条の「婚姻は両性の同意のみに基づいて」を、
> 同性婚時代にどう解釈すべきかのようなもの。元の文章に捕らわれ思考停止してはいけない
ほんと、こいつって適当なことばかり言ってるよな
とうとうPOSIX原理主義はPOSIXとは関係ない。POSIXが書いてないことを
独自解釈して自分の都合のいいように言い換えてるって認めちゃってる。
その「我々の定義」は「POSIX原理主義」のどこにも書いてないと言うね
そしていつものように、全く関係ないものにたとえて
虎の威を借る狐作戦
一貫性がない、思いつきだけで発言してる
https://twitter.com/5chan_nel (5ch newer account)
> 「POSIX原理主義とはPOSIX文書に従うこと」と思われがちだが、
> 我々の定義は少し違う。「POSIX文書が言わんとすることを読み取り、実践する」だ
>
> 例えば、日本国憲法24条の「婚姻は両性の同意のみに基づいて」を、
> 同性婚時代にどう解釈すべきかのようなもの。元の文章に捕らわれ思考停止してはいけない
ほんと、こいつって適当なことばかり言ってるよな
とうとうPOSIX原理主義はPOSIXとは関係ない。POSIXが書いてないことを
独自解釈して自分の都合のいいように言い換えてるって認めちゃってる。
その「我々の定義」は「POSIX原理主義」のどこにも書いてないと言うね
そしていつものように、全く関係ないものにたとえて
虎の威を借る狐作戦
一貫性がない、思いつきだけで発言してる
https://twitter.com/5chan_nel (5ch newer account)
618デフォルトの名無しさん
2021/05/17(月) 03:39:44.44ID:j+9HqG9Y 見落としてた
Language Learning with Youtube BETAが出力する字幕にカンマが表示されることがないから
cutコマンドを使ってCSVファイルのn列目フィールドを抽出できてる
sepオプションで区切り文字に'~'を指定してcomma-separated values (csv)ならぬpython-separated value(psv)ファイル
にすれば英文データ中にカンマを含んでいても正常に抽出できるよ
read_xlsx.to_csv(os.getenv("HOME") + "/Downloads/time_en_jp.csv", index=None, header=True, sep='~')'
Language Learning with Youtube BETAが出力する字幕にカンマが表示されることがないから
cutコマンドを使ってCSVファイルのn列目フィールドを抽出できてる
sepオプションで区切り文字に'~'を指定してcomma-separated values (csv)ならぬpython-separated value(psv)ファイル
にすれば英文データ中にカンマを含んでいても正常に抽出できるよ
read_xlsx.to_csv(os.getenv("HOME") + "/Downloads/time_en_jp.csv", index=None, header=True, sep='~')'
619デフォルトの名無しさん
2021/05/19(水) 10:30:30.70ID:nuPY3Cay620デフォルトの名無しさん
2021/05/19(水) 11:52:01.66ID:ZyjXFBY0 csvはほんとギルティ、特にクオートしてるやつ…
(["'])[^"']*\1やその,版をベースに個別にチューンしてなんとかならん事もないけど
普通に高級ライブラリ(pwshのパーサとか)呼んで見つけ次第tsvに浄化、常にtsvを扱うのがベストプラクティス
タブが嫌ならascii c0 separator svでも何でもcsvよりはマシ
(["'])[^"']*\1やその,版をベースに個別にチューンしてなんとかならん事もないけど
普通に高級ライブラリ(pwshのパーサとか)呼んで見つけ次第tsvに浄化、常にtsvを扱うのがベストプラクティス
タブが嫌ならascii c0 separator svでも何でもcsvよりはマシ
621デフォルトの名無しさん
2021/05/19(水) 12:10:40.76ID:/qVnw8Ux テキストにタブが含まれてたら同じやろ。
結局、ダメなときはダメ。
しゃあない。
結局、ダメなときはダメ。
しゃあない。
622デフォルトの名無しさん
2021/05/19(水) 12:15:24.52ID:nuPY3Cay >>620
つか、CSVに限らず、シェルスクリプトで扱うなら、とにかくTSVでしょう。
だから、他のデータはとにかくまずTSVにしてしまう。
それさえ出来てしまえば、逆に後はどうにでもなるw
またシェルスクリプトでなくても、タブは単独の区切り文字としてはベスト。
まずよっぽどでない限り、フィールドの内容には出てこないから。
つか、CSVに限らず、シェルスクリプトで扱うなら、とにかくTSVでしょう。
だから、他のデータはとにかくまずTSVにしてしまう。
それさえ出来てしまえば、逆に後はどうにでもなるw
またシェルスクリプトでなくても、タブは単独の区切り文字としてはベスト。
まずよっぽどでない限り、フィールドの内容には出てこないから。
623デフォルトの名無しさん
2021/05/19(水) 12:28:25.62ID:ZROa3PFa >まずよっぽどでない限り、フィールドの内容には出てこないから
一番使われたであろうソースコード記述でもタブを嫌いスペースが主流だったりするしな
一番使われたであろうソースコード記述でもタブを嫌いスペースが主流だったりするしな
624デフォルトの名無しさん
2021/05/19(水) 12:40:24.36ID:ZyjXFBY0 sed s/^I/taaab/gとかエスケープしとけばいいんでない?(^Iは本当のタブ文字)
sedはc風のエスケープも認識した気がする、クオートしないとshに食われるが
s/'\t'/taaab/gでも多分大丈夫かな
sedはc風のエスケープも認識した気がする、クオートしないとshに食われるが
s/'\t'/taaab/gでも多分大丈夫かな
625デフォルトの名無しさん
2021/05/19(水) 12:45:00.65ID:nuPY3Cay626デフォルトの名無しさん
2021/05/19(水) 12:45:04.60ID:ZROa3PFa そんな話してないよ
627デフォルトの名無しさん
2021/05/19(水) 12:46:44.79ID:ZROa3PFa フィールドの内容に出てくるのを想定した場合の話か
ごめんちゃい
ごめんちゃい
628デフォルトの名無しさん
2021/05/19(水) 12:51:26.96ID:ZyjXFBY0 値内のタブは代わりの文字に置き換えて、tsvのデリミタにホントのタブ使うってことね
catやらで書き出してもちゃんとテーブルに見える利点は大きい(適宜タブ幅整えれば)
ascii C0のセパレータは認識しないアプリ多いし、vimで開くとかcat -vteしないと正体不明なので筋が悪いか
自分が何使ったか忘れて頭を捻ることになる
taaabでも何でも良いが、タブであることが一目で分かれば便利
その用途に文字列"\t"が標準的な大体記法だからといって、これに置き換えるのは避けたほうがいいかも
どこかで勝手に解釈されかねない
C0のセパレータがまさにdsvの為の文字なんだけれどもなあ…
扱いづらい
catやらで書き出してもちゃんとテーブルに見える利点は大きい(適宜タブ幅整えれば)
ascii C0のセパレータは認識しないアプリ多いし、vimで開くとかcat -vteしないと正体不明なので筋が悪いか
自分が何使ったか忘れて頭を捻ることになる
taaabでも何でも良いが、タブであることが一目で分かれば便利
その用途に文字列"\t"が標準的な大体記法だからといって、これに置き換えるのは避けたほうがいいかも
どこかで勝手に解釈されかねない
C0のセパレータがまさにdsvの為の文字なんだけれどもなあ…
扱いづらい
629デフォルトの名無しさん
2021/05/19(水) 12:55:58.11ID:ZyjXFBY0630デフォルトの名無しさん
2021/05/19(水) 12:59:10.19ID:nuPY3Cay >>628
> その用途に文字列"\t"が標準的な大体記法だからといって、これに置き換えるのは避けたほうがいいかも
うん。それはまずい。
そも普通のコマンドで\t解釈しないのはgrepぐらいのものだと思う。
(これ、ほんと凄い罠なんだよw)
> その用途に文字列"\t"が標準的な大体記法だからといって、これに置き換えるのは避けたほうがいいかも
うん。それはまずい。
そも普通のコマンドで\t解釈しないのはgrepぐらいのものだと思う。
(これ、ほんと凄い罠なんだよw)
631デフォルトの名無しさん
2021/05/19(水) 13:09:34.54ID:nuPY3Cay >>629
まあ、それなら<-tab->とか、なんなら((tab))とか、[[#tab#]]とかでも、いいけどw
んでもtaaabとかはやめようよ、だって見やすくないし、わかりやすくないし、それこそフィールド値として出てきかねない(まあ、スペースが入ってないとかのタイポだろうけれども)しw
まあ、それなら<-tab->とか、なんなら((tab))とか、[[#tab#]]とかでも、いいけどw
んでもtaaabとかはやめようよ、だって見やすくないし、わかりやすくないし、それこそフィールド値として出てきかねない(まあ、スペースが入ってないとかのタイポだろうけれども)しw
632デフォルトの名無しさん
2021/05/19(水) 13:11:35.15ID:EPM7ZqxF いっそ絵文字にしちゃえば
633デフォルトの名無しさん
2021/05/19(水) 13:16:05.73ID:ZyjXFBY0 >>630,631
覚えておく、ありがと
あと標準ツールで\記法を解釈しないのはedだね
edの直系子孫のgrepとsedで異なるのは興味深いね
結局はオレオレ記法に頼るしかないのな…
tsvほどポータブルでないが、bash等配列サポートbshならdeclare(typeset) -pで再読み込み可能なようにダンプしてくれるね
内部的に使うならこれもありかな
覚えておく、ありがと
あと標準ツールで\記法を解釈しないのはedだね
edの直系子孫のgrepとsedで異なるのは興味深いね
結局はオレオレ記法に頼るしかないのな…
tsvほどポータブルでないが、bash等配列サポートbshならdeclare(typeset) -pで再読み込み可能なようにダンプしてくれるね
内部的に使うならこれもありかな
634デフォルトの名無しさん
2021/05/19(水) 13:20:50.01ID:isp/WQPk >>622
> またシェルスクリプトでなくても、タブは単独の区切り文字としてはベスト。
シェルスクリプトにおいてはタブ区切りはベストではない。
なぜなら空白系文字の一つで特殊な処理が行われるから。
foo,bar,baz という CSVは IFS="," read -r f1 f2 f3 で正しく読み込める。
foo,,baz でも正しく、f1="foo"、f2=""、f3="baz" と読み込める。
しかしこれがタブ区切り(タブ文字=<TAB>とする)であった場合、
空白系文字が連続している場合は一つとして扱われるという例外ルールにより、
foo<TAB><TAB>baz という CSV は IFS=<TAB> read -r f1 f2 f3 と読み込むと、
f1="foo"、f2="baz"、f3="" と間違って読み込まれる。
> またシェルスクリプトでなくても、タブは単独の区切り文字としてはベスト。
シェルスクリプトにおいてはタブ区切りはベストではない。
なぜなら空白系文字の一つで特殊な処理が行われるから。
foo,bar,baz という CSVは IFS="," read -r f1 f2 f3 で正しく読み込める。
foo,,baz でも正しく、f1="foo"、f2=""、f3="baz" と読み込める。
しかしこれがタブ区切り(タブ文字=<TAB>とする)であった場合、
空白系文字が連続している場合は一つとして扱われるという例外ルールにより、
foo<TAB><TAB>baz という CSV は IFS=<TAB> read -r f1 f2 f3 と読み込むと、
f1="foo"、f2="baz"、f3="" と間違って読み込まれる。
635デフォルトの名無しさん
2021/05/19(水) 13:23:02.17ID:ZyjXFBY0 内部的というか、個人的に、だな
個人的にならそれこそモダンなパーサ使えよって話だし、declare等中途半端なハックはやめておこう
ごめん
個人的にならそれこそモダンなパーサ使えよって話だし、declare等中途半端なハックはやめておこう
ごめん
636デフォルトの名無しさん
2021/05/19(水) 13:24:53.12ID:isp/WQPk 名前は忘れたけど、シェルスクリプトでCSVを扱うためのライブラリかコマンドを見かけたことがある
awk実装のパーサーを使ってたはず。githubでawk csv で検索して見つけたんだったかな?
まあいくつかあったはず。
awk実装のパーサーを使ってたはず。githubでawk csv で検索して見つけたんだったかな?
まあいくつかあったはず。
637デフォルトの名無しさん
2021/05/19(水) 13:27:02.65ID:isp/WQPk たしかシェルスクリプトで扱いやすいように区切り文字を変換する機能とかエスケープする機能とかとかがあったはず
638デフォルトの名無しさん
2021/05/19(水) 13:34:02.00ID:ZyjXFBY0 空白文字としてシェルにパース(単語分割)される、って性質もシェルスクリプティングにおいて便利な場面(forで回したり)は多々あるので一概に悪いとは思わないよ
スペースあるならtsvは避けるとか、IFSをコマンド前置代入で弄るとか、ハッキリ区別したいなら値をクオートしてワンステップ分割を遅延させたりとか
tsvは厳密性と利便性の真ん中の立ち位置だね
シェルスクリプティングにおいて、総合的に見ていい形式だと思うよ、(いざバグるその時までは…)
スペースあるならtsvは避けるとか、IFSをコマンド前置代入で弄るとか、ハッキリ区別したいなら値をクオートしてワンステップ分割を遅延させたりとか
tsvは厳密性と利便性の真ん中の立ち位置だね
シェルスクリプティングにおいて、総合的に見ていい形式だと思うよ、(いざバグるその時までは…)
639デフォルトの名無しさん
2021/05/19(水) 13:45:54.49ID:nuPY3Cay >>632
まあ今時のシェル環境なら絵文字も実際なしじゃないと個人的には思う。
ただ、滅多にないといってもポータビリティ損うのは嫌だから自分はやらないがw
>>633
edかw
ありがとう、覚えておく。
>>634
いや、タブが不適切な場合がありうることは、端から除外してないよ。
標準ツールの実装や文字としての意味合いなどから考えて、ベストだと言ってるので、
そういう特殊な状況がありうることは指摘されるまでもないよw
>>636
awk実装なら欲しい、それw
csvparseなんてコマンドも昔sourceforgeにあって、一時期入れてた。C実装だったので、
でかいファイルを扱うときに重宝したけど、あんまりできがよくなかったんで、今は…
あとC++が書けるなら、boostライブラリ(11標準に入ってるかも)でエスケープ処理できる
パーサを簡単に書けるやつがあったんで、それで挑戦って手もあるかもw
自分は、そんなことを考えているうちに、>>619のq(-text-as-data)を見付けてしまったので、
以後はこれに頼ってるw
まあ今時のシェル環境なら絵文字も実際なしじゃないと個人的には思う。
ただ、滅多にないといってもポータビリティ損うのは嫌だから自分はやらないがw
>>633
edかw
ありがとう、覚えておく。
>>634
いや、タブが不適切な場合がありうることは、端から除外してないよ。
標準ツールの実装や文字としての意味合いなどから考えて、ベストだと言ってるので、
そういう特殊な状況がありうることは指摘されるまでもないよw
>>636
awk実装なら欲しい、それw
csvparseなんてコマンドも昔sourceforgeにあって、一時期入れてた。C実装だったので、
でかいファイルを扱うときに重宝したけど、あんまりできがよくなかったんで、今は…
あとC++が書けるなら、boostライブラリ(11標準に入ってるかも)でエスケープ処理できる
パーサを簡単に書けるやつがあったんで、それで挑戦って手もあるかもw
自分は、そんなことを考えているうちに、>>619のq(-text-as-data)を見付けてしまったので、
以後はこれに頼ってるw
640デフォルトの名無しさん
2021/05/19(水) 16:24:49.16ID:MofjHbZu641デフォルトの名無しさん
2021/05/19(水) 17:37:46.30ID:NrDqbXHa while IFS=$'¥t' readでTSV読むと空文字が飛ばされるんだけど
どうしたらいいの?
どうしたらいいの?
642デフォルトの名無しさん
2021/05/19(水) 18:07:23.61ID:isp/WQPk 絶対入らないであろう制御文字とか別の文字にsedで置換してから処理すればいいんじゃね?
644デフォルトの名無しさん
2021/05/20(木) 07:49:17.82ID:46+G9eEq > 日本語では、「分かる(understand)」と「分ける(divide)」とは同じ字を充てます。つまり理解することと分類するということは同義です。
???
英語では、「分かる(understand)」と「分ける(divide)」とは異なる単語を充てます。つまり理解することと分類するということは全く別です。
となるのでは?w
???
英語では、「分かる(understand)」と「分ける(divide)」とは異なる単語を充てます。つまり理解することと分類するということは全く別です。
となるのでは?w
645デフォルトの名無しさん
2021/05/20(木) 12:53:36.47ID:ensXejIN divide も「分類する」という意味に取ることはできる。分類が理解ならば。
646デフォルトの名無しさん
2021/05/20(木) 13:17:23.56ID:ALA05zio 綴りが同じでも意味が違う場合がある
意味が同じでも別の綴りで表現することもある
言葉の常識だな
意味が同じでも別の綴りで表現することもある
言葉の常識だな
647デフォルトの名無しさん
2021/05/22(土) 08:35:59.42ID:eaqGXRkT >>618だとうまくいかないので訂正する
read_xlsx.to_csv(os.getenv("HOME") + "/Downloads/time_en_jp.csv", index=None, header=True, sep='~')'
ではなくて
read_xlsx.to_csv(os.getenv("HOME") + "/Downloads/time_en_jp.csv", index=None, header=True, sep="~")'
read_xlsx.to_csv(os.getenv("HOME") + "/Downloads/time_en_jp.csv", index=None, header=True, sep='~')'
ではなくて
read_xlsx.to_csv(os.getenv("HOME") + "/Downloads/time_en_jp.csv", index=None, header=True, sep="~")'
648デフォルトの名無しさん
2021/05/22(土) 08:45:20.64ID:eaqGXRkT #!/bin/sh
# >>614の拡張機能を使ってダウンロードした英語字幕をDeepLで翻訳するスクリプト
# 翻訳すると短いなと思ったら英文の適当なところに改行を入れる
# . $HOME/venv/english/bin/activate
python3 -c 'import glob, os, pandas; \
get_filename = glob.glob(os.getenv("HOME") + "/Downloads/*.xlsx"); \
read_xlsx = pandas.read_excel(get_filename[0], engine="openpyxl"); \
read_xlsx.to_csv(os.getenv("HOME") + "/Downloads/time_en_jp.csv", index=None, header=True, sep="~"); \
read_xlsx.to_html(os.getenv("HOME") + "/Downloads/time_en_jp.html", index=None, header=True)'
mkdir --parents $HOME/Downloads/Excel; mv $HOME/Downloads/*.xlsx "$HOME/Downloads/Excel"
xdg-open "$HOME/Downloads/time_en_jp.html"
cat "$HOME/Downloads/time_en_jp.csv" | cut --delimiter='~' --fields='2' > "$HOME/Downloads/en.txt"
# pandoc "$HOME/Downloads/en.txt" -o "$HOME/Downloads/en.docx"
# 英語字幕の文字数は30分動画で約2万
en_05k=$( cat "$HOME/Downloads/en.txt" | sed -z "s/\n/ /g" | cut --characters="1-5000" )
en_10k=$( cat "$HOME/Downloads/en.txt" | sed -z "s/\n/ /g" | cut -c "4900-9900" )
for subtitle in "$en_05k" "$en_10k" "$en_15k" "$en_20k"; do
if [ -z "$subtitle" ]; then break
else xdg-open $( echo '/pj/ne#rotalsnart/moc.lpeed.www//:sptth' | rev )"$subtitle"; sleep 21; fi; done
# >>614の拡張機能を使ってダウンロードした英語字幕をDeepLで翻訳するスクリプト
# 翻訳すると短いなと思ったら英文の適当なところに改行を入れる
# . $HOME/venv/english/bin/activate
python3 -c 'import glob, os, pandas; \
get_filename = glob.glob(os.getenv("HOME") + "/Downloads/*.xlsx"); \
read_xlsx = pandas.read_excel(get_filename[0], engine="openpyxl"); \
read_xlsx.to_csv(os.getenv("HOME") + "/Downloads/time_en_jp.csv", index=None, header=True, sep="~"); \
read_xlsx.to_html(os.getenv("HOME") + "/Downloads/time_en_jp.html", index=None, header=True)'
mkdir --parents $HOME/Downloads/Excel; mv $HOME/Downloads/*.xlsx "$HOME/Downloads/Excel"
xdg-open "$HOME/Downloads/time_en_jp.html"
cat "$HOME/Downloads/time_en_jp.csv" | cut --delimiter='~' --fields='2' > "$HOME/Downloads/en.txt"
# pandoc "$HOME/Downloads/en.txt" -o "$HOME/Downloads/en.docx"
# 英語字幕の文字数は30分動画で約2万
en_05k=$( cat "$HOME/Downloads/en.txt" | sed -z "s/\n/ /g" | cut --characters="1-5000" )
en_10k=$( cat "$HOME/Downloads/en.txt" | sed -z "s/\n/ /g" | cut -c "4900-9900" )
for subtitle in "$en_05k" "$en_10k" "$en_15k" "$en_20k"; do
if [ -z "$subtitle" ]; then break
else xdg-open $( echo '/pj/ne#rotalsnart/moc.lpeed.www//:sptth' | rev )"$subtitle"; sleep 21; fi; done
649デフォルトの名無しさん
2021/05/22(土) 09:02:39.62ID:QJRx2RSn クソコード邪魔すぎ何だこりゃ?
650デフォルトの名無しさん
2021/05/22(土) 11:03:50.76ID:eaqGXRkT >>648
#!/bin/sh
# クリップボードにコピーしたurlをファイルに追記
CLIPB=$(xclip -o)
mkdir --parents $HOME/Pictures/ss
echo $CLIPB >> $HOME/Pictures/ss/urls.txt
#!/bin/sh
# 追記したページのスクリーンショットを取得後にログを残してurls.txtを初期化、閲覧編集用のアプリを起動
mkdir -p $HOME/Pictures/ss
while read url
# 書き込む余白を多く取りたければ1280以上の横幅を指定
do google-chrome --headless --disable-gpu --hide-scrollbars --window-size=1280,15210 \
--screenshot="$HOME/Pictures/ss/ss$(date +"%H%M%S").png" "$url"
done < "$HOME/Pictures/ss/urls.txt"
date >> "$HOME/Pictures/ss/food.log"
cat "$HOME/Pictures/ss/urls.txt" >> "$HOME/Pictures/ss/food.log"
: > "$HOME/Pictures/ss/urls.txt"
wine "$HOME/irfanview/i_view64.exe" &
xdg-open $( echo '=q?/moc.ogkcudkcud//:sptth' | rev )"!hatebu あとで読む"
#!/bin/sh
# クリップボードにコピーしたurlをファイルに追記
CLIPB=$(xclip -o)
mkdir --parents $HOME/Pictures/ss
echo $CLIPB >> $HOME/Pictures/ss/urls.txt
#!/bin/sh
# 追記したページのスクリーンショットを取得後にログを残してurls.txtを初期化、閲覧編集用のアプリを起動
mkdir -p $HOME/Pictures/ss
while read url
# 書き込む余白を多く取りたければ1280以上の横幅を指定
do google-chrome --headless --disable-gpu --hide-scrollbars --window-size=1280,15210 \
--screenshot="$HOME/Pictures/ss/ss$(date +"%H%M%S").png" "$url"
done < "$HOME/Pictures/ss/urls.txt"
date >> "$HOME/Pictures/ss/food.log"
cat "$HOME/Pictures/ss/urls.txt" >> "$HOME/Pictures/ss/food.log"
: > "$HOME/Pictures/ss/urls.txt"
wine "$HOME/irfanview/i_view64.exe" &
xdg-open $( echo '=q?/moc.ogkcudkcud//:sptth' | rev )"!hatebu あとで読む"
651デフォルトの名無しさん
2021/05/22(土) 11:11:15.99ID:/00w7bM8 よくわからんけどrevは5chの規制避けかな
652デフォルトの名無しさん
2021/05/23(日) 18:35:11.52ID:TMBaqh21 >>650
#!/bin/sh
# 区切り文字が^のcsvファイルから3列目を抽出
while IFS='^' f1 f2 f3
do
echo "$f3"
done < $HOME/Documents/file.csv
echo -n "$IFS"
xdg-open $( echo '/pj.oc.ihcinuhc.www//:sptth' | rev )"article/215479"
#!/bin/sh
# 区切り文字が^のcsvファイルから3列目を抽出
while IFS='^' f1 f2 f3
do
echo "$f3"
done < $HOME/Documents/file.csv
echo -n "$IFS"
xdg-open $( echo '/pj.oc.ihcinuhc.www//:sptth' | rev )"article/215479"
653デフォルトの名無しさん
2021/06/02(水) 23:41:48.90ID:CFdyIdLe スクリプトのシバンで#!/bin/bashを使うのに抵抗があっていつも#!/bin/shと書くんだけど
#!/bin/shは実際何が呼ばれてるか確認する方法ある?
#!/bin/shは実際何が呼ばれてるか確認する方法ある?
654デフォルトの名無しさん
2021/06/03(木) 02:30:25.50ID:Xmy19u29 file /bin/sh
655デフォルトの名無しさん
2021/06/03(木) 02:36:09.69ID:Ers5yK+g Ubuntu 18.04 では、
file /bin/sh
/bin/sh: symbolic link to dash
readlink -f /bin/sh
/bin/dash
ls@ -l /bin/sh
lrwxrwxrwx 1 root root 4 5月 21 2019 /bin/sh -> dash
ただし、ls の特定のオプションは書き込めないので、@を入れました
ll /bin/sh
lrwxrwxrwx 1 root root 4 5月 21 2019 /bin/sh -> dash*
ただし、ll は、~/.bashrc 内で定義されているエイリアス。
alias ll='ls -alF'
file /bin/sh
/bin/sh: symbolic link to dash
readlink -f /bin/sh
/bin/dash
ls@ -l /bin/sh
lrwxrwxrwx 1 root root 4 5月 21 2019 /bin/sh -> dash
ただし、ls の特定のオプションは書き込めないので、@を入れました
ll /bin/sh
lrwxrwxrwx 1 root root 4 5月 21 2019 /bin/sh -> dash*
ただし、ll は、~/.bashrc 内で定義されているエイリアス。
alias ll='ls -alF'
656デフォルトの名無しさん
2021/06/03(木) 03:13:59.17ID:Xmy19u29 dashいいよね
time /bin/sh looooop.sh
という手も…
制御構文と算術並べて回すとbashの6倍〜くらい速い
もしbashのshモードなら、あえてshとして呼ぶ意味は多分ない
shにリネームしても--posixで呼んでも速くなったりはしないので
単に機能制限するだけ
time /bin/sh looooop.sh
という手も…
制御構文と算術並べて回すとbashの6倍〜くらい速い
もしbashのshモードなら、あえてshとして呼ぶ意味は多分ない
shにリネームしても--posixで呼んでも速くなったりはしないので
単に機能制限するだけ
657デフォルトの名無しさん
2021/06/03(木) 04:24:00.37ID:R+Tga64P bashの--posixなら多分機能制限しない
posix準拠の動きに変えるだけ
posix準拠の動きに変えるだけ
658デフォルトの名無しさん
2021/06/03(木) 14:26:02.44ID:jx+ISKqI >>656
なくはない。
何らかのbシェルベースのシェルが起動するコトを期待する、と言う意味がある。
そこがつまり#!/bin/dashと書くな、という理由だよ。
ポータビリティというのは結局スクリプトを書く側が担保してやるしかないものさ。
なくはない。
何らかのbシェルベースのシェルが起動するコトを期待する、と言う意味がある。
そこがつまり#!/bin/dashと書くな、という理由だよ。
ポータビリティというのは結局スクリプトを書く側が担保してやるしかないものさ。
659653
2021/06/03(木) 19:13:59.15ID:smLJNlVA こんなん出ました
dashだそうです
root@rock64:~# file /bin/sh
-bash: file: command not found
root@rock64:~# readlink -f /bin/sh
/bin/dash
dashだそうです
root@rock64:~# file /bin/sh
-bash: file: command not found
root@rock64:~# readlink -f /bin/sh
/bin/dash
660デフォルトの名無しさん
2021/06/03(木) 23:17:43.27ID:jx+ISKqI661デフォルトの名無しさん
2021/06/04(金) 00:17:07.85ID:3WbYfw6G $ apt-file search -x '(/usr)?/bin/file$'
file: /usr/bin/file
file: /usr/bin/file
662デフォルトの名無しさん
2021/06/04(金) 18:08:41.76ID:gVy5NQ7F >>660
最近はクロス環境とか多いからfileは結構出番ないすか? これどれのバイナリー? みたいな
最近はクロス環境とか多いからfileは結構出番ないすか? これどれのバイナリー? みたいな
663デフォルトの名無しさん
2021/06/04(金) 19:10:54.58ID:3cSNOYzv クロス開発で異なるプラットフォームのバイナリが
バラバラにばらまかれて調べないといけなくなる状況がわからん
ちゃんとディレクトリとかファイル名とかでわけて
混ざらないように作れよ
適当にやってるからわからなくなるんだよ
バラバラにばらまかれて調べないといけなくなる状況がわからん
ちゃんとディレクトリとかファイル名とかでわけて
混ざらないように作れよ
適当にやってるからわからなくなるんだよ
664653
2021/06/04(金) 22:37:23.88ID:jwl5S2DP665デフォルトの名無しさん
2021/06/04(金) 22:55:40.20ID:n50ApA7d666デフォルトの名無しさん
2021/06/05(土) 00:08:43.42ID:wpsN2NXu これを機にPOSIX準拠を目指すといいでござる
ただしPOSIX原理主義だけは見てはいけないでござる
あれはエセPOSX宗教でござる
ただしPOSIX原理主義だけは見てはいけないでござる
あれはエセPOSX宗教でござる
667デフォルトの名無しさん
2021/06/06(日) 19:16:29.89ID:JMlL8BLG プログラムの勉強のためにshellのコマンド(ex cd・cp・find ...etc)が
どう書かれているか中身を見たいのですが、バイナリのため文字化けしてて見れません。
これを人が読めるように戻すにはどうしたらよいでしょうか?
またshellのコマンドはプログラム言語は何で書かれているのでしょうか?
どう書かれているか中身を見たいのですが、バイナリのため文字化けしてて見れません。
これを人が読めるように戻すにはどうしたらよいでしょうか?
またshellのコマンドはプログラム言語は何で書かれているのでしょうか?
668デフォルトの名無しさん
2021/06/06(日) 19:25:46.16ID:a60f9MS4 $ objdump -d -j .text /usr/bin/cp
669デフォルトの名無しさん
2021/06/06(日) 19:47:31.05ID:czQb8XNZ670デフォルトの名無しさん
2021/06/06(日) 19:48:12.73ID:P8Y1M++D >>669
それはLinuxだろ
それはLinuxだろ
671デフォルトの名無しさん
2021/06/06(日) 19:50:10.61ID:czQb8XNZ >>670
BSDもだけど。macOSもな
BSDもだけど。macOSもな
672デフォルトの名無しさん
2021/06/06(日) 19:53:49.73ID:P8Y1M++D なんかずれてるな
673デフォルトの名無しさん
2021/06/06(日) 19:55:06.72ID:P8Y1M++D オープンソースとそうでないものがあって、そもそもはオープンソースでない方が元。
674デフォルトの名無しさん
2021/06/06(日) 19:55:15.47ID:czQb8XNZ お前が何を噛みついてるのかわからん
お前がズレてるんだろうがぁ
お前がズレてるんだろうがぁ
675デフォルトの名無しさん
2021/06/06(日) 19:59:04.19ID:czQb8XNZ676デフォルトの名無しさん
2021/06/06(日) 20:01:57.37ID:wmjhjcQW >>667
それらの基本的なコマンドはLinuxが作ってるんじゃなくて
GNUが作ってる。Linuxそれを採用してるだけ
それらの基本的なコマンドはだいたいcoreutilsの中に詰め込まれてる
https://github.com/coreutils/coreutils/tree/master/src
ただし一部は別だったりする。例えばfindはfindutils
cdはシェルで実装されてるからbashとかのソースコードを見ないとわからない
Linux以外を見たければそのOSを作ってるサイトとかに書いてある
それらの基本的なコマンドはLinuxが作ってるんじゃなくて
GNUが作ってる。Linuxそれを採用してるだけ
それらの基本的なコマンドはだいたいcoreutilsの中に詰め込まれてる
https://github.com/coreutils/coreutils/tree/master/src
ただし一部は別だったりする。例えばfindはfindutils
cdはシェルで実装されてるからbashとかのソースコードを見ないとわからない
Linux以外を見たければそのOSを作ってるサイトとかに書いてある
677デフォルトの名無しさん
2021/06/06(日) 20:03:14.27ID:wmjhjcQW678デフォルトの名無しさん
2021/06/06(日) 20:04:40.72ID:wmjhjcQW しかしオープンソースじゃないcpってあるんだろうか?w
unixのソースコードも公開されてたよね?
unixのソースコードも公開されてたよね?
679デフォルトの名無しさん
2021/06/06(日) 20:05:20.51ID:czQb8XNZ680デフォルトの名無しさん
2021/06/06(日) 20:11:51.24ID:a60f9MS4 System V とか Microsoft Xenix とか BSDI のコマンドとかだったりして
681デフォルトの名無しさん
2021/06/06(日) 20:24:40.79ID:JMlL8BLG >669 676
ありがとうございます。GitHubでソースコード拝見しましたが
C言語難しいですね。
ありがとうございます。GitHubでソースコード拝見しましたが
C言語難しいですね。
682デフォルトの名無しさん
2021/06/06(日) 22:11:42.25ID:aDY6ROlo 標準出力の速度を制限したり、通信速度を表示するコマンドってないでしょうか?
683デフォルトの名無しさん
2021/06/06(日) 23:47:07.17ID:2q78RNEI684デフォルトの名無しさん
2021/06/06(日) 23:58:07.43ID:///+rfU8685デフォルトの名無しさん
2021/06/07(月) 02:17:17.72ID:pO0RV8yO Pipe Viewer とか
http://www.ivarch.com/programs/pv.shtml
http://www.ivarch.com/programs/pv.shtml
686デフォルトの名無しさん
2021/06/07(月) 11:24:53.90ID:4bgMFjRA >>685
ありがとうございました!
ありがとうございました!
687デフォルトの名無しさん
2021/06/08(火) 14:08:09.66ID:OYNrrHpJ 誰かいます?質問いいですか?
688デフォルトの名無しさん
2021/06/08(火) 16:02:21.82ID:CHrXnr0w ff fb 20
689デフォルトの名無しさん
2021/06/08(火) 19:32:55.59ID:VAaMDIwe .bashrcのaliasでnohupしたいんだがどう書けばいいの?
これだと上手くいかなかった
alias unko='sudo nohup sh -c '¥''time /unko/unchi.sh '¥'' &'
これだと上手くいかなかった
alias unko='sudo nohup sh -c '¥''time /unko/unchi.sh '¥'' &'
690デフォルトの名無しさん
2021/06/09(水) 10:49:19.85ID:Zc888NJs >>689
それって sudo してるからパスワード入力が必要になるが、最後に & 付いてるからシェルに戻って来ちゃうからうまく行かんのでは?
普通にコマンドラインから入力してもうまく行かんと思うんだが。1度sudoで何かを動かした後でパスワード入力しなくて良い状態になっている時ならできるだろうけど。
それって sudo してるからパスワード入力が必要になるが、最後に & 付いてるからシェルに戻って来ちゃうからうまく行かんのでは?
普通にコマンドラインから入力してもうまく行かんと思うんだが。1度sudoで何かを動かした後でパスワード入力しなくて良い状態になっている時ならできるだろうけど。
691デフォルトの名無しさん
2021/06/09(水) 14:08:40.45ID:HNZZx/kM692デフォルトの名無しさん
2021/06/13(日) 19:52:58.76ID:5F9QidAB sudo でワイルドカード使いたいときって
sudo sh -c "hoge *"
をイディオムだと思って使うのが良いですかね?
他のやり方ってありますか?
sudo sh -c "hoge *"
をイディオムだと思って使うのが良いですかね?
他のやり方ってありますか?
693デフォルトの名無しさん
2021/06/13(日) 20:33:30.15ID:ZhJARNOF694デフォルトの名無しさん
2021/06/14(月) 11:12:16.03ID:KZOl1vP3 イディオムってなんだよ? 何も考えたくないって言ってんのか?
正しいコードを書くだけの話だろ
正しいコードを書くだけの話だろ
695デフォルトの名無しさん
2021/06/14(月) 12:55:12.73ID:0x3Kpqg0 その「正しいコード」とやらが、初心者にはちょっと難しいことはわかる。
凝ったことをやるときに、シェル組み込みのコマンドや機能は混乱のもとやからしゃあない。
凝ったことをやるときに、シェル組み込みのコマンドや機能は混乱のもとやからしゃあない。
696デフォルトの名無しさん
2021/06/14(月) 15:51:02.64ID:KZOl1vP3 俺が突っ込みたいのは「イディオム」って言葉だよ
仕組みを理解したくないってのがバレバレなんだよ
上司「なんでこんなコードにしたの?」
馬鹿「知りません。イディオムです!」
っていいたいのバレバレやろ?
仕組みを理解したくないってのがバレバレなんだよ
上司「なんでこんなコードにしたの?」
馬鹿「知りません。イディオムです!」
っていいたいのバレバレやろ?
697デフォルトの名無しさん
2021/06/14(月) 16:13:33.51ID:lTAIWsCW すみません
sh -c は何も sudo でワイルドカードを使うためだけに存在する構文ではないので、イディオムと申しました
sh -c は何も sudo でワイルドカードを使うためだけに存在する構文ではないので、イディオムと申しました
698デフォルトの名無しさん
2021/06/14(月) 16:18:29.41ID:lTAIWsCW sudoが使えるユーザが利用者で、実行時にパスワードを求める想定です
このときにワイルドカードを使うための、その「正しいコード」とはどのようなものですか、というのが質問です
このときにワイルドカードを使うための、その「正しいコード」とはどのようなものですか、というのが質問です
699デフォルトの名無しさん
2021/06/14(月) 19:26:11.00ID:hx6guc/Q sudoでもワイルドカード使えるし
echo /etc/*.conf
ってしてみろ
shellの機能を使ってるのがわかってない
shellのオーナーはrootじゃなくユーザー
echo /etc/*.conf
ってしてみろ
shellの機能を使ってるのがわかってない
shellのオーナーはrootじゃなくユーザー
700デフォルトの名無しさん
2021/06/14(月) 21:27:46.24ID:KZOl1vP3 正しいコードを聞くんじゃなくて、
シェルスクリプトを勉強しろって言ってんの
コード聞いて終わりにするだろ
上司「なんでこんなコードにしたの?」
馬鹿「知りません。5ちゃんねるでこれが正しいって聞きました!」
シェルスクリプトを勉強しろって言ってんの
コード聞いて終わりにするだろ
上司「なんでこんなコードにしたの?」
馬鹿「知りません。5ちゃんねるでこれが正しいって聞きました!」
701デフォルトの名無しさん
2021/06/14(月) 21:29:27.91ID:0x3Kpqg0702デフォルトの名無しさん
2021/06/14(月) 21:32:42.19ID:0x3Kpqg0703デフォルトの名無しさん
2021/06/14(月) 21:42:49.75ID:TBcjiJdx704デフォルトの名無しさん
2021/06/14(月) 21:47:07.04ID:KZOl1vP3 どこがイディオムなんだ?ただのワイルドカードだろ
*がワイルドカードで終わる話なんだが?
うん。はいおわた。そこにイディオムはありません。
https://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%87%E3%82%A3%E3%82%AA%E3%83%A0
イディオム(英語: idiom、フランス語: idiome、ドイツ語: Idiom)とは、
単語における一定の配列での連結の総称である。言語の類型によっては、
単語に準ずる形態素や表意性を持つ文字がこの役割を担うこともある。
この連結によって、慣習的に用例と意味が固定しており、字面から意味を推測できないことも多い。
*がワイルドカードで終わる話なんだが?
うん。はいおわた。そこにイディオムはありません。
https://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%87%E3%82%A3%E3%82%AA%E3%83%A0
イディオム(英語: idiom、フランス語: idiome、ドイツ語: Idiom)とは、
単語における一定の配列での連結の総称である。言語の類型によっては、
単語に準ずる形態素や表意性を持つ文字がこの役割を担うこともある。
この連結によって、慣習的に用例と意味が固定しており、字面から意味を推測できないことも多い。
705デフォルトの名無しさん
2021/06/14(月) 21:51:20.88ID:XErzM4Zs ↑ 本題とは関係ない変なこだわりっぷりはキチガイ
706デフォルトの名無しさん
2021/06/14(月) 22:01:38.26ID:KZOl1vP3 本題の答え *がワイルドカード
あとは書いたように動く
イディオムなんてない
あとは書いたように動く
イディオムなんてない
707デフォルトの名無しさん
2021/06/14(月) 22:07:17.88ID:RVbOy7mU >>701
sudoはsudo cmdのcmdの実行をroot権限にするだけ
echo *.confもechoにしてみたらいろんなの渡されてびっくりだよ
shellはあらかじめ余計な処理をする
shellを実行してるのはuser
sudoはsudo cmdのcmdの実行をroot権限にするだけ
echo *.confもechoにしてみたらいろんなの渡されてびっくりだよ
shellはあらかじめ余計な処理をする
shellを実行してるのはuser
708デフォルトの名無しさん
2021/06/14(月) 22:19:23.20ID:XErzM4Zs >あらかじめ余計な処理
余計といえば余計だが、その余計なおかげでechoなどは何もしなくてもいいんだけど
POSIXに展開はルールは明文化されてるから一度読めばいいと思う
余計といえば余計だが、その余計なおかげでechoなどは何もしなくてもいいんだけど
POSIXに展開はルールは明文化されてるから一度読めばいいと思う
709デフォルトの名無しさん
2021/06/14(月) 22:38:14.31ID:0x3Kpqg0710デフォルトの名無しさん
2021/06/14(月) 22:38:16.95ID:lTAIWsCW711デフォルトの名無しさん
2021/06/14(月) 22:42:35.98ID:0x3Kpqg0 >>707
sudoであえてshを実行する意味がわかってないやろ?
sudoであえてshを実行する意味がわかってないやろ?
712デフォルトの名無しさん
2021/06/14(月) 22:43:09.07ID:XErzM4Zs >>710
人格が変わりすぎだろうw
It’s a common idiom to use env to find bash even if it’s been installed in another directory
と同じような感覚で使ったんだろう?そもそもは。とは思ってたけど
しかし人格が変わりすぎwww
人格が変わりすぎだろうw
It’s a common idiom to use env to find bash even if it’s been installed in another directory
と同じような感覚で使ったんだろう?そもそもは。とは思ってたけど
しかし人格が変わりすぎwww
713デフォルトの名無しさん
2021/06/14(月) 22:43:39.18ID:TBcjiJdx714デフォルトの名無しさん
2021/06/14(月) 22:45:44.34ID:lTAIWsCW715デフォルトの名無しさん
2021/06/14(月) 22:51:30.90ID:XErzM4Zs716デフォルトの名無しさん
2021/06/14(月) 22:53:20.37ID:XErzM4Zs■ このスレッドは過去ログ倉庫に格納されています
ニュース
- テレビ朝日 本社から男性が転落し死亡。関連会社社員か 当たった通行人が左肩軽傷 [阿弥陀ヶ峰★]
- テレビ朝日本社から20~30代の関連会社社員とみられる男性が転落し死亡 六本木けやき坂通りの通行人にはけが人なし [少考さん★]
- 小島瑠璃子さん、代表取締役を務める会社を破産申請 [牛丼★]
- 「残クレ」でマイホーム、国が銀行向け保険 新型住宅ローン普及促す -日経 ★3 [少考さん★]
- 日本、G7への中国招待を懸念 議長国フランスに慎重な対応要請 [どどん★]
- 【サッカー】日本代表、FIFAランキング“4位”の強豪イングランドとの対戦が正式決定! 来年3月に聖地ウェンブリーで激突へ [久太郎★]
- 千晴におちんちん舐めてもらいたい♥
- ✋🏿( ・᷄ὢ・᷅ )どうも、VIPの堕天使ベルゼブブです
- 日本政府さん、中国が開示した音声データに対して捏造であるとなぜか主張しない!それなのにネトウヨは捏造捏造と連呼する模様 [472617201]
- 姉は貧乳で妹は巨乳ってパターンよくあるよな
- 【悲報】ジャップ、日中戦争に賛成が5割弱...軍歌の音が聞こえる... [856698234]
- ひまだねー
