PowerShellの基本操作
ファイルの作成
new-item hello.txt #新規ファイル作成 new-item hello.txt -value #値を含んだ状態でファイルを作成 -value を明示的に指定する new-item hello -itemtype directory #ディレクトリの作成
ディレクトリの作成
mkdir hello mkdir hello/hello2
移動
cd ~ #ホームディレクトリへ移動 cd .. #1つ前に戻る D: #Dドライブにいく
削除
remove-item #alias rm
aliasの確認
alias
cat
catはファイルの中身を表示する
cat hello.txt #catはget-contentのalias gc hello.txt #gcもget-contentのalias
add-content
alias ac
ac hello.txt "hoge" #hello.txtに"hoge"を追加 cls hello.txt #clear-content #ファイルの中身を削除
pwd
pwdは現在位置を取得する
get-location #pwdはget-locationのalias pwd gl #glもget-locationのalias
get-childitem
get-childitem #alias gci もしくは ls gci -file #fileだけ検索 gci -directory #directoryだけ検索 gci -file *.txt #.txtだけを検索 ls #get-childitemと同等
select-string
select-stringはファイルから文字列を検索します。aliasは sls です。
select-string "hello world" hoge.txt #hoge.txtから文字列 "hello world" を検索する。 sls "hello world" hoge.txt #slsはselect-stringのalias
get-command
get-commandも以外に使うことがあります。get-coomandがpowershellにどのようなコマンドがあるかを調べるだけではなくアプリケーションも含まれますので一度使用してみることをお勧めします。
get-command a* #aではじまるコマンドをしらべる gcm #gcmはget-commandのエイリアス
invoke-item
invoke-itemコマンドはフォルダやファイルを開くことができるので便利です。現在いるパスでファイルを開きたいときは ピリオドを渡します。またaliasもわかりやすくてよいです。
invoke-item . #現在いるパスをエクスプローラーで開く ii . #iiはinvoke-itemのエイリアス
new-item
new-itemコマントレットを使うと新しくファイルやディレクトリを作成することができます。新しくファイルを作るときは値も含めることができます。そのときは-valueオプションをつけるようにします。
new-item hoge.html #hoge.htmlを作成する new-item ../hoge.html #パス指定をすることもできます。 ni #niはnew-itemのaliasです new-item hoge -type directory #ディレクトリを作成するときは -typeオプションでdirectoryを指定します。 new-item hoge.html -value hogehoge #値を含めるときは-valueオプションを使うようにします。
add-content
add-contentはファイルの上書きを行うことができます。上書きを行いたいファイル名を指定して値を記述します
add-content hoge.html 値 ac hoge.html 値 #acはadd-contentのaliasです
パイプラインによる連携
ワイルドカード指定による削除
ls -file *.txt | rm #.txtを検索して削除
現在のディレクトリのファイルから指定の文字列を含むファイルを検索
gci | sls "hello" #get-childitem | select-string "hello"
サブディレクトリも含め検索する場合は -recurseオプション を使う(リカァース 再帰という意味)。注意点として検索するファイルが大量にある場合はSystem.OutOfMemoryException となり、処理が中断されてしまう。
gci -recurse | sls "hello" #サブフォルダも含め指定の文字列を検索 gci *.txt -recurse | sls "hello" #サブフォルダを含めの拡張子が.txtのファイルから指定の文字列を検索する
その他のテクニック
mkdirで複数のディレクトリを作成
mkdir hoge, fuga
new-itemで複数のファイルを作成
new-item index.html, css/style.css, js/main.js
相対パス表記を使用としたファイルの移動
mv ../*.html ../myhtml #現在いる位置から前の階層のファイルを扱いたいときに有効
mkdirで作成したディレクトリにすぐに移動する。
mkdir hoge cd $$ #$$は「セッションが受け取った最後の行にある最後のトークン」 bashでは$_が使える
環境変数の確認
PowerShellは必ず管理者権限で起動してください
PS> $oldSystemPath = [System.Environment]::GetEnvironmentVariable("Path", "Machine") PS> $oldSystemPath += "実行ファイルがあるPath" PS> [System.Environment]::SetEnvironmentVariable("Path", $oldSystemPath, "Machine")
設定したPathは以下のコマンドで確認します。
[Environment]::GetEnvironmentVariable('PATH', 'Machine').split(";")
これでPowerShellを再起動してもpathが有効になっているはずです。EnvironmentVariableに関しては各自検索をお願いします。
上の方法でPowerShellで環境変数にパスを追加することはできますが、構文を間違えるとシステムの環境変数を消してしまったりすることがあるので個人的にはGUIで環境変数を設定することをおすすめします。
といっても上に書いているコードは正しく動作します。
コメント