Saya akan mulai dengan mengatakan bahwa saya pikir masalah ini sedikit tidak bersalah daripada kedengarannya.
Yang perlu saya lakukan: periksa folder dalam variabel lingkungan PATH. Itu bisa di awal atau di suatu tempat setelah. Saya hanya perlu memverifikasi bahwa folder itu ada di sana.
Contoh masalah saya - mari kita gunakan /opt/gnome
.
SKENARIO 1: folder bukan di awal PATH
# echo "$PATH"
/sbin:/usr/sbin:/opt/gnome:/var/opt/gnome
# echo "$PATH" | grep ":/opt/gnome"
/sbin:/usr/sbin:/opt/gnome:/var/opt/gnome
Perhatikan bahwa grep harus cukup spesifik sehingga tidak menangkap /var/opt/gnome
. Karena itu usus besar.
SKENARIO 2: folder berada di awal PATH.
# echo "$PATH"
/opt/gnome:/sbin:/usr/sbin:/var/opt/gnome
# echo "$PATH" | grep "^/opt/gnome"
/opt/gnome:/sbin:/usr/sbin:/var/opt/gnome
Ini masalah saya - saya perlu mencari titik dua atau titik awal dengan folder ini. Apa yang ingin saya lakukan adalah salah satu dari dua ungkapan braket ini:
# echo $PATH | grep "[^:]/opt/gnome"
# echo $PATH | grep "[:^]/opt/gnome"
TAPI [^
dan [:
punya artinya sendiri. Karena itu, kedua perintah di atas tidak berfungsi.
Apakah ada cara saya bisa memahami dua skenario ini dalam satu perintah?
grep '^\(any number of other matches:*:\)*my match\(:.*\)*$'
/opt/gnome:
atau/opt/gnome$
, Anda akan menemukan/opt/gnome-foo
atau/opt/gnome/bar
.