mirror of https://github.com/01-edu/public.git
3 changed files with 92 additions and 0 deletions
@ -0,0 +1,31 @@ |
|||||||
|
#!/usr/bin/env bash |
||||||
|
|
||||||
|
# Unofficial Bash Strict Mode |
||||||
|
set -euo pipefail |
||||||
|
IFS=' |
||||||
|
' |
||||||
|
|
||||||
|
FILENAME="student/in-the-dark.sh" |
||||||
|
script_dirS=$(cd -P "$(dirname "$BASH_SOURCE")" &>/dev/null && pwd) |
||||||
|
|
||||||
|
challenge() { |
||||||
|
submitted=$(cd "$1" && bash "$script_dirS"/$FILENAME) |
||||||
|
expected=$(cd "$1" && bash "$script_dirS"/solutions/in-the-dark.sh) |
||||||
|
diff <(echo "$submitted") <(echo "$expected") |
||||||
|
} |
||||||
|
|
||||||
|
# True if FILE exists and is a regular file |
||||||
|
if [ -f ${FILENAME} ]; then |
||||||
|
# FILE exists and it's not empty |
||||||
|
if [ -s ${FILENAME} ]; then |
||||||
|
challenge ../../subjects |
||||||
|
|
||||||
|
challenge . |
||||||
|
else |
||||||
|
echo "The file exist but is empty" |
||||||
|
exit 1 |
||||||
|
fi |
||||||
|
else |
||||||
|
echo "File does not exist" |
||||||
|
exit 1 |
||||||
|
fi |
@ -0,0 +1,2 @@ |
|||||||
|
ls -R | grep "\.txt$" && echo "Search complete" >new & |
||||||
|
jobs |
@ -0,0 +1,59 @@ |
|||||||
|
## in-the-dark |
||||||
|
|
||||||
|
### Instructions |
||||||
|
|
||||||
|
Create a script `in-the-dark.sh` which will execute a job in the background that will run the command `ls` which will recursively list all files and directories in the current directory and its subdirectories. The output will be piped into the `grep` command, which will search for all files with the `.txt` extension. After the search is complete, you must redirect to a file "new" the following string "Search complete". You also need to List all background jobs. |
||||||
|
|
||||||
|
You must do all these steps running only one job! |
||||||
|
|
||||||
|
Expected output: |
||||||
|
|
||||||
|
```console |
||||||
|
$ ./in-the-dark.sh |
||||||
|
[1]+ Running "Your running job" |
||||||
|
news_amazon.txt |
||||||
|
model_forecasts.txt |
||||||
|
Ecommerce_purchases.txt |
||||||
|
breast_cancer_readme.txt |
||||||
|
shadow.txt |
||||||
|
standard.txt |
||||||
|
thinkertoy.txt |
||||||
|
$ cat new |
||||||
|
Search complete |
||||||
|
$ |
||||||
|
``` |
||||||
|
|
||||||
|
### Hints |
||||||
|
|
||||||
|
To run the `ls` command recursively in the background on a lot of files, you can use the `-R` option which will recursively list all files and directories in the current directory and its subdirectories. The output must be piped into the grep command. Here is a similar example. |
||||||
|
|
||||||
|
```console |
||||||
|
$ ls |
||||||
|
is-winner |
||||||
|
printalphabetalt |
||||||
|
printcomb2 |
||||||
|
question_mark |
||||||
|
onlyz |
||||||
|
organize_garage |
||||||
|
tetris-optimizer |
||||||
|
unzipstring |
||||||
|
$ ls | grep "z" |
||||||
|
onlyz |
||||||
|
organize_garage |
||||||
|
tetris-optimizer |
||||||
|
unzipstring |
||||||
|
``` |
||||||
|
|
||||||
|
The `&&` operator is used to combine multiple commands, and execute them as a single command. It is often used to run multiple commands in sequence, where the second command only runs if the first command succeeds. |
||||||
|
|
||||||
|
```console |
||||||
|
$ touch newfile.txt && chmod 755 newfile.txt |
||||||
|
$ ls -l |
||||||
|
-rwxr-xr-x 1 user user 0 jan 2 17:29 newfile.txt |
||||||
|
$ |
||||||
|
``` |
||||||
|
|
||||||
|
This will run the `touch` command, which will create a new file called "newfile.txt". If the touch command succeeds, the `chmod` command will run and change the permissions of "newfile.txt" to allow the owner to read, write, and execute the file, and allow everyone else to read and execute the file. |
||||||
|
|
||||||
|
> You have to use Man or Google to know more about commands flags, in order to solve this exercise! |
||||||
|
> Google and Man will be your friends! |
Loading…
Reference in new issue