praca z plikami i katalogami
przegląd
Nauczanie: 30 min
ćwiczenia: 20 minpytania
Jak mogę tworzyć, kopiować i usuwać pliki i katalogi?
Jak mogę edytować pliki?
cele
Utwórz hierarchię katalogów pasującą do podanego diagramu.
Utwórz pliki w tej hierarchii za pomocą edytora lub kopiując i zmieniając nazwy istniejących plików.
Usuń, skopiuj i przenieś określone pliki i / lub katalogi.
tworzenie katalogów
teraz wiemy,jak eksplorować pliki i katalogi, ale w pierwszej kolejności jak je utworzyć?
Krok pierwszy: zobacz, gdzie jesteśmy i co już mamy
wróćmy do naszego data-shell
katalogu na pulpicie i użyj ls -F
, aby zobaczyć, co zawiera:
$ pwd
/Users/nelle/Desktop/data-shell
$ ls -F
creatures/ data/ molecules/ north-pacific-gyre/ notes.txt pizza.cfg solar.pdf writing/
, aby utworzyć katalogu
stwórzmy nowy folder o nazwie thesis
za pomocą polecenia mkdir thesis
i(co nie ma danych wyjściowych):
$ mkdir thesis
Jak można się domyślić z nazwy,mkdir
i oznacza 'Mark katalogu.Ponieważ thesis
jest ścieżką względną (tj./what/ever/thesis
), nowy katalog zostanie utworzony w bieżącym katalogu roboczym:
$ ls -F
creatures/ data/ molecules/ north-pacific-gyre/ notes.txt pizza.cfg solar.pdf thesis/ writing/
ponieważ właśnie stworzyliśmy katalogthesis
, nie ma w nim jeszcze nic:
$ ls -F thesis
zauważ, żemkdir
nie ogranicza się do tworzenia pojedynczych katalogów pojedynczo. Opcja -p
pozwala mkdir
utworzyć katalog z dowolną liczbą zagnieżdżonych podkatalogów w jednej operacji:
$ mkdir -p thesis/chapter_1/section_1/subsection_1
opcja do polecenials
wyświetli listę wszystkich zagnieżdżonych podkatalogów w katalogu. Użyjmy ls -FR
aby rekurencyjnie wyświetlić nową hierarchię katalogów, którą właśnie stworzyliśmy pod katalogiem thesis
:
$ ls -FR thesischapter_1/thesis/chapter_1:section_1/thesis/chapter_1/section_1:subsection_1/thesis/chapter_1/section_1/subsection_1:
dwa sposoby zrobienia tego samego
użycie powłoki do utworzenia katalogu nie różni się od użycia eksploratora plików.Jeśli otworzysz bieżący katalog za pomocą graficznego eksploratora plików systemu operacyjnego,pojawi się tam również katalog
thesis
.Podczas gdy powłoka i Eksplorator plików to dwa różne sposoby interakcji z plikami, same pliki i katalogi są takie same.
dobre nazwy dla plików i katalogów
skomplikowane nazwy plików i katalogów mogą sprawić, że Twoje życie będzie bolesne podczas pracy z wierszem poleceń. Tutaj podajemy kilka przydatnych podpowiedzi dla nazw plików.
nie używaj spacji.
spacje mogą sprawić,że nazwa będzie bardziej znacząca, ale ponieważ spacje są używane do oddzielania argumentów w linii poleceń, lepiej unikać ich w nazwach plików i katalogów.Możesz użyć
-
lub_
zamiast tego (np.north-pacific-gyre/
zamiastnorth pacific gyre/
).nie rozpoczynaj nazwy od
-
(dash).poleceniatraktują Nazwy zaczynające się od
-
jako opcje.trzymaj się liter, cyfr,
.
(kropka lub kropka),-
(myślnik) i_
(podkreślenie).wiele innych znaków ma specjalne znaczenie w wierszu poleceń.O niektórych z nich dowiemy się podczas tej lekcji.Istnieją znaki specjalne, które mogą spowodować, że polecenie nie działa w sposób niewykluczony, a nawet może spowodować utratę danych.
Jeśli chcesz odwołać się do nazw plików lub katalogów, które mają spacje lub inne znaki specjalne, powinieneś otoczyć nazwę cudzysłowami (
""
).
Utwórz plik tekstowy
zmieńmy nasz katalog roboczy nathesis
używająccd
,a następnie uruchom Edytor tekstu o nazwie Nano, aby utworzyć plik o nazwiedraft.txt
:
$ cd thesis$ nano draft.txt
który edytor?
Kiedy mówimy, ’
nano
jest edytorem tekstu’ tak naprawdę mamy na myśli 'tekst’: działa on zwykle z zwykłymi danymi znakowymi, a nie tabelami, obrazami lub innymi mediami przyjaznymi człowiekowi. Używamy go w przykładach, ponieważ jest to jeden z najbardziej skomplikowanych edytorów tekstu. Jednak z powodu tej cechy nie może być wystarczająco silny ani wystarczająco elastyczny do pracy, którą musisz wykonać po tym warsztacie. Na systemach uniksowych (takich jak Linux i macOS) wielu programistów używa Emacsa orvima (oba wymagają więcej czasu na naukę) lub edytora graficznego,takiego jak gedit. W systemie Windows możesz życzyć sobie notatnik++. Windows ma również wbudowany edytor o nazwienotepad
, który może być uruchamiany z wiersza poleceń w tym samym trybie jakonano
na potrzeby tej lekcji.bez względu na to, jakiego edytora używasz, musisz wiedzieć, gdzie wyszukuje i zapisuje pliki. Jeśli uruchomisz go z powłoki, użyje (prawdopodobnie)twojego bieżącego katalogu roboczego jako domyślnej lokalizacji. Jeśli korzystasz z menu start komputera, może zamiast tego chcieć zapisać pliki w katalogu desktop ordocuments. Możesz to zmienić, przechodząc do innego katalogu, gdy po raz pierwszy 'Zapisz jako…’
Wpisz kilka linijek tekstu.Gdy już będziemy zadowoleni z naszego tekstu, możemy nacisnąć Ctrl + O (naciśnięcie klawisza Ctrl lub Control i jednocześnie wciśnięcie klawisza o), aby zapisać nasze dane na dysk (zostaniemy zapytani do jakiego pliku chcemy to zapisać: naciśnij Return aby zaakceptować sugerowaną wartość domyślną draft.txt
).
Po zapisaniu naszego Pliku możemy użyć Ctrl+X, aby zamknąć Edytor i powrócić do powłoki.
klawisz Control, Ctrl lub ^
klawisz Control jest również nazywany klawiszem 'Ctrl’. Istnieją różne sposoby, w których można opisać użycie klucza sterującego. Na przykład, możesz zobaczyć instrukcję, aby nacisnąć klawisz Control i przytrzymując go, nacisnąć klawisz X, opisany jako dowolny z:
Control-X
Control+X
Ctrl-X
Ctrl+X
^X
C-x
w nano u dołu ekranu zobaczysz
^G Get Help ^O WriteOut
.Oznacza to, że możesz użyćControl-G
, aby uzyskać pomoc iControl-O
, aby zapisać swój plik.
nano
nie pozostawia żadnego wyjścia na ekranie po wyjściu,ale ls
teraz pokazuje, że stworzyliśmy plik o nazwie draft.txt
:
$ ls
draft.txt
tworzenie plików w inny sposób
widzieliśmy, jak tworzyć pliki tekstowe za pomocą edytor
nano
.Teraz spróbuj wykonać następujące polecenie:$ touch my_file.txt
co robi Komenda
touch
?Kiedy patrzysz na bieżący katalog za pomocą eksploratora plików GUI, czy plik pojawia się?użyj
ls -l
, aby sprawdzić pliki. Jak duży jestmy_file.txt
?Kiedy można w ten sposób utworzyć plik?
rozwiązanie
polecenie
touch
generuje nowy plik o nazwiemy_file.txt
w bieżącym katalogu. Możesz obserwować ten nowo wygenerowany plik, wpisującls
w wierszu polecenia.my_file.txt
można również przeglądać w Eksploratorze plików yourGUI.podczas sprawdzania pliku z
ls -l
, zauważ, że rozmiarmy_file.txt
wynosi 0 bajtów. Innymi słowy, nie zawiera żadnych danych.Jeśli otworzyszmy_file.txt
używając edytora tekstu, jest on pusty.niektóre programy nie generują plików wyjściowych samodzielnie, ale wymagają, aby puste pliki zostały już wygenerowane.Gdy program jest uruchamiany, wyszukuje istniejący plik topopulate z jego wyjściem. Polecenie touch pozwala na wydajne wygenerowanie pustego pliku tekstowego, który będzie używany przez takie programy.
co jest w nazwie?
być może zauważyłeś, że wszystkie pliki Nelle mają nazwę 'something dotsomething’ i w tej części lekcji zawsze używaliśmy rozszerzenia
.txt
. To tylko konwencja: możemy wywołać plikmythesis
lub prawie wszystko, co chcemy. Jednak większość ludzi używa nazw dwuczęściowych przez większość czasu, aby pomóc im (i ich programom) odróżnić różne rodzaje plików od siebie. Druga część takiej nazwy nazywa się rozszerzeniem nazwy pliku i wskazuje, jaki typ danych przechowuje plik:.txt
sygnalizuje zwykły plik tekstowy,.cfg
jest plikiem konfiguracyjnym pełnym parametrówdla jakiegoś programu lub innego,.png
jest obrazem PNG i tak dalej.to tylko konwencja, choć ważna. Pliki zawierają bajty: do nas i naszych programów należy interpretacja tych bajtów zgodnie z regułami dla plików tekstowych, dokumentów PDF, plików konfiguracyjnych, obrazów i tak dalej.
nazwanie obrazu wieloryba w formacie PNG jako
whale.mp3
jakoś nie zmienia go w nagranie whalesong, choć może to spowodować, że system operacyjny spróbuje otworzyć go za pomocą odtwarzacza muzyki, gdy ktoś dwukrotnie go kliknie.
przenoszenie plików i katalogów
powrót do katalogu data-shell
,
cd ~/Desktop/data-shell/
w naszym thesis
katalog mamy plik draft.txt
, który nie jest szczególnie pouczającą nazwą,więc zmieńmy nazwę pliku za pomocą mv
, który jest skrótem od 'move’:
$ mv thesis/draft.txt thesis/quotes.txt
pierwszy argument mówi mv
co „przenosimy”, podczas gdy drugi jest tam, gdzie ma się udać.W tym przypadku przenosimy thesis/draft.txt
do thesis/quotes.txt
,co ma taki sam efekt jak zmiana nazwy pliku.Oczywiście,ls
pokazuje nam, że thesis
zawiera teraz jeden plik o nazwie quotes.txt
:
$ ls thesis
quotes.txt
należy być ostrożnym przy określaniu nazwy pliku docelowego, ponieważ mv
spowoduje nadpisanie dowolnego istniejącego pliku o tej samej nazwie, co może doprowadzić do utraty danych. Dodatkowa opcja, mv -i
(lub mv --interactive
),może być użyta, aby mv
poprosić o potwierdzenie przed nadpisaniem.
zauważ, że mv
działa również na katalogach.
przenieśmy quotes.txt
do bieżącego katalogu roboczego.Ponownie używamy mv
, ale tym razem użyjemy tylko nazwy katalogu jako drugiego argumentu,aby powiedzieć mv
, że chcemy zachować nazwę pliku, ale umieścić go w nowym miejscu.(Dlatego polecenie nazywa się’move’.)W tym przypadku nazwa katalogu, której używamy, jest specjalną nazwą katalogu .
, o której wspomnieliśmy wcześniej.
$ mv thesis/quotes.txt .
efektem jest przeniesienie pliku z katalogu, w którym znajdował się do bieżącego katalogu roboczego.ls
teraz pokazuje nam, że thesis
jest pusty:
$ ls thesis
Dalej,ls
z nazwa pliku lub nazwa katalogu jako argument wyświetla tylko ten plik lub katalog.Możemy użyć tego,aby zobaczyć, że quotes.txt
jest nadal w naszym bieżącym katalogu:
$ ls quotes.txt
quotes.txt
przenoszenie plików do nowego folderu
Po uruchomieniu następujących poleceń jamie zdaje sobie sprawę, że umieściła pliki
sucrose.dat
Imaltose.dat
w niewłaściwym folderze. Pliki powinny być umieszczone w folderzeraw
.$ ls -F analyzed/ raw/$ ls -F analyzedfructose.dat glucose.dat maltose.dat sucrose.dat$ cd analyzed
wypełnij puste pola, aby przenieść te pliki do folderu
raw/
(tj. tego, w którym zapomniała je umieścić)$ mv sucrose.dat maltose.dat ____/____
rozwiązanie
$ mv sucrose.dat maltose.dat ../raw
przypomnijmy, że
..
odnosi się do katalogu nadrzędnego (tj. bieżący katalog)i że.
odnosi się do bieżącego katalogu.kopiowanie plików i katalogów
polecenie
cp
działa bardzo podobnie domv
,z tym że kopiuje plik zamiast go przenosić.Możemy sprawdzić, czy zrobił to dobrze, używającls
z dwiema ścieżkami jako argumentami-podobnie jak większość poleceń Uniksa,ls
może mieć kilka ścieżek naraz:$ cp quotes.txt thesis/quotations.txt$ ls quotes.txt thesis/quotations.txt
quotes.txt thesis/quotations.txt
możemy również skopiować katalog i całą jego zawartość za pomocą opcji
-r
,np. aby wykonać kopię zapasową katalogu:$ cp -r thesis thesis_backup
możemy sprawdzić wynik, wymieniając zawartość zarówno katalogu
thesis
, jak i katalogu :$ ls thesis thesis_backup
thesis:quotations.txtthesis_backup:quotations.txt
zmiana nazw plików
Załóżmy, że stworzyłeś zwykły plik tekstowy w bieżącym katalogu, zawierający listę testów statystycznych, które musisz wykonać, aby przeanalizować swoje dane, i nazwany:
statstics.txt
Po utworzeniu i zapisaniu tego pliku zdajesz sobie sprawę, że błędnie napisałeś nazwę pliku! Chcesz naprawić błąd, którego z poniższych poleceń możesz użyć, aby to zrobić?
cp statstics.txt statistics.txt
mv statstics.txt statistics.txt
mv statstics.txt .
cp statstics.txt .
rozwiązanie
- nie. Podczas gdy utworzyłoby to plik o poprawnej nazwie, niepoprawnie nazwany plik nadal istnieje w katalogu i musiałby zostać usunięty.
- tak, to zadziała, aby zmienić nazwę pliku.
- nie, okres(.) wskazuje, gdzie przenieść plik, ale nie podaje nowej nazwy pliku; identyczna nazwa pliku nie może zostać utworzona.
- nie, okres(.) wskazuje, gdzie należy skopiować plik, ale nie podaje nowej nazwy pliku; identycznych nazw plików nie można utworzyć.
Przenoszenie i kopiowanie
Jakie jest wyjście polecenia zamykającego
ls
w kolejności pokazanej poniżej?$ pwd
/Users/jamie/data
$ ls
proteins.dat
$ mkdir recombined$ mv proteins.dat recombined/$ cp recombined/proteins.dat ../proteins-saved.dat$ ls
proteins-saved.dat recombined
recombined
proteins.dat recombined
proteins-saved.dat
Solution
We start in the
/Users/jamie/data
directory, and create a new folder calledrecombined
.Druga linia przenosi (mv
) plikproteins.dat
do nowego folderu (recombined
).Trzecia linia tworzy kopię pliku, który właśnie przenieśliśmy. Trudną częścią jest to, gdzie plik został skopiowany. Przypomnijmy, że..
oznacza 'Przejdź na wyższy poziom’, więc skopiowany plik znajduje się teraz w/Users/jamie
.Zauważ, że..
jest interpretowane w odniesieniu do bieżącego katalogu roboczego, a nie w odniesieniu do lokalizacji kopiowanego pliku.Tak więc jedyną rzeczą, która pokaże się za pomocą ls (W/Users/jamie/data
) jest folder rekombinowany.
- nie, Patrz wyjaśnienie powyżej.
proteins-saved.dat
znajduje się pod adresem/Users/jamie
- tak
- nie, Patrz wyjaśnienie powyżej.
proteins.dat
znajduje się pod adresem/Users/jamie/data/recombined
- nie, Patrz wyjaśnienie powyżej.
proteins-saved.dat
znajduje się pod adresem/Users/jamie
usuwanie plików i katalogów
powrót do
data-shell
, uporządkujmy ten katalog, usuwając utworzony przez nas plikquotes.txt
.Polecenie uniksowe, którego użyjemy, torm
(skrót od 'remove’):$ rm quotes.txt
możemy potwierdzić, że plik zniknął, używając
ls
:$ ls quotes.txt
ls: cannot access 'quotes.txt': No such file or directory
usuwanie jest wieczne
powłoka Uniksa nie ma kosza na śmieci, z którego możemy odzyskać usunięte pliki (choć większość interfejsów graficznych do Uniksa to robi). Zamiast tego, gdy usuwamy pliki, są one odłączane od systemu plików, dzięki czemu ich miejsce na dysku może zostać poddane recyklingowi. Narzędzia do wyszukiwania i odzyskiwania usuniętych plików istnieją, ale nie ma gwarancji, że będą działać w konkretnej sytuacji, ponieważ komputer może od razu odzyskać miejsce na dysku.
bezpieczne korzystanie z rm
co się stanie, gdy wykonamy
rm -i thesis_backup/quotations.txt
?Po co nam ta ochrona podczas używaniarm
?rozwiązanie
$ rm: remove regular file 'thesis_backup/quotations.txt'? y
opcja
-i
wyświetli monit przed (każdym) usunięciem (użyj Y, aby potwierdzić usunięcie lub N, aby zachować plik).Powłoka Unix nie ma kosza na śmieci, więc wszystkie usunięte pliki znikną forever.By korzystając z opcji-i
, mamy możliwość sprawdzenia, czy usuwamy tylko te pliki, które chcemy usunąć.jeśli spróbujemy usunąć katalog
thesis
za pomocąrm thesis
,otrzymamy komunikat o błędzie:$ rm thesis
rm: cannot remove `thesis': Is a directory
dzieje się tak, ponieważ
rm
domyślnie działa tylko na plikach, a nie katalogach.
rm
może usunąć katalog i całą jego zawartość, jeśli użyjemy opcji-r
I zrobi to bez żadnych monitów o potwierdzenie:$ rm -r thesis
biorąc pod uwagę, że nie ma sposobu na odzyskanie plików usuniętych za pomocą powłoki,
rm -r
należy używać z dużą ostrożnością (możesz rozważyć dodanie interaktywnej opcjirm -r -i
).operacje z wieloma plikami i katalogami
często trzeba skopiować lub przenieść kilka plików naraz. Można to zrobić, dostarczając listę pojedynczych nazw plików lub określając wzorzec nazewnictwa za pomocą symboli wieloznacznych.
Kopiuj z wieloma nazwami plików
w tym ćwiczeniu możesz przetestować polecenia w katalogu
data-shell/data
.w poniższym przykładzie, co robi
cp
, gdy podano kilka nazw plików i nazwę katalogu?$ mkdir backup$ cp amino-acids.txt animals.txt backup/
w poniższym przykładzie, co robi
cp
, gdy podano trzy lub więcej nazw plików?$ ls -F
amino-acids.txt animals.txt backup/ elements/ morse.txt pdb/ planets.txt salmon.txt sunspot.txt
$ cp amino-acids.txt animals.txt morse.txt
rozwiązanie
Jeśli podano więcej niż jedną nazwę pliku, po której następuje nazwa katalogu (tzn. katalog docelowy musi być ostatnim argumentem),
cp
kopiuje pliki do nazwanego katalogu.Jeśli podano trzy nazwy plików,
cp
wyrzuca błąd taki jak ten poniżej, ponieważ oczekuje nazwy katalogu jako ostatniego argumentu.cp: target ‘morse.txt’ is not a directory
Using wildcards for accessing multiple files at once
Wildcards
*
is a wildcard, which matches zero or more characters.Let’s consider thedata-shell/molecules
directory:*.pdb
matchesethane.pdb
propane.pdb
, and everyfile that ends with ‘.pdb’. Z drugiej strony,p*.pdb
pasuje Tylko dopentane.pdb
Ipropane.pdb
, ponieważ 'p’ z przodu tylko dopasowuje nazwy plików zaczynające się na literę 'p’.
?
jest również symbolem wieloznacznym, ale pasuje dokładnie do jednego character.So?ethane.pdb
pasuje domethane.pdb
, podczas gdy*ethane.pdb
pasuje zarówno doethane.pdb
, jak imethane.pdb
.symbole wieloznaczne mogą być używane w połączeniu z każdym innym.g.
???ane.pdb
pasuje do trzech znaków,po których następujeane.pdb
, dająccubane.pdb ethane.pdb octane.pdb
.gdy powłoka widzi symbol wieloznaczny, rozszerza go, aby utworzyć listę pasujących nazw plików przed uruchomieniem polecenia, dla którego został uruchomiony. Jako wyjątek, jeśli wyrażenie wieloznaczne nie pasuje do pliku, Bash przekaże to wyrażenie jako argument do poleceń, którymi jest. Na przykład wpisanie
ls *.pdf
w katalogumolecules
(który zawiera tylko pliki o nazwach kończących się.pdb
) spowoduje komunikat o błędzie, że nie ma pliku o nazwiewc
Ils
zobaczą listy nazw plików pasujących do tych wyrażeń, ale nie same symbole wieloznaczne. To powłoka, a nie inne programy, zajmuje się ekspandowaniem symboli wieloznacznych i jest to kolejny przykład prostopadłej konstrukcji.
lista nazw plików pasujących do wzorca
Po uruchomieniu w katalogu
molecules
, któryls
polecenia czy wyprodukuje ten produkt?
ethane.pdb methane.pdb
ls *t*ane.pdb
ls *t?ne.*
ls *t??ne.pdb
ls ethane.*
Solution
The solution is
shows all files whose names contain zero or more characters (
*
) followed by the lettert
, then zero or more characters (*
) followed byane.pdb
. Daje toethane.pdb methane.pdb octane.pdb pentane.pdb
.
pokazuje wszystkie pliki, których nazwy zaczynają się od zera lub więcej znaków (
*
), po których następuje literat
, następnie pojedynczy znak (?
), następniene.
po którym następuje zero lub więcej znaków (*
). To da namoctane.pdb
Ipentane.pdb
, ale nie pasuje do niczego, co kończy się nathane.pdb
.
rozwiązuje problemy opcji 2, dopasowując dwa znaki (
??
) pomiędzyt
Ine
. To jest rozwiązanie.
pokazuje tylko pliki zaczynające się od
ethane.
.
więcej informacji na temat symboli wieloznacznych
Sam ma katalog zawierający dane kalibracyjne, zbiory danych i opisy zestawów danych:
.├── 2015-10-23-calibration.txt├── 2015-10-23-dataset1.txt├── 2015-10-23-dataset2.txt├── 2015-10-23-dataset_overview.txt├── 2015-10-26-calibration.txt├── 2015-10-26-dataset1.txt├── 2015-10-26-dataset2.txt├── 2015-10-26-dataset_overview.txt├── 2015-11-23-calibration.txt├── 2015-11-23-dataset1.txt├── 2015-11-23-dataset2.txt├── 2015-11-23-dataset_overview.txt├── backup│ ├── calibration│ └── datasets└── send_to_bob ├── all_datasets_created_on_a_23rd └── all_november_files
zanim wyruszy na kolejną wycieczkę, chce wykonać kopię zapasową swoich danych i wysłać kilka zestawów danych do swojego kolegi Boba. Sam używa następujących poleceń, aby wykonać zadanie:
$ cp *dataset* backup/datasets$ cp ____calibration____ backup/calibration$ cp 2015-____-____ send_to_bob/all_november_files/$ cp ____ send_to_bob/all_datasets_created_on_a_23rd/
pomóż Samowi, wypełniając spacje.
wynikowa struktura katalogów powinna wyglądać następująco
.├── 2015-10-23-calibration.txt├── 2015-10-23-dataset1.txt├── 2015-10-23-dataset2.txt├── 2015-10-23-dataset_overview.txt├── 2015-10-26-calibration.txt├── 2015-10-26-dataset1.txt├── 2015-10-26-dataset2.txt├── 2015-10-26-dataset_overview.txt├── 2015-11-23-calibration.txt├── 2015-11-23-dataset1.txt├── 2015-11-23-dataset2.txt├── 2015-11-23-dataset_overview.txt├── backup│ ├── calibration│ │ ├── 2015-10-23-calibration.txt│ │ ├── 2015-10-26-calibration.txt│ │ └── 2015-11-23-calibration.txt│ └── datasets│ ├── 2015-10-23-dataset1.txt│ ├── 2015-10-23-dataset2.txt│ ├── 2015-10-23-dataset_overview.txt│ ├── 2015-10-26-dataset1.txt│ ├── 2015-10-26-dataset2.txt│ ├── 2015-10-26-dataset_overview.txt│ ├── 2015-11-23-dataset1.txt│ ├── 2015-11-23-dataset2.txt│ └── 2015-11-23-dataset_overview.txt└── send_to_bob ├── all_datasets_created_on_a_23rd │ ├── 2015-10-23-dataset1.txt │ ├── 2015-10-23-dataset2.txt │ ├── 2015-10-23-dataset_overview.txt │ ├── 2015-11-23-dataset1.txt │ ├── 2015-11-23-dataset2.txt │ └── 2015-11-23-dataset_overview.txt └── all_november_files ├── 2015-11-23-calibration.txt ├── 2015-11-23-dataset1.txt ├── 2015-11-23-dataset2.txt └── 2015-11-23-dataset_overview.txt
rozwiązanie
$ cp *calibration.txt backup/calibration$ cp 2015-11-* send_to_bob/all_november_files/$ cp *-23-dataset* send_to_bob/all_datasets_created_on_a_23rd/
porządkowanie katalogów i plików
jamie pracuje nad projektem i widzi, że jej pliki nie są zbyt dobrze zorganizowane:
$ ls -F
analyzed/ fructose.dat raw/ sucrose.dat
fructose.dat
Isucrose.dat
pliki zawierają dane wyjściowe z jej analizy danych. Jakie polecenia opisane w tej lekcji musi uruchomić, aby poniższe polecenia wygenerowały pokazany wynik?
$ ls -F
analyzed/ raw/
$ ls analyzed
fructose.dat sucrose.dat
Solution
mv *.dat analyzed
Jamie needs to move her files
fructose.dat
andsucrose.dat
to theanalyzed
directory.The shell will expand *.dat to match all .dat files in the current directory.Themv
command then moves the list of .pliki dat do katalogu „analizowanego”.
Reprodukuj strukturę folderów
rozpoczynasz nowy eksperyment i chcesz powielić strukturę katalogu z poprzedniego eksperymentu, aby móc dodać nowe dane.
Załóżmy,że poprzedni eksperyment znajduje się w folderze o nazwie '2016-05-18′, który zawiera
data
folder, który z kolei zawiera foldery o nazwieraw
Iprocessed
, które zawierają pliki danych. Celem jest skopiowanie struktury folderu2016-05-18-data
do folderu o nazwie2016-05-20
tak, aby końcowa struktura katalogu wyglądała następująco:2016-05-20/└── data ├── processed └── raw
które z poniższych zestawów poleceń osiągnąć ten cel?Co zrobiłyby inne komendy?
$ mkdir 2016-05-20$ mkdir 2016-05-20/data$ mkdir 2016-05-20/data/processed$ mkdir 2016-05-20/data/raw
$ mkdir 2016-05-20$ cd 2016-05-20$ mkdir data$ cd data$ mkdir raw processed
$ mkdir 2016-05-20/data/raw$ mkdir 2016-05-20/data/processed
$ mkdir -p 2016-05-20/data/raw$ mkdir -p 2016-05-20/data/processed
$ mkdir 2016-05-20$ cd 2016-05-20$ mkdir data$ mkdir raw processed
na rozwiązanie
dwie pierwsze grupy zespołów osiągnięcia tego celu.Pierwszy zestaw używa ścieżek względnych do utworzenia katalogu najwyższego poziomu przed podkatalogami.
trzeci zestaw poleceń spowoduje błąd, ponieważ domyślne zachowanie
mkdir
nie utworzy podkatalogu nieistniejącego katalogu: najpierw należy utworzyć foldery poziomu pośredniego.czwarty zestaw komend osiąga ten cel. Pamiętaj, że opcja
-p
, po której następuje ścieżka jednego lub więcej katalogów, spowoduje, żemkdir
utworzy dowolne pośrednie podkatalogi zgodnie z wymaganiami.końcowy zestaw poleceń generuje katalogi „surowe” i „przetworzone” na tym samym poziomie co katalog „dane”.
kluczowe punkty
cp
kopiuje plik.
mkdir
tworzy nowy katalog.
mv
przenosi (zmienia nazwę) plik lub katalog.
rm
usuwa (usuwa) plik.
*
dopasowuje zero lub więcej znaków w nazwie pliku, więc*.txt
dopasowuje wszystkie pliki zakończone na.txt
.
?
pasuje do dowolnego pojedynczego znaku w nazwie pliku, więc?.txt
pasuje doa.txt
, ale nieany.txt
.użycie klucza sterującego można opisać na wiele sposobów, w tym
Ctrl-X
Control-X
I^X
.powłoka nie posiada kosza na śmieci: gdy coś zostanie usunięte, to naprawdę zniknie.
większość nazw plików to
something.extension
. Rozszerzenie nie jest wymagane i niczego nie gwarantuje, ale jest zwykle używane do wskazania typu danych w pliku.w zależności od rodzaju wykonywanej pracy, możesz potrzebować mocniejszego edytora tekstu niż Nano.
Leave a Reply