つまり、これを 1 行で実行するということです。
ubu@ubuntu:~$ locate filename.sh
/home/ubu/path/to/filename.sh
ubu@ubuntu:~$ gedit /home/ubu/path/to/filename.sh
適切な配管方法が分からないようです
答え1
シンプルだが限定的な解決策
filename.sh
システムに名前の付いたファイルしかない場合は、これでうまくいく可能性が高いです
gedit "$(locate filename.sh)"
または、Hennes が指摘しているように、ファイル名が PATH 内にある場合:
gedit "$(which filename.sh)"
これら両方には別の問題があります。シェルはコマンド置換から末尾の改行を削除します。$(...)
そのため、ファイル名が改行で終わる異常なケースでは、これは失敗します。
一般的な解決策
これらの問題を回避するには、次の操作を試してください。
locate -0 "filename.sh" | xargs --null gedit
gedit
これにより、見つかったファイルごとにタブが開きます。
この-0
オプションは、locate
ファイル名の null 区切りリストを返すように指示します。この--null
オプションは、xargs
入力を null 区切りリストとして解釈するように指示します。したがって、これは改行やその他の難しい文字を含むファイル名でも機能します。
便宜上、シェル関数を作成できます。
lge() { locate -0 "$@" | xargs --null gedit; }
次のように使用します。lge filename.sh
関数定義を永続的にするには、 に配置します~/.bashrc
。