TLDR: スクリプト コマンドは、$SHELL の値に従ってサブシェルをフォークして作成し、このセッションからのテキストを記録します。
Ctrl + Dまたはexit、script.sh ファイルの実行が終了した後に終了scriptする必要があります。
scriptマニュアルページから( http://man7.org/linux/man-pages/man1/script.1.html )
script は、端末に出力されるすべてのタイプスクリプトを作成します。
分岐したシェルが終了すると (Bourne シェルを終了するための control-D (sh(1))、C シェルの終了、ログアウト、または control-d (ignoreeof が設定されていない場合)、csh(1)) でスクリプトが終了します。 )。
したがって、そうする場合
#!/bin/bash
script -a record.txt
mkdir folder
ls
次に、個別にフォークされたサブシェルにいるため、mkdir コマンドは実行されません。ctrl + D、 またはを使用して終了するとexit、mkdirが自動的に実行され、必要なフォルダが作成されます。
ただし、ls は元のシェルで実行され、スクリプトによって作成されたサブシェルでは実行されないため、 command の出力、または コマンドとコマンドlsの発行はrecord.txt ファイルに記録されません。mkdirls