cshell 별칭: cshell 별칭에 중첩된 작은따옴표(')를 사용하는 방법

cshell 별칭: cshell 별칭에 중첩된 작은따옴표(')를 사용하는 방법

나는 cshell에서 다음 별칭을 시도하고 있습니다.

alias sll 'ls -l \!* | grep -oE '[^ ]+$' | paste -s | xargs ls -l'

이 CSH 표현에 대한 변수 이름이 잘못되었습니다.

을 사용하면 \$별칭이 오류 없이 설정됩니다. 하지만 이 별칭을 사용하면 다음과 같은 결과를 얻게 됩니다.grep: Invalid regular expression

첨부된:

  1. 이 별칭의 목적은 ls -Ll <filenames>파일의 전체 경로를 통해 기호 링크 참조를 활성화하는 것입니다.
  2. 별칭의 RHS 부분은 독립 실행형 명령으로 잘 작동합니다.
  3. 대신 egrep (grep -E) 을 시도했습니다 awk '{print $NF}'. 그럼에도 불구하고 CSH는 오류: NF 정의되지 않은 변수를 제공합니다.

답변1

작은따옴표를 확인하세요. 작은따옴표는 마술처럼 중첩되지 않습니다.

alias sll 'ls -l \!* | grep -oE '\''[^ ]+$'\'' | xargs ls -ld --'

이는 다음과 같은 여러 가지 이유로 여전히 결함이 있습니다.

  • 이후 [^ ]공백이 포함된 파일 또는 링크 대상 이름에는 작동하지 않습니다.
  • 목록을 행 목록으로 처리하면 개행 문자가 포함된 파일/링크 대상 이름에 대해서는 작동하지 않습니다.
  • 때문에 xargs아포스트로피, 백슬래시, 큰따옴표 및 기타 유형의 공백이 포함된 파일/대상 이름에는 작동하지 않습니다.
  • 심볼릭 링크의 경우비교적경로를 대상으로 지정하면 현재 디렉터리의 심볼릭 링크에 대해서만 작동합니다. 두 번째 디렉터리에 전달하는 내용은 현재 디렉터리에 대한 상대 경로이고 심볼릭 링크는 심볼릭 링크 파일의 경로를 기준으로 확인되기 때문입니다 ( 링크 ls가 있는 경우). a/b/c -> d, 즉 현재 디렉터리 a/b/d가 아닌 ).d
  • 출력의 첫 번째 줄로 인해 total <n>잘못된 오류 메시지가 표시됩니다 ls.
  • 심볼릭 링크에 대한 심볼릭 링크의 경우 동일한 결과를 제공하지 않습니다 ls -lL(아마도 이것이 원하는 것일 수도 있음).

이를 통해 zsh다음을 수행할 수 있습니다.

ls -ld -- *(:A)

수정자는 :A기호 링크를 표준 ​​절대 경로로 확장합니다.

GNU 시스템과 준동등함:

readlink -fz -- * | xargs -r0 ls -ld --

관련 정보