“ls”명령에 대한 --group-directories-first 옵션


13

우분투 16.04와 OS X를 모두 사용하고 있습니다.

alias ll='ls -Flh --group-directories-first'

이것은 내 bashrc의 별명이지만 --group-directories-firstHomebrew로 bash를 업그레이드 한 후 OS X에서 옵션이 잘못되었습니다. 내 우분투 데스크탑에서도 여전히 그 옵션을 사용할 수 있습니다.

어떤 버전의 Bash에서 옵션이 지원되지 않습니까? OS X 컴퓨터의 Bash 버전에GNU bash, Version 4.4.12(1)-release (x86_64-apple-darwin15.6.0)

--group-directories-first옵션을 다시 사용하고 싶습니다 . 그것을 달성 할 수있는 방법이 있습니까?


1
gnu correutils ls또는 macOS 를 사용하고 ls있습니까? 당신은 다른 것을 시도 했습니까?
bmike

답변:


12

대신 coreutilsHomebrew 및 별명 ll으로 설치하십시오 gls -Flh --group-directories-first.

  • brew install coreutils GNU Coreutils 가 설치되지 않은 경우 설치합니다.
  • 사용 alias ll='gls -Flh --group-directories-first'에서 .bashrc. 두 운영 체제에서
    동일한 .bashrc파일 을 사용하려면 아래를 참조하십시오.

우분투에서는 lsGNU Coreutils가 제공 하며 우분투에는 항상 있습니다. 이것이 우분투에서 ls지원 --group-directories-first되는 이유 입니다. 아마 여러분은 ls이전에 macOS 에서 GNU Coreutils 버전을 사용 했었을 것 입니다. Homebrew는 설치 gls되었지만 ls여러 가지 방법 으로 사용할 수 있습니다 .

lsBash 내장이 아닌 외부 명령입니다. 다른 버전이나 Bash 빌드를 사용해도 영향을 미치지 않습니다. Homebrew를 사용하여 Bash를 업그레이드했을 때 무슨 일이 있었는지 잘 모르겠습니다. Bash보다 더 많이 업그레이드되었을 수도 있습니다. ls대체 된 전역 구성 파일에 쉘 기능 또는 별명이 정의되어있을 수 있습니다. 어쩌면 당신은ls지적gls하고 덮어 쓴상징적 인 링크가 있었을 것입니다. 어쩌면 당신은 여전히 ​​그런 것을 가지고 있지만 당신의$PATH변경되었습니다. 무슨 일이 있었 GNU Coreutils ls는을 지원하며--group-directories-first ( bmike가 제안한 것처럼) 전환하면문제가 해결됩니다.

어떤 이유로 .bashrc두 시스템에서 정확히 동일한 파일 을 사용하려는 경우 몇 가지 가능한 방법이 있습니다. glsUbuntu 시스템에서 심볼릭 링크, 래퍼 스크립트, 쉘 기능 또는 Bash 별칭 확장이 비 재귀 적이므로 쉘 별칭을 만들 수 있습니다. 하지만 대신 제안 OS를 사용하고 검사 에를 .bashrc. ll각 시스템에 서로 다른 별명이 정의되어 있지만 이 방법은 자체 문서화라는 이점이 있습니다. 당신의 .bashrc의지는 1 년 또는 한 달 안에 당신에게 의미가 있습니다.

if [ "$OSTYPE" == linux-gnu ]; then  # Is this the Ubuntu system?
    alias ll='ls -Flh --group-directories-first'
else
    alias ll='gls -Flh --group-directories-first'
fi

또는 별칭을 ls사용하지 않더라도 일반적으로 Coreutils 실행을 선호하는 경우 다음과 같이 별칭을 ll만들 수 있습니다 .lsgls

if [ "$OSTYPE" != linux-gnu ]; then  # Is this the macOS system?
    alias ls=gls
fi

alias ll='ls -Flh --group-directories-first'

( 이 스크립트의 이전 버전에서 실수발견 한 것에 대해 soroushjp 에 감사드립니다 .)


'GLS --color -h --group 디렉토리 - 첫 번째'별칭 LL = 'LS -al'= 별칭 LS :이 대답과 사용을 따라
user2875289

1
마지막 섹션 "또는 일반적으로 실행하는 것을 선호하는 경우 ..."라고 생각 하면 조건을 다음 "$OSTYPE" != linux-gnu 과 같이 변경해야합니다. Linux GNU 시스템 이 아닌 경우 lsgls 로 별칭 지정하려는 경우 당신은 Mac에 있습니다).
soroushjp

1
@ soroushjp 감사합니다-당신이 맞아요. (나는 그것을 고쳤다; 대기에 대해 미안하다!)
Eliah Kagan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.