둘 다 f1.txt에서 f2.txt로 데이터를 복사한다는 것을 알고 있지만 실제 차이점은 무엇입니까?
(cp f1.txt f2.txt)
비교:
(less f1.txt > f2.txt)
답변1
차이점은 이것이 cp
인간에게 훨씬 더 명확하다는 것입니다. 이것은 최적화해야 할 첫 번째 사항 중 하나입니다.
이 사용법은 less
매우 모호하며 시도해 보기 전까지는 그 효과도 분명하지 않습니다. 또 다른 대답은 작동하지 않을 것이라고 말합니다. 파일에 특정 문자가 포함되어 있고 스크립트의 일부와 같은 사용자 상호 작용 없이 명령이 작동하도록 하려는 경우입니다. 이 한도는반품모호함(이 동작을 여러 번 보았음에도 불구하고 적어도 나는 그것을 기대하지 않았습니다).
less
속도가 느려지는 이유 중 하나는 데이터를 더 작은 청크로 전송하기 때문입니다. 아래에서 실행하면 1023바이트(1KiB - 1)의 64KiB 청크가 strace
표시됩니다 .less
답변2
less
다음과 같이 설계되었습니다.휴대용 소형 무선 호출기(예를 들어다음 페이지기능)텍스트문서. 따라서 cp
(데이터 복사를 의도한 것보다) 파일 복사에 덜 최적화되어 상당한 오버헤드가 발생하여 성능이 저하될 수 있습니다.
우선, cp
특수 문자(예: 제어)가 포함된 파일을 처리할 때 확인 메시지가 표시되지 않습니다.
귀하의 예에서는 cp
정확하게 실행해야합니다하나프로그램( cp
) .
less
예제 에서 less
명령은 실제로 주어진 파일의 내용만 출력 stdout
하고 쉘은 stdout을 새 파일로 리디렉션하므로 실제로 두 개의 프로그램(출력용 하나, 입력용 하나)을 실행하고 있습니다.
답변3
이 변형은 콘텐츠를 화면에 덤프
cp
하지 않기 때문에 더 빠릅니다 .f1.txt
$ time cp f1.txt f2.txt real 0m0.002s user 0m0.004s sys 0m0.000s $ rm f2.txt $ time less f1.txt > f2.txt real 0m0.009s user 0m0.004s sys 0m0.000s
0.002 대 cp
0.009 less
.
cp
less
값을 기반으로 하는umask
모드로 새 파일을 생성하는 동안 원본 파일의 일부 모드 비트를 저장할 수 있습니다 .
(...) each destination file is created with the mode bits of the corresponding source file, minus the bits set in the umask and minus the set-user-ID and set-group-ID bits.
cp
타이핑 시간이 단축됩니다. 진지하게, 이는 명령줄에서 대부분의 시간을 보낼 때 중요합니다.
답변4
파일 에 대해 묻는 것이므로 사용하면 *.txt
약간의 이점이 있습니다.less
전처리기능 "파일 내용 표시 방법 수정". 고안된 예는 압축 파일의 내용을 출력하는 것입니다.
less compressed.txt.gz > uncompressed.txt
그러나 물론 이것은 에 의해 수행될 수 있고 아마도 수행되어야 합니다 zcat -c compressed.txt.gz > uncompressed.txt
.
그러나 나는 이것이 정규화된 환경을 전처리하는 데 실용적일 것이라고 생각합니다 less
(환경 변수를 확인하십시오 LESSOPEN
. 일반적으로 파일을 가리킵니다 /usr/bin/lesspipe.sh
).이렇게 하면 스크립트/명령이 신경 쓸 필요가 없습니다.분석하다입력 파일을 대상 파일에 쓰기.
나도 이걸 찾았어협회더 많은 사용 사례를 보여줍니다. 위에서 언급한 대로 Linux 환경을 확인하여 /usr/bin/lesspipe.sh
어떤 파일 less
에서 텍스트 정보를 추출할 수 있는지 확인하세요.