Przy każdym uruchomieniu komputera uruchamiam następujący program:
$ cat start.sh
#! /bin/bash
google-chrome &> /dev/null &
lantern &> /dev/null &
xdg-open . &> /dev/null &
emacs &> /dev/null &
code ~/Programs/ &> /dev/null &
xdg-open ~/Reference/topic_regex.md &> /dev/null &
Uciążliwe &> /dev/null &
... Jak mogę skrócić logikę?
command-line
bash
redirect
background-process
Rachunek różniczkowy
źródło
źródło
Odpowiedzi:
Część
&> /dev/null
oznacza przekierowanie wyjścia. Możesz przekierować wiele poleceń do tego samego pliku, grupując je w blok:Tego samego nie można jednak użyć do uruchomienia poszczególnych poleceń w tle (
&
). Umieszczenie&
po bloku oznaczałoby uruchomienie całego bloku jako pojedynczego skryptu w tle.źródło
&>
składnia jest przestarzała i należy ją zastąpić>/dev/null 2>&1
wiki-dev.bash-hackers.org/scripting/obsolete#!/bin/bash
skrypt w innej powłoce bez uprzedniego sprawdzenia przenośności, to zdecydowanie nie jest to wina Basha, jeśli nie działa.Napisałem funkcję i umieściłem ją w moim,
.bashrc
aby uruchamiała rzeczy odłączone od mojego terminala:... i wtedy:
A ponieważ jestem leniwy, napisałem też skrót do
xdg-open
:Ponieważ
xdg-open
oczekuje dokładnie jednego argumentu, funkcjaxo
iteruje wszystkie podane argumenty i wywołujexdg-open
każdy z nich osobno.Pozwala to na:
źródło
Możesz przekierować wyjście dla wszystkich kolejnych poleceń za pomocą
źródło
Możesz utworzyć pętlę i podać jej polecenia jako argumenty:
Zauważ, że w ten sposób dokładnie tak, jak w przypadku metody podpowłoki z nawiasami klamrowymi, możliwe jest podsumowanie wyników i przekierowanie ich wszystkich naraz.
źródło
Utworzyłem specjalny plik, taki jak
/dev/null
krótsza ścieżka, aby skrócić przekierowanie. Użyłem/n
jako ścieżki nowego pliku:W ten sposób możesz skrócić poszczególne linie, np. Do:
Źródło: Jak utworzyć / dev / null?
źródło