パックマン入力にコメントを追加せずにファイルを渡すために標準出力を正しくリダイレ​​クトする方法

パックマン入力にコメントを追加せずにファイルを渡すために標準出力を正しくリダイレ​​クトする方法

次の内容を含む単純なファイルがあります。

# 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)にコメントなしでファイルで目的の操作を実行するとします。printfpacman

$ 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>

おすすめ記事