Materiały dla uczniów na temat wiersza poleceń

Wiersz poleceń to sposób na kontrolowanie komputera bez graficznego interfejsu użytkownika. W ramach tej części nauczysz się podstawowych poleceń umożliwiających korzystanie z komputera.

Podsumowanie

  • Uczniowie będą poruszać się po komputerze za pomocą poleceń.
  • Uczniowie będą tworzyć, przenosić, kopiować oraz usuwać pliki i foldery.

Co to jest wiersz poleceń?

W większości przypadków użytkownicy korzystają z komputera w graficznym interfejsie użytkownika (GUI). W przypadku interfejsów użytkownika obsługiwane są zwykle mysz lub dotykowe klawisze, które pozwalają manipulować oknami za pomocą ikon, przycisków, pasków przewijania itp.

Wiersz polecenia to alternatywny widok komputera. Zwany czasem "powłoką", "terminalem", "bash" lub "interfejsem tekstowym":

  • Sposób interakcji z programem komputerowym, w którym użytkownik wpisuje polecenia, np.:
open README.txt
  • Nawigacja i obsługa komputera bez użycia myszy.
  • Niedrastyczny sposób tworzenia, odczytywania, aktualizowania, działania i usuwania plików oraz katalogów, np.:
mv README.txt readme.txt

GUI i wiersz poleceń wyglądają tak samo. Są to różne sposoby interakcji z komputerem.

Kiedy używamy wiersza poleceń?

Interfejsy wiersza poleceń często są preferowane przez programistów:

  • Dają bardziej zwięzły sposób kontroli programu lub systemu operacyjnego. Dlaczego? Wszystko dzieje się w jednym oknie, a w praktyce jest to mniej pracochłonne niż znajdowanie i manipulowanie przedmiotami za pomocą myszy.
  • Dzięki nim można łatwo kontrolować opcje sterowania poleceniem. Dlaczego? W interfejsie GUI dostępne są bardzo mało opcji. W wierszu poleceń dostępne są setki poleceń, a kilka znaków używanych w poleceniu może ułatwić wykonywanie wielu czynności, np.
  • ls podstawowych plików listy
  • ls -a Wyświetl listę wszystkich plików, także tych, które są zwykle ukryte
  • ls -l Długa lista z informacjami o poszczególnych plikach
  • ls -R Cyklicznie, wymień zawartość katalogów
  • ls -la Długa lista wszystkich plików
  • Ułatwiają one wykonywanie wielu czynności naraz.
for i in *.png; do pngtogif $i `echo $i | sed s/png/gif/`; done
  • Pozwalają zaprogramować system operacyjny (programy powłoki), np. bardzo prosty program powłoki, który służy do modyfikowania obrazów o nazwach kończących się na .png.

Wiersz polecenia w działaniu

Elementy wiersza poleceń

Wszystkie polecenia składają się z 3 części:

  • Polecenie (lub narzędzie) zawsze jest na początku.
  • Flagi są opcjonalne w zależności od używanego narzędzia. Flagi zaczynają się zawsze od - (minus).
  • Argumenty to rzeczy, na podstawie których polecenie ma działać, lub niezbędne informacje. Często nazwy plików.

Kopia w ramkach

Kontekst & cel

Wiersz poleceń to sposób na sterowanie komputera bez myszy lub graficznego interfejsu użytkownika. Zanim firma Apple Computer zaczęła tworzyć maszyny z ikonami i folderami, które można było klikać, jedynym sposobem interakcji z komputerem było używanie wiersza poleceń.

Jako programiści skorzystaliśmy z wiersza poleceń, ponieważ jest ono szybsze i bardziej wydajne, że GUI nie wymaga poświęcania czasu na klikanie wielu innych elementów. Wiersz polecenia umożliwia wykonywanie niemal wszystkich czynności wykonywanych podczas pracy na komputerze.

Ponieważ terminal jest dużo prostszym interfejsem, ma znaczną przewagę nad graficznym interfejsem użytkownika, gdy wymaga się zdalnego połączenia z komputerem przez link sieciowy. Deweloperzy często to robią – na przykład w podróży.

Podczas tej lekcji nauczysz się podstawowych poleceń umożliwiających korzystanie z komputera: tworzenie plików i katalogów, przenoszenie folderów, zmienianie katalogów oraz wyświetlanie zawartości folderu.

Cele szkolenia

Uczniowie będą mogli:

  • Poruszaj się po plikach i folderach za pomocą terminala
  • Wymienianie zawartości folderu
  • Tworzenie plików i folderów za pomocą wiersza poleceń
  • Przenoszenie plików i folderów
  • Kopiowanie plików i folderów
  • Usuwanie plików i folderów

Pierwsze kroki

Otwieranie terminala

Ramkowanie i przeznaczenie sekcji

Terminal udostępnia interfejs wiersza poleceń (CLI) systemowi operacyjnemu. Dzięki temu możesz bezpośrednio wysyłać instrukcje tekstowe na komputerze.

Aby to zrobić, musimy uruchomić terminal w systemie, którego używasz.

Gdy terminal zostanie uruchomiony, rozpocznie się w katalogu domowym komputera (w zależności od nazwy komputera). Katalog domowy jest oznaczony tyldą ~.

Omawiając świat w terminalu, katalogi są takie same jak foldery (możemy je czasem nazywać katalogami).

Zmiana katalogów

Ramkowanie i przeznaczenie sekcji

