/root/file
가지다
https://stackoverflow.com
https://stackexchange.com
https://reddit.com
하나의 창에서 이 모든 웹사이트를 차례로 열어야 합니다 firefox
. 이게 내 코드야
#!/bin/bash
while read line
do
if pgrep firefox;
then
firefox --new-tab "$line" ;
else
firefox "$line" ;
fi
done < /root/file
나는 nohup
또한 그것을 시도했지만 성공하지 못했습니다.
문제는 ;
이것을 사용하면 쉘 프로세스에 바인딩되어 종료하기 전에 다음 명령을 실행하지 않는다는 것입니다. 또는 firefox
사용하면 쉘에서 분리되어 새 탭 대신 새 창이 열립니다 . 두 경우 모두 각 웹사이트가 새 창에서 열립니다.nohup
&
firefox
부분적인 해결책
xdg-open
셸에서 수동으로 명령을 입력하는 경우 창에서 웹사이트를 엽니다.
$ xdg-open https://stackoverflow.com
$ xdg-open https://stackexchange.com
$ xdg-open https://reddit.com
하지만 스크립트에서는 작동하지 않습니다. 다음 스크립트가 있습니다xdg-open
#!/bin/bash
while read line
do
xdg-open "$line"
done < /root/file
그러나 이번에도 단일 창 대신 다른 창에서 웹사이트가 열립니다.
답변1
문제는 Firefox를 시작하는 데 시간이 걸린다는 것입니다. 백그라운드에서 실행하면 다음에 실행할 때 firefox --new-tab
첫 번째 인스턴스가 아직 완전히 시작되지 않았으며 다른 탭을 열 준비가 되지 않았습니다. 첫 번째 Firefox 인스턴스를 시작한 후 잠시 기다려야 합니다.
#!/bin/bash
while read line
do
if pgrep -u $USER firefox > /dev/null
then
firefox --new-tab "$line" &
else
firefox "$line" &
sleep 3 # You may want to tune this value
fi < /dev/null
done < /root/file
이 구성을 사용하면 루프의 모든 프로그램이 의 내용을 먹을 수 있으며 stdin
이로 인해 루프가 조기에 종료될 수 있습니다. 그래서 예방 조치로 < /dev/null
해당 섹션을 추가했습니다.if
답변2
필요한 것은 다음과 같습니다.
firefox https://stackoverflow.com https://stackexchange.com https://reddit.com
모질라에 따르면문서
-URL URL
브라우저 옵션에 따라 새 탭이나 창에서 URL을 엽니다. -url은 생략 가능합니다. 공백으로 구분하여 여러 URL을 나열할 수 있습니다. Firefox 및 SeaMonkey에만 해당됩니다.
따라서 스크립트를 다음과 같이 작성할 수 있습니다.
#!/bin/bash
firefox $(cat /root/file | tr '\n' ' ') &