2013-08-10 1 views
1

리눅스 시스템에서 실행되는 C 프로그램을 작성 중입니다. 프로그램은 일부 Linux 명령을 쉘에 전달하고 txt 파일로 결과를 수신합니다.C-Linux- "역사"명령을 리눅스 셸에 전달하는 방법은 무엇입니까?

system("last >> last.txt"); 
system("ls -s >>ls.txt"); 

그러나 누군가가 이것이 명령이 아니라 빌드 인 것을 말하면서 "기록"으로 실패했습니다.

다른 사람들과 마찬가지로 "기록"을 전달할 수있는 방법이 있습니까?

감사합니다.

답변

0

사용 된 쉘에 따라 내역 파일을 볼 수 있습니다.

예 : ~/.bash_history 또는 ~/.zsh_history. , 그래서 aternative 사용 "/ .bash_history 파일 고양이 ~"

1

"역사"에 해당됩니다

system("cat ~/.bash_history"); 
+0

고마워요! 이 형식의 출력은 타임 스탬프를 추가 할 여지가 있습니까? –

+1

@JiayiGuo .bash_history 파일에 기록한 내용 만 인쇄됩니다. 출력에 시간 소인을 표시하려면 HISTTIMEFORMAT 변수를 앞에 설정해야합니다. HISTTIMEFORMAT을 설정 한 후에 만 ​​새로 기록 된 명령에 시간 소인이 첨부 될 수 있습니다. – lulyon

2

것은 또한 실제로 호출 할 수있을 내장 명령 쉘을 사용하여 :

system("bash -e \"history >> history.txt\""); 

"bash"을 선호하는 쉘로 변경하십시오.

+0

이것이 효과가 있습니까? – devnull

+1

신경 쓰지 마세요. 나는'HISTFILE =/dev/null'을 설정하지 않았기 때문에 그것을 설정했다 : +1 – devnull

관련 문제