Aby porozmawiać z komputerem w Terminalu i powiedzieć nam, co chcemy zrobić, musimy używać wspólnego języka. Wiersz polecenia rozpoznaje polecenia napisane w języku skryptów bash. Polecenia to akronimy lub skróty słów angielskich.

Gdy poruszasz się po terminalu, ważne jest, by wiedzieć, gdzie jesteś (Twoja lokalizacja też się zmienia – jeśli chcesz gdzieś dotrzeć, musisz najpierw sprawdzić swoją bieżącą lokalizację).

# See your current location - abbreviation for 'print working directory'
pwd

Wyświetlenie listy dostępnych plików i katalogów

W Twoim katalogu roboczym prawdopodobnie jest kilka plików, do których masz dostęp. Ogólnie rzecz biorąc, korzystamy z sygnałów wizualnych, takich jak ikony, które informują nas, co jest dostępne. Trudno było jednak poruszać się po komputerze, gdyby tylko zgadywać, gdzie znajdują się pliki i foldery. W wierszu poleceń użyjemy określonego polecenia, by wyświetlić listę elementów, do których mamy dostęp w dowolnym katalogu roboczym lub lokalizacji.

Aby sprawdzić, które pliki lub foldery znajdują się w naszym katalogu, użyj polecenia ls (skrótu do listy), by wyświetlić listę treści.

# See files and folders in current location - abbreviation for 'list'
ls

Zmień katalog roboczy

Jeśli potrzebujesz dostępu do pliku lub katalogu, którego nie ma na liście, możesz zmienić katalog roboczy, aby ułatwić sobie dostęp.

Składnia, która informuje wiersz poleceń o przeniesieniu Cię do nowego katalogu (zwanego też folderem), poprzedza cd (w tym samym wierszu) ścieżką prowadzącą do nowego folderu.

Jeśli przejdziesz do katalogu, który znajduje się obecnie w katalogu, w którym się obecnie znajdujesz (czyli w podfolderze swojego katalogu roboczego), użyj polecenia cd, a po nim nazwy folderu.

# Change your current working directory (current location)
# Abbreviation for 'change directory'
cd Documents

Możesz też korzystać z katalogu głównego ~.

# Add a `~/` to begin from the home directory.
cd ~/Downloads

Jeśli katalogi zostały przez Ciebie zmienione, ale chcesz wrócić do katalogu głównego, musisz wrócić bezpośrednio na stronę główną za pomocą ~ lub .., by przejść o jeden poziom wyżej.

# Option 1: navigate directly to the home directory
cd ~

# Option 2: navigate back one level
cd ..

Pamiętaj, że atrybut cd .. zwiększa się tylko o jeden poziom, więc jeśli do tej pory udało Ci się zmienić katalogi trzykrotnie (niższe o poziomy), musisz użyć usługi cd .. trzykrotnie, by dotrzeć do domu, ale wystarczy, że użyjesz cd ~ tylko raz.

Miniwyzwania

  • Użyj narzędzia ls, aby zobaczyć zawartość bieżącego katalogu.
  • Wróć do katalogu głównego i użyj folderu ls, by wyświetlić zawartość folderu głównego.
  • Wybierz nazwę jednego z folderów w katalogu głównym i przejdź do tego nowego folderu.
  • Użyj polecenia listy, aby zobaczyć, co jest w środku.

Wskazówka: autouzupełnianie: tab

Kiedy zmieniasz katalogi za pomocą polecenia cd, pojedyncze literówki uniemożliwią jego prawidłowe wykonanie. Używanie klucza tab spowoduje jednak automatyczne uzupełnianie nazw wszystkich dostępnych katalogów znajdujących się w bieżącym katalogu. Dlatego zamiast wpisywać cd Documents, po prostu wpisz cd Do, a następnie naciśnij tab, a terminal automatycznie uzupełni polecenie cd Documents/ (konieczne jest użycie / na końcu, ale informuje, że miejsce docelowe to katalog).

Dzięki temu autouzupełnianie nie tylko oszczędza czas potrzebny do działania, ale i dostarcza cenne informacje, gdy nie działa. Jeśli przycisk karty nie jest automatycznie uzupełniany, prawdopodobnie wystąpił jeden z trzech najczęstszych problemów:

  1. Katalog, do którego chcesz przejść, nie jest dostępny z bieżącego katalogu roboczego.
  2. Istnieją 2 katalogi o podobnych nazwach początkowych (np. Documents i Downloads), ale nie podano wystarczającej ilości informacji, by można było wskazać autouzupełnianie. Naciśnij jeszcze raz tab, by zobaczyć listę katalogów, które mogą pasować do wpisanych haseł. Następnie wpisz trochę więcej (w takim stopniu, aby był tylko jeden odpowiednik) i jeszcze raz naciśnij tab.
  3. W pierwszej połowie słowa występuje już błąd.

Im szybciej nabierzesz wprawy w używaniu karty do autouzupełniania poleceń, tym większa będzie szansa na wykonanie frustrujących sytuacji, w których polecenia nie będą działać.

Katalogi nadrzędne i podrzędne

Katalogi i pliki mogą być ze sobą powiązane podrzędnie i nadrzędne. Jeśli directory_b znajduje się wewnątrz directory_a, tag directory_b jest nazywany podrzędnym elementem directory_a. Element directory_a jest wtedy nazywany elementem nadrzędnym elementu directory_b. Trzeci element (my_file) należy do elementu directory_b. Jest uważany za element podrzędny elementu directory_b i wnuka directory_a.

Takie relacje są często ilustrowane na forach diagramami w ten sposób:

