나는이 문제가 생각보다 조금 덜 무해하다고 생각하는 것으로 시작하겠습니다.
내가해야 할 일 : 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
이것은 내 문제입니다.이 폴더로 콜론이나 줄 시작을 검색해야합니다. 내가하고 싶은 것은이 두 대괄호 표현 중 하나입니다.
# echo $PATH | grep "[^:]/opt/gnome"
# echo $PATH | grep "[:^]/opt/gnome"
하지만 [^
과 [:
자신의 의미를 가지고있다. 따라서 위의 두 명령이 작동하지 않습니다.
이 두 시나리오를 한 명령으로 grep 할 수있는 방법이 있습니까?
grep '^\(any number of other matches:*:\)*my match\(:.*\)*$'
/opt/gnome:
또는/opt/gnome$
, 당신은 발견 할 것이다/opt/gnome-foo
나/opt/gnome/bar
.