次の内容を含む単純なファイルがあります。
# programming
python
python-pip
perl
# web
firefox
firefox-i18n-es-es
この例のファイル名はですfile
。私は通常これらのインクルードを使用しますpacman
。この方法でコマンドに渡します。
pacman -Sy --noconfirm $(<file)
私は通常このファイルにコメントを使用しませんが、コメントの必要性を感じ始めました。コメント(#
)がない場合は問題ありませんが、コメントを使用するとインストールするパッケージに抽出されます。
$ pacman -S $(<file)
[sudo] password for user:
error: no se ha encontrado el paquete: #
error: no se ha encontrado el paquete: programming
advertencia: python-3.9.1-2 está actualizado -- reinstalándolo
advertencia: python-pip-20.3.1-1 está actualizado -- reinstalándolo
advertencia: perl-5.32.1-1 está actualizado -- reinstalándolo
error: no se ha encontrado el paquete: #
error: no se ha encontrado el paquete: web
advertencia: firefox-85.0.2-1 está actualizado -- reinstalándolo
advertencia: firefox-i18n-es-es-85.0.2-1 está actualizado -- reinstalándolo
私はstdout
コメントアウトされた行なしでそれをしようとしています:
$ cat file | grep -v '^#'
python
python-pip
perl
firefox
firefox-i18n-es-es
しかし、すべてを組み合わせる方法がわかりません。
$ pacman -S $(< $(cat file | grep -v '^#'))
-bash: $(cat file | grep -v '^#'): redireccionamiento ambiguo (ambiguous redirection)
error: no se especificaron objetivos (use -h para ayuda)
どのように組み合わせることができますか?
ベストアンサー1
pacman -S $(grep -v '^#' file)
たとえば、代わりに次のようpacman -S $(<file)
にコメントなしでファイルで目的の操作を実行するとします。printf
pacman
$ printf '<%s>\n' $(<file)
<#>
<programming>
<python>
<python-pip>
<perl>
<#>
<web>
<firefox>
<firefox-i18n-es-es>
$ printf '<%s>\n' $(grep -v '^#' file)
<python>
<python-pip>
<perl>
<firefox>
<firefox-i18n-es-es>