directory_a/
  directory_b/
    my_file

Zwróć uwagę, że nazwy katalogów kończą się znakiem /, a nie nazwy plików. Ta organizacja hierarchiczna jest zwykle określana jako struktura drzewa systemu plików.

Rodzeństwo

Jeśli wiele plików lub folderów jest na tym samym poziomie, są one nazywane rodzeństwem. Przykład: jeśli file_b i file_c znajdują się wewnątrz directory_a, są rodzeń.

Ten schemat powinien wyglądać tak:

directory_a/
  file_b
  file_c

Pamiętaj, że ponieważ file_b i file_c są elementami równorzędnymi, mają wcięcie tego samego rozmiaru.

Ścieżki do plików

Oto bardziej skomplikowany schemat tekstowy, który pokazuje relację nadrzędny-podrzędny i rodzeństwo.

north_america/
  united_states/
    new_york/
      new_york_city/
        manhattan
        queens
        staten_island
        bronx
        brooklyn
    california/
      mountain_view
      los_angeles
    illinois/
      chicago
  mexico/
    mexico_city

W tym przykładzie new_york_city/ jest nazwą katalogu, ale zawiera też ścieżkę, która wskazuje, jak go znaleźć: ~/north_america/united_states/new_york/new_york_city/.

Aby zmienić katalog na new_york_city/,, możesz przechodzić między krokami, używając nazw, lub możesz się poruszać w ramach jednego polecenia za pomocą ścieżki.

# Option 1: in four steps, using directory names.
cd ~ # navigate home, where these folders are located
cd north_america/
cd united_states/
cd new_york/
cd new_york_city/

# Option 2: in one step, using the path.
cd ~/north_america/united_states/new_york/new_york_city/

Podsumowanie poleceń nawigacyjnych

# See your current location - abbreviation for 'print working directory'
pwd

# Change to a new location - abbreviation for 'change directory'
cd ~/Downloads

# Navigates into a child directory called `some_directory`
# Only works if `some_directory` is a child of the current directory
cd some_directory

# Navigates into the parent of the current directory
# `..` is shorthand for parent.
cd ..

# Will take you back home
cd

Miniwyzwania

  • Użyj pwd, aby znaleźć bieżący folder, w którym się znajdujesz.
  • Przejdź do innego katalogu i potwierdź nową lokalizację.
  • Spróbuj ponownie i przejdź do innego folderu. Użyj nowych poleceń, by sprawdzić swoją lokalizację oraz pliki w tym katalogu.

Tworzenie plików & katalogi

Ramkowanie i przeznaczenie sekcji

Deweloperzy muszą utworzyć pliki z kodem. Aby zachować porządek w plikach, musimy utworzyć foldery lub katalogi, w których będziemy mogły je przechowywać.

Pamiętaj, aby przed utworzeniem plików i folderów sprawdzić swoją lokalizację w terminalu.

# See your current location.
pwd

Aby utworzyć plik, użyj polecenia touch poprzedzonego nazwą pliku.

# `touch` creates a new file.
touch style.css

Aby określić typ pliku, podczas jego tworzenia dodaj rozszerzenie pliku. Przykładowe typy plików:

  • .js zrobić jako plik JavaScript
  • .html utwórz plik HTML
  • .css tworzy plik CSS
  • .md tworzy plik markdown

Nazwy plików nie powinny zawierać spacji.

# make a file - this will create a file in the current folder
touch my_text_file.txt

# make a file - this will create a file on the desktop
touch ~/Desktop/my_new_style_sheet.css

Tworzenie wielu plików

Możesz utworzyć wiele plików naraz, dodając spacje między nimi.

# make multiple files - this will create multiple files in the current folder
touch my_new_js_file.js my_new_html_file.html my_second_html_file.html

Tworzenie katalogów

Aby utworzyć katalog lub folder, użyj polecenia mkdir – skrótu „make katalog' –” z nazwą folderu.

# make a folder - this will create a directory in the current folder
mkdir my_new_folder

# make a folder - this will create a directory on your desktop
mkdir ~/Desktop/my_new_desktop_folder

Tworzenie wielu katalogów

Możesz utworzyć wiele folderów naraz, dodając spacje między nimi.

# make multiple folders - this will create multiple folders in the current
# directory
mkdir folder_one folder_two folder_three

Miniwyzwania

  • Utwórz nowy plik.
  • Utwórz kilka plików za pomocą jednego polecenia.
  • Utwórz nowy katalog.
  • Utwórz jeszcze kilka nowych katalogów. Spróbuj użyć 1 polecenia.
  • Na podstawie tego, co wiesz o poruszaniu się po katalogach oraz tworzeniu plików i folderów, utwórz na komputerze „drzewo_rodzinne” przy użyciu plików i folderów.

Przeprowadzki &Kopiuj

Pliki do przenoszenia; katalogi

Ramkowanie i przeznaczenie sekcji

Plik lub folder możemy przenieść z poziomu wiersza poleceń, ale zawsze musimy określić 3 rzeczy:

  1. Stosujemy polecenie mv – skrót od move.
  2. Użyj polecenia przenoszenia, podając nazwę pliku lub folderu, który chcesz przenieść.
  3. Podaj nazwę pliku zawierającego miejsce docelowe, na które chcesz je przenieść.

Jeśli na przykład struktura plików wygląda tak:

my_child_folder/
my_parent_folder/

Jak widać, nie jest on zorganizowany tak, jak powinien być – jest rodzeństwem, kiedy powinien być rodzicem i dzieckiem. Użyj tego polecenia:

