カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

パイプラインとxargs

Linuxでコマンドによるオペレーションを行う中で便利な機能をご紹介します。

パイプライン

パイプラインは略してパイプとも呼ばれていて「|」のことです。
日本語キーボードでShiftキーを押しながら¥マークのキーを押すと入力される記号です。

パイプラインを使うと最初のコマンドの結果(標準出力)を次のコマンドの入力(標準入力)として渡すことができます。

例えば、CRONデーモンが現在動作しているかどうかを確認する

$ ps aux | grep cron

出力結果

USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root        2389  0.0  0.1 224384  2144 ?        Ss   Feb21   0:04 /usr/sbin/crond -n
user     3212367  0.0  0.1 222316  2072 pts/0    S+   06:19   0:00 grep --color=auto cron

以上のようにpsコマンドの出力結果をgrepコマンドに渡し、「cron」という文字列を検索した結果が表示されています。

先頭行は本来表示されませんが、分かりやすくするため表示しています。
先頭行も表示したい場合は次のように入力すると先頭行も表示してくれます。

$ ps aux | grep -E "^USER|cron"

同じようにcatコマンドの出力結果などを検索して表示するのにも役立ちます。

xargs

次にxargsコマンドについてです。
先ほどのパイプラインだけだと最初のコマンドの結果(標準出力)を次のコマンドの入力(標準入力)としてしか渡すことができません。
最初のコマンドの結果(標準出力)を次のコマンドの引数として渡すためにはxargsコマンドを使います。

よく使われるのはfindコマンドとの組み合わせではないでしょうか。

例えば、findコマンドで検索したログファイルを全て削除する

find ./ -name "*.log" | xargs rm -f

findコマンドで検索された結果のファイルリストがrmコマンドに引数として渡されて、該当ファイルが全て削除されるという結果になります。

他に、findで検索したファイルのパーミッションを一括で変更するなど

find ./ -name "*.sh" | xargs chmod 777

以上のようにパイプラインとxargsコマンドをうまく使えば、コマンド操作がはかどるのではないかと思います。

7 views

Node.jsバージョン管理ツール「fnm」の導入

プロジェクト毎にNode.jsのバージョンを管理したいときに便利なツール「fnm(Fast Node Manager)」の導入方法をご紹介します。
他にも同様のツールがありますが、導入のしやすさと定期的にメンテナンスされているという点で「fnm」を選択しました。

https://github.com/Schniz/fnm

Chocolateyをインストール

まずはfnmの導入に必要なパッケージマネージャー「Chocolatey」をインストール
https://chocolatey.org/install

PowerShellを管理者として実行し、以下のコマンドを実行

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

インストールできたか確認してみましょう。

choco -v
> 2.4.3

fnmのインストール

早速fnmをインストールしてみます。

choco install fnm -y

プロジェクトごとに指定されたNode.jsのバージョンを使うというPowerShellで実行するコマンドをPowerShellの起動スクリプトに追記します。
起動スクリプトが存在しない場合は新規で作成します。

fnm env --use-on-cd | Out-String | Invoke-Expression

起動スクリプトのパスは$profileと入力すると表示されます。
例)Windows10 PowerShell5.1の場合

> $profile
C:\Users\{username}\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

正常にインストールが完了したか確認

fnm -V
> fnm 1.38.1

又、wingetというWindowsのパッケージマネージャーを使ってもインストールすることができます。
https://learn.microsoft.com/ja-jp/windows/package-manager/

fnmのインストール

winget install Schniz.fnm

公式サイトにもwinget+fnmを使ったインストール方法が記載されています。2025/03/10時点
https://nodejs.org/ja/download

ただし、Windows PowerShellでwingetコマンドを実行するとターミナルが文字化けしてしまうことがあるようです。

これはwingetを実行している間、フォントが勝手に変更されてしまうことが原因のようです。
予めデフォルトのフォントをMSゴシック以外のフォントに設定しておけば回避できます。

又、Windows Terminalでの実行であればPowerShellでも文字化けしないようです。

https://apps.microsoft.com/detail/9n0dx20hk701?hl=ja-JP&gl=JP

wingetでインストールした場合もPowerShellの起動スクリプトについてはChocolateyでインストールして時と同様の作業が必要です。

続きを読む…»

122 views

VSCodeでpackage.jsonファイルで問題があると言われたときの対処方法

VSCodeで次のようなスキーマがロードできませんという問題報告が出たときの対処方法メモです。

Problems loading reference 'https://json.schemastore.org/package': Unable to load schema from 'https://json.schemastore.org/package': Downloading schemas is disabled through setting 'json.schemaDownload.enable'.

VSCodeの設定でJSONと検索するとJSON › Schema Download: Enableという設定があるので、こちらにチェックを入れて有効にします。
もしくはsettings.jsonに以下のように追加します。

{
    "json.schemaDownload.enable": true,
}
264 views

特定の日時を指定してコミットする

あまり使うことはないかもしれませんが、メモ代わりに投稿しておきます。

特定の日時を指定してコミットするには--dateオプションを使って日時を指定します。

git commit -m "コミットメッセージ" --date="Jan 1 00:00:00 2024 +0900"
682 views

MacにNode.jsをインストール

パッケージマネージャー「Homebrew」を使ってNode.jsをインストールします。
macOS(またはLinux)用パッケージマネージャー – Homebrew

インストールには次のコマンドをターミナルで実行します。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

/opt/homebrew以下にインストールされます。
インストールが完了したら出力されたメッセージの最後の方に環境変数PATHへの追加方法が記載されています。

==> Next steps:
- Run these two commands in your terminal to add Homebrew to your PATH:
    (echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> /Users/(username)/.zprofile
    eval "$(/opt/homebrew/bin/brew shellenv)"

指示に従って2行のコマンドを実行します。

(echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> /Users/(username)/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"

これでインストールは完了です。
バージョンを表示して動作を確認しましょう。

brew -v

続いて、nodeをインストールします。
次のコマンドを実行。

brew install node

完了したらNode.jsとついでにnpmのバージョンを表示して確認しましょう。

node -v
npm -v

以上でnodeのインストールは完了です。

804 views