From a07c95882b7d027f08144e8e8a19c2853b587ee2 Mon Sep 17 00:00:00 2001 From: vl4dd Date: Wed, 7 Apr 2021 07:08:22 -0400 Subject: [PATCH] Adds linux basic command notes on permissions --- Linux/basic_cmd.md | 57 +++++++++++++++++++++------------- Linux/img/file_permission.png | Bin 0 -> 20753 bytes 2 files changed, 35 insertions(+), 22 deletions(-) create mode 100644 Linux/img/file_permission.png diff --git a/Linux/basic_cmd.md b/Linux/basic_cmd.md index 88e5d97..b7c5034 100644 --- a/Linux/basic_cmd.md +++ b/Linux/basic_cmd.md @@ -1,4 +1,4 @@ -# Theory +# Linux ## Absolute Path vs Relative Path in Linux/Unix One of this blog follower asked us that whatâs the difference between absolute and relative path? @@ -41,15 +41,19 @@ Examples of relative path and absolute path for the same operation. - Man: an interface to the on-line reference manuals > $ man ls -# Wildcard +## Wildcard * Show all picture (multiple char) -> $ ls pic* +> $ ls pic* + ? show only picture between 50 and 59 (only one char) -> $ ls pic5?.jpg + +> $ ls pic5?.jpg + [] show only if char in [p-P] + > $ ls [pP]ic* -# Files and directory +## Files and directory - ls: list directory contents > $ ls @@ -60,33 +64,37 @@ Examples of relative path and absolute path for the same operation. - Pwd: output the current working directory > $ pwd -- Change directory -> $ cd -back to previous folder -> $ cd - +- Cd: Change directory +> $ cd -- Make directory +back to previous folder +> $ cd - + + +- Mkdir: Make directory > $ mkdir test1 test2 test3 -> $ mkdir -p lol/lol/lol +> $ mkdir -p lol/lol/lol + -p to create parent directory if needed -- Remove directory +- Rmdir: Remove directory > rmdir filename -> rm -rf file name +> rm -rf filename -- Move directory (can be used to rename a file) +- Mv: Move directory (can be used to rename a file) > mv file /opt/movedfile -- Copy file or directory +- Cp: Copy file or directory > $ cp file /opt/newcopiedfile -- Touch - change file timestamps but it can also create files -> $ touch nomdefichier.md -> $ touch pic{00..99}.jpeg # does not work +- Touch: change file timestamps but it can also create files +> $ touch nomdefichier.md +> $ touch pic{00..99}.jpeg # does not work + - Which: Searching the PATH for executable files matching the names of the arguments > $ which ls @@ -105,7 +113,8 @@ back to previous folder - Cat: concatenate files and print on the standard output > $ cat filename -## Users and privileges + +## Users adduser, addgroup - add a user or group to the system > sudo adduser steve @@ -132,7 +141,7 @@ Enter the new value, or press ENTER for the default Other []: Is the information correct? [Y/n] y -```` +``` user skeleton: skeleton files used for new user configuration > $ ls /etc/skel/ @@ -147,7 +156,7 @@ user skeleton: skeleton files used for new user configuration - Change user > $ su - marie -### Permissions +## Permissions - Chmod: change file mode bits @@ -159,6 +168,8 @@ A combination of the letters **ugoa** controls which users' access to the file If none of these are given, the effect is as if (a) were given, but bits that are set in the umask are not affected. +![file permissions](./img/file_permission.png) + ```bash marie@d3bi4n:~$ ls -l total 4 @@ -173,7 +184,9 @@ total 4 > -rw-r--**rw**- 1 marie marie 12 Apr 7 05:44 test -###groups + +Number alternatives: +### Groups Groups: print the groups a user is in > $ groups diff --git a/Linux/img/file_permission.png b/Linux/img/file_permission.png new file mode 100644 index 0000000000000000000000000000000000000000..231a265b648bff87afe8342f643ae9affc3d5eb1 GIT binary patch literal 20753 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 literal 0 HcmV?d00001