# move a directory - this will move the folder `my_child_folder` into the
# folder named `my_parent_folder` that is in the current folder
mv my_child_folder/ my_parent_folder/

Powstała struktura będzie wyglądać tak.

my_parent_folder/
  my_child_folder/

Oto kilka innych odmian polecenia mv:

# move a directory - this will move the folder `my_folder` into the file named
# `my_desktop_folder` that is located on the Desktop
mv my_folder ~/Desktop/my_desktop_folder

# move a file - this will move the file `my_file.txt` into the file named
# `my_folder` that is in the current folder
mv my_file.txt my_folder

# move a file - this will move the file `my_file.txt` into the file named
# `my_desktop_folder` that is located on the Desktop
mv my_file.txt ~/Desktop/my_desktop_folder

Ostrzeżenie: mv jest też poleceniem zmiany nazwy pliku przy użyciu składni mv old_name new_name. Oznacza to, że jeśli przeniesiesz plik do katalogu, który nie istnieje lub błędnie wpiszesz nazwę miejsca docelowego, jego nazwa nie zostanie przeniesiona.

Miniwyzwania

  1. Utwórz 5 plików tekstowych (.txt).
  2. Utwórz nowy katalog.
  3. Przenieś do folderu 5 utworzonych plików.
  4. Utwórz folder i przenieś nowy folder do innego folderu.

Kopiowanie plików &katalogu

Ramkowanie i przeznaczenie sekcji

Tworząc nasze aplikacje internetowe, możemy poprosić o zduplikowanie pliku (jeśli mamy 2 podobne strony internetowe, możemy nie zaczynać od zera), a składnia polecenia cp (kopia) jest bardzo podobna do składni mv.

Kopiowanie pliku

Polecenie kopiowania ma trzy części:

  1. Polecenie cp – skrót do copy
  2. Nazwa pliku, który ma zostać skopiowany
  3. Nazwa kopii (jeśli pozostaje w tym samym folderze) lub lokalizacja i nazwa (jeśli przenosisz ją do innego folderu).
# Copy a file named `my_file.txt` to a file called `my_file_copy.txt`
# The copy will be located in your Documents folder.
cp my_file.txt ~/Documents/my_file_copy.txt

# Copy a file named `my_file.txt` to a file called `my_file_copy.txt`.
# Since no directory was specified, this will occur within the same folder.
cp my_file.txt my_file_copy.txt

Jeśli chcesz, aby kopia zachowała taką samą nazwę jak oryginał, możesz określić jej lokalizację bez nazwy pliku.

# Copy a file named `my_file.txt` to your Documents folder.
# The destination ends with a directory, so the copy will have the same name.
cp my_file.txt ~/Documents/

Wiele plików o tej samej nazwie może być mylące, więc używaj tej metody tylko wtedy, gdy wiesz, czego potrzebujesz.

Kopiowanie katalogu

Kopiowanie folderu lub katalogu jest nieco bardziej skomplikowane, ponieważ prawdopodobnie chcesz skopiować nie tylko folder, ale i wszystkie elementy, które się w nim znajdują.

  1. Polecenie cp -R – skrót do kopiowania rekurencyjnego – służy zarówno do pustych, jak i niepustych folderów
  2. Nazwa źródła (folder lub plik, który chcesz przenieść)
  3. Nazwa kopii (jeśli pozostaje w tym samym folderze) lub lokalizacja i nazwa (jeśli przenosisz ją do innego folderu).

Ostrzeżenie: jeśli określisz nazwę kopii, jeśli plik lub folder nie został utworzony wcześniej, zostanie on utworzony podczas tworzenia kopii. Jeśli plik został utworzony przed uruchomieniem polecenia Kopiuj, spowoduje to zastąpienie wszystkich elementów, które znajdowały się w pliku, więc zachowaj ostrożność.

# copy a directory named `my_folder` from your Desktop folder to a folder
# called `my_folder_copy` in your Documents folder
cp -R ~/Desktop/my_folder ~/Documents/my_folder_copy

# copy a file named `my_file.txt` from your Desktop folder to your Documents
# folder
cp -R my_folder my_folder_copy

Uwaga: komponent -R elementu cp -R jest nazywany flagą. Flagi zawsze zaczynają się od łącznika i są używane w połączeniu z poleceniami, aby zapewnić szczegółowe instrukcje wykonywania tego polecenia.

Miniwyzwania

  1. Utwórz plik o nazwie my_original.txt
  2. Utwórz kopię pliku my_original.txt z nazwą nowego elementu w tym samym folderze.
  3. Utwórz nowy katalog.
  4. Utwórz kopię tego katalogu, ale nadaj mu inną nazwę.
  5. Utwórz skopiowany plik (z kroku 2), ale umieść go w skopiowanym katalogu (z kroku 4).

Usuwanie plików &folderów

Ramkowanie i przeznaczenie sekcji

Możemy usuwać pliki i foldery z poziomu wiersza poleceń, ale jest to nieodwracalne.

Usuwanie pliku

Aby usunąć plik, możemy użyć polecenia rm (skrót od remove) z nazwą pliku.

# delete a file in the working directory
rm unwanted_file.txt

# delete a file not in the working directory
rm ~/Desktop/unwanted_file.txt

Usuwanie katalogu, który jest pusty

Aby usunąć pusty katalog, możemy użyć polecenia rmdir – skrótu usuń katalog – po którym następuje nazwa folderu.

# delete an empty folder
rmdir empty_directory

