script 명령어 사용시의 질문(수정. 질문추가)

corner의 이미지

script라는 명령어를 이용하여 화면에 출력되는 모든것을 저장하려고
아래와 같이 a.sh라는 shell script를 만들었습니다.

==========================
> cat a.sh
#!/bin/sh

script -a result.log

ls -l

exit
==========================

그런데, script라는 명령어를 실행하는 순간 새로운 shell을 fork 하기 때문에
이후 실행문인 ls -l 이 실행되지 않고 사용자 입력을 기다리게 되더군요.
위와 같이 하나의 shell script내에서 script 명령을 이용하여 실행과정 및 실행결과를 저장할 수 있는 방법이 있나요?
script 명령이 아니라도 다른 방법이 있으면 알려주세요.
미리 감사합니다.

====================================================
2007/05/28 추가

아래 답변 달아주신 분들 감사합니다.
여러가지 답변 감사합니다.

위에서 질문에 ls -l 이라는건 예로서 적은것이구요.
사실은 script 명령 실행 후
복잡한 여러가지 로직이 들어갈 예정이라...
위에서 알려주신 여러가지 방법들이 가능할지 모르겠네요.
결론적으로는 아래와 같은 프로그램을 만들려고 하는 것입니다.

-------------------------

> cat a.sh

script -a result.log

로직 A........
.........
.........
.........

exit <- script 명령을 빠져나가는 exit

로직 B.........
.........
.........
.........

script -a result.log

로직 A........
.........
.........
.........

exit <- script 명령을 빠져나가는 exit

로직 C........
.........
.........
.........

-------------------------

중간 중간 script 명령을 사용했다고 빠져나왔다가
다시 script 명령을 사용하는 이유는 필요한 부분에서만 log를 쌓기 위한 것이며,
출력 결과를 화면으로도 보고 파일로도 저장하려고 하는 것입니다.
이럴 경우에는 어떻게 해야 할까요?

yundorri의 이미지

#!/bin/bash
 
script -c 'ls -l' result.log
 
exit 0

또는,

#!/bin/bash
 
ls -l >> result.log 2>&1
 
exit 0

eseo의 이미지

tee 로는 부족한가요?

꼭 script 를 쓴다면...
2% 부족한 감은 있지만, 이정도로 쓰셔도 될것 같네요.

$ cat a.sh
#!/bin/sh
script -a script.log  < file
 
$ cat file
echo "ls -l"
ls -l
exit
 
$ a.sh

---
배려하는 마음을 갖자.

---
배려하는 마음을 갖자.

Hyun의 이미지

아님 요런것도...

[parkhw00@miro ~]$ cat a.sh
#!/bin/sh
 
exec 1>result.log
 
ls -l
 
exit
[parkhw00@miro ~]$ 
yundorri의 이미지

좀.. 내용이 제가 이해하기에는 어렵네요. 이해력의 OTL
그냥, 보안에 문제가 안된다면 코드를 볼 수 있을까요

jg의 이미지

한 파일에 코드를 적으시려고 한다면
here documents를 사용하시면 됩니다.

#!/bin/sh
 
script -a test.log <<EndOfScript
ls -l
exit
EndOfScript

$Myoungjin_JEON=@@=qw^rekcaH lreP rehtonA tsuJ^;$|++;{$i=$like=pop@@;unshift@@,$i;$~=18-length$i;print"\r[","~"x abs,(scalar reverse$i),"~"x($~-abs),"]"and select$good,$day,$mate,1/$~for 0..$~,-$~+1..-1;redo}