ls -l | grep -v '^d' | sort -g -r -k 5 | head -2
:이 명령을 사용하여 텍스트 파일에 씁니다.
온라인에서 몇 가지 조사를 했는데 이 명령의 의미는 다음과 같습니다.
grep
:문자열에서 특정 패턴을 검색합니다.-v
: 일치하지 않는 모든 행을 찾아서 표시하도록 지시하는 grep 옵션''
:작은 따옴표가 무엇인지 잘 모르겠습니다.^d
: 캐럿은d
grep이 검색하는 패턴인 줄의 시작을 나타냅니다. 이것은 사용될 때 작동합니다ls -l
.sort
텍스트 파일의 내용을 숫자순으로 정렬-g
수치로 비교이것이 정확히 무엇을 의미하는지 잘 모르겠습니다-r
비교 결과를 반전시킵니다.비교의 목적을 알면 더 이해가 될 것입니다.-k 5
열쇠를 시동하다POS1-이것이 무엇을 의미하는지 잘 모르겠습니다. 텍스트 파일의 첫 번째 줄에 있는 5번째 문자에 무슨 일이 일어나고 있다는 의미입니까?head -2
내 텍스트 파일의 처음 두 줄을 표시합니다.
내가 확실하지 않은 부분을 명확히 하는 데 누군가 도움을 줄 수 있나요?
답변1
기술적인 세부 사항은 대부분 알고 있지만 전체적인 의미는 놓치고 있는 것 같습니다.
작은따옴표는 '^d'
파이프를 실행하는 쉘이 정규식(예: '^d'
)의 문자를 "특수"로 처리하는 것을 방지합니다. 예를 들어 $
"줄 끝"을 나타내는 정규식입니다. 쉘은 또한 $
다음 토큰을 문자열에 값이 삽입될 쉘 변수로 표시하는 데 사용됩니다. 예 , 왼쪽의 stdout을 오른쪽의 stdin으로 파이프하는 것에 ^
대한 오래된 동의어 입니다. |
작은따옴표는 ^
특별히 처리되지 않습니다.
의미론은 ls -l
디렉토리로 표시된 출력 라인을 전달하지 않는 것입니다. ls -l
디렉토리와 관련된 행의 첫 번째 문자로 "d"를 사용하십시오.
옵션을 사용 -g
하면 sort
명령이 키 필드에서 숫자 표현을 찾고 문자열이 아닌 숫자 값을 기준으로 정렬합니다. 기본 정렬 순서는 가장 작은 것에서 가장 큰 것 순이므로 이 -r
옵션을 사용하면 가장 큰 것부터 가장 작은 것 순으로 정렬됩니다. -k 5
필드 #5를 키 필드로 사용함을 나타냅니다 . sort
기본적으로 공백 문자(공백, 탭 등)는 텍스트 줄을 "필드"로 나누는 데 사용됩니다. 내 Arch Linux 시스템에서 공백으로 구분된 다섯 번째 필드는 ls -l
파일 크기(바이트)입니다.
여기서 의미는 파일을 크기(바이트 단위)별로 가장 큰 것부터 정렬하는 것입니다.
파일(디렉터리 아님)을 바이트 크기별로 정렬하고 가장 큰 두 파일의 정보를 텍스트 파일에 넣습니다.
편집 관점에서 볼 때 의 출력을 구문 분석하는 것은 일반적으로 잘못된 형식으로 간주됩니다 ls
. 바라보다ls(1)의 출력을 분석하면 안되는 이유. 역사적으로, ls
서로 다른 시스템에서 서로 다른 형식을 사용하면 파일 크기가 필드 5인 스크립트는 다른 시스템에서 이해할 수 없습니다. 그러니 조심해.
답변2
작은따옴표 ''는 문자의 시작과 끝을 나타내는 데 사용됩니다.
-g 플래그는 일반 숫자 값을 기반으로 정렬 비교를 수행합니다.
-r 옵션은 정렬의 기본 출력이 가장 낮은 것부터 가장 높은 것 순으로 출력을 가장 높은 것에서 가장 낮은 것으로 정렬합니다.
텍스트 파일 줄에서 열이나 단어 위치를 정렬하려면 -k 옵션을 사용하세요.