Spis treści

mkdir_rmdir

user@host ~ $ ls -Al
total 0
user@host ~ $ mkdir notes/2025/04
mkdir: cannot create directory ‘notes/2025/04’: No such file or directory
user@host ~ $ mkdir notes notes/2025 notes/2025/04
user@host ~ $ tree
.
└── notes
    └── 2025
        └── 04

4 directories, 0 files
user@host ~ $ mkdir -p projects/2025/04
user@host ~ $ tree
.
├── notes
│   └── 2025
│       └── 04
└── projects
    └── 2025
        └── 04

7 directories, 0 files
user@host ~ $ touch file
user@host ~ $ mkdir file projects/2024/03
mkdir: cannot create directory ‘file’: File exists
mkdir: cannot create directory ‘projects/2024/03’: No such file or directory
user@host ~ $ mkdir -p file projects/2024/03
mkdir: cannot create directory ‘file’: File exists
user@host ~ $ tree
.
├── file
├── notes
│   └── 2025
│       └── 04
└── projects
    ├── 2024
    │   └── 03
    └── 2025
        ├── 04
        └── 05

10 directories, 1 file
user@host ~ $ rmdir notes/2025/04
user@host ~ $ rmdir notes
rmdir: failed to remove 'notes': Directory not empty
user@host ~ $ tree
.
├── file
├── notes
│   └── 2025
└── projects
    ├── 2024
    │   └── 03
    └── 2025
        ├── 04
        └── 05

9 directories, 1 file
user@host ~ $ rmdir -p notes/2025
user@host ~ $ tree
.
├── file
└── projects
    ├── 2024
    │   └── 03
    └── 2025
        ├── 04
        └── 05

7 directories, 1 file
user@host ~ $

ln

user@host ~ $ ls -il *
15466639 -rw-r--r-- 1 user users 55 Apr  6 00:00 text
user@host ~ $ ln text hardlink
user@host ~ $ ln -s text symlink
user@host ~ $ ls -il *
15466639 -rw-r--r-- 2 user users 55 Apr  6 00:00 hardlink
15466649 lrwxrwxrwx 1 user users  4 Apr  6 01:00 symlink -> text
15466639 -rw-r--r-- 2 user users 55 Apr  6 00:00 text
user@host ~ $ cat text
One day a tortoise will learn how to fly.
(Small Gods)
user@host ~ $ fortune -s >> hardlink
user@host ~ $ ls -il *
15466639 -rw-r--r-- 2 user users 183 Apr  6 01:00 hardlink
15466649 lrwxrwxrwx 1 user users   4 Apr  6 01:00 symlink -> text
15466639 -rw-r--r-- 2 user users 183 Apr  6 01:00 text
user@host ~ $ cat text
One day a tortoise will learn how to fly.
(Small Gods)
"Real stupidity beats artificial intelligence every time."
        -- Bursar 1 - Hex 0
           (Terry Pratchett, Hogfather)
