つかわないかもしれないけどPowerShellのメモ書き

スポンサーリンク

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で環境変数を設定することをおすすめします。

といっても上に書いているコードは正しく動作します。

コメント

タイトルとURLをコピーしました