mirror of https://github.com/01-edu/public.git
3 changed files with 118 additions and 0 deletions
@ -0,0 +1,18 @@
|
||||
#!/usr/bin/env bash |
||||
|
||||
# Unofficial Bash Strict Mode |
||||
set -euo pipefail |
||||
IFS=' |
||||
' |
||||
|
||||
script_dirS=$(cd -P "$(dirname "$BASH_SOURCE")" &>/dev/null && pwd) |
||||
challenge() { |
||||
touch file1.txt |
||||
submitted=$(bash "$script_dirS"/student/details.sh && ls -l file1.txt | awk '{print $1, $2, $5, $6, $7, $8, $9}') |
||||
expected=$(bash "$script_dirS"/solutions/details.sh && ls -l file1.txt | awk '{print $1, $2, $5, $6, $7, $8, $9}') |
||||
diff <(echo "$submitted") <(echo "$expected") |
||||
stat file1.txt |
||||
} |
||||
|
||||
challenge |
||||
rm file1.txt |
@ -0,0 +1,3 @@
|
||||
truncate -s 1000 file1.txt |
||||
chmod 600 file1.txt |
||||
touch -amt 2201010000 file1.txt |
@ -0,0 +1,97 @@
|
||||
## details |
||||
|
||||
### Instructions |
||||
|
||||
Create a script `details.sh` that does the following: |
||||
|
||||
- Change the size of the `file1.txt` to "1000". For example: |
||||
- Change the permissions of the `file1.txt` form this: |
||||
- Update the both Modification and Access time of the `file1.txt` to "2022-01-01". |
||||
|
||||
`-rw-rw-r-- 1 user user 0 dez 27 12:25 file1.txt` |
||||
|
||||
to this: |
||||
|
||||
`-rw------- 1 user user 0 dez 27 12:25 file1.txt` |
||||
|
||||
### Usage |
||||
|
||||
```console |
||||
$ stat file1.txt |
||||
File: file1.txt |
||||
Size: 0 Blocks: 0 IO Block: 4096 regular empty file |
||||
Device: ff01h/64769e Inode: 1839372 Links: 1 |
||||
Access: (0664/-rw-rw-r--) Uid: ( 1000/ user) Gid: ( 1000/ user) |
||||
Access: 2022-12-27 12:44:56.397966181 +0000 |
||||
Modify: 2022-12-27 12:44:56.397966181 +0000 |
||||
Change: 2022-12-27 12:44:56.397966181 +0000 |
||||
Birth: - |
||||
$ ./details.sh |
||||
$ stat file1.txt |
||||
File: file1.txt |
||||
Size: 1000 Blocks: 0 IO Block: 4096 regular file |
||||
Device: ff01h/64769e Inode: 1839472 Links: 1 |
||||
Access: (0600/-rw-------) Uid: ( 1000/ user) Gid: ( 1000/ user) |
||||
Access: 2022-01-01 00:00:00.000000000 +0000 |
||||
Modify: 2022-01-01 00:00:00.000000000 +0000 |
||||
Change: 2022-12-27 14:53:43.886486188 +0000 |
||||
Birth: - |
||||
$ |
||||
``` |
||||
|
||||
### Hints |
||||
|
||||
Use the `stat` command to view the current details of the file, including the last modification time and size. |
||||
|
||||
```console |
||||
$ stat file.txt |
||||
File: file.txt |
||||
Size: 4030 Blocks: 8 IO Block: 4096 regular file |
||||
Device: 801h/2049d Inode: 13633379 Links: 1 |
||||
Access: (0644/-rw-r--r--) Uid: ( 1000/ linuxize) Gid: ( 1000/ linuxize) |
||||
Access: 2019-11-06 09:52:17.991979701 +0100 |
||||
Modify: 2019-11-06 09:52:17.971979713 +0100 |
||||
Change: 2019-11-06 09:52:17.971979713 +0100 |
||||
Birth: - |
||||
``` |
||||
|
||||
The `touch` command's primary function is to modify a timestamp. Commonly, the utility is used for file creation, although this is not its primary function. The terminal program can change the modification and access time for any given file. |
||||
|
||||
The fundamental syntax for the touch command is: |
||||
|
||||
`touch <options> <file or directory name>` |
||||
|
||||
Some of the touch Command Options: |
||||
|
||||
- `-a` Changes the access time. |
||||
- `-d=<string>` Changes a timestamp using a date string. |
||||
- `-m` Changes the modification time. |
||||
|
||||
```console |
||||
$ touch test.txt |
||||
$ ls -lu |
||||
-rw-rw-r-- 1 user user 0 dez 27 12:13 test.txt |
||||
$ touch -a test.txt |
||||
$ ls -lu |
||||
-rw-rw-r-- 1 user user 0 dez 27 12:20 test.txt |
||||
$ touch -d tomorrow test.txt |
||||
$ ls -l |
||||
-rw-rw-r-- 1 user user 0 dez 28 2022 test.txt |
||||
$ touch -m test.txt |
||||
$ ls -l |
||||
-rw-rw-r-- 1 user user 0 dez 27 12:25 testing.txt |
||||
``` |
||||
|
||||
Sometimes we need to remove the content of a file without deleting the file. For that Linux operating system offers a command called `truncate`. It is used to extend or reduce the file size. Truncating a file is much quicker and simpler without modifying the permissions and ownership of the file. |
||||
|
||||
```console |
||||
$ touch test.txt |
||||
$ ls -l |
||||
-rw-rw-r-- 1 user user 0 dez 27 12:13 test.txt |
||||
$ truncate -s 100 test.txt |
||||
$ ls -l |
||||
-rw-rw-r-- 1 user user 100 dez 27 12:15 test.txt |
||||
``` |
||||
|
||||
> 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