Bash on Windowsが強化、Linux版のJavaやGo、PostgreSQLなどもWindowsで実行可能に。3月リリースのWindows 10 Creators Updateで マイクロソフトは来月(2017年3月)登場予定のWindows 10の大型アップデート「Windows 10 Creators Update」で、Windowsに取り込んだLinux機能の「Bash on Ubuntu on Windows」とその背後にある「Windows Subsystem for Linux」(以下、両者をまとめて「Bash on Windows」に省略)の強化を行い、これまで実行が困難だったLinux版のJavaやPostgreSQLなども実行可能になることを、2月8日(日本時間2月9日未明)のイベント「Windows Developer Day - Creators Upda
シェルスクリプトのデバッグ シェルスクリプトをデバッグするには プログラムにバグはつきものであり、それはシェルスクリプトも例外ではない。bash にはシェルスクリプトのデバッグに非常に有効なオプションが用意されているので、「Syntax Error」で実行できない場合や、変数にどんな値が設定されているのか確認したい場合は、それらオプションを指定した上で実行することで、簡単にデバッグを行うことができる。 「-x」オプションを使用する -x オプションは、シェルスクリプト内で実際に実行されたコマンドを表示するオプションである。変数が使用されている場合は、その変数の値が展開された状態で表示される。 → bash に -x オプションを指定し、引数にデバッグするシェルスクリプトを指定する。 -x オプションでシェルスクリプトを実行すると、echo コマンドなどの出力に加えて、スクリプト内で実際に実
[速報]マイクロソフト、BashシェルをWindowsに搭載。Emacs、VT100などサポート。Build 2016 マイクロソフトは開発者向けの年次イベント「Build 2016」を米サンフランシスコで開催しています。初日の基調講演では、Windows 10が登場して1年を記念した大型アップデート「Windows 10 Anniversary Update」を発表。 その中で、UNIXやLinuxで使われているシェルの1つ「Bash」がWindowsに搭載されると発表がありました。 本物のBashがWindowsで走る Kevin Gallo氏。Corporate Vice President, Windows and Devices Group。 Bash on Windowsを発表する。 これは本物のBashだ。仮想マシンでもクロスコンパイルされたツールでもなく、ネイティブのUbu
シェルスクリプトって書いては忘れ、書いては忘れの繰り返しだな。 シェルスクリプトではなく、コマンドとその例については、 id:kaishitaeiichi:20101116:1289914288 Hello, World! $ echo '#!/bin/bash' >> hello.sh $ echo 'echo "Hello, World!"' >> hello.sh $ echo 'echo "Hello, World!"' >> hello.sh $ cat hello.sh #!/bin/bash echo "Hello, World!" echo "Hello, World!" $ chmod 744 hello.sh $ ./hello.sh Hello, World! Hello, World! $ echo $? 0 ファイルに、コマンドを書き並べて、実行権限を与えれば、
条件1. /bin/shの実体がbashのディストリビューション RHEL CentOS Scientific Linux Fedora Amazon Linux openSUSE Arch Linux (自ら設定した場合: Debian, Ubuntu) 条件2. 動作環境 CGI (レンタルサーバでありがちなCGIモードのPHP等も含む) Passenger(Ruby) 条件3. プログラム内容 Passengerは全死亡 *1 systemや `command`、 '| /usr/lib/sendmail' などで外部コマンド実行 *2 PHPのmailやmb_send_mail、その他フレームワーク等を介したメール送信 *3 以下は条件1が不要 明示的にbashを呼ぶ 先頭で #!/bin/bash や #!/usr/bin/env bash しているプログラムを実行 (rbenv
環境変数に仕込まれたコードを実行してしまうBASHの脆弱性が CGIスクリプトに影響を与えるか試してみたら結果は悲惨な感じに Tweet 2014年9月25日 嶋田大貴 この記事は2014年のものです 朝から Bash specially-crafted environment variables code injection attack なるもので騒ぎになっていたので、さっそく手元の Apacheで試してみました。 /hoge.cgiというURIで実行されるように、一行のメッセージを出力するだけの CGIスクリプトを設置します。いっけん、なんの入力もクライアント側から受け付けていないため危険のありようもなく見えます。 #!/bin/sh echo "Content-type: text/plain" echo echo "Hi! I'm an ordinary CGI script w
確認しました(苦笑) (追記: envを抜いてましたが、それだとCシェル系で確認できないので加えました) ueda@remote:~$ env x='() { :;}; echo vulnerable' bash -c 'echo this is a test' vulnerable this is a test 最初のワンライナーでなにがおこってるかというと、xの値であるはずの「() { :;}; echo vulnerable」の、echo vulnerableの部分がなぜか実行されています。 bashの文法ではシングルクォートで囲んだ中のものは何がどう書いてあっても単なる文字列であって、evalとかshとかに突っ込まない限り実行されるわけはないので、これは実装ミスかと。(と、書いたのですが環境変数に関数を仕込めるという仕様があるという話を初めて聞いて愕然と・・・。いま慌てて調べてます
2009/09/07 毎年夏に開催される軽量プログラミング言語(LL:Lightweight Language)をテーマにした「LLイベント」。第7回目となる「LLTV」が、2009年8月29日に東京・中野で開催された。この記事ではプログラムの一部、「大改善!!劇的ビフォーアフター」をレポートする。前編では、Rubyによるfortuneコマンドの“増築”と、Firefox拡張によるslコマンドの実装というネタ系発表をレポートした。中編ではC言語にLisp風のマクロを取り入れ、lsコマンドのソースコードを約半分に削減する匠の技をレポートした。後編となる本記事では、売り場業務が滞りがちだった販売管理システムをbashコマンドで“建て直した”という劇的ビフォーアフターの発表をレポートする。 DBを捨ててテキストファイルに変換 「100万件ぐらいの検索なら、シェルだけでも1000分の数秒でできます
man bashに書いてあります。 >この0というのは、$0のことなのでしょうか。 $0は${0}の簡略表現で、${0%/*}などはそれに修飾子を付けたものです。 >この%は、正規表現か何かなのでしょうか。 正規表現ではありません。man bashより抜粋: > ${parameter%word} > ${parameter%%word} >word が展開され、パス名展開の場合と同じようなパターンを作ります。 >このパターンが parameter を展開した値の末尾の部分とマッチする場合、 >展開結果は parameter を展開した値から最短一致パターン (``%'' の場合) >または最長一致パターン (``%%'' の場合) を取り除いたものになります。 >この/は何を指しているのでしょうか? >この*は、どの部分の1文字以上を指しているのでしょうか? 「/*」は、スラッシュの後に
Table of Contents Introduction Current Status Source Code Availability Distributions Other Resources Reporting Bugs Maintainer Translations Introduction Bash is the GNU Project's Bourne Again SHell, a complete implementation of the IEEE POSIX and Open Group shell specification with interactive command line editing, job control on architectures that support it, csh-like features such as history sub
会社で使ってるMacBook(Leopard)にMacPorts入れたり、bash用のaliasを設定するのに、.bashrcに記述したのですが、反映されません。 調べてみると、どうやらTerminal.appでは~/.bashrcは読み込まれないらしいので、~/.bash_profileに読み込むように記述する必要があるようです。 こちらに各設定ファイルの読み込まれるタイミングがまとめてありました。 ということで、~/.bash_profileを作成し、以下のように記述しました。 if [ -f ~/.bashrc ] ; then . ~/.bashrc fi これで、Terminal.app起動時に~/.bashrcが読み込まれるようになりました。
#!/bin/bash for h in {0..23}; do for m in {0..59}; do name=$(printf "http://www.bijint.com/jp/img/photo/%02d%02d.jpg" $h $m) for i in {1..10}; do if `wget $name`; then break fi done done done
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く