From a48d5eede30891187b72d8d24d13cdd545853529 Mon Sep 17 00:00:00 2001 From: RinRi Date: Tue, 15 Nov 2022 21:08:46 +0300 Subject: [PATCH] week10 --- week10/_ex1.txt | 1 + week10/_ex1_1.txt | 1 + week10/_ex1_2.txt | 1 + week10/_ex3.txt | 1 + week10/ex1.sh | 9 ++++++ week10/ex1.txt | 3 ++ week10/ex2.sh | 8 ++++++ week10/ex2.txt | 2 ++ week10/ex3.sh | 13 +++++++++ week10/ex3.txt | 6 ++++ week10/ex4.c | 71 ++++++++++++++++++++++++++++++++++++++++++++++ week10/ex4.out | Bin 0 -> 21160 bytes week10/ex4.sh | 9 ++++++ week10/tmp/file1 | 0 week10/tmp/file2 | 0 week10/tmp/link1 | 0 16 files changed, 125 insertions(+) create mode 100644 week10/_ex1.txt create mode 100644 week10/_ex1_1.txt create mode 100644 week10/_ex1_2.txt create mode 100755 week10/_ex3.txt create mode 100755 week10/ex1.sh create mode 100644 week10/ex1.txt create mode 100755 week10/ex2.sh create mode 100644 week10/ex2.txt create mode 100755 week10/ex3.sh create mode 100644 week10/ex3.txt create mode 100644 week10/ex4.c create mode 100755 week10/ex4.out create mode 100755 week10/ex4.sh create mode 100644 week10/tmp/file1 create mode 100644 week10/tmp/file2 create mode 100644 week10/tmp/link1 diff --git a/week10/_ex1.txt b/week10/_ex1.txt new file mode 100644 index 0000000..72867bc --- /dev/null +++ b/week10/_ex1.txt @@ -0,0 +1 @@ +RinRi diff --git a/week10/_ex1_1.txt b/week10/_ex1_1.txt new file mode 100644 index 0000000..72867bc --- /dev/null +++ b/week10/_ex1_1.txt @@ -0,0 +1 @@ +RinRi diff --git a/week10/_ex1_2.txt b/week10/_ex1_2.txt new file mode 100644 index 0000000..72867bc --- /dev/null +++ b/week10/_ex1_2.txt @@ -0,0 +1 @@ +RinRi diff --git a/week10/_ex3.txt b/week10/_ex3.txt new file mode 100755 index 0000000..039727e --- /dev/null +++ b/week10/_ex3.txt @@ -0,0 +1 @@ +lol diff --git a/week10/ex1.sh b/week10/ex1.sh new file mode 100755 index 0000000..1ab7087 --- /dev/null +++ b/week10/ex1.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +rm -f _ex1* +echo "RinRi" > _ex1.txt +ln -f _ex1.txt _ex1_1.txt +ln -f _ex1.txt _ex1_2.txt +ls -i _ex1.txt > ex1.txt +ls -i _ex1_1.txt >> ex1.txt +ls -i _ex1_2.txt >> ex1.txt diff --git a/week10/ex1.txt b/week10/ex1.txt new file mode 100644 index 0000000..063fde8 --- /dev/null +++ b/week10/ex1.txt @@ -0,0 +1,3 @@ +6817598 _ex1.txt +6817598 _ex1_1.txt +6817598 _ex1_2.txt diff --git a/week10/ex2.sh b/week10/ex2.sh new file mode 100755 index 0000000..ede974a --- /dev/null +++ b/week10/ex2.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +rm -f ../week01/file.txt _ex2.txt +echo "file" > ../week01/file.txt +ln -f ../week01/file.txt _ex2.txt +inode=$(find _ex2.txt -printf '%i') +find .. -inum "$inode" > ex2.txt +find .. -inum "$inode" -exec rm {} \; >> ex2.txt diff --git a/week10/ex2.txt b/week10/ex2.txt new file mode 100644 index 0000000..62b56a6 --- /dev/null +++ b/week10/ex2.txt @@ -0,0 +1,2 @@ +../week10/_ex2.txt +../week01/file.txt diff --git a/week10/ex3.sh b/week10/ex3.sh new file mode 100755 index 0000000..6eefe1e --- /dev/null +++ b/week10/ex3.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +rm -f _ex3.txt +echo "lol" > _ex3.txt +chmod a-x _ex3.txt +ls -l _ex3.txt > ex3.txt +chmod 707 _ex3.txt +ls -l _ex3.txt >> ex3.txt +chmod a=u _ex3.txt +ls -l _ex3.txt >> ex3.txt +echo "660 means read and write permissions (6) for user and the group" >> ex3.txt +echo "775 means read, write, and execute permissions (7) for user and the group, and read and execute permissions (5) for others" >> ex3.txt +echo "777 means read, write, and execute permissions (7) for everyone" >> ex3.txt diff --git a/week10/ex3.txt b/week10/ex3.txt new file mode 100644 index 0000000..f3b5c03 --- /dev/null +++ b/week10/ex3.txt @@ -0,0 +1,6 @@ +-rw-r--r-- 1 rinri users 4 Nov 15 21:08 _ex3.txt +-rwx---rwx 1 rinri users 4 Nov 15 21:08 _ex3.txt +-rwxrwxrwx 1 rinri users 4 Nov 15 21:08 _ex3.txt +660 means read and write permissions (6) for user and the group +775 means read, write, and execute permissions (7) for user and the group, and read and execute permissions (5) for others +777 means read, write, and execute permissions (7) for everyone diff --git a/week10/ex4.c b/week10/ex4.c new file mode 100644 index 0000000..54ddf02 --- /dev/null +++ b/week10/ex4.c @@ -0,0 +1,71 @@ +#include +#include +#include +#include +#include + +struct file { + ino_t inode; + char names[64][256]; + int sz; +}; + +int putToFiles(char name[256], ino_t inode, struct file *files, int sz) { + // if found the same inode + for (int i = 0; i < sz; ++i) { + if (files[i].inode == inode) { + memcpy(files[i].names[files[i].sz++], name, 256); + return sz; + } + } + + // if not found + files[sz].inode = inode; + memcpy(files[sz].names[0], name, 256); + files[sz].sz = 1; + sz++; + + return sz; +} + +int main() { + DIR *d = opendir("./tmp"); + if (d == NULL) { + perror("opendir"); + exit(1); + } + + struct file files[64]; + int sz = 0; + + struct dirent *entry; + while ((entry = readdir(d))!= NULL) { + if (entry->d_name[0] == '.') + continue; + + //printf("%s ", entry->d_name); + struct stat s; + char buf[256] = "./tmp/"; + strncpy(buf + strlen(buf), entry->d_name, 200); + + if (stat(buf, &s) == -1) { + perror("stat"); + exit(1); + } + + sz = putToFiles(entry->d_name, s.st_ino, files, sz); + } + + printf("File --- Hard links\n"); + for (int i = 0; i < sz; ++i) { + if (files[i].sz > 1) { + for (int j = 0; j < files[i].sz; ++j) { + printf("%s --- ", files[i].names[j]); + for (int k = 0; k < files[i].sz; ++k) { + printf("%s ", files[i].names[k]); + } + printf("\n"); + } + } + } +} diff --git a/week10/ex4.out b/week10/ex4.out new file mode 100755 index 0000000000000000000000000000000000000000..ce4b8fc474e401e713cebd472c2e0acaf6b8ff8d GIT binary patch literal 21160 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 E0iu0GE&u=k literal 0 HcmV?d00001 diff --git a/week10/ex4.sh b/week10/ex4.sh new file mode 100755 index 0000000..5ec3c6e --- /dev/null +++ b/week10/ex4.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +rm -rf tmp +mkdir tmp +touch tmp/file1 tmp/file2 +ln tmp/file1 tmp/link1 + +gcc ex4.c -o ex4.out +./ex4.out diff --git a/week10/tmp/file1 b/week10/tmp/file1 new file mode 100644 index 0000000..e69de29 diff --git a/week10/tmp/file2 b/week10/tmp/file2 new file mode 100644 index 0000000..e69de29 diff --git a/week10/tmp/link1 b/week10/tmp/link1 new file mode 100644 index 0000000..e69de29