PowerShellがオープンソースに、LinuxおよびMac OS X版も提供へ 81
ストーリー by hylom
まさかLinuxでPowerShellが使えるようになるとは 部門より
まさかLinuxでPowerShellが使えるようになるとは 部門より
Microsoftのコマンドラインシェルおよびスクリプト言語「PowerShell」がオープンソース化された。Windowsだけでなく、LinuxおよびMac OS Xにも対応する(ITmedia、OSDN Magazine)。
ソースコードはGitHubで公開されている。また、コンパイル済みバイナリファイルも用意されている。バージョンは「v6.0.0-alpha.9」となっている。
PowerShellの各コンポーネントは.NET技術をベースとしているが、.NETのオープンソース化およびLinuxおよびMac OS Xへの移植によってPowerShellのオープンソース化が実現されたようだ。
かゆいところに手が届かない (スコア:1)
いまだにfind -lsもできないんですが。
それができるだけで喜んで使うのに。
Re:かゆいところに手が届かない (スコア:2)
いまだにfind -lsもできないんですが。
それって、
じゃダメなの?
パッと見、ACLが解りにくいかもしれないけど、Get-ACLを通せばいい。
それでもACLは解りにくいかもしれないけど、それはそもそもNTFSが高機能だからなので、仕方ない。
Re:かゆいところに手が届かない (スコア:1)
>gci -r
試してみたら、すごく気持ちよかったです。これだよこれ。
ありがとうございました。喜んで使うようにします。
Re:かゆいところに手が届かない (スコア:1)
20世紀と21世紀の話だと思うよ。
「高性能」と言わず「高機能」って言っている点に注意が必要かも。
機能があっても、知らない人の方が多いと思う。
UNIX系だと、使っているファイルシステムについて
わかっている人が多い様に思えるんですが、
Windows系は…。
Re:かゆいところに手が届かない (スコア:1)
フィルタドライバが頑張っているだけに見えるんですけど
Re:かゆいところに手が届かない (スコア:1)
そうですね。
Re:かゆいところに手が届かない (スコア:1)
NTFSが高機能って20世紀の話ですか?
そうそう。
UNIXで標準的な「drwxrwxrwx」で表される様なやつよりは「高機能」って話。
find -lsって、ファイル毎にそれが表示されるわけだけど、そんな風には表示できない。
Linuxのファイルシステムも、そういうACLが使えるので、その意味で「高機能」。
getaclってやっても、一行で表示できるような単純なものじゃない。
だけど、一般的とは言い難いね。
そーゆー意味ね。
Re:かゆいところに手が届かない (スコア:1)
ACLはfile system以外にも使われる一般的なアクセスコントロール方式の1つだと思っているのですけど
その通りだけど、ここではファイルシステムにおけるACLを問題にしている。
そのACLが一般的でないってのは何時の話なんですか?
UFSの頃はその機能は無く、いわゆるファイルモードのみ実装されていた。
今でもデフォルトでACL無効でファイルシステムをマウントするLinuxディストリビューションは少なくないね。
RHELでも既定では、ACLは無効だね。
SELinuxは有効だけど、これはちょっと毛色の違う話だね。
Re:かゆいところに手が届かない (スコア:1)
file systemにACLが標準実装されていないのは古いと思っているのですね。
キミは、古くないと言ってるわけ?
だったら、その理由は何だい?
聞いてあげるから、話してごらん。
実世界ではNTFSのACL肥大化によって様々な問題が発生しています。
ACLは、UFSのファイルモードに比べて、本質的に高機能なので、管理が複雑になりやすい。
それに伴い、問題も発生しやすい。
これらは、言わば当然のことなんだよ。
それを今更ドヤ顔で語ってると思われると良くないので、「ご存知の通り」くらいを付けると、良い感じになるよ。
次からは頑張ろう。
過ぎたるは猶及ばざるが如し。高機能がベストな選択肢とは限らないです。
一連のコメントで、高機能がベストだ、なんて主張をした人はいないだよ。
ちなみに、古いのが悪いとか、新しいのがベストとか言った人もいないね。
私が言及したのは、新しいか否かと、高機能か否かのみ。
ベストか否かの議論はご自由にして構わないよ。
ただ、私の発言とは無関係。
それはよく理解しておいてくれたまえ。
Re:かゆいところに手が届かない (スコア:1)
そのような人達をミスリードしそうな表現が問題と判断しただけですよ。
意図的なんでしょうか?それとも足りないんですか?
そのレベルの人は相手にしてません。
もし、そのレベルの人が質問してくれば、ベストエフォートで回答します。
# キミはそのレベルじゃないんでしょ?
それで、
file systemにACLが標準実装されていないのは古いと思っているのですね。
キミは、古くないと言ってるわけ?
これに対する回答は?
まるで、古くないとミスリードしそうな表現ですが。
あるいは、本気で古くないと言っている?
だったら、その理由を説明してごらん。
聞いてあげるから。
Re: (スコア:0)
Re: (スコア:0)
出力が勝手に80カラムで改行されててもう二度と使わんと決めた
PowerShellはいいゾ (スコア:0)
シームレスに.NET Frameworkも (やりたくないが) COMも叩けるから今までのスクリプティング環境から世界が変わる。
調子こいて長大なバッチ処理書いたりするとめちゃくちゃ遅くて悶絶するが…
Re: (スコア:0)
実行速度はなんとかならんものかと思いますね。
楽しい言語なので、何でもかんでもPowerShellでやりたくなりますが、
ちょっと取り扱うデータ量が大きくなると、遅くてかなわんです。
オープンソース化で、実行速度向上しないかなあ(他力本願)。
Re: (スコア:0)
PowerShellだととにかくスクリプトが長くなる。
ぱっと書くにはめんどくさいし
かっちり長々と書くと他の言語で書くより圧倒的に遅くなる
既存の言語から乗り換える人いるのかなーというのが正直な感想。
PythonやBashやPHPやJavaScriptで事足りてる人に何かアピールできるところって有りますか?
マルチプラットフォームってことなら他の言語のほうが実績も資産もあるし、何より早い。
例えば、下記のようなキメラな処理でもPowerShellより圧倒的に早い上に書くのも簡単。
grep "hoge*" hoge.txt | gawk 'BEGIN{FS=";"}{print $3}' |
Re:PowerShellはいいゾ (スコア:3)
http://www.pine4.net/Memo/Article/Archives/203/ [pine4.net]
大抵はObject[]だろうがArrayListだろうがどちらでも良いのだが、要素数が1つの場合に解かれて、ListのListみたいなものを扱うとわかりづらいバグになった。
Re:PowerShellはいいゾ (スコア:1)
lsの結果とか、空の時とファイル1個の時と2個以上の時とで型が変わっちゃうんだよね。
それって例えば、
で解決しない?
確かにハマりやすい点ではあって、PowerShellの最初の方で教えとくべき。
Re:PowerShellはいいゾ (スコア:1)
ぱっと書くにはめんどくさいし
入力補完が賢いので、それほど面倒とも思わないけど。
オブジェクトのメソッド・プロパティまで補完が効いたりするしね。
かっちり長々と書くと他の言語で書くより圧倒的に遅くなる
スピードを気にするようなところに使うもんじゃないんじゃないかな。
PythonやBashやPHPやJavaScriptで事足りてる人に何かアピールできるところって有りますか?
Windowsなら別ですが、Unix系OS上で、という話なら、特に無い、というのが正直なところですかね。
ただ、パイプにオブジェクト列が流れていく様は、おもしろいと思います。
ちょっと凝って、Pythonで書くとやや長くなるけど、PowerShellほどにはならないような
長くなるのは、cmdletが長かったり、オプションが長かったりするせいだと思うけど、それも入力補完があれば気にならないけどな。
いまどき、IDEとかの入力補完があるのが前提ですよね。
Bashを対話的に使ってても入力補完はあるわけだし。
そんなことより、.Netのライブラリが微妙に不親切なのが気に食わないです。
ちょっとしたあったら便利なメソッドが存在してないので、いちいちちょっとづつ実装しなきゃいけない。
# スニペット使え?
Re: (スコア:0)
元コメじゃないんですが、入力補完は気持ち悪いので完全オフにしています。
あっ、PowerShellそのものはチマチマ使ったりしてますよ。
Re:PowerShellはいいゾ (スコア:1)
入力補完は気持ち悪いので完全オフにしています。
参考までに、なにが「気持ち悪い」のか聞かせてくれない?
Bashと感触が違うからとか?
Re:PowerShellはいいゾ (スコア:1)
さくさく保管されていたものが一瞬もたついて
# ヒストリの話じゃなくて、補完の書き間違いだよね?
なんかよく解らんですが、そーゆーこともあるんですかね。
後は、似た名称のながーいオプションが多くて
勘違いするとかかな・・・。
そーゆーのこそ、入力補完が真価を発揮するところでしょ。
新しいISEの補完とか、かなり便利だと思うけどな。
Re: (スコア:0)
COM以外にも.NETのアセンブリも同じように扱えなかったっけ?
Re: (スコア:0)
使えるよ。というより、そっちがメインじゃないかと思う。
黒い画面で文字入力とか今時しないだろ。
VisualStudio使わずSystem.Windows.Forms使ってアプリ作れるのがいいんじゃないのかね。
ただし、IDEの支援なしにFormsのオブジェクトあれこれ作るのはかなりつらい。
細かなフォーム作っているとやっぱりXAMLが欲しくなる。
つまり、MSの罠
Re: (スコア:0)
> 黒い画面で文字入力とか今時しないだろ。
それはあなたの感想ですよね?
Re: (スコア:0)
PowerShellの背景が黒じゃないことを知らない人はおよびじゃないです
Re:PowerShellはいいゾ (スコア:1)
背景色、単にcmd.exeの設定だから変えられるョ
わたしは背景色はクリームっぽい色、文字色黒で使ってる
Re: (スコア:0)
帯襷ではあるけど久々に読むと古文書みたいになってるbashやらのシェルスクリプトが綺麗に書き換えられると思うんすよね。
ちゃんとした構造化プログラミングもできつつ*NIXの文化圏に沿ってパイプやリダイレクトでお繋ぎできるスクリプト言語なんで。
とはいえ.NETやCOMやOCXを手軽かつ安全にブッ叩けるのが一番パワフルな使い方なんでそういった裾野が無いとうま味も無いか…
Re: (スコア:0)
WindowsのパイプやリダイレクトがUnixのそれと同等と思える時点でお察し案件。
Re:PowerShellはいいゾ (スコア:1)
Re: (スコア:0)
ぶっちゃけ、何がリダイレクトされるかがよりシンプルなUnixのほうが、インタフェースとして優れてると思うよ。
PowerShellは、高機能なんだが直感的ではない感じ。
Re:PowerShellはいいゾ (スコア:1)
同感だな。
UNIXのやり方が、環境も含めて仕事をこなすのに十分、とは言えるけど、インターフェースとしては古臭い。
もっとも、PowerShellはまだまだ不十分で、Windowsを管理するのに十分とは言い難いのも事実。
Re: (スコア:0)
> PythonやBashやPHPやJavaScriptで事足りてる人に何かアピールできるところって有りますか?
PythonやPHPやJavaScript…JavaScript!? はともかく、Bashに比べたらプログラムは遙かに書きやすいからなぁ
UNIXの哲学()とか言ってShellScriptでなんでもかんでもやろうとする人いるけど、あんなの黒魔術以外の何物でも無いよ
Re:PowerShellはいいゾ (スコア:1)
でも、数十万個とかの個数が多いオブジェクトをパイプに渡そうとするとコケる。
PowerShellのパイプはUNIXのパイプに見えてそうじゃない。
膨大な行を人間がやりたくないからスクリプトにやらせたいのに、扱える数に限度があってそれができない。
それは、PowerShellのパイプのせいじゃないよ。
例えば、要素数が10,000,000(百万)個でも、
は(信じられないくらい時間はかかるが)実行できる。
問題は、パイプの直後のcmdletで、こいつの作り次第なんだよね。
いずれにせよ、PowerShellがまだまだだ、という批判は、妥当ではある(笑)。
周辺がないと (スコア:0)
設定ファイル類が レジストリみたいな一連のDB内にあるわけでもない。
Remote-PsSession も使えない。
Windows みたいに、これだけあればリモートもローカルも Windows の管理はなんでもOK な世界にはならん。
ローカルに閉じたとしても PowerShell に閉じてる範囲なら フィルタやパイプの恩恵はあるけど、Unix系のパイプにベタなテキストを流すものが絡むと PowerShell の強力な機構は何一つ使えない。
Linux で動いても嬉しさないんだよなぁ。
"Linux で動いても嬉しさないんだよなぁ。"が目的じゃない? (スコア:1)
最近、TeraTermとかCygwin関連のトラブルを
Linuxカテゴリーで質問している人が多くて笑えます。
問題がおきているのはWindowsの中なのに
Windowsを使わない人に質問しようだなんて…
PowerShellのLinux版が出てきたら、当然出てきますよ
「ubuntuにPowerShellを入れたのですが、chkdskコマンドが実行されません」
みたいな質問、もうね、釣りじゃなきゃ何なんだろうって…
Re:"Linux で動いても嬉しさないんだよなぁ。"が目的じゃない? (スコア:1)
PowerShellのLinux版が出てきたら、当然出てきますよ
たとえLinux版PowerShellが出なかったとしても、その手のズレた質問は無くならないので、特に問題でもないでしょう。
絶対数は多少増えるでしょうが、ゴミみたいなもんでしょ。
他の原因でも、その手の質問は増えるかもしれませんしね。
Bash on Ubuntu on Windowsとか。
Re:周辺がないと (スコア:1)
Remote-PsSession も使えない。
Enter-PSSession?
使えないの?
そーいえば、WindowsにSSHを実装するって言ってたけど、それも使えないのかな?
Unix系のパイプにベタなテキストを流すものが絡むと PowerShell の強力な機構は何一つ使えない。
Windows上でも、cmdletでない普通のexeなんかが絡むと同じだね。
「何一つ」は言い過ぎだと思うけど、確かにメリット大幅ダウンだね。
Re: (スコア:0)
Perl,Python,Ruby並のことができるなら、クロスプラットフォームなインタプリタ環境が一つ増えるのかなと思うけど、できないよね?
Re:周辺がないと (スコア:1)
バックエンド的にMono/.NET Coreであるなら、クロスプラットフォームインタプリタ環境、まではなんとか達成してるんじゃない?
# 十分その環境独自のことができるか、ってと微妙かもしれんけど。
M-FalconSky (暑いか寒い)
Re:周辺がないと (スコア:1)
PowerShell の良いところは、Unix 系のスクリプトが阿呆みたいに 何カラム目だとか、何文字目だとかいうクソみたいなインターフェースで情報をやりとりせずに、Name だとか Size だとかの意味のある名前でやりとりが出来ること。
Re: (スコア:0)
(テキストでデータをやりとりする話)
くそではあるが、何も考えずに/調べずに使えるところが利点でもあります(そして保守するときの欠点でもある)。
コマンドラインのパイプにJSONデータを流せば名前でデータアクセスできてよさそう(たぶん違う)。
Re: (スコア:0)
(開発低調だけど) RubyやPythonは.NETで書かれた処理系があるから後で保守引き継いだ子が泣くような悪いものを作れるぞ
Re: (スコア:0)
Monoだと System.Windows.Forms のできそこないすらあるから割と邪悪な使い方ができる気がするぞ。
テキストボックスに日本語入れたら爆発するけど気にするな。
Re: (スコア:0)
0を1にするという最大の難関が解決されたのですからあなたが1を10にすればいいのですよ
オープンソースの良さってそういうものでしょ
最初から完全無欠なもの以外を否定して文句を公の場で言うのに、自分は使うだけなんて乞食以下です
XPで使える (スコア:0)
これで XP 最新のPowerShellが手軽に使えるね
Re: (スコア:0)
でもPerlのほうが実用的なのはここだけの話。
Re: (スコア:0)
Perlが先行で、Perlで十分だったから、Perlなんです。
ずっと./bin に、perl.exe, perl5*.dll が入れてある。
これでbashがやるようなことはだいたい済ませてきた。
Re: (スコア:0)
古い言語ではあるが、Perlは(笑)をつけるほどに悪い言語だとは思えない。
sl (スコア:0)
slって入力しても汽車が走らない、アレね。
Macで動かして何か嬉しいことがあるかな。
Embrace, extend and extinguish ?? (スコア:0)
参考: https://ja.wikipedia.org/wiki/3E%E6%88%A6%E7%95%A5 [wikipedia.org]