PowerShell備忘録(コマンド編)

バージョン確認

$psversiontable

文字列検索:Select-String

grep的なもの。主なオプション引数は以下。

  • -Path:ファイルのパスを指定する。 省略可能
  • -Pattern:検索するテキストを文字列または正規表現で指定する
  • -NotMatch:指定したパターンに一致しないファイルを検索する
  • -CaseSensitive:大文字と小文字を区別しない。省略時は区別される。/iでもOK。
Select-String C:\Work\*.* -Pattern "abc"
#Work配下から、 abcという文字列を含ファイル検索

ただし、検索対象にファイルではなくフォルダが存在する場合エラーが起きる可能性があるので、汎用的には以下が実用的。

Get-ChildItem "[フォルダパス]" -Recurse -File | Select-String -Pattern "[SearchText]" -List

Windows従来のfindstrでも可。

findstr /S /I test *.txt 文字列
  • /S:再帰検索(サブディレクトリも対象)
  • /I:大文字・小文字を区別しない
  • test:検索文字列
  • *.txt:対象ファイル

※ デフォルトで部分一致検索となる

カレントディレクトリ

Get-Location
pwd

コンソールクリア

文字がたまってきて履歴をリセットしたいときに。

cls

パイプライン構文

LinuxやTypescript系言語でもおなじみのパイプライン構文が使える。

(コマンド1) | (コマンド2)
ipconfig | Select-String -Pattern "IPv4"  #ipconfigからIPv4の情報のみ表示
Write-Output @(2,4,6,8,10,12) | Select-String 2 #2と12のみが出力される

入力中の文字列クリア

Esc

アプリケーションの実行

フルパスでeclipseをオプション付きで起動する例

& "c:\xxx\eclipse.exe" -clean -debug -consoleLog

インシデント

スクリプト実行時エラー:用語が認識されない

用語'●●'は、コマンドレット、関数、スクリプトファイル、または操作可能なブログラムの名前として認識されません

ファイル実行する際、パワーシェルでは、冒頭に「.\」を付ける必要がある。

Select-String を実行しようとしたらエラー

Select-String .\* -Pattern "SearchText"

ファイル xxx を読み取れませんでした:パス ‘xxx’ へのアクセスが拒否されました。

特定のパス配下を再帰的に検索する場合、フォルダに対しても Select-String を実行してしまいエラーとなる。

対象をファイルだけに限定して実行する。

Get-ChildItem "[フォルダパス]" -Recurse -File | Select-String -Pattern "[SearchText]" -List

全文を表示したい

ファイルの中身が長いと、一定の長さで『:』が表示され、以降は表示されない。

もちろんEnterを押して、続きの文字を見ることはできるのだが、全文を見たいときは不便。

そんなときはOut-Hostを追加する。

処理内容 | Out-Host

出力がテーブル形式やリスト形式なら、Format-Tableを使用する。

処理内容 | Format-Table -AutoSize

文字化けする

PowerShellのバージョンによってはUTF8に対応しておらず、日本語が以下のように文字化けする。

<E7><92><B0><E5><A2><83><E8><A8><AD><E5><AE><9A>

バージョン5以前はUTF-8非対応。バージョン7以上をインストールする。※コマンドラインでのアップグレードはできないので、公式サイトからDLする。

もしくは、Git Bashを使用する。

エラーログを標準出力したい

npm run build > sample.log 2>&1
  • 1 は標準出力を表す
  • 2 はエラー出力を現す

エラー出力も標準出力にまとめて出力するという意味

コメント

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