user@host ~ $ rm text
user@host ~ $ ls -il *
15466639 -rw-r--r-- 1 user users 183 Apr  6 01:00 hardlink
15466649 lrwxrwxrwx 1 user users   4 Apr  6 01:00 symlink -> text
user@host ~ $ mkdir text
user@host ~ $ ls -dil *
15466639 -rw-r--r-- 1 user users  183 Apr  6 01:00 hardlink
15466649 lrwxrwxrwx 1 user users    4 Apr  6 01:00 symlink -> text
15466650 drwxr-xr-x 2 user users 4096 Apr  6 01:00 text
user@host ~ $ ln text oh_no
ln: text: hard link not allowed for directory
user@host ~ $ ln -s whatever broken
user@host ~ $ ln -s .. text/back
user@host ~ $ ls -dil * text/*
15466651 lrwxrwxrwx 1 user users    8 Apr  6 01:00 broken -> whatever
15466639 -rw-r--r-- 1 user users  183 Apr  6 01:00 hardlink
15466649 lrwxrwxrwx 1 user users    4 Apr  6 01:00 symlink -> text
15466650 drwxr-xr-x 2 user users 4096 Apr  6 01:00 text
15466652 lrwxrwxrwx 1 user users    2 Apr  6 01:00 text/back -> ..
user@host ~ $ cd text/back
user@host ~/text/back $ cd symlink/back
user@host ~/text/back/symlink/back $ cd text/back
user@host ~/text/back/symlink/back/text/back $ pwd
/home/user/text/back/symlink/back/text/back
user@host ~/text/back/symlink/back/text/back $ readlink -f .
/home/user
user@host ~/text/back/symlink/back/text/back $ realpath .
/home/user

user@host ~/text/back/symlink/back/text/back $ date > now
user@host ~/text/back/symlink/back/text/back $ ln now hardlink text
user@host ~/text/back/symlink/back/text/back $ tree
.
├── broken -> whatever
├── hardlink
├── now
├── symlink -> text
└── text
    ├── back -> ..
    ├── hardlink
    └── now

cp_mv

user@host ~ $ tree --noreport
.
├── date
├── dir
│   ├── file
│   └── now
└── text
user@host ~ $ cp text normalcopy
user@host ~ $ cp -a text archivecopy
user@host ~ $ ls -l text *copy
-rw-rw---- 1 user wheel 55 Apr  6 01:00 archivecopy
-rw-r----- 1 user users 55 Apr  6 02:00 normalcopy
-rw-rw---- 1 user wheel 55 Apr  6 01:00 text
user@host ~ $ cp -a date text copy
cp: target 'copy': No such file or directory
user@host ~ $ mkdir copy
user@host ~ $ cp -a date text copy
user@host ~ $ cp copy recursive
cp: -r not specified; omitting directory 'copy'
user@host ~ $ cp -r copy recursive
user@host ~ $ tree -Dgp --noreport recursive
[drwxr-xr-x users    Apr  6 02:00]  recursive
├── [-rw-r--r-- users    Apr  6 02:00]  date
└── [-rw-r----- users    Apr  6 02:00]  text
user@host ~ $ cp -a copy archive
user@host ~ $ tree -Dgp --noreport archive
[drwxr-xr-x users    Apr  6 02:00]  archive
├── [-rw-r--r-- users    Apr  6 01:00]  date
└── [-rw-rw---- wheel    Apr  6 01:00]  text
user@host ~ $ cp archive/date archive/text
user@host ~ $ cp -i archive/date archive/text
cp: overwrite 'archive/text'? yes
user@host ~ $ ls
archive  archivecopy  copy  date  dir  normalcopy  recursive  text
user@host ~ $ mv normalcopy text
user@host ~ $ ls
archive  archivecopy  copy  date  dir  recursive  text
user@host ~ $ mv -i archivecopy text
mv: overwrite 'text'? yes
user@host ~ $ mv text archivecopy
user@host ~ $ mv archivecopy date dir
user@host ~ $ tree -Dgp --noreport
[drwxr-xr-x users    Apr  6 02:00]  .
├── [drwxr-xr-x users    Apr  6 02:00]  archive
│   ├── [-rw-r--r-- users    Apr  6 01:00]  date
│   └── [-rw-rw---- wheel    Apr  6 02:00]  text
├── [drwxr-xr-x users    Apr  6 02:00]  copy
│   ├── [-rw-r--r-- users    Apr  6 01:00]  date
│   └── [-rw-rw---- wheel    Apr  6 01:00]  text
├── [drwxr-xr-x users    Apr  6 02:00]  dir
│   ├── [-rw-rw---- wheel    Apr  6 01:00]  archivecopy
│   ├── [-rw-r--r-- users    Apr  6 01:00]  date
│   ├── [-rw-rw---- wheel    Apr  6 01:00]  file
│   └── [-rw-r--r-- users    Apr  6 01:00]  now
└── [drwxr-xr-x users    Apr  6 02:00]  recursive
    ├── [-rw-r--r-- users    Apr  6 02:00]  date
    └── [-rw-r----- users    Apr  6 02:00]  text
user@host ~ $ mv dir copy
user@host ~ $ tree --noreport
.
├── archive
│   ├── date
│   └── text
├── copy
│   ├── date
│   ├── dir
│   │   ├── archivecopy
│   │   ├── date
│   │   ├── file
│   │   └── now
│   └── text
└── recursive
    ├── date
    └── text
user@host ~ $

scp_sftp

user@host ~ $ whoami
user
user@host ~ $ ls
date  dir  text
user@host ~ $ scp example.com:myScript.pl scriptFromExample.pl
user@example.com's password:
myScript.pl                                   100%   85    80.2KB/s   00:00
user@host ~ $ ls
date  dir  scriptFromExample.pl  text
user@host ~ $ scp user@example.com:myScript.pl .
user@example.com's password:
myScript.pl                                   100%   85    84.4KB/s   00:00
user@host ~ $ scp john@example.com:todo.txt .
john@example.com's password:
todo.txt                                      100%   50    49.3KB/s   00:00
user@host ~ $ ls
date  dir  myScript.pl  scriptFromExample.pl  text  todo.txt
user@host ~ $ scp todo.txt user@mylaptop:/tmp/johns_todo.txt
user@mylaptop's password:
todo.txt                                      100%   50    75.5KB/s   00:00
user@host ~ $ scp text user@example.com:
user@example.com's password:
text                                          100%   30    49.2KB/s   00:00
user@host ~ $ scp dir example.com:
user@example.com's password:
scp: local "dir" is not a regular file
scp: failed to upload file dir to .
user@host ~ $ scp -r dir example.com:
user@example.com's password:
file                                          100%   55    94.1KB/s   00:00
now                                           100%   30   115.4KB/s   00:00
user@host ~ $ scp john@example.com:photos/cat.jpg \
>                 john@example.com:photos/ghoti.jpg \
>                 user@mylaptop:/tmp/johns_todo.txt \
>                 user@example.com:
user@example.com's password:
john@example.com's password:
cat.jpg                                       100%  100KB  26.8MB/s   00:00
john@example.com's password:
ghoti.jpg                                     100%  236KB  31.8MB/s   00:00
user@mylaptop's password:
johns_todo.txt                                100%   50    47.2KB/s   00:00
user@host ~ $ sftp john@example.com
john@example.com's password:
Connected to example.com.
sftp> pwd
Remote working directory: /home/john
sftp> ls
documents  photos     todo.txt
sftp> lpwd
Local working directory: /home/user
sftp> lls
date  dir  myScript.pl  scriptFromExample.pl  text  todo.txt
sftp> put myScript.pl userScript.pl
Uploading myScript.pl to /home/john/userScript.pl
myScript.pl                                   100%   85   137.0KB/s   00:00
sftp> put dir/file
Uploading dir/file to /home/john/file
file                                          100%   55    89.4KB/s   00:00
sftp> lcd dir
sftp> lpwd
Local working directory: /home/user/dir
sftp> get todo.txt new_todo.txt
Fetching /home/john/todo.txt to new_todo.txt
todo.txt                                      100%   50    77.3KB/s   00:00
sftp> get photos
Fetching /home/john/photos/ to photos
download /home/john/photos/: not a regular file
sftp> get -r photos
Fetching /home/john/photos/ to photos
Retrieving /home/john/photos
ghoti.jpg                                     100%  236KB  45.1MB/s   00:00
cat.jpg                                       100%  100KB  43.4MB/s   00:00
sftp> cd /tmp
sftp> pwd
Remote working directory: /tmp
sftp> ls
sftp> put -r dir/*
Uploading dir/file to /tmp/file
file                                          100%   55    72.3KB/s   00:00
Uploading dir/new_todo.txt to /tmp/new_todo.txt
new_todo.txt                                  100%   50   219.8KB/s   00:00
Uploading dir/now to /tmp/now
now                                           100%   30   160.8KB/s   00:00
Uploading dir/photos/ to /tmp/photos
Entering dir/photos/
cat.jpg                                       100%  100KB  27.8MB/s   00:00
ghoti.jpg                                     100%  236KB  39.2MB/s   00:00
sftp> ls -l
-rw-r-----    ? john     john           55 Apr  6 02:00 file
-rw-r--r--    ? john     john           50 Apr  6 02:00 new_todo.txt
-rw-r--r--    ? john     john           30 Apr  6 02:00 now
drwxr-xr-x    ? john     john         4096 Apr  6 02:00 photos
sftp> lls -l
total 16
-rw-rw---- 1 user wheel   55 Apr  6 01:00 file
-rw-r--r-- 1 user users   50 Apr  6 02:00 new_todo.txt
-rw-r--r-- 1 user users   30 Apr  6 01:00 now
drwxr-xr-x 2 user users 4096 Apr  6 02:00 photos
sftp> quit
user@host ~ $

rm

user@host ~ $ ls -lt
total 44
drwxr-xr-x 3 user users 4096 Apr  7 19:34 misc
drwxr-xr-x 2 user users 4096 Apr  6 02:00 photos
-rw-r--r-- 1 user users   30 Apr  6 02:00 normalfile.txt
-r--r--r-- 1 user wheel   30 Apr  6 02:00 readonlyfile.txt
-rw-r--r-- 1 user users  165 Apr  6 02:00 input-1.txt
-rw-r--r-- 1 user users  139 Apr  6 02:00 input-2.txt
-rw-r--r-- 1 user users   85 Apr  6 02:00 data1.csv
-rw-r--r-- 1 user users   50 Apr  6 02:00 data2.csv
-rw-r--r-- 1 user users  125 Apr  6 02:00 data3.csv
-rw-r--r-- 1 user users  100 Apr  6 02:00 data4.csv
-rw-r--r-- 1 user users  200 Apr  6 02:00 data5.csv
user@host ~ $ rm normalfile.txt
user@host ~ $ ls -t
misc    readonlyfile.txt  input-2.txt  data2.csv  data4.csv
photos  input-1.txt       data1.csv    data3.csv  data5.csv
user@host ~ $ rm readonlyfile.txt
rm: remove write-protected regular file 'readonlyfile.txt'?
user@host ~ $ ls -t
misc    readonlyfile.txt  input-2.txt  data2.csv  data4.csv
photos  input-1.txt       data1.csv    data3.csv  data5.csv
user@host ~ $ rm -f readonlyfile.txt
user@host ~ $ ls -t
misc    input-1.txt  data1.csv  data3.csv  data5.csv
photos  input-2.txt  data2.csv  data4.csv
user@host ~ $ rm normalfile.txt
rm: cannot remove 'normalfile.txt': No such file or directory
user@host ~ $ rm -f normalfile.txt
user@host ~ $ rm photos
rm: cannot remove 'photos': Is a directory
user@host ~ $ rm -r photos
user@host ~ $ ls -t
misc         input-2.txt  data2.csv  data4.csv
input-1.txt  data1.csv    data3.csv  data5.csv
user@host ~ $ ls -ld misc/rootsDir misc/rootsDir/data
drwxr-xr-x 2 root root  4096 Apr  7 19:33 misc/rootsDir
-rw-r--r-- 1 user users   50 Apr  6 02:00 misc/rootsDir/data
user@host ~ $ rm misc/rootsDir/data
rm: cannot remove 'misc/rootsDir/data': Permission denied
user@host ~ $ ls misc
file  now  rootsDir
user@host ~ $ rm -r misc
rm: descend into write-protected directory 'misc/rootsDir'? y
rm: cannot remove 'misc/rootsDir/data': Permission denied
user@host ~ $ ls misc
rootsDir 
user@host ~ $ rm input-1.txt input-2.txt
user@host ~ $ rm -i data*.csv
rm: remove regular file 'data1.csv'?
rm: remove regular file 'data2.csv'?
rm: remove regular file 'data3.csv'? ^C
user@host ~ $ ls -t
misc  data1.csv  data2.csv  data3.csv  data4.csv  data5.csv
user@host ~ $ rm -I data*.csv
rm: remove 5 arguments? y
user@host ~ $ ls -t
misc