저는 종종 이런 문제에 직면합니다. 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에서 설정하는 것입니다 .false
about: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 에 따옴표가 없으면 작동하지 않습니다 !
.