これらのコマンドを個別に入力すると、目的の結果が得られます。
cat /var/log/apt/history.log | grep 'apt install' > installation.txt
grep -v "nvidia" installation.txt > tmpfile && mv tmpfile installation.txt
awk -F"ll " '{print $2}' installation.txt > temp1
sed -n '/--/!p' temp1 > temp2
sed -n '/-f/!p' temp2 > installation.txt
しかし、これをどのように組み合わせるべきかわかりません...
以下は、最初に何が間違っているかを理解するためにNVIDIA検索なしで実行したいくつかのテストです。
cat /var/log/apt/history.log | grep 'apt install' > file | awk -F"ll " '{print $2}' file > temp | sed -n '/--/!p' temp > file | sed -n '/-f/!p' file > installation.txt
cat /var/log/apt/history.log | grep 'apt install' > file | awk -F"ll " '{print $2}' file | awk -F"ll " '{print $2}' file | sed -n '/--/!p' file | sed -n '/-f/!p' file
cat /var/log/apt/history.log | grep 'apt install' > file | awk -F"ll " '{print $2}' file > temp | sed -n '/--/!p' temp > file | sed -n '/-f/!p' file > installation.txt
これらのタスクをどのように組み合わせるのですか?
インストールされたパッケージをエクスポートし、私が作成したスクリプトにその機能を含めたいと思います。githubで見つけることができます。
内でこのコマンドを使用する必要があります。package.shスクリプト。
答え1
これまでの回答はすべて素晴らしいもので、あなたが望む仕事を扱っています。私の答えは、シェルコマンドの理解(または誤解)に関するものです。
cat /var/log/apt/history.log | grep 'apt install' > file
ファイルを読み込んでcat
出力できます。必要はgrep
なく、ファイル自体を読むことができます。cat
grep
> file | awk
第二に、ステップにそのようなものがありますgrep
。それが何をすべきかわかりません。> file
方法」ファイルに直接出力(ターミナルにダンプする代わりに)「しかし| awk
スーダンは」出力をキャプチャして次に送信します。awk
tee
2つのことを同時に行うことはできないようです。
答え2
すべてが次のように1つのコマンドにまとめられますawk
。
awk -F'll ' '
/apt install/ && !/nvidia|-[-f]/{ print $2 }
' /var/log/apt/history.log >installation.txt
答え3
Commandline:
履歴エントリからインストールされているパッケージ名を抽出(およびフィルタリング)する別の方法は、apt
単一のsed
コマンドを使用することです。
sed -e '/^Commandline: apt install /!d' -e 's///' \
-e '/nvidia/d' -e '/--/d' -e '/-f/d' \
</var/log/apt/history.log >installation.txt
両方の式の最初の行は、最初に文字列で始まらないすべての入力行を削除し、次に文字列で始まる行からその文字列を削除しますCommandline: apt install
。
nvidia
2行目には、3つの文字列または--
1つを含む行を削除する一連の式が含まれています-f
。
3行目には入出力リダイレクトが含まれています。
システムに手動でインストールされたパッケージを一覧表示する別の方法は、次を使用することです。
apt list --installed | sed -e '/automatic/d' -e 's,/.*,,'
...リストから自動依存関係でインストールされているすべてのパッケージを削除すると同時に、インストールされているすべてのパッケージが一覧表示されます(この暗黙のコマンドは、名前にそのatuomatic
文字列を含むすべてのパッケージも削除します)。