以下は、すべてを実行する方法で端末に貼り付けたい非常に単純なコードスニペットの例です。
sudo apt update
sudo apt upgrade
sudo apt -y install build-essential
sudo apt -y install git
sudo apt -y install libxml2-dev # required for some tools using xml files
sudo apt autoremove
残念ながら、build-essentialがあらかじめインストールされていない場合は、後続の行だけがsudo apt -y install build-essential
スキップされます。 gitがインストールされていない場合も同様です。 git行で実行され、残りはスキップされます。
なぜこれが起こるのですか?スクリプトファイルを生成し、bashを介して実行せずにこの問題を解決する方法はありますか?
答え1
それでもsudoの資格情報キャッシュタイムアウト内にあると仮定すると(不明な場合はsudo -v
コードスニペットを実行する前に更新してください)、apt(-get)は非常に豊富なコンソールアプリケーションなので問題が発生します。何でも尋ねると、標準入力を消費します-y
。
サブシェルで完全なコードスニペットを実行することでこの問題を解決できます。
プロンプトで最初にaと入力し、(
コードを貼り付けてから閉じる文を入力し、)
Enterキーを押します。
今行く時間です。
コードスニペットは貼り付けた後すぐには実行されません。代わりに、コマンドラインで「キューに追加」され、閉じ括弧を待ちます。
apt-get autoremove
(PS:システムによっては、代わりに使用する必要があり、使用する必要がapt autoremove
あります。)-y
update
upgrade
答え2
sudo apt upgrade
コマンド間に十分な時間が経過すると、sudo apt install -y build-essentials
SUDOはパスワードの再入力を求めるメッセージを表示します。
コンソールにテキストを貼り付けるため、次の行ではパスワードのSUDOプロンプトをSTDINとして受け入れます。行がパスワードと一致しない場合、認証は失敗し、行は実行されませんbuild-essentials
。