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 listyls -a
Wyświetl listę wszystkich plików, także tych, które są zwykle ukrytels -l
Długa lista z informacjami o poszczególnych plikachls -R
Cyklicznie, wymień zawartość katalogówls -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.
Katalog roboczy drukowania (pwd
)
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:
- Katalog, do którego chcesz przejść, nie jest dostępny z bieżącego katalogu roboczego.
- Istnieją 2 katalogi o podobnych nazwach początkowych (np.
Documents
iDownloads
), ale nie podano wystarczającej ilości informacji, by można było wskazać autouzupełnianie. Naciśnij jeszcze raztab
, 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śnijtab
. - 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:
- Stosujemy polecenie
mv
– skrót od move. - Użyj polecenia przenoszenia, podając nazwę pliku lub folderu, który chcesz przenieść.
- 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
- Utwórz 5 plików tekstowych (.txt).
- Utwórz nowy katalog.
- Przenieś do folderu 5 utworzonych plików.
- 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:
- Polecenie
cp
– skrót do copy - Nazwa pliku, który ma zostać skopiowany
- 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ą.
- Polecenie
cp -R
– skrót do kopiowania rekurencyjnego – służy zarówno do pustych, jak i niepustych folderów - Nazwa źródła (folder lub plik, który chcesz przenieść)
- 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
- Utwórz plik o nazwie
my_original.txt
- Utwórz kopię pliku
my_original.txt
z nazwą nowego elementu w tym samym folderze. - Utwórz nowy katalog.
- Utwórz kopię tego katalogu, ale nadaj mu inną nazwę.
- 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
- Utwórz 4 pliki.
- Usuń dwa pliki.
- Utwórz folder.
- Utwórz kolejny folder i utwórz plik w tym folderze.
- 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
- 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),
- Zagraj w jedną z ciekawych gier z wiersza poleceń poniżej
Terminus Game
Gra zaawansowana (przygotuj się do Google) - Jesteś wielkim fanem Gwiezdnych Wojen? Spróbuj uruchomić
telnet towel.blinkenlights.nl
w wierszu poleceń i naciśnij Enter. W ostatnich wersjach MacOS polecenietelnet
nie jest już domyślnie instalowane – w tym przypadku możesz użyć polecenianc 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”.
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
- 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
"
- 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.
- 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.
- 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.
Obsługa terminala
# 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 ..
lubcd <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życiumkdir
. - 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?
pwd
ls
cd
mkdir
touch
Pytanie 2
Jak przejść 2 poziomy z obecnego katalogu roboczego?
mv ~
cd ../..
mv up/up
cd ^(2)
Pytanie 3
Jakiego polecenia użyjesz do zmiany nazwy pliku?
mv
cd
ls
python
rename
Pytanie 4
Dlaczego polecenie mv script.py
zwraca błąd?
- Ponieważ „
script.py
' to nieprawidłowa nazwa pliku. - Ponieważ polecenia
mv
nie można powiązać z żadnymi innymi informacjami. - To nie byle pytanie, które nie wywołałoby błędu.
- Ponieważ przenoszenie pliku wymaga co najmniej dwóch argumentów – celu i miejsca docelowego
Pytanie 5
Do czego służy polecenie cd ~
?
- Zmień katalog służbowy na katalog główny.
- Powtórz poprzednie polecenie.
- Aby ustalić najbardziej przydatne polecenie, użyj algorytmu.
- Błąd.
Pytanie 6
Który z poniższych powodów NIE służy do automatycznego stosowania nazw plików na karcie?
- Bo pozwala zaoszczędzić czas
- Bo pomaga wyeliminować błędy ortograficzne
- 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?
- Ponieważ
touch
nie może tworzyć nowych plików. .py
nie jest prawidłowym rozszerzeniem pliku.- Ponieważ zostaną utworzone dwa pliki, jeden o nazwie „"
my
” i jeden o nazwie „"script.py
" zamiast jednego”. - 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:
move
mkdir
pwd
cd
Pytanie 2
Jakie polecenie należy uruchomić, aby przejść do folderu nadrzędnego bieżącego katalogu roboczego?
cd up
cd .
cd ..
cd ~
Pytanie 3
Jakie polecenie służy do tworzenia plików?
touch
mkdir
create
pwd
Pytanie 4
Które z poniższych poleceń spowoduje utworzenie 2 plików o nazwie index.html
i style.css
?
touch index.html, touch style.css
touch index.html, style.css
touch index.html style.css
touch index.html + style.css
Pytanie 5
Jakiego polecenia używasz do zmiany nazwy pliku lub folderu?
rename
move
mv
rm
Pytanie 6
Jakie flagi rm
i cp
muszą obsługiwać w folderach?
-f
-r
-x
-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
pwd
cd projects
mv ~ projects
cd ~/Documents
ls
Pytanie 8
Do czego służy to polecenie?
rm -r projects
- Usuń plik o nazwie
projects
- Usuń folder o nazwie
projects
- Zmień nazwę pliku o nazwie
projects
- 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".
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.