まず、この問題は思ったよりも無害だと思います。
私が必要なこと:PATH環境変数内のフォルダーを確認します。それは最初か後のどこかにあります。そのフォルダが存在することを確認するだけです。
私の問題の例-使用しましょう/opt/gnome
。
シナリオ1:フォルダーがPATHの先頭にない
# echo "$PATH"
/sbin:/usr/sbin:/opt/gnome:/var/opt/gnome
# echo "$PATH" | grep ":/opt/gnome"
/sbin:/usr/sbin:/opt/gnome:/var/opt/gnome
キャッチしないように、grepは十分に具体的である必要があることに注意してください/var/opt/gnome
。したがって、結腸。
シナリオ2:フォルダーがPATHの先頭にあります。
# echo "$PATH"
/opt/gnome:/sbin:/usr/sbin:/var/opt/gnome
# echo "$PATH" | grep "^/opt/gnome"
/opt/gnome:/sbin:/usr/sbin:/var/opt/gnome
これは私の問題です-このフォルダーでコロンまたは行頭を検索する必要があります。私がやりたいのは、次の2つのブラケット式の1つです。
# echo $PATH | grep "[^:]/opt/gnome"
# echo $PATH | grep "[:^]/opt/gnome"
しかし[^
と[:
、自分の意味を持っています。したがって、上記の2つのコマンドは機能しません。
1つのコマンドでこれらの2つのシナリオをgrepできる方法はありますか?
grep '^\(any number of other matches:*:\)*my match\(:.*\)*$'
/opt/gnome:
または/opt/gnome$
、あなたは見つけるでしょう/opt/gnome-foo
か/opt/gnome/bar
。