# delete an empty folder
rmdir ~/Documents/my_files/empty_directory

Usuwanie katalogu, który nie jest pusty

Aby usunąć folder, który nie jest pusty, musimy umieścić flagę -R – skrót w wersji cyklicznej – po poleceniu rm informującym komputer, że zawartość ma być usunięta z folderu. Niektórzy deweloperzy używają flagi -Rf, która silnie usuwa wszystko (w przeciwnym razie mogą pojawić się prośby o usunięcie niektórych plików podrzędnych lub folderów).

# delete a folder which contains other files or folders
rm -R directory_which_isnt_empty

# delete a folder which contains other files or folders
rm -R ~/Downloads/directory_which_isnt_empty

Ostrzeżenie: polecenie rm nie wygląda podobnie do kosza lub usuniętej sekcji e-maila. Takich plików nie można łatwo przywrócić. ZACHOWAJ OSTROŻNOŚĆ, jeśli usuwasz pliki w ten sposób.

Miniwyzwania

  1. Utwórz 4 pliki.
  2. Usuń dwa pliki.
  3. Utwórz folder.
  4. Utwórz kolejny folder i utwórz plik w tym folderze.
  5. Usuń oba te katalogi.

Kod tego modułu znajdziesz w folderze ucznia pobranym z GitHuba: command-line/labs/around-the-world

Tło

Twój semestr za granicą jest już blisko i już możesz zacząć podróżować po Europie...

Ponieważ w najbliższej przyszłości trzy życia będą poważne, zadbaj o to, aby w pełni wykorzystać każdą weekendową podróż.

Na szczęście nie zaczynasz od zera, a Twoi znajomi opowiadają o swoich ulubionych aktywnościach z semestru za granicą. Niektóre pliki zostały pomieszane...

Nie spiesz się – dzięki magii wiersza poleceń naprawisz je w kilka chwil.

Zadanie

Upewnij się, że każde miasto znajduje się we właściwym kraju, a w każdym z folderów są odpowiednie pomniki. Zachowaj ostrożność, bo możesz trafić do Amsterdamu i szukać wieży Eiffla!

Jeśli uważasz, że to wykonalne, ukryj interfejs GUI i zmierz się z wyzwaniem bezpośrednio w wierszu poleceń. Pamiętaj, by podczas wykonywania tych czynności pozostać w całym świecie. Oznacza to, że podczas odwoływania się do folderów i plików używaj bezwzględnych ścieżek!

Gdy upewnisz się, że wszystko jest we właściwym miejscu, Twoja kolej, aby rozpocząć polecenie na najbliższe kilka miesięcy. Wymyśl nowe miasta, kraje i pomniki, które POTRZEB, by je zobaczyć i dodać do drzewa plików.

Gratulacje! Oficjalnie udało Ci się nauczyć mówić komputerem. Chcesz zrobić jeszcze więcej? Porozmawiajmy o rozszerzeniach...

Rozszerzenia

  1. Jeszcze raz połącz wszystkie pliki, a następnie wybierz się do wybranego miasta. porządkować pliki w tym samym miejscu (pozostając w nim),
  2. Zagraj w jedną z ciekawych gier z wiersza poleceń poniżej
    Terminus Game
    Gra zaawansowana (przygotuj się do Google)
  3. Jesteś wielkim fanem Gwiezdnych Wojen? Spróbuj uruchomić telnet towel.blinkenlights.nl w wierszu poleceń i naciśnij Enter. W ostatnich wersjach MacOS polecenie telnet nie jest już domyślnie instalowane – w tym przypadku możesz użyć polecenia nc towel.blinkenlights.nl 23.

Kod tego modułu znajdziesz w folderze ucznia pobranym z GitHuba: command-line/labs/bashing-away-repetition

Chcesz wyeliminować powtarzanie codziennego wiersza poleceń? Świetnie, ja też!

Tło

Jeśli programiści nienawidzą, to jest to powtórzenie. Zajmujemy się informatyką i zapewniamy, aby ten komputer w pełni służył naszej technologii. Utworzenie skryptów bash pomoże nam efektywniej korzystać z wiersza poleceń.

Najpierw przeczytaj, co to jest skrypt bash.

pytanie. Na szczęście nasz kolega Ryan Chadwick z tego świetnego miejsca, w którym można znaleźć samouczki na temat wiersza poleceń, ma na nie odpowiedź.

Skrypt Bash pozwala nam zdefiniować serię działań, które będą wykonywać komputer bez konieczności ręcznego wprowadzania poleceń. Jeśli określone zadanie jest często wykonywane lub jest to powtarzanie, dobrym rozwiązaniem może być skrypt.

Bez powtórzeń? To o czym mowa.

Samouczek

Aby móc uruchamiać skrypt, musisz najpierw przyznać uprawnienia na komputerze. Aby to zrobić, uruchom poniższe polecenie.

chmod 755 myScript.sh

Dobrze, czas napisać pierwszy program. Przejdź do myScript.sh (sprawdź, czy możesz otworzyć plik z poziomu wiersza poleceń). Na końcu pliku dodaj:

echo "Hello World"

Teraz uruchom:

./myScript.sh

w terminalu. ** TA DA ** Na ekranie powinien pojawić się „Hello World”.

uroczystość

