부분적인 해결책

부분적인 해결책

/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' ' ') &

관련 정보