핑에서 http, https 또는 www로 시작하는 전체 URL을 허용합니다.

핑에서 http, https 또는 www로 시작하는 전체 URL을 허용합니다.

저는 종종 이런 문제에 직면합니다. URL이 있고 해당 주소의 도메인을 핑하고 싶습니다.

매개변수로 제공된 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"

핑 example.com

&URL 에 따옴표가 없으면 작동하지 않습니다 !.

관련 정보