2009-11-04 2 views
4

이 항목은 'LS' BSD 버전이 매개 변수를 사용하는 폴더의 유틸리티에 대해 '-G'리눅스 버전은 매개 변수 '--color'은 ls 버전

를 사용하는 반면 출력, 을 착색하는 것입니다 확인하는 방법 BSD : $ LSCOLORS 리눅스 :

또한 색상을 설정하는 환경 변수는 다른 $ LS_COLORS

하지만 지금 문제는 : 나는 (작은 쉘 스크립트를 사용하여) 설치되어있는 버전을 확인하려면, 그래서 내 .bachrc 파일에 별칭 ls 및 환경을 적절하게 설정할 수 있습니다.

답변

5

는 handiest 방법

if ls --color -d . >/dev/null 2>&1; then 
    GNU_LS=1 
elif ls -G -d . >/dev/null 2>&1; then 
    BSD_LS=1 
else 
    SOLARIS_LS=1 
fi 

나는 내가

1
$ ls --version 
ls (GNU coreutils) 6.10 
Copyright (C) 2008 Free Software Foundation, Inc. 
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> 
This is free software: you are free to change and redistribute it. 
There is NO WARRANTY, to the extent permitted by law. 

Written by Richard Stallman and David MacKenzie. 
+1

을 원하는대로 LS 출력을 조정할 다양한 플랫폼에서 사용 내 l script, 본질적으로이를했습니다에게로 나에게 보인다 MacOSX와 함께 제공되는 버전은 '--version'을 지원하지 않습니다. –

+0

버전이 없으면 알려줄 것입니다. 현재 Mac OSX 상자에 액세스 할 수 없지만'string | grep version'을 사용하면 'ls --version'을 사용하여 얻을 수 없습니다. –

1

아이러니하게도, 킴모 가지 설명 --version 스위치는 초인적 인 작업이 될 수 있습니다 특정 설정을위한 휴대용 구성 파일을 작성

:-) 대부분의 BSD 시스템에서 지원되지 않습니다. 귀하의 .bashrc가 GNU/Linux 및 BSD 시스템에서만 사용된다고 확신하는 경우 ls '에 있지만 다른 스위치에는 존재하지 않는 스위치를 확인할 수 있습니다. 예를 들어, -D은 BSD 머신 (FreeBSD와 Mac OS X)에서 ls가 허용하는 스위치가 아닌 것 같지만 GNU ls는 그렇습니다. 반대로, -P은 BSD에서는 허용되지만 GNU/Linux에서는 허용되지 않습니다. 이것을 알면 두 개의 ls를 구별 할 수 있고 이에 따라 환경 변수를 설정할 수 있습니다.

4

그냥 'ls'를 실행하여 오류가 발생하는지 확인하십시오. 내 Mac에서 :

$ ls --color 1>/dev/null 2>&1 
$ echo $? 
1 

$ ls -G 1>/dev/null 2>&1 
$ echo $? 
0 

반면 나타내는 -G 지원하지만, --color 아닙니다. 나는이 위에서 언급 한 바와 같이

+2

ls --color -d. >/dev/null 2> & 1 && gnu_ls = 1 || bsd_ls = 1 – pixelbeat

+1

어쩌면 어리석은 발언 일 수도 있지만, 현재 디렉토리에 많은 파일이있을 때 오버 헤드가 많이 발생하지 않습니까? 아니면 '-d'옵션을 쓰는 곳인가? – To1ne

+1

@ To1ne - 멍청한, 좋은 전화. 당신은 적당한 arg를 삽입 할 수 있습니다 - 어쩌면 루트 디렉토리? - 발견 될 것이며 많은 파일로 가득차 지 않을 것입니다. 또는 임시 파일을 만들고이를 명시 적으로 삭제 한 다음 제거 할 수 있습니다. 또는 arg로/dev/null을 사용할 수 있습니다. someting은 아무것도 아니라 오히려 거기에 있어야한다고 동의하십시오. –

관련 문제