シェルスクリプト総合 その35
■ このスレッドは過去ログ倉庫に格納されています
シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。
前スレ: シェルスクリプト総合 その34
https://mevius.5ch.net/test/read.cgi/tech/1597990675/ 普通に斜線シンドロームとか斜線病で良くね
syndromeは症候群て訳されるけど症候群は違う感じする ダブルミーニングな気がするが傾きと偏愛の2つの意味がある
https://eow.alc.co.jp/search?q=leaning
> 〔垂直な位置からの〕傾き、傾斜◆【動】lean
> 〔〜を好む〕傾向
https://ejje.weblio.jp/content/leaning
> 傾向,性癖; 好み,偏愛 〔to,toward〕.
だが公式につまようじ大好き症候群って書いてるんだから
こっちでいいやろ。斜めつまようじとか意味わからんし。 「leaning」を訳出してるだけなのに、意味わからんとか意味わからん。 >>586
「star」には「星」という意味と「人気者」という意味がある
「star]を訳出してるだけ、スターウオーズは「人気者戦争」だ
と言われても、訳がおかしい、意味わからんとしか言いようがないのと一緒 >>587
じゃあ「リーニングツースピックシンドローム」って言えよ。w >>584
m/ftp:\/\/[^\/]*\/pub\//
をぱっとみ \ を含めて leaning toothpick が多すぎ=単に見た目な感じだけでじゃね
そんな厳密な病気的な意味でなく、なんらかの変わったように見える(もしくは少々異常に見える)状態行動を言うときもあるだろう
「病」と言う場合もあるがどちらかというと揶揄したり真っ向から否定する場合じゃね 難読化を促進してるのは主に \ のせいだし、
/ と \ しかとりあえずその言葉の対象(原因?)でしかないので、斜めつまようじシンドローム の方が合ってるような気がするな。日本語の語感としては変だと思うけどw >>584
>斜線シンドローム
ってレス内にあったのか。俺はそれに+1 (これはネタ)
傾楊子病とかすると古来からの病気っぽくなるw >>592
じゃあ、オレは-1。
原文の小ネタのじゃれた気持ちが出ていない。 その点インテル入ってるってすげーよな
intel insideと逆サイドで韻踏み >>590
そういうときのために
m(ftp%3A//[^/]*/pub/)
って書けるように
処理系のほうが工夫してるんだったら
書かない方が悪い #!/bin/sh
aiuo() {
curl --silent "https://example" | jq -r ".aaa.bbb" 2> /dev/null
}
hoge=""
hoge=${aiuo}
echo "hoge = ${hoge}"
ターミナルでaiuoの中を一行でやるとjqの結果が表示されるけど、
shファイルを作ってやるとjqの結果が表示されずにhoge =しか表示されないのはどこが間違えてますか? awkがシェルスクリプトじゃないのは事実なんだよな
POSIX原理主義はシェルスクリプト以外も使っていいと言いつつ
結局「シェルスクリプトでやる」と主張してるだろっていうツッコミはあるが
シェルスクリプト以外も使っていいからこそ
awkという「シェルスクリプトではない言語」を使っているんだろ?w
だから最初に言った言葉である「awkはシェルスクリプトではない」という事実は変わってない
awkメインのコー ドは「シェルスクリプト」ではなく「awkスクリプト」と呼ぶべきで
POSIX原理主義は「(原則として)シェルスクリプトで実装する」と主張するんじゃなくて
「awkを使って実装する」と主張するべきだってことなんだよ
ちなみにな、POSIX原理主義はシェルスクリプト以外も使っていいのであれば
RubyやJavaなども使っていいということになる
こちらも「シェルスクリプト以外も使っていいが原則としてシェルスクリプトでやる」という主張と矛盾している 少し訂正
× awkメインのコー ドは「シェルスクリプト」ではなく「awkスクリプト」と呼ぶべきで
○ 埋め込みawkメインのコー ドは「シェルスクリプト」ではなく「awkスクリプト」と呼ぶべきで
Pythonのコー ドをワンライナーでシェルスクリプトに埋め込むのと同じ
ワンライナー程度ならまだシェルスクリプトがメインと言えるだろうが
何十行も全体の半分以上も埋め込むなやw >>601
hoge=$(aiuo)かhoge=`aiuo`にすれば? >>602, 603, 606
どうもありがとうございました
()、{}、`の使い分け画像よく分ってないです ( hoge; hage ) コマンドのグループ化(サブシェル内でコマンド実行)
{ hoge; hage; } コマンドのグループ化(サブシェルなしでコマンド実行)
ret=$( hoge; hage ) 標準出力の結果を変数に入れる(サブシェル内でコマンド実行)
ret=`hoge; hage` 上記と同等。POSIXに準拠してない古いシェル用の書き方。ネストできないので30年前から非推奨。
ret=${ hoge; hage; } こんなものはない >>608
`<command>`ってネストできないんだっけ。
ネストしにくいだけで可能ではあるんじゃなかったか。 もうどうでもいいよw
``は30年前から非推奨
四則演算にexprを使うのも30年前から非推奨
$(...) と $((...)) を使うのが30年前から続くPOSIX準拠のトレンド
これを普及させることが今年の目標なw >>612
バックスラッシュかな。バックスラッシュでできるよう
`level1\`level2\\\`level3\\\\\\\`level4\\\\\\\`\\\`\\\`level3\\\`\``
のような
なんか笑うw \ はどういう増加率やねんと思った(level4は一つずつ増やしての手動)ら、2^(level-1)-1
だった
まあ、そんなにネストするやつは居ないだろうで実質level3ぐらいが実用的な範囲か
(もしくはそんなにネストすんなという暗黙的戒めか?w)
でも、遊びでlevel6とかするとやっぱり笑うw
>>614
うん。でも、見方変えるとなんかでかいからペアがわかりやすく...もねえかw さすがにPOSIXを厳守してるので``つかいます。expr使います。
とか言ってるエセPOSIX信者は消えたかね?
あと`#`とかいうハックするやつは○ね
サブシェル起動で遅くなるだろが いつものやつとしか思えないw
自分が間違ったのを異常に誤魔化すような(いつものw)異常なレスだなと見えるぞ >>619
brian に聞いたら used だって言ってた aaa="testtt" #フォルダ名
date_dir=$(mkdir -p $aaa/`date '+%Y%m%d'`) #testttフォルダの中に20210104の作りたい
wget https://example.com/example.txt -P $date_dir
これをやるとフォルダは作られるけどtxtの保存先がカレントディレクトリになるのはどうしてですか? >>625
“$date_dir”の中身を確認してみ
原因を知ることも大事だけど
それを調べる方法を知ることのほうがもっと大事 >>626
echo $date_dir だとなんにも表示されないです
間違えてますねきっと mkdir -p $aaa/`date '+%Y%m%d'`の標準出力見てごらん mkdir が、戻り値を返すか?
An exit status of zero indicates success,
and a nonzero value indicates failure.
echo $?
だろ Ruby では、あるディレクトリ直下のディレクトリだけをソートして、
", "(カンマと空白)でつなげて、1行の文字列にしたものは、
ruby -e 'puts Dir.glob( "*" ).select{ |file| File.directory? file }.sort.join( ", " )'
出力
app, bin, config, db
これをシェルスクリプトでは、どう作るの?
これらを使うの?
ls -d */
find . -maxdepth 1 -type d スレのテンプレにRubyの話を控える(というかほぼ無くす)よう追記しない? >>636
またマウントとれない話題はやめろってか
ダサいなぁ
答えられないならスルーすればいいだけだろ >>637
えぇ……スレチを指摘するのってダサいんだ。
知らんかったなあw 半分シェルスクリプトの質問なんだからスレチでもなくない?
ワイはだるいから答えませんが... >>635
ruby -e 'puts Dir.glob( "*" ).select{ |file| File.directory? file }.sort.join( ", " )'
find * -maxdepth 0 -type d -printf "%f, " | sed 's/, $/\n/'
27文字差 シェルスクリプトが苦手な人が
難しくなったら他言語で書き直したほうがいいってよく言ってるけど
同じ処理を他言語で書き直すとたいていシェルスクリプトより長くなるんだよなw 場合によるだろう
いつもの隙あればマウント取りたがりかw1行目から明らかに
>>633は誰かが遊んだのかと思ったら自らなのか。キチってるなw >>643
誤 >>633は
正 >>634は
すまん、>>633 w
だけじゃなんななので
あの find はそれでいいの??ダメだったら長くなりそうな気がしないでもない ルビキチもポジキチも元気いいなここは
仕事ないのか? ルビキチはしばらく見ないなw
ルビキチに悪影響されての ID:2z9IJIZ8 の流れがちょっとアレだったな >>635
find * -type d -prune | paste -sd, | sed 's/,/, /g' >>642
いろいろと恥ずかしいレスだなw
難しくなったらww
長くなるんだよwww >>640
findをわざわざ使わなくても、ls -1でイケるやろ。
どうせsedで加工するなら。 >>635
\ls -md */ | sed 's:/::g' >>650
コンソールの幅?に依存してまうな。
-w 0も必要。 つーか俺は誰かと違ってPOSIXじゃないからだめなんて言ってないんだけどな
POSIXシェルではどうやればいいかって話をしてるだけで、ウェブアプリとか
シェルスクリプトには向かない作業にRubyやPythonなどの他の言語を使うのは当たり前
もちろんawkも使って構わないが、ただしそれはawk言語であってシェルスクリプトではないとは言うけどなw
何十年も動かしたいプログラムに、何十年も変化しない言語を使うのはまだ理解できるが
そもそも何十年も動かしたいという顧客の要求がなく、むしろ新しい機能の追加や修正を
行い続けるようなものに開発しづらいシェルスクリプトを使うのは馬鹿げてる っていうか,
「PythonやRubyはPOSIX Cで作られてるからPOSIX!」
っていう理論,いや1億歩譲ってそれを認めたとして,
このスレのタイトルを1億回読み直してほしいw
つまり結局,このスレで「POSIXが〜」と限定した場合に言及すべき範囲は
POSIXが(唯一)定めているShell Command Languageおよび(Shell) Utilitiyなんだよな。 > 「PythonやRubyはPOSIX Cで作られてるからPOSIX!」
そんな主張してないぞ
POSIX原理主義がPOSIXシェルスクリプトをメインに開発する!
→でも○○無理じゃん
→シェルスクリプトで書くのは必須じゃない。交換可能可能性があれば使ってもOK!
→(交換可能可能性とか後付作っただろ・・・)
その理屈だと、C言語は交換可能性があるからOKだとして、
C言語で誰かがが作った(例えばユニケージの)独自コマンドは交換可能性がないからNGですよね?
そしてPythonやRubyもJythonやJRubyといった交換可能性があるからPOSIXじゃなくてもOKですね
こういう話ね >>652
COLUMNS=32767 ls ...
でも良さげ? それで標準ライブラリは極力使わないって話にどうしてなるのか
意味不明なのは変わらないな どんな環境でも動くものを作れるここの先輩方は
LinuxだけでなくMacも込で動くように作られますか? LinuxでもMacでも動かしたくなるようなもので
普通に作れるようなものであれば作ってるよ
普通に作れないものっていうのは
例えば、systemdを使うものとかファイアウォール設定を変えるとか
Linuxの環境じゃないと意味がないようなもののことね >>661
ポジキチではないけど,
MacはUNIX v7に準拠してるし,
Linuxは正式に準拠してはいないけどほぼPOSIXに従ってるから,
POSIXの範囲でシェルスクリプトを書いておけば
MacでもLinuxでも動く。
まあそれに「意味があるのか」というのは別の話。
(Goプログラマが「Goで書けどこでも動く!」とか言ってるのと
似たようなもん) ここに書き込む人は大概Linux前提でGNUのツールが前提になってるから
MacにもGNUのツールをどんどん入れれば大丈夫と言う考え方はある
逆に言えばGNU原理主義なのかもしれんがw どれだけ意味があるかって、複数のOS使ってるなら意味有るでしょ? >>664
それはそうなんだけど、Macの場合、結局、フリーソフト使って実現なんだよね
ああ、GNUがフリーソフトだろっていう話じゃなくて
macOSが公式に対応してるわけじゃないって意味ね。
macOSが公式に対応してないからOSのアップデートで動かなかったりする >>666
アポーがグズなことなんか知らん。
だいたいひとまわりくらい古いやろ。 >>664
macosってコードベース的には90%くらいfreebsdのはずだが、gnuは徹底排除抹殺思想のfreebsdとしてどんな気持ちなんだろ…
もちろんライセンス的にクリアしてるんだろうが
まあmacは持ってないんだが(シェル含め)スクリプト写経用に人からコピーさせてもらった、まんじゃろ、とか言ってた頃?
blobじゃないファイルのコメントにfreebsd記載率9割 というかbsd使いは規格とか気にしてない人が多そう(尖った人という偏見)
そもそもコミュニティが小さいので気にするまでもないってのもある
規格を異様に気にするのは、環境が千差万別なlinuxユーザでしょ >macosってコードベース的には90%くらいfreebsdのはず
>まあmacは持ってないんだが
他も無知ゆえの妄想ばかりだな
mac持ってなくても調べればわかるのを調べもしないでのでタチが悪い無知 usrとかbinとかgrep(と-v)してみりゃそうだって分かるだろ、バイナリ部分は公開してない以上分からんとしか言えん 「コードベース」とか範囲が広すぎだろう。バイナリ部分ってなんやねん
単にコマンド(大体はPOSIXにあるコマンド)って話なのか? >>672
えっ。
わからんの?
マジで言ってんの?
さすが信者。w お前の独特の言語言葉なんて知らんわ
usr bin にあるバイナリを調べろと言ってるのか。ちょっとは自分で調べてあんなこと言ってるのかと思ったら、全くなのな
てことは単にコマンドのことを言ってるだけか。コードベースwとか独特の言葉を使うなよ
それなりにオープンソースで公開されてるんだから少しは調べようとしろよ、語るwなら
妄想で語るだけのに さすが信者 とか言われたくないわw 勝手に
les, bus - ATM LAN Emulation service demons
というのが入っているけど、何これ なんか面白いテクニックが某所で紹介されてるな
#!/usr/bin/echo This script is supposed to be sourced like this: .
まあ、macだと/bin/echoだったりするわけだが a="A" b="B" みたいな文字列を渡したら
a変数にA、b変数のBみたいに代入する方法ないかな?
ただし脆弱性が怖いんで、 a="$(cmd)" みたいなものは
そのままa変数に$(cmd)という文字列が入る
そしてスペースとかダブルクォート入れたかったら
a='A " A' とか a="A \" A" とかできるようにしたい >>677
まあ「面白い」というだけで
#!/bin/sh
echo 'This...'
とすればいいだけだがなw ■ このスレッドは過去ログ倉庫に格納されています