複数のファイルをカールから別のプログラムにパイプ

複数のファイルをカールから別のプログラムにパイプ

自己署名証明書を持つサーバーから複数のイメージをダウンロードして使用したいですfeh。単一のコマンドでこれを実行できますか?同様curl -sk -b path_to_session_token url1 url2 | feh --fehファイルの 1 つだけを提供する点を除いて。ファイルとして保存しないで、後で削除することをお勧めします。

ベストアンサー1

feh一部の「プロトコル」が実装されていない場合、標準入力に送信された複数の画像を区別する方法はありません。

一時ファイルを使用したくない場合は、ループを使用できます。

for url in 'url1' 'url2'; do
    curl -skb token "$url" | feh -
done

これにより、各画像が順番にダウンロードされ表示されます。欲しいなら「同時に」、少しアンパサンドを追加します。

for url in 'url1' 'url2'; do
    (curl -skb token "$url" | feh - &)
done

すべてを1行に入力するか、関数を定義できます。

$ for url in 'url1' 'url2'; do curl -skb token "$url" | feh -; done
$ for url in 'url1' 'url2'; do (curl -skb token "$url" | feh - &); done

function feh_urls
{
    for url; do
        curl -skb token "$url" | feh -
    done
}

$ feh_urls 'url1' 'url2'

URLやパスに面倒なスペースがある場合がありますので、引用にはご注意ください。(…上記の例でそんなミスをしなかったらと思います…)。関数が必要な場合は、関数に追加することで、.bashrc毎回手動で再定義することなくシェルで使用できます。

完全性を期すために、ここにいくつかの一時ファイルに関連する小さなスクリプト(もちろん関数にすることができます)があり、いくつかの一時ファイルとcurlプロセスfehを保存します。バージョンに応じて代わりにwget使用しました。curlリモートファイル名を正しくインポートできない可能性があります。(もちろん、画像に別の名前を付けることもできます。)

#!/bin/bash

img_dir=$(mktemp -d)
cd $img_dir
wget -q --no-check-certificate --load-cookie token "$@"
feh $img_dir/*
rm -r $img_dir

使用法:

$ ./feh_urls.sh 'url1' 'url2'

ここでの利点は、feh何度も生成されるのではなく、すべての画像を一度にロードできることです(矢印キーを使用してナビゲート)。

また、これに興味がある可能性がありますこのページクッキーの管理についてより多くの情報が必要な場合wget、またはこのページSSL/TLS オプションの追加情報

おすすめ記事