
안에Bash 초보자 가이드(두번째.3.2.1.2. 지역변수) 환경 변수에 없는 모든 지역 변수를 나열해야 하는 예제 명령이 있습니다.
diff set.sorted printenv.sorted | grep "<" | awk '{ print $2 }'
나는 이 부분을 제외하고 이 명령에 대한 모든 것을 이해했다고 믿습니다 *.sorted
. 또한 이 명령은 특히 위에서 언급한 요인으로 인해 내 Bash에서 작동하지 않습니다. 답변은 다음과 같습니다(폴란드어 버전입니다).해당 파일이나 디렉터리가 없습니다.):
diff: set.sorted: Nie ma takiego pliku ani katalogu
diff: printenv.sorted: Nie ma takiego pliku ani katalogu
기본 설치가 거의 변경되지 않은 Ubuntu 14.04를 사용하고 있다는 점은 주목할 가치가 있습니다.
따라서 Bash 셸에서는 이 명령을 구문 분석할 수 없으며, 이 명령을 제공한 튜토리얼 외에는 Google에서 이 명령에 대한 정보를 찾을 수도 없습니다.
이전에 이런 표현을 접한 적이 없었기 때문에 포괄적인 설명에 감사하겠습니다.
답변1
이는 표현식이 아니며 다음과 같이 생성된 파일의 파일 이름입니다.
printenv | sort > printenv.sorted
set | sort > set.sorted
이는 문서에 명확하게 명시되어 있지 않으므로 혼란을 이해할 수 있습니다!
diff
입력을 텍스트로 처리하도록 도와야 할 수도 있습니다 grep
( -a
). 환경 변수에는 입력을 바이너리로 처리하게 하는 값이 포함될 수 있으며 이는 유용한 것을 생성하지 않습니다.
diff -a set.sorted printenv.sorted | grep -a "<" | awk '{ print $2 }'
더 나은 방법은 다음을 comm
사용하여 두 파일을 비교하는 것입니다.
comm -23 set.sorted printenv.sorted
프로세스 대체를 사용하여 파일을 바꿀 수 있습니다.
comm -23 <(set|sort) <(printenv|sort)
파일 생성을 방지하려면