こんにちは、武田です。
今回はwindows用のCUI「PowerShell」を触ってみます。
どんなもの?
- 標準のコマンドプロンプトより強力
- バッチもスゴイ
- cron的な事もできるらしい
発端
先日、windows上でVirtualBox+Vagrant+CentOSの仮想環境の構築を行ってました。
普段触っていないwindowsのコマンドラインを使ったのですがこんな形に苦しめられておりました。
コマンドライン立ち上げて。。。ここはどこかな?
C:\>pwd
'pwd' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
※windowsだと[dir]
ああ、コマンド違うのか。。。
GUIからPATHはわかるから打ち込むか。移動するぞ!
C:\>cd C:\hoge
C:\hoge>
お、ちゃんと移動したぞ!
次はカレントのファイルを確認しよう
C:\hoge>ls
'ls' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
※windowsだと[dir]
dirコマンドなのか。。。
Vagrantfileをいじるから一応バックアップとっておこう
C:\hoge>cp Vagrantfile Vagrantfile.backup
'cp' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
※win(ry
こけてばっかで全然進まねーじゃねーか!
なまじLinuxに慣れているせいか余計にハマってしまうようです。。。
だったらより良い環境に変えていけばいいじゃない!
そこで”PowerShell”の出番!
なんとPowerShellはwindows7から標準搭載なんです
まずは起動 winキー、検索ボックスに[PowerShell]と。。。
青いコマンドプロンプトだなこれ。。。
ではさっそく新型の力を試して見ましょう
7PS C:\hoge> pwd
Path
----
C:\hoge
PS C:\hoge> cd C:\hoge
PS C:\hoge> ls
ディレクトリ: C:\hoge
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2016/03/08 18:09 4 hoge.txt
PS C:\hoge> cp .\hoge.txt .\hoge.txt.backup
PS C:\hoge> ls
ディレクトリ: C:\hoge
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2016/03/08 18:09 4 hoge.txt
-a--- 2016/03/08 18:09 4 hoge.txt.backup
さっきできなかった[pwd cd ls cp]がこうもあっさりと!
本来はPowerShell用コマンドレットなるものらしいのですが
linuxユーザに配慮してあってエイリアスが貼ってあるようです。
せっかくだから他のlinuxコマンドも使えるかちょっとやってみましょう
PS C:\hoge> cat .\hoge.txt
ここは本文
ここは本文ここは本文
ここは本文ここは本文ここは本文
日本語も問題なく表示
PS C:\hoge> curl http://www.adjust.ne.jp/
StatusCode : 200
StatusDescription : OK
Content : <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xh
ml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja" xmlns:og="h...
(以下略)
おお弊社のサイトへもアクセスできる!
PS C:\hoge> diff .\hoge.txt .\hoge_2.txt
InputObject SideIndicator
----------- -------------
.\hoge_2.txt =>
.\hoge.txt <=
diffはなんか意味不明ですね。。。
PS C:\hoge> man cp
名前
Copy-Item
構文
Copy-Item [-Path] <string[]> [[-Destination] <string>] [-Container] [-Force] [-Filter <string>] [-Include <string[]
>] [-Exclude <string[]>] [-Recurse] [-PassThru] [-Credential <pscredential>] [-WhatIf] [-Confirm] [-UseTransaction]
[<CommonParameters>]
Copy-Item [[-Destination] <string>] -LiteralPath <string[]> [-Container] [-Force] [-Filter <string>] [-Include <str
ing[]>] [-Exclude <string[]>] [-Recurse] [-PassThru] [-Credential <pscredential>] [-WhatIf] [-Confirm] [-UseTransac
tion] [<CommonParameters>]
エイリアス
cpi
cp
copy
注釈
Get-Help を実行しましたが、このコンピューターにこのコマンドレットのヘルプ ファイルは見つかりませんでした。ヘルプの一
部だけが表示されています。
-- このコマンドレットを含むモジュールのヘルプ ファイルをダウンロードしてインストールするには、Update-Help を使用
してください。
-- このコマンドレットのヘルプ トピックをオンラインで確認するには、「Get-Help Copy-Item -Online」と入力するか、
http://go.microsoft.com/fwlink/?LinkID=113292 を参照してください。
manコマンドまであんの!?
PS C:\hoge> history
Id CommandLine
-- -----------
1 cd
2 pwd
3 pwd
4 ls
5 pwd
困ったときのhistory
PS C:\hoge> rm .\hoge_2.txt
PS C:\hoge> ls
ディレクトリ: C:\hoge
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2016/04/09 14:17 64 hoge.txt
-a--- 2016/03/08 18:09 4 hoge.txt.backup
ファイルの削除
# パイプの利用
PS C:\hoge> history | Select-String "curl"
curl http://www.adjust.ne.jp/
curl http://www.adjust.ne.jp/
処理結果をパイプで渡してgrepもできます。
前のコマンド思い出せない時なんかによくやりますね。
エイリアスの追加
私は三度の飯よりgrep 好きなのでSelect-Stringだとやりづらいですね
これはエイリアス追加しましょう
Set-Alias grep Select-String
history | grep "curl"
curl http://www.adjust.ne.jp/
curl http://www.adjust.ne.jp/
あっさり完成。使い慣れてる書き方で実に気分がいい!
次回
正直、舐めてました[PowerShell]windowsのCUIなんざオマケみたいなもの
pingうって情報強者ぶるための小道具とか思っててすみませんでした。
ちょっと業務で使えそうな事や簡単なアプリケーション作っていきます。
コメントを残す