ビルトインコマンドの無効とfc command

Shell Environement Set-up 3/N

公開日: 2021-02-20
更新日: 2024-04-23

  Table of Contents

zshにおけるdisableコマンドとは?

  • disableコマンドは,zshのビルトインコマンドを無効にするコマンド
  • bashにおいてはenable -nに相当する
1
% disable [command]

再び有効化したい場合は,

1
% enable [command]

名前の競合

統計処理用プログラミング言語 R をいれており, % alias r=R と事前に定義した場面を考えます. このとき, rとCLIに入力するとRが立ち上がりますが,

1
% disable r

と実施したあとでも, rとCLIに入力するとRが立ち上がります.zshには rというbuild-in commandが存在し, built-in commandの方を優先的にdisableしているためです.

  • ビルトインコマンドと同じ名前の実行可能ファイル(外部コマンド)が存在する場合,コマンド名だけを指定してdisableコマンドを実行した場合、ビルトインコマンドを優先する
  • 外部コマンドを意識的に実行したい場合は,パス付きで指定する

zsh built-in commandとしてのr

  • zshにおけるbuilt-in commandとしてのrは直前のコマンドを再度実行するfc -e -コマンドと同義
  • !!fc -e -コマンドと同義
  • fcはコマンドライン入力のヒストリーを編集して実行するコマンド
  • ヒストリーを一覧表示したり,特定のヒストリーを表示したりすることもできる

Example

r!!fc -e -コマンドと同義なので

1
2
3
4
5
6
7
8
9
10
11
% echo kirby
kirby
% r
echo kirby
kirby
% !!
echo kirby
kirby
% fc -e -
echo kirby
kirby

となる.

ヒストリーの一部を置き換えて実行: fc -e -

  • fc -e - 置換前=置換後で「置換前」で指定した文字列を「置換後」で置き換えてから実行することができます
1
2
3
4
5
# 対象一つだけを実行
% fc -e - 置換前=置換後 対象

# 対象開始から対象終了までの範囲を実行
% fc -e - 置換前=置換後 対象開始 対象終了

Exmaple


1
2
3
4
24815  git init
24816  touch .gitignore
24817  code .gitignore
24818  mkdir sandbox

という履歴が存在するとします..gitignoreではなくてREADME.mdへ変更して実行したい場合

1
% fc -e - .gitignore=README.md 24815 24818

とCLIに入力することでヒストリーの一部を以下のように置き換えて,カレントディレクトリにて連続実行することができます.

1
2
3
4
git init
touch README.md
code README.md
mkdir sandbox

References



Share Buttons
Share on:

Feature Tags
Leave a Comment
(注意:GitHub Accountが必要となります)