Edytować:
Zakłada się, że najpierw zainstalowałeś wersję, np. Z:
sudo apt install gcc-4.9 g++-4.9
Oryginał:
A tutaj jest jeden linijka dla tych, którzy są leniwi, po prostu zmień zmień numer na końcu na żądaną wersję. Wprowadzi zmianę dla gcc i / lub g ++
ls -la /usr/bin/ | grep -oP "[\S]*(gcc|g\+\+)(-[a-z]+)*[\s]" | xargs bash -c 'for link in ${@:1}; do sudo ln -s -f "/usr/bin/${link}-${0}" "/usr/bin/${link}"; done' 4.9
W tym przykładzie zmieniłem na 4.9
Nie ma sprawdzania błędów i nie ma tego w tym przykładzie, więc możesz chcieć sprawdzić, co zostanie uruchomione przed jego uruchomieniem. Po prostu dodaj echo przed sudo . Dla kompletności podaję również linię kontrolną:
ls -la /usr/bin/ | grep -oP "[\S]*(gcc|g\+\+)(-[a-z]+)*[\s]" | xargs bash -c 'for link in ${@:1}; do echo sudo ln -s -f "/usr/bin/${link}-${0}" "/usr/bin/${link}"; done' 4.9
Wynik kontroli powinien być podobny do:
sudo ln -s -f /usr/bin/g++-4.9 /usr/bin/g++
sudo ln -s -f /usr/bin/gcc-4.9 /usr/bin/gcc
sudo ln -s -f /usr/bin/gcc-ar-4.9 /usr/bin/gcc-ar
sudo ln -s -f /usr/bin/gcc-nm-4.9 /usr/bin/gcc-nm
sudo ln -s -f /usr/bin/gcc-ranlib-4.9 /usr/bin/gcc-ranlib
sudo ln -s -f /usr/bin/x86_64-linux-gnu-g++-4.9 /usr/bin/x86_64-linux-gnu-g++
sudo ln -s -f /usr/bin/x86_64-linux-gnu-gcc-4.9 /usr/bin/x86_64-linux-gnu-gcc
sudo ln -s -f /usr/bin/x86_64-linux-gnu-gcc-ar-4.9 /usr/bin/x86_64-linux-gnu-gcc-ar
sudo ln -s -f /usr/bin/x86_64-linux-gnu-gcc-nm-4.9 /usr/bin/x86_64-linux-gnu-gcc-nm
sudo ln -s -f /usr/bin/x86_64-linux-gnu-gcc-ranlib-4.9 /usr/bin/x86_64-linux-gnu-gcc-ranlib
Możesz sprawdzić wersję później za pomocą:
gcc --version
Częściowo szczegółowe wyjaśnienie:
- ls -la / usr / bin / wyświetla wszystkie pliki w / usr / bin
- | potok (wyślij) dane wyjściowe do następnego polecenia
- grep -oP dopasowuje wyrażenie regularne wyszukiwania dla wiersza. o pokazuje tylko wynik, a nie całą dopasowaną linię. P mówi grepowi, aby używał perl-regex. Nie będę wchodził w wyrażenia regularne tutaj, czytaj dalej, jeśli chcesz.
- po prostu xargs , zbiera wyniki, które są do niego przesyłane i wysyłane do końca. tzn. do polecenia następującego po xargs
- bash dobrze, to bash. C Flaga informuje go używać ciąg jako polecenia. W tym przykładzie zapętla on argumenty wysłane z xargs , pomijając pierwszy (0) argument, w tym przypadku pętla przeskakuje 4,9 . Argument 0 służy do zmiany łącza w pętli.
- ln -s -f s flag sprawia dowiązania symbolicznego, f sił rozłączaniu pierwszym razie potrzeby.