Przekierowanie wyjścia i spacje


9

Mam paranoję na ten temat, ale mam nadzieję, że to proste pytanie:

Czy jest jakaś różnica między

cat file1 | egrep -oP "[Mm]y string" > /home/user/file.txt

i

cat file1|egrep -oP "[Mm]y string">/home/user/file.txt

tzn. czy ma to znaczenie, jeśli mam spacje wypełniające znaki potoku (|) i przekierowania (>)? Jestem naprawdę paranoikiem, że mając spacje, spacje w jakiś sposób trafią do pliku wyjściowego, kiedy tego nie chcę. Czy ktoś może to wyjaśnić? (Jeśli to ma znaczenie, użyj Ubuntu 12 / bash).


Jedyne różnice to: a) kosmetyczność i b) wygoda podczas edycji wiersza poleceń w bash - np. „Słowo” jest oddzielone spacjami, więc bez spacji wokoło |lub >wpisanie w Ctrl-Wcelu usunięcia poprzedniego „słowa” spowoduje usunięcie więcej, niż prawdopodobnie chciałeś. Tak samo dla naciśnięcia klawiszy kursora-przemieszczania jak Esc-fi Esc-bitp
CAS

Odpowiedzi:


8

W wierszu poleceń powłoki spacje bez cudzysłowu służą jedynie do ograniczania słów podczas analizowania poleceń. Nie są one przekazywane, ani w argumentach, które widzi polecenie, ani w standardowym strumieniu wejściowym.


Czy na pewno nie ma luki w zabezpieczeniach związanej z używaniem spacji po operatorach? Trudno mi go teraz odtworzyć, ale często zdarza się, że złośliwy użytkownik może zmienić zamierzoną operację, używając pliku takiego jak „nazwa_pliku”, gdy zamierzonym plikiem jest „nazwa_pliku”.
CrippledTable
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.