pingでhttp、https、またはwwwで始まる完全なURLを許可します。

pingでhttp、https、またはwwwで始まる完全なURLを許可します。

私はしばしばこの問題に直面しています。 URLがあり、そのアドレスのドメインをpingしたいです。

パラメータとして提供されたURLのドメイン部分のみをpingで使用できるようにするオプションはありますか?

答え1

bashでは、これらすべての変換を実行できます。パラメータ拡張:

pingd() (
  domain=$1

  # allow 'http' or 'www' to match any upper- or lower-case versions
  # (bash version 4.4-alpha and later)
  shopt -s nocasematch

  # strip any leading http(s)
  domain=${domain/#http:\/\/}
  domain=${domain/#https:\/\/}

  # strip any leading user:pass@
  domain=${domain/#*:*@/}

  # strip the trailing slash onwards
  domain=${domain/%\/*/}

  # strip any trailing port
  domain=${domain/%:*/}

  # strip any remaining leading www
  domain=${domain/#www./}

  ping "$domain"
)

はい(echo ping代替を使用してpingデモ):

$ pingd 'http://user:[email protected]:80/some/path/url?data&and#hash'
ping example.com
$ pingd 'http://www.stackexchange.com'
ping stackexchange.com
$ pingd 'http://www.stackexchange.com/help'
ping stackexchange.com
$ pingd 'https://www.stackexchange.com'
ping stackexchange.com
$ pingd 'https://unix.stackexchange.com'
ping unix.stackexchange.com
$ pingd 'https://unix.stackexchange.com/'
ping unix.stackexchange.com
$ pingd 'https://unix.stackexchange.com/questions/428989/allow-full-urls-starting-with-http-https-or-www-in-ping'
ping unix.stackexchange.com
$ pingd 'www.example.com'
ping example.com

答え2

browser.urlbar.trimURLs「http://」なしでドメイン部分を取得する簡単な解決策は、URLのドメイン部分のみを簡単にコピーできるようにFirefoxで設定することです。falseabout:config

pingdただし、次の機能を追加できます~/.bashrc

function pingd {
      ping $(echo "$1" | sed -e "s/[^/]*\/\/\([^@]*@\)\?\([^:/]*\).*/\2/" | sed "s/^www\.//")
}

適用対象:

pingd "http://user:[email protected]:80/some/path/url?data&and#hash"

ping example.com

&URLに引用符がないと機能しません!

関連情報