Pytanie Co robi bash -c?


Wykonałem następujący samouczek: http://davidtsadler.com/archives/2012/06/03/how-to-install-magento-on-ubuntu/

W pewnym momencie kazał mi wykonać następujące polecenie:

sudo bash -c "cat >> /etc/apache2/sites-available/magento-store.com <<EOF
<VirtualHost *:80>

  ServerName  localhost.magento-store.com
  ServerAlias www.localhost.magento-store.com

  DocumentRoot /home/dev/public_html/magento-store.com/public

  LogLevel warn
  ErrorLog  /home/dev/public_html/magento-store.com/log/error.log
  CustomLog /home/dev/public_html/magento-store.com/log/access.log combined

</VirtualHost>
EOF"

Chciałbym, żeby ktoś mi powiedział, co to polecenie zrobiło i jak mogę to anulować, zrestartowałem komputer i wygląda na to, że nadal działa. Zajrzałem do .bashrc i .profile, ale nie znalazłem tego w środku.


18
2017-12-31 13:48


pochodzenie


gnu.org/software/bash/manual/bashref.html#Invoking-Bash - Oliver Charlesworth
Polecenie powinno zostać uruchomione i wykonane natychmiast. Aby go cofnąć, musisz edytować plik magento-store.com plik. - Flimm


Odpowiedzi:


Cytując z man bash:

   -c string If the -c option is present,  then  commands  are  read  from
             string.   If  there  are arguments after the string, they are
             assigned to the positional parameters, starting with $0.

Polecenie zacytowane przez ciebie byś dodać tekst w heredoc (tj. tekst w VirtualHost tag) do pliku /etc/apache2/sites-available/magento-store.com.


20
2017-12-31 13:51



Jak to jest inne bez -c ? - tjt263
@ tjt263 praktycznie rzecz biorąc, nie używając -c w takich przypadkach da ci godziny debugowania próbując uciec różnych znaków cudzysłowu na różne sposoby i rzeczy wciąż nie działają. - labyrinth
Należy także pamiętać, że komendy wywoływane z bash -c będzie zmuszony do singlethreadingu. na przykład: "bash -c 'ffmpeg -threads 4 -i input.mov output.mp4'" wywoła ffmpeg, ale może użyć tylko jednego rdzenia, nawet jeśli podałeś parametr "thread" - Christian
@Christian dlaczego? to wydaje się bardzo nierozsądne. - user60561
@Christian To zachowanie nie jest udokumentowane i nie pasuje do faktycznego zachowania: i.imgur.com/ZeFAkDf.png - user60561


man bash mówi, że opcja -c wykonuje polecenia z łańcucha; to znaczy. wszystko wewnątrz cytatów. Jeśli chodzi o twoje drugie pytanie, nie rozumiem dokładnie tego, o co prosisz.


2
2017-12-31 13:53





sprawdź strony man na twoim komputerze lub w internecie, na przykład ten.

Zacytować:

-c string
     If the -c option is present, then commands are read from string. 
     If there are arguments after the string, they are assigned to the positional 
     parameters, starting with $0.

2
2017-12-31 13:55