![Tor 런처 명령 분석](https://linux55.com/image/178982/Tor%20%EB%9F%B0%EC%B2%98%20%EB%AA%85%EB%A0%B9%20%EB%B6%84%EC%84%9D.png)
저는 스크립팅에 관심이 많은 초보자인데 이제 다음 명령(Tor 런처에서)의 각 부분을 실행하는 것이 무엇인지 궁금합니다.
sh -c '"/home/user/tor-browser_en-US/Browser/start-tor-browser" --detach || ([ ! -x "/home/user/tor-browser_en-US/Browser/start-tor-browser" ] && "$(dirname "$*")"/Browser/start-tor-browser --detach)' dummy %k
여기에서 찾았습니다.https://askubuntu.com/questions/831847/what-is-the-sh-c-command저것:
"
sh
이 프로그램을sh
인터프리터라고 하며, 이-c
플래그는 프로그램이 해석한 대로 다음 명령이 실행된다는 의미입니다."
그런 다음 스크립트 경로가 있으며 start-tor-browser
( --detach
제가 올바르게 이해한 경우) 터미널에서 Tor 브라우저 프로세스를 분리합니다.
여기에서 몇 가지 정보를 찾았습니다 --detach
.https://superuser.com/questions/178587/how-do-i-detach-a-process-from-terminal-entirely
내가 아는 한 그것은 -x
"실행 가능하게 만드세요"를 의미 &&
하고 "다른 명령도 실행합니다"를 의미하며 !
"강제로 실행하시겠습니까?"를 의미할 수도 있습니다.
dummy %k
그렇다면 마지막에 현재 디렉토리(또는 파일)를 가리키는 심볼릭 링크가 있습니까?
왜 큰따옴표가 있는지 이해가 되지 않습니다: ' "
, 이 이상한 ||
이중 괄호 ([
및 this "$(dirname "$*")
.
이 코드를 더 잘 이해했다면 알려주시기 바랍니다. :)
감사합니다!
답변1
명령의 첫 번째 부분이 작동하는 방식을 올바르게 설명했습니다. 나는 당신의 질문에 대답하려고 노력할 것입니다.
||
논리적 OR이므로 명령줄의 나머지 부분은 새 명령줄에서 실행됩니다.서브쉘(이것이 (...)
의미합니다.) 첫 번째 명령이 상태 >0으로 종료되는 경우에만 실패합니다.
[ ! -x file ]
파일이 있는지 확인하십시오.아니요(!는 부정을 의미) 실행 가능합니다(또는 존재하지 않습니다).
&&
논리 AND이므로 조건이 true(홈 디렉터리에 exec 파일이 없음)이면 명령줄 실행이 계속됩니다.