Wszystko, co napiszesz w skrypcie bash, będzie działać tak, jakby trzeba było je wpisać w terminalu. Zanim przejdziemy do rozszerzeń, przyjrzyjmy się jeszcze jednemu przykładowi. Najpierw utwórz plik skryptu, który możesz nazwać w dowolny sposób, ale powinien mieć rozszerzenie .sh . Następnie wpisz chmod 755, a następnie nazwę skryptu w terminalu i naciśnij Enter, by uruchomić skrypt. Za każdym razem, gdy tworzysz nowy skrypt bash, wykonaj te dwa kroki.

Wyzwanie wprowadzające

Teraz napiszmy skrypt, który utworzy nowy folder. Jakie polecenie pozwala utworzyć nowy folder? Jeśli myślisz o słowie, które zaczyna się od m, i kończy się na kdir, jesteś na właściwej drodze. Wpisz polecenie, które spowoduje utworzenie nowego folderu i nadanie mu ciekawej nazwy w nowym pliku .sh, a następnie uruchomienie go w terminalu.

Jeśli się uda, przejdź do pozostałych wyzwań wymienionych poniżej. Jeśli nadal masz wątpliwości, zajrzyj do swojego modułu na całym świecie i zastanów się, jak udało Ci się utworzyć nowe foldery krajowe i miejskie.

Nie bój się korzystać z samouczka, do którego link znajdziesz powyżej. Pomogą Ci one wydobyć z Google swoje najlepsze umiejętności w Google. Napisz i uruchom skrypty, które wykonają te czynności:

Główne zadania

  1. Do utworzonego przez siebie pliku dodaj polecenie, które spowoduje przejście do tworzonego folderu. (Jakiego polecenia używamy do zmiany katalogów?)
  • Podaj datę nowej nazwy folderu. Na przykład program powinien utworzyć folder o nazwie "2017-12-07my_super_cool_folder"
  1. Drukuje "Mój bieżący katalog to &", a następnie Twój katalog roboczy, &"Oto lista wszystkich pozycji w tym katalogu! ", a po nim zawartość bieżącego katalogu.
  2. Dowiedz się, jak wprowadzić skrypt bash i utworzyć plik na podstawie tego ciągu. W samouczku omówionym wcześniej w sekcji modułu znajdziesz kilka świetnych przykładów w sekcji zmiennych.
  3. Zapytaj użytkownika o imię i nazwisko, a następnie wydrukuj „Cześć, miło Cię poznać tutaj.
  • Spróbuj poprosić użytkownika o więcej informacji i utworzyć dla niego wiadomość dostosowaną do jego potrzeb.

KONTEKST

Wiersz polecenia (lub terminal) zapewnia bezpośrednią interakcję z systemem operacyjnym komputera (OS) – czyli wszystko, co oferuje graficzny interfejs użytkownika (GUI), ale za pomocą poleceń tekstowych – od nawigacji po tworzenie nowych plików i uruchamianie skryptów. Służy on do otwierania plików i uruchamiania środowiska programistycznego przy użyciu Google App Engine.

Wiersz polecenia w działaniu

Otwieranie terminala

Skrót na Macu:

  • Otwórz Wyróżnione, naciskając Command + spację.
  • W polu Wyróżnione wyszukiwanie wpisz Terminal.
# See your current location - abbreviation for 'print working directory'.
pwd

# Change to a new location - abbreviation for 'change directory'.
cd /Users/jsmith/Downloads

# Navigate into a child directory called `some_directory`. This only works if
# `some_directory` is a child of the current directory.
cd some_directory

# Navigate into the parent of the current directory. `..` is shorthand for parent.
cd ..

# Return home.
cd

# Change directories to a folder called `my_folder` that is within the current
# directory.
cd my_folder ```

#### File Path Shorthand `~`

The `~` is generally short for "home". Home can be configured to mean different
things for different users and across different operating systems, but in the
example above, for a Mac user named "jsmith", the `~` is short for that user's
home directory: `/Users/jsmith`.

This means that `~/Downloads` and `/Users/jsmith/Downloads` are the same for
this user. But starting with a `~` allows us to specify absolute file paths
(agnostic of your current working directory, and starting at the root `/`)
without having to write out a full path each time.

### <a id="view"></a>Viewing the Contents of Folders

```bash
# See files and folders in current location - this is an abbreviation for 'list'.
ls

Tworzenie plików &folderów

Tworzenie plików

# Make a file - this will create a file in the current folder.
touch my_text_file.txt

# Make a file - this will create a file on the Desktop.
touch ~/Desktop/my_new_style_sheet.css

# Make multiple files - this will create multiple files in the current folder.
touch my_new_js_file.js my_new_html_file.html my_second_html_file.html

Tworzenie folderów

# Make a folder - this will create a directory in the current folder.
mkdir my_new_folder

# Make a folder - this will create a directory on your Desktop.
mkdir ~/Desktop/my_new_desktop_folder

# Make multiple folders - this will create multiple folders in the current
# directory.
mkdir folder_one folder_two folder_three

Przenoszenie plików &foldery

Przenoszenie plików

# Move a file - this will move the file `my_file.txt` into the folder named
# `my_folder` that is in the current folder.
mv my_file.txt my_folder
# Note that this will rename the file instead of moving it if the destination
# folder does not yet exist.  Read below for more details on renaming.

# Move a file - this will move the file `my_file.txt` into the folder named
# `my_desktop_folder` that is located on the Desktop.
mv my_file.txt ~/Desktop/my_desktop_folder

Przenoszenie folderów

# Move a directory - this will move the folder `my_child_folder` into the
# folder named `my_parent_folder` that is in the current folder.
mv my_child_folder my_parent_folder

