Bash - operacje na wyniku polecenia cut


(macios4) #1

Zrobiłem skrypt który powinien wyłączać grupę usług.

systemd-analyze blame | grep journal | cut -c 18-60 -exec sudo systemctl disable {} \;

Jednak jest jakiś błąd. Przepuszczenie filtrowanego wyniku przez potok grep a następnie cut (delimiter eliminuje wyświetlenie czasu uruchamiania usług pozostawiając jedynie listę która następnie powinna być wysłana do polecenia wyłączenia tychże usług) nie realizuje się.

Wynik:

cut: błędna opcja -- 'e'
Napisz „cut --help” dla uzyskania informacji.

Chodzi więc o to, aby najlepiej w jednym poleceniu można było wyłączyć wszystkie te usługi, które byłyby przefiltrowane. Jakby to ugryźć?


(nintyfan) #2

W systemach GNU długie parametry podaje się po dwóch myślnikach

Czyli nie -exec, a --exec


(macios4) #3

Niestety nie pomaga. Ten sam komunikat:

cut: nieznana opcja '--exec'
Napisz „cut --help” dla uzyskania informacji.

(enedil) #4

Może dlatego, że cut nie posiada opcji --exec?

Opakuj to w jakąś pętlę.


(macios4) #5

właśnie to ma być jakoby druga część polecenia a nie składowa cut, jeśli jest mozliwośc rozłożenia tego w skrypcie to jak najbardziej, tylko jak to zrobić? Tak, aby cały wynik (czyli przefiltrowane usługi) przepuścić potem poprzez polecenie systemctl disable


(nintyfan) #6
systemd-analyze blame | grep journal | cut -c 18-60 | xargs -L 1 sudo systemctl disable

(macios4) #7

Dzięki:) teraz działa. Ja tu kombinuje cuda a nie wiedziałem nawet o xargs:)