다음 별칭을 어떻게 개선할 수 있나요?

다음 별칭을 어떻게 개선할 수 있나요?

로그 디렉터리에 있는 less -F바이너리의 최신 업데이트된 로그 파일(이름이 다음으로 시작하는 로그 생성)에 대해 명령을 실행하고 싶습니다. xtest*다음 별칭을 만들 수 있었지만 csh이를 개선할 수 있다고 생각합니다.

find $LOG/tr/`date +"%Y%m%d"` -name xtest\* -print | xargs ls -rt | tail -1 | xargs less -F

답변1

cshell에서 작업하고 있으므로 별칭은 한 줄에만 정의해야 한다는 것을 알고 있습니다. 따라서 표시된 별칭은 일반 줄 길이를 초과합니다. 이것은 당신을 위한 cshell입니다.

alias latest_log 'find "$LOG/tr/`date +%Y%m%d`" -name "xtest*" -printf "%Ts\t%p\0" | sort -z -k 1,1nr -k 2 | head -z -n 1 | cut -z -f2 | xargs -0 less -F'

무엇을 하고 있는지 보여주기 위해 조각으로 나눕니다.

  • find이 명령은 숫자 타임스탬프 및 파일 이름과 함께 Null로 구분된 파일 이름을 인쇄합니다. 명령의 따옴표는 따옴표 없이도 잘 실행될 수 date있으므로 제거되었으며 date별칭에서 불필요하게 따옴표를 사용하게 됩니다.
  • 그런 다음 null( \0)로 구분된 이중 그룹(타임스탬프 TAB 파일 이름)이 첫 번째 필드부터 시작하여 두 번째 필드로 끝나는 역순으로 숫자로 정렬됩니다. 명령 -z의 옵션은 sort기본 개행 문자 대신 널 문자 주위에서 입력 블록을 분리하는 것입니다.
  • 올바른 순서로 정렬되면 명령을 통해 최신 타임스탬프가 있는 파일 이름을 보유하는 최상위 블록을 꺼냅니다 head -z -n 1.
  • 그런 다음 해당 작업이 이제 완료되어 더 이상 필요하지 않으므로 명령 cut이 타임스탬프를 인계받아 삭제합니다. 이 -z옵션을 사용하여 null로 구분된 입력을 처리합니다 cut. 이 옵션은 다음 파이프로 -f2던져야 합니다 .filename + \0
  • xargs -0널로 구분된 파일 이름을 읽고 less -F명령줄에 파일 이름을 전달합니다.

관련 정보