다음 명령은 Linux에서 무엇을 합니까?
ls * > file1
현재 디렉토리의 모든 파일 이름을 새 파일로 복사합니까?
답변1
이는 현재 디렉터리와 하위 디렉터리(재귀적이지 않고 현재 디렉터리보다 한 수준 아래)에 있는 모든 파일을 나열한 다음 프로그램의 표준 출력을 ls
다음 이름의 파일로 리디렉션합니다.file1
답변2
현재 디렉토리에 숨겨져 있지 않은 모든 이름을 한 번에 한 줄씩 나열하고 해당 목록을 새 파일에 쓰려면 list
다음을 사용하십시오.
ls >list
그러면 현재 디렉토리의 모든 이름이 나열되고 이름이 기록됩니다 list
. 목록에는 파일 자체의 이름이 포함됩니다 list
.
숨겨진 이름을 포함하려는 경우 ls -a
(또는 항목 을 ls -A
포함하지 않으려는 경우 )를 사용하십시오..
..
일단 생성된 이 파일 은 list
파일 이름에 개행 문자가 포함되어 있지 않다는 것을 보장할 수 없는 한 눈으로 읽는 것 외에는 거의 쓸모가 없습니다.
표시되는 명령에는 실제 명령의 기능을 고려하기 전에 셸이 실행할 여러 부분이 포함되어 있습니다. 이 명령의 최종 결과는 셸의 현재 상태, 현재 디렉터리에 있는 파일의 이름과 유형, 출력 파일과 현재 디렉터리에 대한 권한에 따라 달라집니다.
file1
먼저 리디렉션하는 작업을 수행합니다. 해당 이름의 파일이 이미 존재하는 경우 해당 파일은 잘리고(비워지고) 그렇지 않으면 생성됩니다. 쉘은 나중에 명령의 표준 출력 스트림을 이 파일에 연결하고 모든 명령의 출력은 여기에 저장됩니다.이름이 디렉터리에 해당하거나 , 쓰기 금지된 파일에 해당하거나, 현재 디렉터리에 대한 권한으로 인해 출력 파일을 생성할 수 없는 경우
file1
셸은 오류 메시지를 표시합니다 . 이 경우 해당 시점에서 명령 처리도 중지됩니다.쉘이 명령을 실행하기 전에 모든 인수를 찾아야 합니다(
>
다음 인수file1
는아니요명령의 매개변수ls
). 이 경우 명령줄에는 따옴표가 없는 와일드카드 패턴이 포함되어 있으며*
셸은 이를 패턴과 일치하는 이름으로 바꿉니다. 기본적으로*
현재 디렉터리에 숨겨져 있지 않은 모든 이름이 일치됩니다. 사용자는 패턴이 숨겨진 이름과도 일치하도록 다양한 셸 옵션을 설정하거나 파일 이름 글로빙에 대해 패턴을 전혀 고려하지 않도록 이 설정을 수정할 수 있습니다.패턴이 어떤 이름과도 일치하지 않으면 기본적으로 리터럴
*
문자 로 확장되지 않습니다. 이는 현재 쉘에 설정된 쉘 옵션에 따라 다릅니다. 다른 가능성으로는 패턴이 완전히 제거되거나 쉘이 오류 메시지를 발행하고 그 당시 명령 처리를 중지하는 것이 있습니다.ls
쉘은 최종적으로 현재 정의된 별칭, 쉘 함수 및 내장 유틸리티를 찾습니다. 에 해당하는 이름이 없으면ls
변수 값에 나열된 디렉터리에서 실행 파일을 찾으려고 시도합니다PATH
. 해당 실행 파일이 없으면 셸은 오류 메시지를 표시하고 명령 처리를 중지합니다. 일부 쉘은 대체 철자를 제안하는 다양한 후크를 실행하여 처리를 계속할 수 있습니다.모두 다 아는사용자에게 올바른 패키지 등을 설치하도록 명령하거나 조언합니다.ls
*
명령이 발견되면 가능한 모든 확장(현재 쉘 세션의 설정에 따라)이 인수로 제공되고 명령은 해당 작업을 수행합니다.ls
표준 명령으로 구문 분석한다고 가정하면ls
각 인수가 차례로 나열됩니다. 여기에는 디렉토리가 아닌 이름을 출력하는 작업이 포함됩니다.콘텐츠모든 디렉터리 매개변수. 인수가 디렉토리에 대한 심볼릭 링크인 경우 해당 디렉토리의 내용도 출력됩니다.*
명령줄에서 대시로 시작하는 것으로 구문 분석 되면ls
다음과 같이 해석될 수 있습니다.옵션파일 이름 대신. 이로 인해 명령 결과가 변경될 수 있습니다.파일 이름 글로빙이 꺼졌기 때문에 확장되지 않은 채로 남아 있고
*
현재 디렉터리에 명명된 파일(일반 또는 기타)이 없으면 명령은 표준 오류 스트림에 오류 메시지를 발행합니다.*
ls
*
일치하는 항목이 없기 때문에 제거되고 일치하지 않는 패턴을 제거하도록 셸이 구성된 경우 이 명령ls
은 현재 디렉터리의 내용을 나열합니다(출력이 생성되지 않을 수 있음).첫 번째 단계에서 처리된 리디렉션으로 인해 표준 출력 스트림에서 명령에 의해 생성된 모든 출력은 이 파일에 저장됩니다.