# Move a directory - this will move the folder `my_folder` into the folder
# named `my_desktop_folder` that is located on the Desktop.
mv my_folder ~/Desktop/my_desktop_folder

Zmiana nazwy użytkownika budynku

Pamiętaj, że mv służy też do zmieniania nazw plików i folderów.

# Rename a file from `old_name.txt` to `new_name.txt`.
mv old_name.txt new_name.txt

Kopiowanie plików &folderów

Kopiowanie plików

# Copy a file named `my_file.txt` from your Desktop folder to your Documents
# folder.
cp ~/Desktop/my_file.txt ~/Documents

# Copy a file named `my_file.txt` to a file called `my_file_copy.txt` within
# the same folder.
cp my_file.txt my_file_copy.txt

Kopiowanie folderów

# Copy a directory named `my_folder` (and its contents) from your Desktop
# folder to a folder called `my_folder_copy` in your Documents folder.
cp -r ~/Desktop/my_folder ~/Documents/my_folder_copy

# Copy a directory named `my_folder` (and its contents) from the current
# working directory to a folder called `my_folder_copy` in the current working
# directory.
cp -r my_folder my_folder_copy

Usuwanie plików &folderów

Usuwanie plików

# Delete a file in the current working directory.
rm unwanted_file.txt

# Delete a file using its exact location and name.
rm ~/Desktop/unwanted_file.txt

Usuwanie folderów

# Delete an empty folder.
rmdir empty_directory

# Delete a folder which contains other files or folders.
rm -r directory_which_isnt_empty

Wskazówki i porady

  • Ćwicz za pomocą wiersza poleceń, nawet jeśli wydaje Ci się, że nie jest to konieczne. Z czasem będzie Ci coraz lepiej.
  • Klawisz tab automatycznie uzupełni nazwę pliku lub folderu (wielkość liter ma znaczenie).
  • Jeśli istnieje tylko jeden pasujący plik lub folder, zostanie on automatycznie uzupełniony.
  • Jeśli istnieje wiele pasujących plików lub folderów, naciśnij dwukrotnie klawisz Tab, aby zobaczyć listę pozostałych dopasowań.
  • Strzałka w górę / w dół przełącza historię historii, aby nie trzeba było ponownie wpisywać poleceń.
  • Aby wyczyścić okno terminala, użyj polecenia clear. Pozwoli to zachować wszystkie wcześniejsze zadania – przewiń w górę, aby je zobaczyć.
  • Użyj aplikacji reset, aby zrestartować terminal. Nie spowoduje to wyświetlenia wcześniejszej pracy na ekranie, ale może rozwiązać kilka problemów, jeśli terminal zacznie działać w nieprzewidywalny sposób.
  • Aby przesunąć kursor o jedno słowo, naciśnij option + arrow

Podsumowanie sprawdzonych metod

  • Użyj terminala cd, cd .. lub cd <folder name>, aby poruszać się po terminalu.
  • Wyświetl zawartość folderów za pomocą funkcji ls.
  • Tworzenie plików w touch; tworzenie folderów przy użyciu mkdir.
  • Przenoszenie plików i folderów za pomocą narzędzia mv <item to move> <destination>.
  • Skopiuj pliki i foldery za pomocą cp <item to copy> <destination>.
  • Usuń pliki i foldery, używając narzędzia rm <item to remove>.

Pytanie 1

Na jakiej podstawie możesz zidentyfikować swój obecny katalog roboczy?

  1. pwd
  2. ls
  3. cd
  4. mkdir
  5. touch

Pytanie 2

Jak przejść 2 poziomy z obecnego katalogu roboczego?

  1. mv ~
  2. cd ../..
  3. mv up/up
  4. cd ^(2)

Pytanie 3

Jakiego polecenia użyjesz do zmiany nazwy pliku?

  1. mv
  2. cd
  3. ls
  4. python
  5. rename

Pytanie 4

Dlaczego polecenie mv script.py zwraca błąd?

  1. Ponieważ „script.py' to nieprawidłowa nazwa pliku.
  2. Ponieważ polecenia mv nie można powiązać z żadnymi innymi informacjami.
  3. To nie byle pytanie, które nie wywołałoby błędu.
  4. Ponieważ przenoszenie pliku wymaga co najmniej dwóch argumentów – celu i miejsca docelowego

Pytanie 5

Do czego służy polecenie cd ~?

  1. Zmień katalog służbowy na katalog główny.
  2. Powtórz poprzednie polecenie.
  3. Aby ustalić najbardziej przydatne polecenie, użyj algorytmu.
  4. Błąd.

Pytanie 6

Który z poniższych powodów NIE służy do automatycznego stosowania nazw plików na karcie?

  1. Bo pozwala zaoszczędzić czas
  2. Bo pomaga wyeliminować błędy ortograficzne
  3. Ponieważ wymaga mniejszej mocy obliczeniowej.

Pytanie 7

Jeśli nowy programista próbuje utworzyć plik o nazwie „"my script.py", dlaczego polecenie touch my script.py nie działa?

  1. Ponieważ touch nie może tworzyć nowych plików.
  2. .py nie jest prawidłowym rozszerzeniem pliku.
  3. Ponieważ zostaną utworzone dwa pliki, jeden o nazwie „"my” i jeden o nazwie „"script.py" zamiast jednego”.
  4. Ponieważ nie można tworzyć nowych plików z poziomu wiersza poleceń

Pytanie 1

Na jakiej podstawie możesz zidentyfikować swój obecny katalog roboczy?

pwd

Pytanie 2

