シェルスクリプト総合 その29
レス数が950を超えています。1000を超えると書き込みができなくなります。
!extend:on:vvvvv:1000:512
!extend:on:vvvvv:1000:512
シェルスクリプトに関する総合スレッドです。
スレ立て時は以下の文を先頭行に加えて下さい。
後のつけ忘れ防止の為に複数行重ねて追加推奨
!extend:on:vvvvv:1000:512
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
前スレ
シェルスクリプト総合 その28
http://mevius.5ch.net/test/read.cgi/tech/1532397676/
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured ネットワーク通信(特にhttpクライアント)に関するコマンドって
大きくwgetとcurlとfetchなんかがあるけどもみんなはなに使ってます?
大抵のLinuxにはwgetが、MacとWindowsにはcurlが初期搭載されてるので
そのどっちかだとは思う。 スクリプトの場合はオプションが面倒くさくいのは関係ないから
個人的には自由度の高いcurl一択かな
直接コマンド打ってダウンロードするときはaria2cを使ったりする wgetが入っていればwget、curlが入っていればcurl
両方入っているなら、ファイルにしたいときはwget、出力結果を見たいときはcurl PowerShell では、Invoke-WebRequest のalias が、curl, wget
get-alias (gal) で表示できる >>900
え、それつまり
$ curl ...
としたときのオプションは実はcurlのじゃなくて
Invoke-WebRequestに向けたオプションってこと?
そんなに互換性があるオプション体系だとは思わないのだけど
なぜエイリアスにしてあるんだろう……。 呼ばれたときの名前によって処理を切り替えてるんじゃないの?知らんけど bashで「=」という文字をコマンドにすることってできますかね。
「=」を「bc -l <<<」に割り当てて
$ = '4 / 5.1'
みたいな簡易電卓として使いたいなと思ったんだけど
alias =='bc -l <<<'やfunction = { bc -l <<< "$1" }はダメ……。
一応GNU Bashの「コマンドに使っていい文字」ではあるんだけど、使えない =というファイル名のシェルスクリプト書いたら?
bashもいらんし
#!/bin/sh
echo "$@" | bc -l function = { bc -l <<< "$1"; } ってすればできる(セミコロンが必要) シェルスクリプトの練習になるオススメサイトありますか? 水泳の練習になるオススメサイトありますか?
そう聞かれたらなんて答える? いけずな野郎だな
お題があってそれを解くっていうのを練習と呼ぶなら
paizaあたりがシェルスクリプトも受け付けてたかも 自分の作りたいもん作れよ、それ以上効率の良い学習方法はない 今からシェルスクリプトに手を出すんならPOSIX 2017の規格文書とかが
なんと無償で公開されてるので非常にやりやすいと思うよ。
GNUの日本語訳されたマニュアルでもいいし、少なくともドキュメントとしては
今は過去一番に恵まれた時代だと感じている。 一応この板にもお題スレあるけどね。
この頃過疎ってるかな。 シェルっていうかAWKのことなんですけど
今の時代に「AWKを256倍使うための本」って読んでためになりますか。
それこそFORTRAN66向けの解説書は最低でもFortran 90/95あたりを使う現在では
ほとんど役に立ちませんよね。
ですがAWKは昔からほとんど仕様が変わっていないので、
古い書籍でも役立ちそうではあります。 >>916
スレチ
あるなら嫁
100円以上出す価値はない gawk(4以降)を使わないなら昔のawk本で勉強してもいいと思う。 256本って、役に立つことも書いてあるネタ本だろう?
勉強ってw 「256倍」のAWKって,POSIX awkともちょっと違うんだよねw
だからあんまり真に受けないほうがいい >>922
そういうしょうもない言いがかりでマウント取りたがる奴のほうが
今の時代みっともないと笑われがちだけどね てかバカてなんでシェルだとどおにかなると思っとるん? 5ch とかで○○の意味ガーとか言う奴はアスペか基地外だから放置しとけ シェルは簡単やけどシェルがおまえバカのを補える訳とちゃうでw シェルスクリプト程難しいプログラミング言語も珍しい いまだにシェルのことシェルスクリプトと言い張るバカおるんやなw シェルスクリプトと言うからおかしくなるんであって
バッチプログラムと言った方が良くない?
スクリプトと言うほど大袈裟でもないんだけどね scriptが台本のことだと知っていれば、シェルスクリプトこそ正当なスクリプトだろ。
そのあとperlスクリプトとか呼ばれてあの手の言語がスクリプト言語に分類され、
ただのインタプリタ系プログラムまでスクリプトに含められてしまった。 >>935
そんなこと言ったら「プログラム」もおかしいよね
プログラムは式次第って意味だから「関数型プログラミング言語」なんて意味が通らない
式次第って意味と乖離が少なかったのはそれこそFORTRANとかだよね。
……って良い出したらキリがないから、別に「Pyhtonスクリプト」と呼んでもいいんじゃね? >>936
> プログラムは式次第って意味だから
プログラムは運動会のプログラムと一緒で
実行計画だろ? その実行計画を「式次第」って言うんじゃね?
運動会ではあまり使われないけど
卒業式のプログラムは「式次第」って呼ばれるじゃん。 移植可能なMakefileについての覚書
The Open Groupによると
The best way to provide portable makefiles is to include all of the rules needed in the makefile itself.
The rules provided use only features provided by other parts of this volume of POSIX.1-2017.
The default rules include rules for optional commands in this volume of POSIX.1-2017.
Only rules pertaining to commands that are provided are needed in an implementation's default set. 実行計画のうち特に式典に用いられるのが式次第だろ
式じゃないんだから、単に実行計画で良い >>944
キメーんだよ、クソ人間が
カタカタカタ… ほかにも動物の名前のコマンドあるかな。
人の名前はあるけど(man)。 fish って聞くと x68k の fish の方を連想してしまう fish、イタリア語でPesciペッシ。
ジョジョで覚えたぞ! http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_23
ここのNoteに「〈記号〉=〈値〉の形の構文の挙動は未定義である。Kornシェル用いられている」
とあるのですが実際にKornシェルで↑この形の構文はどういう意味なのでしょうか。 シェルでコマンドの出力結果を(lsなど)データベースに入れたいのですが
どのようにすればいいかわかりますか?
できればその時のIpアドレスも一緒にいれればいいのですが
普通にテキストに入れるには
できないのでしょうか
ディレクトリも入れれば最高です
dbはsqlite3でフィールドはディレクトリ内容とディレクトリの2フィールドにいれたいのです >>966
シェルスクリプト以前に、手では操作できるのかね? sqlite3 をコマンドとして使えるのか?
使えるのなら、そういうコマンドのオプションはあるのか?
sqlite3の説明を読めば?
基本的には、単純な空白区切り、CSV, JSON などでも、DB に入れられるはず
a,b
c,d
こういうCSV, TSV でも、DBに入る >>966
CSVにすればこうやって読み込める。
https://qiita.com/j-shimo/items/83febe1992321ba558e4
まあでも Perl とかで DB 接続のモジュール使ってやっちゃった方が簡単な感じがしないでもないが、
簡単と感じるかどうかは主観的な問題。 JSON なら、jq コマンドもある
そりゃ、Ruby などのプログラミング言語を使えば出来るけど、
コマンドだけで、もっと簡単にやりたいのでしょ? シェル(スクリプト)っていうかシステムの話なんですが
FLOSSまたは無償で使えるOSで kshがデフォルトのログインシェルになってるものってありますか
AIXとかはそうっぽいのですが 買えません。 OpenBSD、Solaris。Solarisはらしい くそ。ググっちまったw アニメ用語かよ。
OpenBSDにします。>>976 ありがとう! 読むと常にEOFを返すようなファイル(つまり/dev/nullとか)を
あえて「実行」した場合の挙動ってPOSIXやXPGで規定されてるっけ。
知ってる人いたら教えてほしい。
多分大抵の処理系でEACCESが返されて終了,という挙動をすると思うんだけど
怪しい……。 単なるEmpty Fileと、Executableでないファイルを無理やりと混ぜてなくない?
EACCESは後者だろう、中身に(読むと常にEOFを返す)関係なく。普通にそうならないの? >>981
ありがとう。
「実行可能形式」でないものを実行した場合はシェルスクリプトとして起動されるんだね。
そして俺はマヌケな勘違いをしていたwもっと後の方の処理…つーか違う段階だった。
http://pubs.opengroup.org/onlinepubs/9699919799/functions/exec.html#tag_16_111_05
たとえば「ディレクトリ」や「(/dev/nullのような)正常でないファイル」が
exec函数によって「実行」されるとEACCESが返って失敗するという訳か。
お騒がせしてすまん。 初心者ながら普段のルーチンをshellscriptで解消したく
ソースコードを書いています。
一つつまづいてるので質問させてください。
catコマンドで特定のtxtファイル(シンボリックで作成したエイリアス)を
読み込むのですがNo such file or directoryと出力されます。
terminal上で同じコマンドを実行するとシンボリックリンク先の
txtファイルを読み込み、きちんと動作します。
何か考えられるミスはありますでしょうか? catの前にpwdとかls -lとかls -lLとか調べることはいっぱいある >>983
うーん。初心者という言葉をそのまま受け取るなら
フルパス・もしくはそのスクリプトからきちんと認識できる位置の相対パス
で指定してる?
ターミナルの上で
$ cd /tmp
として/tmpディレクトリに移動してからそのコマンドを打ってみるとどうなる?
もう一つは「No such file or directory」がcatの出力でない可能性
ファイル自身をコマンドとして認識される位置に持ってきてない? >>983
cat の打ち間違えやスペースが全角。
ファイル名の文字コード間違い。全角半角だけでなく見た目が同じだがキリル文字の方を使ってるみたいな間違い。
Unicode特有の問題で日本語の平仮名の濁点や半濁点の文字が2文字になっているというのもあるかも知れない。これはよくMacOSとWindows間のファイルをやり取りすると起こる。
画面上は全く同じに見えるファイルが同じディレクトリに2つ並んだりする。しかし文字コードを調べると違っている。 レスを頂きありがとうございます。
983です。
readlinkは事前に使用して検証してたのですが、
問題なくシンボリック先を辿れていました。
カレントディレクトリが/tmpの状態でコマンドで
打つとこれも問題なく動作します。
文字もシンプルな英語しか使用してないので
どこが間違っているのかわかりません。
教えて頂いたデバッグ方法を参考にもう少し探ってみます。 シェルスクリプト難し過ぎワロタw
もうpythonでいいよ レス数が950を超えています。1000を超えると書き込みができなくなります。