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-shellkatalogu 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 thesisi(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, ’
nanojest 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 jakonanona 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-XControl+XCtrl-XCtrl+X^XC-xw 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
touchgeneruje nowy plik o nazwiemy_file.txtw bieżącym katalogu. Możesz obserwować ten nowo wygenerowany plik, wpisująclsw wierszu polecenia.my_file.txtmożna również przeglądać w Eksploratorze plików yourGUI.podczas sprawdzania pliku z
ls -l, zauważ, że rozmiarmy_file.txtwynosi 0 bajtów. Innymi słowy, nie zawiera żadnych danych.Jeśli otworzyszmy_file.txtuż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ć plikmythesislub 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:.txtsygnalizuje zwykły plik tekstowy,.cfgjest plikiem konfiguracyjnym pełnym parametrówdla jakiegoś programu lub innego,.pngjest 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.mp3jakoś 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.datImaltose.datw 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 analyzedwypeł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 ../rawprzypomnijmy, ż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
cpdziała bardzo podobnie domv,z tym że kopiuje plik zamiast go przenosić.Możemy sprawdzić, czy zrobił to dobrze, używająclsz dwiema ścieżkami jako argumentami-podobnie jak większość poleceń Uniksa,lsmoże mieć kilka ścieżek naraz:$ cp quotes.txt thesis/quotations.txt$ ls quotes.txt thesis/quotations.txtquotes.txt thesis/quotations.txtmożemy również skopiować katalog i całą jego zawartość za pomocą opcji
-r,np. aby wykonać kopię zapasową katalogu:$ cp -r thesis thesis_backupmożemy sprawdzić wynik, wymieniając zawartość zarówno katalogu
thesis, jak i katalogu :$ ls thesis thesis_backupthesis:quotations.txtthesis_backup:quotations.txtzmiana 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.txtPo 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.txtmv statstics.txt statistics.txtmv 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
lsw kolejności pokazanej poniżej?$ pwd/Users/jamie/data$ lsproteins.dat$ mkdir recombined$ mv proteins.dat recombined/$ cp recombined/proteins.dat ../proteins-saved.dat$ ls
proteins-saved.dat recombinedrecombinedproteins.dat recombinedproteins-saved.datSolution
We start in the
/Users/jamie/datadirectory, and create a new folder calledrecombined.Druga linia przenosi (mv) plikproteins.datdo 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.datznajduje się pod adresem/Users/jamie- tak
- nie, Patrz wyjaśnienie powyżej.
proteins.datznajduje się pod adresem/Users/jamie/data/recombined- nie, Patrz wyjaśnienie powyżej.
proteins-saved.datznajduje się pod adresem/Users/jamieusuwanie 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.txtmożemy potwierdzić, że plik zniknął, używając
ls:$ ls quotes.txtls: cannot access 'quotes.txt': No such file or directoryusuwanie 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'? yopcja
-iwyś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
thesisza pomocąrm thesis,otrzymamy komunikat o błędzie:$ rm thesisrm: cannot remove `thesis': Is a directorydzieje się tak, ponieważ
rmdomyślnie działa tylko na plikach, a nie katalogach.
rmmoże usunąć katalog i całą jego zawartość, jeśli użyjemy opcji-rI zrobi to bez żadnych monitów o potwierdzenie:$ rm -r thesisbiorąc pod uwagę, że nie ma sposobu na odzyskanie plików usuniętych za pomocą powłoki,
rm -rnależ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 -Famino-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),
cpkopiuje pliki do nazwanego katalogu.Jeśli podano trzy nazwy plików,
cpwyrzuca 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/moleculesdirectory:*.pdbmatchesethane.pdbpropane.pdb, and everyfile that ends with ‘.pdb’. Z drugiej strony,p*.pdbpasuje Tylko dopentane.pdbIpropane.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.pdbpasuje domethane.pdb, podczas gdy*ethane.pdbpasuje zarówno doethane.pdb, jak imethane.pdb.symbole wieloznaczne mogą być używane w połączeniu z każdym innym.g.
???ane.pdbpasuje 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 *.pdfw katalogumolecules(który zawiera tylko pliki o nazwach kończących się.pdb) spowoduje komunikat o błędzie, że nie ma pliku o nazwiewcIlszobaczą 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órylspolecenia czy wyprodukuje ten produkt?
ethane.pdb methane.pdb
ls *t*ane.pdbls *t?ne.*ls *t??ne.pdbls 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.pdbIpentane.pdb, ale nie pasuje do niczego, co kończy się nathane.pdb.
rozwiązuje problemy opcji 2, dopasowując dwa znaki (??) pomiędzytIne. To jest rozwiązanie.
pokazuje tylko pliki zaczynające się odethane..
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_fileszanim 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.txtrozwią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 -Fanalyzed/ 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 analyzedJamie needs to move her files
fructose.datandsucrose.datto theanalyzeddirectory.The shell will expand *.dat to match all .dat files in the current directory.Themvcommand 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
datafolder, który z kolei zawiera foldery o nazwierawIprocessed, które zawierają pliki danych. Celem jest skopiowanie struktury folderu2016-05-18-datado folderu o nazwie2016-05-20tak, aby końcowa struktura katalogu wyglądała następująco:2016-05-20/└── data ├── processed └── rawktó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
mkdirnie 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, żemkdirutworzy 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
cpkopiuje plik.
mkdirtworzy nowy katalog.
mvprzenosi (zmienia nazwę) plik lub katalog.
rmusuwa (usuwa) plik.
*dopasowuje zero lub więcej znaków w nazwie pliku, więc*.txtdopasowuje wszystkie pliki zakończone na.txt.
?pasuje do dowolnego pojedynczego znaku w nazwie pliku, więc?.txtpasuje doa.txt, ale nieany.txt.użycie klucza sterującego można opisać na wiele sposobów, w tym
Ctrl-XControl-XI^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