fg

Przenosi zadanie z tła na pierwszy plan.

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 + w jobs).
  • fg %1 — przenosi zadanie o numerze 1 (numer zobaczysz w jobs).
  • fg %% lub fg %+ — 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ż po Ctrl+Z w edytorze.
  • fg %2 — wyciąga konkretne zadanie numer 2 z listy jobs na pierwszy plan.
  • sleep 300 & a potem fg %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.
  • jobs a następnie fg %- — 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.