grep 디렉토리 경고를 전역적으로 억제합니다.

grep 디렉토리 경고를 전역적으로 억제합니다.

몇 가지 명백한 용도로,grep이 명령은 검색 이름이 디렉터리라는 여러 불만 사항을 출력할 수 있습니다. 일반적으로 다음 명령을 사용하면 발생하는 여러 "디렉터리입니다" 경고에 유의하세요.텍스트*

예를 들어:

/etc/webmin # grep "log=1" * 
grep: cluster-webmin: Is a directory
config:log=1
grep: cpan: Is a directory
grep: man: Is a directory
miniserv.conf:log=1
miniserv.conf:syslog=1
grep: mon: Is a directory

"-s" 옵션을 사용하여 디렉토리에 대한 이러한 경고를 억제할 수 있다는 것을 알고 있습니다(그리고 stderr는 nul로 리디렉션될 수 있지만 이는 더 나쁩니다). 하지만 우리가 기억해야 하는 추가 상용구이므로 마음에 들지 않습니다.모든시간도 억압받았어모두경고는 단지 디렉토리에 관한 것이 아닙니다.

전 세계적으로 이 잘못된 경고를 영구적으로 억제할 수 있는 방법이 있습니까? 저는 Debian과 Cygwin에 가장 관심이 많습니다.

답변1

디렉토리의 내용을 처리하려는 방법에 따라

  • grep -d recurse이 작업을 수행하거나(재귀적으로 디렉터리를 처리), 또는
  • grep -d skip(디렉토리와 해당 내용은 무시합니다).

~/.profile 또는 ~/.bashrc(한 명의 사용자) 또는 /etc/profile 또는 /etc/bashrc(모든 사용자)에 추가하여 이를 자동화할 수 있습니다.

alias grep="/bin/grep -d skip" 

답변2

.profile또는 다음에서 별칭을 설정할 수 있습니다 .bashrc.

alias grep='grep -s'

글로벌의 경우 다음을 수행 /etc/profile하거나/etc/bashrc

답변3

완전성을 위해 GNU grep은 이라는 환경 변수를 지원합니다 GREP_OPTIONS. ~에서man grep:

GREP_OPTIONS
      This variable specifies default options to be placed in front of
      any explicit options.  As  this  causes  problems  when  writing
      portable  scripts,  this  feature  will  be  removed in a future
      release of grep, and grep warns if it is used.   Please  use  an
      alias or script instead.

이 작업을 수행할 수 있지만 export GREP_OPTIONS=-s매뉴얼 페이지에 나와 있듯이 이 작업도 스크립트에 전달되어 의도치 않게 문제가 발생할 수 있습니다.

GREP_OPTIONS=--color=always예를 들어, 한때 소프트웨어 구축을 위한 지저분한 스크립트가 있었습니다 . configure디버깅하는 것은 고통스럽고 문제가 어디에 있는지 명확하지 않습니다.

관련 정보