==== 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