Komenda fg (od foreground) to wbudowane polecenie powłoki (bash, zsh) służące do zarządzania zadaniami. Wyciąga zadanie działające w tle — albo wstrzymane skrótem Ctrl+Z, albo uruchomione z & — z powrotem na pierwszy plan, czyli daje mu znów kontrolę nad terminalem. Innymi słowy: zatrzymałeś vim przez Ctrl+Z, zrobiłeś szybkiego git status, a teraz wracasz do edytora bez zamykania go. To właśnie robi fg.
Składnia i najważniejsze opcje
Podstawowa składnia: fg [%jobspec]
fg nie ma klasycznych flag — przyjmuje tzw. job spec, czyli wskaźnik zadania. Najważniejsze formy:
fg— bez argumentu przenosi na pierwszy plan zadanie bieżące (oznaczane+wjobs).fg %1— przenosi zadanie o numerze 1 (numer zobaczysz wjobs).fg %%lubfg %+— zadanie bieżące, czyli ostatnio wstrzymane lub uruchomione w tle.fg %-— zadanie poprzednie (przedostatnie na liście).fg %nazwa— zadanie, którego polecenie zaczyna się od podanego ciągu, np.fg %vim.fg %?ciąg— zadanie, którego polecenie zawiera podany ciąg gdziekolwiek.
Przykłady użycia
fg— wraca do ostatnio wstrzymanego programu, np. tuż poCtrl+Zw edytorze.fg %2— wyciąga konkretne zadanie numer 2 z listyjobsna pierwszy plan.sleep 300 &a potemfg %1— uruchamiasz długie zadanie w tle, a później wciągasz je z powrotem, żeby je obserwować lub przerwać.fg %vim— wraca do edytora po nazwie, gdy nie pamiętasz numeru zadania.jobsa następniefg %-— najpierw sprawdzasz listę, potem przywracasz poprzednie zadanie.
Częste błędy i pułapki
Najczęstszy komunikat to fg: no current job albo fg: %1: no such job — oznacza, że żadne zadanie nie istnieje lub podałeś zły numer. Sprawdź najpierw jobs. Pamiętaj, że zadania są związane z konkretną sesją powłoki: po zamknięciu terminala znikają, więc fg nie przywróci procesu z innego okna ani z innego użytkownika. To nie jest narzędzie do zarządzania dowolnymi procesami w systemie — do tego masz ps i kill z PID-em. W skryptach fg zwykle nie zadziała, bo job control jest domyślnie wyłączony w trybie nieinteraktywnym. Drobna pułapka składni: znak procentu jest opcjonalny przy numerze (fg 1 bywa akceptowane), ale przy nazwie już nie — fg %vim tak, fg vim nie.
Powiązane komendy: bg (wznawia zadanie w tle), jobs (lista zadań), Ctrl+Z (wstrzymanie), & (start w tle), kill, disown oraz nohup.