Jak przejść 2 poziomy z obecnego katalogu roboczego?

Poziom cd ../.. zwiększa się o 2 poziomy (każdy poziom .. reprezentuje jeden poziom powyżej).

Pytanie 3

Jakiego polecenia użyjesz do zmiany nazwy pliku?

Plik mv służy do przenoszenia pliku z jednej lokalizacji do drugiej. Można go też użyć do zmiany nazwy pliku.

Pytanie 4

Dlaczego polecenie mv script.py zwraca błąd?

Polecenie mv wymaga 2 argumentów: pliku źródłowego i pliku docelowego.

Pytanie 5

Do czego służy polecenie cd ~?

Spowoduje to zmianę katalogu roboczego na katalog główny. Znak specjalny ~ służy do określania katalogu głównego bieżącego użytkownika. Można go też użyć w połączeniu z inną nazwą użytkownika: ~użytkownik2, aby wskazać folder główny.

Pytanie 6

Który z poniższych powodów NIE służy do automatycznego stosowania nazw plików na karcie?

Wymaga mniejszej mocy obliczeniowej nie jest prawidłowe. Skanowanie plików w tab wymaga stosunkowo niewielkiego mocy obliczeniowej do przeskanowania folderów w poszukiwaniu nazwy pliku, ale pozwala to zaoszczędzić czas i uniknąć błędów ortograficznych.

Pytanie 7

Jeśli nowy programista próbuje utworzyć plik o nazwie „"my script.py", dlaczego polecenie touch my script.py nie działa?

Spowoduje to utworzenie 2 plików zamiast jednego. Polecenie touch utworzy nowe pliki. W terminalach spacje są separatorami, a nie znakami, które chcesz uwzględnić w nazwie pliku. Najlepiej ich unikać, ale jeśli musisz ich użyć, musisz umieścić nazwę pliku w cudzysłowie:

touch "my script.py"

Pytanie 1

Polecenie terminala na potrzeby zmiany katalogów:

  1. move
  2. mkdir
  3. pwd
  4. cd

Pytanie 2

Jakie polecenie należy uruchomić, aby przejść do folderu nadrzędnego bieżącego katalogu roboczego?

  1. cd up
  2. cd .
  3. cd ..
  4. cd ~

Pytanie 3

Jakie polecenie służy do tworzenia plików?

  1. touch
  2. mkdir
  3. create
  4. pwd

Pytanie 4

Które z poniższych poleceń spowoduje utworzenie 2 plików o nazwie index.html i style.css?

  1. touch index.html, touch style.css
  2. touch index.html, style.css
  3. touch index.html style.css
  4. touch index.html + style.css

Pytanie 5

Jakiego polecenia używasz do zmiany nazwy pliku lub folderu?

  1. rename
  2. move
  3. mv
  4. rm

Pytanie 6

Jakie flagi rm i cp muszą obsługiwać w folderach?

  1. -f
  2. -r
  3. -x
  4. -d

Pytanie 7

Jakie polecenie należy wpisać w puste pole, aby przenieść grupę projects do: ~/Documents i zmienić jej nazwę na Projects?

cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects
  1. pwd
  2. cd projects
  3. mv ~ projects
  4. cd ~/Documents
  5. ls

Pytanie 8

Do czego służy to polecenie?

rm -r projects

  1. Usuń plik o nazwie projects
  2. Usuń folder o nazwie projects
  3. Zmień nazwę pliku o nazwie projects
  4. Wyszukaj w bieżącym katalogu zawartość projects

Pytanie 1

Polecenie terminala na potrzeby zmiany katalogów:

Polecenie terminalowe na potrzeby zmiany katalogów to cd. To polecenie jest skrótem do &"change Directory&quot.

Pytanie 2

Jakie polecenie należy uruchomić, aby przejść do folderu nadrzędnego bieżącego katalogu roboczego?

Polecenie dostępu do folderu nadrzędnego to cd ..

Pytanie 3

Jakie polecenie służy do tworzenia plików?

Polecenie tworzenia plików to touch

Pytanie 4

Które z poniższych poleceń spowoduje utworzenie 2 plików o nazwie index.html i style.css?

Polecenie touch index.html style.css utworzy dwa pliki. Nie musisz używać przecinka, więc możesz utworzyć dowolną liczbę plików, rozdzielając je spacjami.

Pytanie 5

Jakiego polecenia używasz do zmiany nazwy pliku lub folderu?

Można używać go do przenoszenia plików i folderów, ale mv służy też do zmieniania nazw plików i folderów.

Pytanie 6

Jakie flagi rm i cp muszą obsługiwać w folderach?

Polecenia rm i cp wymagają, by w folderach była używana flaga -r, ponieważ flaga -r zastępuje symbole „rekurencyjne” i ponownie uruchamia to polecenie w przypadku wszystkich plików i folderów, które się w nim znajdują.

Pytanie 7

Jakie polecenie należy wpisać w puste pole, aby przenieść grupę projects do: ~/Documents i zmienić jej nazwę na Projects?

cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects

Ponieważ zaczynamy w katalogu głównym, musielibyśmy uruchomić cd ~/Documents , aby pobrać ostatnie polecenie w odpowiednim katalogu.

Pytanie 8

Do czego służy to polecenie?

rm -r projects

Polecenie spowoduje usunięcie pliku LUB folderu o nazwie projects , ponieważ jest on wywoływany za pomocą flagi -r lub flagi rekurencyjnej. Bez tej flagi polecenie działałoby tylko w celu usunięcia pliku o tej nazwie.