Lunatic Sol

IT Tips

ls にてディレクトリファイル以外を表示する方法

2010-03-24 17:08:25 | bat/shell/PowerShell
ls を使って、ディレクトリファイルは除外した形で、その他のファイルのみを表示したい場合、どのようなコマンドを実行すればいいのでしょうか。

man ページや ls --help などを見てみましたが、わかりませんでした。

ということで、パイプしてフィルタする方法にしてみました。

例) /etc ディレクトリに含まれるディレクトリ以外を一覧表示する方法

ls -ap /etc|grep -v -e \/$



この方法であれば . で始まるファイルや実行可能ファイルも表示できるようです。もっと賢い方法があるような気がしますが、やりたいことは実現できたので、これで良いこととします。

特定のプロセスの消費ファイルディスクリプタの数をチェックする

2010-03-16 03:18:23 | bat/shell/PowerShell
特定のプロセスの消費ファイルディスクリプタの数をチェックしたい場合、以下のようなコマンドが使えるようです。

ls /proc/`ps -ef|grep myprocess|grep -v grep|awk '{print $2}'`/fd|wc -l


1秒ごとの推移をみたい場合には、以下のようにするといいです。

while true;do ls /proc/`ps -ef|grep myprocess|grep -v grep|awk '{print $2}'`/fd|wc -l;sleep 1;done

tar での展開 (extract) を任意のディレクトリにする方法

2010-02-08 16:38:01 | bat/shell/PowerShell
hoge.tar.gz などのファイルは、
  tar xvfz hoge.tar.gz


のようにして、カレントに展開していましたが、いつも任意のディレクトリに展開できればなぁと思っていました。そういう時には、無理に
  pushd /tmp/;tar xvfz ~/hoge.tar.gz;popd


のようにして pushd と popd を組み合わせてたりしました。
ですが、ちゃんとマニュアル読めば -C というオプションがあることがわかるんですよね。

ということで、こういう風に今後は実行したいと思います。
  tar xvfz hoge.tar.gz -C /tmp/

シェルで連番処理

2009-07-07 12:39:15 | bat/shell/PowerShell
連番で何か処理をしたい場合があると思います。例えば test1 から test10 までのディレクトリを作成したり、ファイルを作成したり、などなど。

そんなときに便利なのを発見

http://code.nanigac.com/source/view/140

個人的には、これがよかったです。

    for i in {1..10};do echo $i;done

ちなみに、bat で似たようなことをやりたい場合は、for を使えば行けますね。

    FOR /L %i IN (1,1,10) DO echo %i

PowerShell のプロファイルを起動時に読み込む方法

2009-04-02 21:29:40 | bat/shell/PowerShell
ひとつ忘れていました。

PowerShell の $Profile を読み込むためには、実行ポリシーを変更しておく必要があります。

まずは、現在の ExecutionPolicy を確認します。

    Get-ExecutionPolicy

これを RemoteSigned か Unrestricted にしてあげる必要があるので、Restricted など設定が異なる場合には変更します。

    Set-ExecutionPolicy Unrestricted

これで、次回 PowerShell 起動時には $Profile の設定が読み込まれます。

PowerShell エリアス - grep

2009-04-02 21:11:46 | bat/shell/PowerShell
Shell を扱う上で、grep は重要な機能になります。

PowerShell では grep という名称では標準装備されていませんが、Select-String が実装されておりこれが grep になります。

今までスクリプトを扱っておらず、PowerShell が最初になる人は Select-String を覚えればいいかもしれませんが、grep になれている人はこれが使える方が便利です。

ということでエリアスを追加します。

    Set-Alias grep Select-String

これを PowerShell の $Profile に定義しておくことで、起動時に読み込まれ、いつでも grep が使えるようになります。

PowerShell のプロファイルを編集

2009-04-02 20:54:08 | bat/shell/PowerShell
PowerShell のプロファイルは $Profile にて指定されているパスの ps1 ファイルになりますが、このファイルを実際に編集する場合、新規ファイルとして作成する必要があります。

その場合


    New-Item -path $Profile -ItemType file -Force


というコマンドを使用します。



PS C:\> New-Item -path $Profile -ItemType file -Force


    Directory: Microsoft.PowerShell.Core\FileSystem::C:\Documents and Settings\user\My Documents\WindowsPower
    Shell


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2009/04/02     20:54          0 Microsoft.PowerShell_profile.ps1



ファイルが実際に作成されたかどうかを確認する場合には、Test-Path を使用します。True が戻れば存在=成功です。

    PS C:\>Test-Path $Profile
   True


そして、notepad を使って編集します。

    PS C:\>notepad $Profile

メモ帳にブランクのファイルが表示されますので、この中にエリアスなどを記述しておくと、PowerShell 起動時に読み込まれるようになります。

PowerShell のプロファイル

2009-04-02 20:49:06 | bat/shell/PowerShell
PowerShell には起動時に読み込まれるプロファイルというものがあります。

Bash でいうところの .bashrc やら .bash_profile といったところでしょうか。

このプロファイルは PowerShell 上で $Profile として実行してあげると確認できます。


    PS C:\>$Profile
    PS C:\Documents and Settings\user\My Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1