# Úkoly - Bash I
U úkolů označených :keyboard: budeš potřebovat počítač.
Ostatní zkus dát „z hlavy“.
## 1. :keyboard:
Co dělá příkaz `ls -v`?
* **A.** Vypíše verzi programu `ls`
* **B.** Vypíše jméno aktuálního adresáře, ne jeho obsah
* **C.** Seřadí soubory podle hodnot (víceciferných) čísel v názvech
* **D.** Vypíše obsah adresáře kompaktně – jednotlivá jména oddělí čárkou
Bonus: Jaké přepínače mají ostatní efekty?
## 2.
Začnu-li (jako uživatel `mh`) v adresáři `/home/mh/data`, které z těchto příkazů mě dostanou do `/home/mh`?
* **A.** `cd .`
* **B.** `cd /`
* **C.** `cd /home/mh`
* **D.** `cd ../..`
* **E.** `cd ~`
* **F.** `cd home`
* **G.** `cd ~/data/..`
* **H.** `cd`
* **I.** `cd ..`
* **J.** otevření nového terminálu
## 3.
Mám-li níže ukázané adresáře, a `pwd` vypisuje `/home/mh/vec`, co ukáže `ls -F ../archiv`?
```graphviz
digraph hierarchy {
node [shape=folder];
"/" -> home;
home -> mh;
mh -> vec;
vec -> archiv;
archiv -> "2020-09-01";
archiv -> "2020-09-16";
archiv -> "2020-10-01";
mh -> archiv2;
archiv2 [label="archiv"]
archiv2 -> original;
archiv2 -> pnas_final;
archiv2 -> pnas_2
}
```
* **A.** `../archiv`: Adresář nebo soubor neexistuje
* **B.** `2012-12-01 2013-01-08 2013-01-27`
* **C.** `2012-12-01/ 2013-01-08/ 2013-01-27/`
* **D.** `original pnas_final pnas_2`
* **E.** `original/ pnas_final/ pnas_2/`
## 4.
Vypadá-li disk jako v předchozím úkolu a `pwd` vypisuje `/home/mh/archiv`, které z těchto příkazů vypíšou `pnas_2/ pnas_final/ original/`?
* **A.** `ls pwd`
* **B.** `ls -r -F`
* **C.** `ls -r -F /home/mh/archiv`
## 5. :keyboard:
Zadej tenhle příkaz:
```console
$ touch novy_soubor.txt
```
1. Co tenhle příkaz udělal? (Nápověda: Použij `ls`)
2. Když se do aktuálního adresáře podíváš grafickým manažerem souborů, ukáže se ti `novy_soubor.txt`?
3. Pusť `ls -l`. Zjistíš z výpisu, co nový soubor obsahuje?
4. K čemu slouží příkaz `touch`?
## 6.
Po tom, co pustíš následující příkazy, si uvědomíš, že soubory `sucrose.dat` a `maltose.dat` jsou špatně umístěné – měly by být v adresáři `raw`.
```console
$ ls -F
analyzed/ raw/
$ ls -F analyzed
fructose.dat glucose.dat maltose.dat sucrose.dat
$ cd analyzed
```
Doplň příkaz, který je tam přesune.
```console
$ mv sucrose.dat maltose.dat ____/____
```
## 7.
Vytvořila sis soubor `statsitika.txt`, ve kterém máš nějaké výpočty. Ale ve jméně je překlep! Které z těchto příkazů to spraví?
* **A.** `cp statsitika.txt statistika.txt`
* **B.** `mv statsitika.txt statistika.txt`
* **C.** `cp statsitika.txt .`
* **D.** `mv statsitika.txt .`
## 8.
Co vypíše `ls` na konci této sekvence příkazů?
```console
$ pwd
/home/jamie/data
$ ls
proteiny.dat
$ mkdir rekombinace
$ mv proteiny.dat rekombinace
$ cp rekombinace/proteiny.dat ../proteiny2.dat
$ ls
```
* **A.** `proteiny2.dat rekombinace`
* **B.** `rekombinace`
* **C.** `proteiny.dat rekombinace`
* **D.** `proteiny2.dat`
## 9.
Sam má následující soubory:
```
.
├── 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
```
Doplň následující příkazy...
```console
$ 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/
```
... aby výsledek vypadal takhle:
```
.
├── 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
```
## 10.
Máš následující soubory:
```console
$ ls -F
analyzed/ fructose.dat raw/ sucrose.dat
```
Zkus napsat co nejkratší příkaz, kterým přesuneš `fructose.dat` a `sucrose.dat` do adresáře `analyzed/`.
## 11.
Které z následujících sad příkazů vytvoří tuhle strukturu adresářů?
```plain
2016-05-20/
└── data
├── processed
└── raw
```
**A.**
```console
$ mkdir 2016-05-20
$ mkdir 2016-05-20/data
$ mkdir 2016-05-20/data/processed
$ mkdir 2016-05-20/data/raw
```
**B.**
```console
$ mkdir 2016-05-20
$ cd 2016-05-20
$ mkdir data
$ cd data
$ mkdir raw processed
```
**C.**
```console
$ mkdir 2016-05-20/data/raw
$ mkdir 2016-05-20/data/processed
```
**D.**
```console
$ mkdir -p 2016-05-20/data/raw
$ mkdir -p 2016-05-20/data/processed
```
**E.**
```console
$ mkdir 2016-05-20
$ cd 2016-05-20
$ mkdir data
$ mkdir raw processed
```
---
Většina úkolů pochází z http://swcarpentry.github.io/shell-novice/
* Licensed under CC-BY 4.0 2018–2020 by The Carpentries
* Licensed under CC-BY 4.0 2016–2018 by Software Carpentry Foundation