나는 방금 Linux 명령을 배우기 시작했습니다. >
내가 아는 한, 기호 뒤의 파일에 출력을 쓰기 전에 명령을 실행하는 이 명령을 시도하고 있습니다 . 그러나 내 의견은 다음과 같은 행동과 다른 것 같습니다 time > time.txt
.
nagy@nagy-VirtualBox ~/Dokumentumok/random $ date
2016. márc. 20., vasárnap, 18.14.58 CET
nagy@nagy-VirtualBox ~/Dokumentumok/random $ time
real 0m0.000s
user 0m0.000s
sys 0m0.000s
nagy@nagy-VirtualBox ~/Dokumentumok/random $ date > date.txt
nagy@nagy-VirtualBox ~/Dokumentumok/random $ time > time.txt
real 0m0.000s
user 0m0.000s
sys 0m0.000s
nagy@nagy-VirtualBox ~/Dokumentumok/random $ cat date.txt
2016. márc. 20., vasárnap, 18.15.21 CET
nagy@nagy-VirtualBox ~/Dokumentumok/random $ cat time.txt
nagy@nagy-VirtualBox ~/Dokumentumok/random $
date > date.txt
그래서 예상대로 작동 하는데 >
이상하게도 실패하는 것 같습니다 time > time.txt
. 누구든지 이것을 설명할 수 있나요?
이는 Windows 10에서 호스팅되는 Linux Mint 14.3 가상 머신에서 발생합니다.
답변1
이것시간명령은 사용자가 생각하는 대로 수행되지 않습니다. 실제로 그 목적은 다른 명령 실행 시간을 측정하는 것이므로 인수 없이(명령 시간 지정 없이) 실행하는 것은 별 의미가 없습니다. (분명히 여전히 불만없이 실행됩니다!)
여기서 볼 수 있는 구체적인 효과는 time
통계가 표준 출력이 아닌 표준 오류로 출력된다는 것입니다(타이밍 중인 출력을 방해하지 않기 위해). 표준 출력 리디렉션은 표준 오류 채널에 영향을 주지 않습니다. 이 시도:
time ls 2>time.txt
...표준 출력이 아닌 표준 오류를 리디렉션합니다. 의 출력은 ls
평소대로 표시되지만(stdout은 리디렉션되지 않음) time
stderr 자체의 출력은 파일로 이동하는데, 이것이 바로 여러분이 달성하고자 하는 것입니다.