adds help and man doc
This commit is contained in:
parent
056a3b1054
commit
775ec4d66c
|
@ -1,19 +1,17 @@
|
|||
# Essential Linux
|
||||
# Introduction to Linux
|
||||
|
||||
## Introduction to Linux
|
||||
|
||||
### Where does Linux originate from?
|
||||
## Where does Linux originate from?
|
||||
|
||||
* The spiritual mother of Linux is [Unix](https://en.wikipedia.org/wiki/Unix).
|
||||
* [POSIX](https://en.wikipedia.org/wiki/POSIX) is not an OS in itself but a **standard**.
|
||||
* Which OS's are [POSIX compliant](https://en.wikipedia.org/wiki/POSIX#POSIX-oriented_operating_systems)
|
||||
|
||||
### Who is behind this project?
|
||||
## Who is behind this project?
|
||||
|
||||
* Who is [Richard Stallmann](https://en.wikipedia.org/wiki/Richard_Stallman)?
|
||||
* Who is [Linus Torvalds](https://en.wikipedia.org/wiki/Linus_Torvalds)?
|
||||
|
||||
### What is the deal with 'GNU-slash-Linux'?
|
||||
## What is the deal with 'GNU-slash-Linux'?
|
||||
|
||||
* [GNU/Linux](https://en.wikipedia.org/wiki/GNU/Linux_naming_controversy) controversy
|
||||
* What is a [kernel](https://en.wikipedia.org/wiki/Kernel_(operating_system))
|
||||
|
@ -24,20 +22,20 @@
|
|||
|
||||
![Linux kernel](../assets/linux_kernel.png)
|
||||
|
||||
### Where can you *get* some Linux?
|
||||
## Where can you *get* some Linux?
|
||||
|
||||
* You probably already have a Linux computer running at [home](https://opensource.com/article/19/8/everyday-tech-runs-linux)!
|
||||
|
||||
![Timeline](../assets/distro_timeline.png)
|
||||
|
||||
### Debian
|
||||
## Debian
|
||||
|
||||
* [Reasons](https://www.debian.org/intro/why_debian) to choose Debian.
|
||||
* Why is Debian called [the universal operating system](https://www.reddit.com/r/debian/comments/22j0wf/so_why_debian_is_called_the_universal_operating/)?
|
||||
* [comparison](https://en.wikipedia.org/wiki/Comparison_of_instruction_set_architectures) of CPU architectures
|
||||
* [download](https://www.debian.org/distrib/netinst) Debian
|
||||
|
||||
## How to create a virtual machine
|
||||
# How to create a virtual machine
|
||||
|
||||
In order to run virtual machines, or VM's, we need a **host** program.
|
||||
One of the most popular ones out there is called `virtualbox`.
|
||||
|
@ -74,7 +72,7 @@ This is something you can change whenever you need more processing power but the
|
|||
![virtualbox setup](../assets/2022-02-18-123121_1920x1080_scrot.png)
|
||||
</details>
|
||||
|
||||
## Breakdown of the Debian installation
|
||||
# Breakdown of the Debian installation
|
||||
|
||||
All right, enough talking, let's get started!
|
||||
I'll install a full blown and modern graphical Debian machine and I would like you to **not** do it yourself but take **notes** on each step so you'll be able to reference your notes later **when** I ask you to install a machine yourself.
|
||||
|
@ -127,7 +125,7 @@ You *can* recover from this mistake with [supergrub2](https://www.supergrubdisk.
|
|||
![Debian installation](../assets/VirtualBox_debian_18_02_2022_12_51_07.png)
|
||||
</details>
|
||||
|
||||
### Exercise
|
||||
# Exercise
|
||||
|
||||
OK, now it's up to you!
|
||||
Please install a Debian machine with the default graphical environment.
|
||||
|
@ -136,7 +134,7 @@ Which software is installed by default?
|
|||
How can you tweak the system settings such as language, keyboard, networking?
|
||||
Can you install extra software?
|
||||
|
||||
## Quick look at an idle system
|
||||
# Quick look at an idle system
|
||||
|
||||
You can inspect the system by running the *gnome task manager*.
|
||||
It lists all your running processes, sorted by CPU percentage, in the first tab which can give you a good idea of what's happening on your system.
|
||||
|
@ -154,11 +152,11 @@ That's the magic of a good package manager!
|
|||
![Debian installation](../assets/VirtualBox_debian_18_02_2022_12_54_41.png)
|
||||
</details>
|
||||
|
||||
## Package managers
|
||||
# Package managers
|
||||
|
||||
What is a [package manager](https://en.wikipedia.org/wiki/Package_manager)
|
||||
|
||||
### Graphical installation
|
||||
## Graphical installation
|
||||
|
||||
Modern Linux has come a long way and it's now quite usable without any command line knowledge.
|
||||
We can install extra software from the graphical environment if we want.
|
||||
|
@ -181,7 +179,7 @@ If your password does not work, you probably set a `root` password and you shoul
|
|||
![Debian installation](../assets/VirtualBox_debian_18_02_2022_12_52_53.png)
|
||||
</details>
|
||||
|
||||
### Command line installation
|
||||
## Command line installation
|
||||
|
||||
```bash
|
||||
waldek@hellodebian:~$ htop
|
||||
|
@ -226,7 +224,7 @@ But pressing **q** also exits the program.
|
|||
|
||||
![htop bug with gnome-terminal](../assets/VirtualBox_debian_18_02_2022_13_19_35.png)
|
||||
|
||||
### Adding a secondary desktop environment
|
||||
## Adding a secondary desktop environment
|
||||
|
||||
During the initial installation we where offered a choice of desktop environments to install.
|
||||
This menu was an actual program called `tasksel` we can run again to add different ones!
|
||||
|
@ -242,7 +240,7 @@ waldek@hellodebian:~$ sudo tasksel
|
|||
![tasksel](../assets/VirtualBox_debian_18_02_2022_13_22_47.png)
|
||||
![tasksel](../assets/VirtualBox_debian_18_02_2022_13_23_57.png)
|
||||
|
||||
## Changing the runlevel
|
||||
# Changing the runlevel
|
||||
|
||||
The **first** process started by the kernel can be discover by `htop` and is `/usr/sbin/init`.
|
||||
This is rather vague but we can find out a *bit* more about this program via `ls` which we'll get into more detail later.
|
||||
|
@ -301,7 +299,7 @@ Created symlink /etc/systemd/system/default.target → /lib/systemd/system/graph
|
|||
waldek@hellodebian:~$ sudo reboot now
|
||||
```
|
||||
|
||||
## Exercise
|
||||
# Exercise
|
||||
|
||||
Please create a second virtual machine and install a **minimal** Debian.
|
||||
Minimal means **no graphical environment**.
|
||||
|
@ -312,7 +310,7 @@ The only one we saw up until now is `htop` but maybe try out `bmon`, `elinks` an
|
|||
Once these are installed have a look at the running services and programs via `htop` and compare it to both your graphical installation **and** your graphical install but running in `multi-user.target`.
|
||||
|
||||
|
||||
## Guest additions
|
||||
# Guest additions
|
||||
|
||||
Let's make our user experience a bit nicer.
|
||||
Virtual machines can *integrate* with the host machine more fluently when you install the guest additions in the VM.
|
||||
|
@ -413,7 +411,7 @@ You can also enable copy/paste and drag and drop between your host and VM now.
|
|||
|
||||
![full screen](../assets/VirtualBox_debian_18_02_2022_15_08_01.png)
|
||||
|
||||
## Introduction to the command line
|
||||
# Introduction to the command line
|
||||
|
||||
We'll be using a few new *words* to reference the command line such as *shell*, *bash* and *terminal* through out the course.
|
||||
They all pretty much mean the same thing but with some small, and not so important, differences between them.
|
||||
|
@ -518,7 +516,7 @@ But what about `which`?
|
|||
It's also an executable but not compiled, it's a *POSIX shell script*.
|
||||
So not all programs *are* created equally?
|
||||
|
||||
### Compiled vs interpreted
|
||||
## Compiled vs interpreted
|
||||
|
||||
Executing a file, or program, means you take this file and tell the computer it needs to execute the actions that are stored in the file.
|
||||
Compiled programs contain actual [instructions](https://en.wikipedia.org/wiki/Instruction_set_architecture#Instructions) the computer understands out of the box.
|
||||
|
@ -607,7 +605,7 @@ When you think about it it does make sense because at the end of the day the com
|
|||
So when you execute a script each line of code is converted to machine instructions on the spot.
|
||||
This makes scripts easier to write but slower at execution.
|
||||
|
||||
## More about paths
|
||||
# More about paths
|
||||
|
||||
The prompt in our terminal tells us who we are, on which machine, and **where** we are located.
|
||||
This where is symbolized with the `~` character.
|
||||
|
@ -664,344 +662,11 @@ waldek@hellodebian:/usr/bin$ ls
|
|||
alsamixer glib-compile-schemas ntfscluster systemd-sysusers
|
||||
alsatplg gmake ntfscmp systemd-tmpfiles
|
||||
alsaucm gnome-calculator ntfsdecrypt systemd-tty-ask-password-agent
|
||||
amidi gnome-calendar ntfsfallocate systemd-umount
|
||||
amixer gnome-characters ntfsfix tabs
|
||||
apg gnome-clocks ntfsinfo tac
|
||||
apgbfm gnome-contacts ntfsls tail
|
||||
aplay gnome-control-center ntfsmove tar
|
||||
aplaymidi gnome-disk-image-mounter ntfsrecover tasksel
|
||||
appres gnome-disks ntfssecaudit taskset
|
||||
appstreamcli gnome-documents ntfstruncate tbl
|
||||
apropos gnome-extensions ntfsusermap tbl-dctrl
|
||||
apt gnome-extensions-app ntfswipe tee
|
||||
apt-add-repository gnome-font-viewer numfmt telnet
|
||||
apt-cache gnome-help numlockx telnet.netkit
|
||||
apt-cdrom gnome-keyring nvlc tempfile
|
||||
apt-config gnome-keyring-3 obamenu test
|
||||
apt-extracttemplates gnome-keyring-daemon obconf thunar
|
||||
apt-ftparchive gnome-logs obexctl Thunar
|
||||
apt-get gnome-maps objcopy thunar-settings
|
||||
apt-key gnome-music objdump thunar-volman
|
||||
apt-listchanges gnome-screenshot obsession-exit thunar-volman-settings
|
||||
apt-mark gnome-session obsession-logout tic
|
||||
apt-sortpkgs gnome-session-classic obxprop time-admin
|
||||
ar gnome-session-custom-session oclock timedatectl
|
||||
arch gnome-session-inhibit od timeout
|
||||
arecord gnome-session-quit odp2pdf tjbench
|
||||
arecordmidi gnome-shell odp2ppt tkjpeg
|
||||
as gnome-shell-extension-prefs ods2pdf tload
|
||||
aseqdump gnome-shell-extension-tool odt2bib toc2cddb
|
||||
aseqnet gnome-shell-perf-tool odt2doc toc2cue
|
||||
aspell gnome-software odt2docbook toe
|
||||
aspell-import gnome-sound-recorder odt2html top
|
||||
atobm gnome-system-monitor odt2lt totem
|
||||
atril gnome-terminal odt2pdf totem-video-thumbnailer
|
||||
atril-previewer gnome-terminal.wrapper odt2rtf touch
|
||||
atril-thumbnailer gnome-text-editor odt2sdw tput
|
||||
awk gnome-thumbnail-font odt2sxw tr
|
||||
axfer gnome-todo odt2txt traceproto
|
||||
b2sum gnome-tweaks odt2txt.unoconv traceproto.db
|
||||
baobab gnome-weather odt2xhtml traceroute
|
||||
base32 gnome-www-browser odt2xml traceroute6
|
||||
base64 gold ooxml2doc traceroute6.db
|
||||
basename gpasswd ooxml2odt traceroute.db
|
||||
basenc gpg ooxml2pdf traceroute-nanog
|
||||
bash gpg-agent open tracker
|
||||
bashbug gpgcompose openbox transmission-gtk
|
||||
bccmd gpgconf openbox-lxde transset
|
||||
bdftopcf gpg-connect-agent openbox-session troff
|
||||
bdftruncate gpgparsemail openssl true
|
||||
bf_compact gpgsm openvt truncate
|
||||
bf_compact-bdb gpgsplit operon trust
|
||||
bf_copy gpgtar orca tryaffix
|
||||
bf_copy-bdb gpgv orca-dm-wrapper tset
|
||||
bf_tar gpg-wks-server os-prober tsort
|
||||
bf_tar-bdb gpg-zip p11-kit tty
|
||||
bitmap gpic p7zip tzselect
|
||||
bluemoon gpicview pacat ucf
|
||||
bluetoothctl gprof pacmd ucfq
|
||||
bluetooth-sendto grep pactl ucfr
|
||||
bmtoa grep-aptavail padsp ucs2any
|
||||
bogofilter grep-available pager udevadm
|
||||
bogofilter-bdb grep-dctrl pa-info udisksctl
|
||||
bogolexer grep-debtags pamon ul
|
||||
bogolexer-bdb grep-status paperconf umax_pp
|
||||
bogotune gresource paplay umount
|
||||
bogotune-bdb groff parcellite uname
|
||||
bogoupgrade grog parec unattended-upgrade
|
||||
bogoupgrade-bdb grops parecord unattended-upgrades
|
||||
bogoutil grotty parole uncompress
|
||||
bogoutil-bdb groups partx unexpand
|
||||
boltctl grub-editenv passwd unicode_start
|
||||
bootctl grub-file paste unicode_stop
|
||||
broadwayd grub-fstest pasuspender uniq
|
||||
btattach grub-glue-efi patch unity-scope-loader
|
||||
btmgmt grub-kbdcomp pathchk unlink
|
||||
btmon grub-menulst2cfg pavucontrol unlzma
|
||||
buildhash grub-mkfont pax11publish unmkinitramfs
|
||||
bunzip2 grub-mkimage pcmanfm unoconv
|
||||
busctl grub-mklayout pdb3 unopkg
|
||||
busybox grub-mknetdir pdb3.9 unshare
|
||||
bwrap grub-mkpasswd-pbkdf2 peekfd unxz
|
||||
bzcat grub-mkrelpath perf unzip
|
||||
bzcmp grub-mkrescue perl unzipsfx
|
||||
bzdiff grub-mkstandalone perl5.32.1 update-alternatives
|
||||
bzegrep grub-mount perl5.32-x86_64-linux-gnu update-desktop-database
|
||||
bzexe grub-ntldr-img perlbug update-menus
|
||||
bzfgrep grub-render-label perldoc update-mime-database
|
||||
bzgrep grub-script-check perli11ndoc upower
|
||||
bzip2 grub-syslinux2cfg perlivp uptime
|
||||
bzip2recover gsettings perlthanks usb-devices
|
||||
bzless gsf pgrep usbhid-dump
|
||||
bzmore gsf-office-thumbnailer pic usbreset
|
||||
c++ gsf-vba-dump pico userinfo
|
||||
c89 gstreamer-codec-install piconv usermount
|
||||
c89-gcc gtbl pidof userpasswd
|
||||
c99 gtf pidwait users
|
||||
c99-gcc gtk-builder-tool pinentry users-admin
|
||||
cancel gtk-encode-symbolic-svg pinentry-gnome3 utmpdump
|
||||
captoinfo gtk-launch pinentry-x11 VBoxClient
|
||||
caribou-preferences gtk-query-settings ping VBoxClient-all
|
||||
cat gtk-update-icon-cache ping4 VBoxControl
|
||||
catchsegv gucharmap ping6 VBoxDRMClient
|
||||
catman gunzip pinky vdir
|
||||
cc gzexe pipewire vi
|
||||
cd-create-profile gzip pipewire-media-session view
|
||||
cd-fix-profile h2ph pipewire-pulse viewres
|
||||
cd-iccdump h2xs pkaction vim.tiny
|
||||
cd-it8 hciattach pkcheck vlc
|
||||
cdrdao hciconfig pkcon vlc-wrapper
|
||||
c++filt hcitool pkexec vmstat
|
||||
chacl hd pkg-config vmwarectrl
|
||||
chage head pkill w
|
||||
chardet HEAD pkmon w3m
|
||||
chardetect helpztags pkttyagent w3mman
|
||||
charmap hex2hcd pl2pm wall
|
||||
chattr hexdump pldd watch
|
||||
chcon host plog watchgnupg
|
||||
cheese hostid plymouth wc
|
||||
chfn hostname pmap wdctl
|
||||
chgrp hostnamectl pod2html wget
|
||||
chmod htop pod2man whatis
|
||||
choom i386 pod2text whereis
|
||||
chown ibus pod2usage which
|
||||
chrome-gnome-shell ibus-daemon podchecker whiptail
|
||||
chrt ibus-setup poff who
|
||||
chsh iceauth pon whoami
|
||||
chvt ico POST widget
|
||||
ciptool icombine ppt2odp word-list-compress
|
||||
cjpeg iconv pr wpa_passphrase
|
||||
ckbcomp id precat write
|
||||
cksum iecset preconv write.ul
|
||||
clear ijoin preunzip wrjpgcom
|
||||
clear_console im-config prezip www-browser
|
||||
cmp im-launch prezip-bin X
|
||||
codepage infocmp print X11
|
||||
col infotocap printenv x11perf
|
||||
colcrt install printf x11perfcomp
|
||||
colormgr install-menu prlimit x86_64
|
||||
colrm install-printerdriver prove x86_64-linux-gnu-addr2line
|
||||
column instmodsh proxy x86_64-linux-gnu-ar
|
||||
comm intel-virtual-output prtstat x86_64-linux-gnu-as
|
||||
compose ionice ps x86_64-linux-gnu-c++filt
|
||||
consolehelper ip psfaddtable x86_64-linux-gnu-cpp
|
||||
consolehelper-gtk ipcmk psfgettable x86_64-linux-gnu-cpp-10
|
||||
corelist ipcrm psfstriptable x86_64-linux-gnu-dwp
|
||||
cp ipcs psfxtable x86_64-linux-gnu-elfedit
|
||||
cpan ipod-read-sysinfo-extended pslog x86_64-linux-gnu-g++
|
||||
cpan5.32-x86_64-linux-gnu ipod-time-sync pstree x86_64-linux-gnu-g++-10
|
||||
cpio iptables-xml pstree.x11 x86_64-linux-gnu-gcc
|
||||
cpp ischroot ptar x86_64-linux-gnu-gcc-10
|
||||
cpp-10 isdv4-serial-debugger ptardiff x86_64-linux-gnu-gcc-ar
|
||||
c_rehash isdv4-serial-inputattach ptargrep x86_64-linux-gnu-gcc-ar-10
|
||||
crontab ispell ptked x86_64-linux-gnu-gcc-nm
|
||||
csplit ispell-wrapper ptksh x86_64-linux-gnu-gcc-nm-10
|
||||
ctstat join ptx x86_64-linux-gnu-gcc-ranlib
|
||||
cupstestppd join-dctrl pulseaudio x86_64-linux-gnu-gcc-ranlib-10
|
||||
cut journalctl pw-cat x86_64-linux-gnu-gcov
|
||||
cvlc jpegexiforient pw-cli x86_64-linux-gnu-gcov-10
|
||||
cvt jpegtran pwd x86_64-linux-gnu-gcov-dump
|
||||
cvtsudoers json_pp pw-dot x86_64-linux-gnu-gcov-dump-10
|
||||
dash kbdinfo pw-dump x86_64-linux-gnu-gcov-tool
|
||||
date kbd_mode pwdx x86_64-linux-gnu-gcov-tool-10
|
||||
dbus-cleanup-sockets kbxutil pw-metadata x86_64-linux-gnu-gold
|
||||
dbus-daemon kernel-install pw-mididump x86_64-linux-gnu-gprof
|
||||
dbus-launch kill pw-midiplay x86_64-linux-gnu-ld
|
||||
dbus-monitor killall pw-midirecord x86_64-linux-gnu-ld.bfd
|
||||
dbus-run-session kmod pw-mon x86_64-linux-gnu-ld.gold
|
||||
dbus-send l2ping pw-play x86_64-linux-gnu-lto-dump-10
|
||||
dbus-update-activation-environment l2test pw-profiler x86_64-linux-gnu-nm
|
||||
dbus-uuidgen laptop-detect pw-record x86_64-linux-gnu-objcopy
|
||||
dbxtool last pw-reserve x86_64-linux-gnu-objdump
|
||||
dconf lastb pw-top x86_64-linux-gnu-pkg-config
|
||||
dd lastlog py3clean x86_64-linux-gnu-ranlib
|
||||
deallocvt lcf py3compile x86_64-linux-gnu-readelf
|
||||
debconf ld py3versions x86_64-linux-gnu-size
|
||||
debconf-apt-progress ld.bfd pydoc3 x86_64-linux-gnu-strings
|
||||
debconf-communicate ldd pydoc3.9 x86_64-linux-gnu-strip
|
||||
debconf-copydb ld.gold pygettext3 x86_64-pc-linux-gnu-pkg-config
|
||||
debconf-escape less pygettext3.9 xarchiver
|
||||
debconf-set-selections lessecho python3 xargs
|
||||
debconf-show lessfile python3.9 xauth
|
||||
debianbts lesskey querybts xbiff
|
||||
deb-systemd-helper lesspipe quodlibet xbrlapi
|
||||
deb-systemd-invoke lexgrog qvlc xcalc
|
||||
defmt-c lft ranger xclipboard
|
||||
defmt-sh lft.db ranlib xclock
|
||||
delpart libnetcfg rbash xcmsdb
|
||||
delv libreoffice rcp xconsole
|
||||
desktop-file-edit libwacom-list-local-devices rctest xcursorgen
|
||||
desktop-file-install light-locker rdjpgcom xcutsel
|
||||
desktop-file-validate light-locker-command rdma xdg-autostart
|
||||
df link readelf xdg-dbus-proxy
|
||||
dfu-tool linux32 readlink xdg-desktop-icon
|
||||
dh_bash-completion linux64 realpath xdg-desktop-menu
|
||||
dh_dkms linux-boot-prober rendercheck xdg-email
|
||||
dh_installxmlcatalogs linux-check-removal renice xdg-icon-resource
|
||||
dh_perl_openssl linux-update-symlinks reportbug xdg-mime
|
||||
diff linux-version report-hw xdg-open
|
||||
diff3 listres reset xdg-screensaver
|
||||
dig ln resizecons xdg-settings
|
||||
dir lnstat resizepart xdg-user-dir
|
||||
dircolors loadkeys resolvectl xdg-user-dirs-gtk-update
|
||||
dirmngr loadunimap rev xdg-user-dirs-update
|
||||
dirmngr-client localc rfcomm xditview
|
||||
dirname locale rgrep xdpyinfo
|
||||
discover-config localectl rhythmbox xdriinfo
|
||||
djpeg localedef rhythmbox-client xedit
|
||||
dmesg lodraw rifle Xephyr
|
||||
dm-tool loffice ristretto xev
|
||||
dnsdomainname lofromtemplate rlogin xeyes
|
||||
dnstap-read logger rm xfburn
|
||||
doc2odt login rmdir xfce4-about
|
||||
doc2pdf loginctl rnano xfce4-accessibility-settings
|
||||
domainname logname routef xfce4-appearance-settings
|
||||
dotlockfile loimpress routel xfce4-appfinder
|
||||
dpkg lomath rpcgen xfce4-clipman
|
||||
dpkg-architecture look rsh xfce4-clipman-history
|
||||
dpkg-buildflags loweb rstart xfce4-clipman-settings
|
||||
dpkg-buildpackage lowntfs-3g rstartd xfce4-color-settings
|
||||
dpkg-checkbuilddeps lowriter rtstat xfce4-dict
|
||||
dpkg-deb lp runcon xfce4-display-settings
|
||||
dpkg-distaddfile lpoptions run-mailcap xfce4-find-cursor
|
||||
dpkg-divert lp_solve run-parts xfce4-keyboard-settings
|
||||
dpkg-genbuildinfo lpstat run-with-aspell xfce4-mime-helper
|
||||
dpkg-genchanges ls rview xfce4-mime-settings
|
||||
dpkg-gencontrol lsattr rvlc xfce4-mouse-settings
|
||||
dpkg-gensymbols lsblk rygel xfce4-notifyd-config
|
||||
dpkg-maintscript-helper lsb_release sane-find-scanner xfce4-panel
|
||||
dpkg-mergechangelogs lscpu savelog xfce4-popup-applicationsmenu
|
||||
dpkg-name lsinitramfs scanimage xfce4-popup-clipman
|
||||
dpkg-parsechangelog lsipc scp xfce4-popup-clipman-actions
|
||||
dpkg-query lslocks scp-dbus-service xfce4-popup-directorymenu
|
||||
dpkg-realpath lslogins screendump xfce4-popup-places
|
||||
dpkg-scanpackages lsmem script xfce4-popup-whiskermenu
|
||||
dpkg-scansources lsmod scriptlive xfce4-popup-windowmenu
|
||||
dpkg-shlibdeps lsns scriptreplay xfce4-power-manager
|
||||
dpkg-source lsof scrot xfce4-power-manager-settings
|
||||
dpkg-split lspci sdiff xfce4-screenshooter
|
||||
dpkg-statoverride lspgpot sdptool xfce4-sensors
|
||||
dpkg-trigger lsusb sdw2odt xfce4-session
|
||||
dpkg-vendor lto-dump-10 seahorse xfce4-session-logout
|
||||
du luit sed xfce4-session-settings
|
||||
dumpkeys lwp-download see xfce4-settings-editor
|
||||
dwp lwp-dump select-default-iwrap xfce4-settings-manager
|
||||
echo lwp-mirror select-editor xfce4-taskmanager
|
||||
edit lwp-request sensible-browser xfce4-terminal
|
||||
editor lxappearance sensible-editor xfce4-terminal.wrapper
|
||||
editres lxclipboard sensible-pager xfconf-query
|
||||
egrep lxde-logout sensors xfd
|
||||
eject lxhotkey sensors-conf-convert xfdesktop
|
||||
elfedit lxinput seq xfdesktop-settings
|
||||
enc2xs lxlauncher sessreg xfhelp4
|
||||
encguess lxlock setarch xflock4
|
||||
enchant-2 lxmusic setfacl xfontsel
|
||||
enchant-lsmod-2 lxpanel setfont xfrun4
|
||||
env lxpanelctl setkeycodes xfsettingsd
|
||||
envsubst lxpolkit setleds xfwm4
|
||||
eog lxrandr setlogcons xfwm4-settings
|
||||
eqn lxsession setmetamode xfwm4-tweaks-settings
|
||||
evince lxsession-db setpci xfwm4-workspace-settings
|
||||
evince-previewer lxsession-default setpriv xgamma
|
||||
evince-thumbnailer lxsession-default-apps setsid xgc
|
||||
evolution lxsession-default-terminal setterm xhost
|
||||
ex lxsession-edit setupcon xiccd
|
||||
exfalso lxsession-logout setvtrgb xinit
|
||||
exifautotran lxsession-xdg-autostart setxkbmap xkbbell
|
||||
exo-desktop-item-edit lxsettings-daemon sftp xkbcomp
|
||||
exo-open lxtask sg xkbevd
|
||||
expand lxterminal sh xkbprint
|
||||
expiry lynx sha1sum xkbset
|
||||
expr lzcat sha224sum xkbset-gui
|
||||
factor lzcmp sha256sum xkbvleds
|
||||
faillog lzdiff sha384sum xkbwatch
|
||||
faked-sysv lzegrep sha512sum xkeystone
|
||||
faked-tcp lzfgrep shares-admin xkill
|
||||
fakeroot lzgrep shasum xload
|
||||
fakeroot-sysv lzless shotwell xlogo
|
||||
fakeroot-tcp lzma showconsolefont xls2ods
|
||||
fallocate lzmainfo showkey xlsatoms
|
||||
false lzmore showrgb xlsclients
|
||||
fc-cache make shred xlsfonts
|
||||
fc-cat make-first-existing-target shuf xmag
|
||||
fc-conflist mako-render simple-scan xman
|
||||
fc-list malcontent-client size xmessage
|
||||
fc-match malcontent-control skill xmms2d
|
||||
fc-pattern man slabtop xmms2-launcher
|
||||
fc-query mandb sleep xmodmap
|
||||
fc-scan manpath slogin xmore
|
||||
fc-validate man-recode smproxy Xorg
|
||||
fgconsole mapscrn snice xprop
|
||||
fgrep mawk soelim xrandr
|
||||
file mcookie soffice xrdb
|
||||
file-roller md5sum software-properties-gtk xrefresh
|
||||
fincore md5sum.textutils sort xsane
|
||||
find mdig sort-dctrl xscreensaver
|
||||
findaffix memusage sotruss xscreensaver-command
|
||||
findmnt memusagestat spa-acp-tool xscreensaver-demo
|
||||
firefox mesa-overlay-control.py spa-inspect xscreensaver-getimage
|
||||
firefox-esr mesg spa-monitor xscreensaver-getimage-file
|
||||
flock mid3cp spa-resample xscreensaver-getimage-video
|
||||
fmt mid3iconv spd-conf xscreensaver-systemd
|
||||
fold mid3v2 spd-say xscreensaver-text
|
||||
fonttosfnt migrate-pubring-from-classic-gpg spdsend x-session-manager
|
||||
free mimeopen speaker-test xset
|
||||
funzip mimetype speech-dispatcher xsetmode
|
||||
fuser mkdir splain xsetpointer
|
||||
fusermount mkfifo split xsetroot
|
||||
fusermount3 mkfontdir splitfont xsetwacom
|
||||
fwupdagent mkfontscale sprof xsm
|
||||
fwupdate mk_modmap ss xstdcmap
|
||||
fwupdmgr mknod ssh xsubpp
|
||||
fwupdtool mktemp ssh-add x-terminal-emulator
|
||||
fwupdtpmevlog mmcli ssh-agent xvidtune
|
||||
g++ moggsplit ssh-argv0 xvinfo
|
||||
g++-10 monitor-sensor ssh-copy-id Xwayland
|
||||
gamma4scanimage more ssh-keygen xwd
|
||||
gapplication mount ssh-keyscan x-window-manager
|
||||
gatttool mountpoint startlxde xwininfo
|
||||
gcalccmd mousepad start-pulseaudio-x11 xwud
|
||||
gcc mpris-proxy startx x-www-browser
|
||||
gcc-10 mt startxfce4 xxd
|
||||
gcc-ar mt-gnu stat xz
|
||||
gcc-ar-10 mtrace stdbuf xzcat
|
||||
gcc-nm munchlist streamzip xzcmp
|
||||
gcc-nm-10 mutagen-inspect strings xzdiff
|
||||
gcc-ranlib mutagen-pony strip xzegrep
|
||||
gcc-ranlib-10 mv stty xzfgrep
|
||||
gcm-import namei su xzgrep
|
||||
gcm-inspect nano sudo xzless
|
||||
gcm-picker nautilus sudoedit xzmore
|
||||
gcm-viewer nautilus-autorun-software sudoreplay yelp
|
||||
gcov nawk sum yes
|
||||
gcov-10 nc sushi ypdomainname
|
||||
gcov-dump nc.traditional su-to-root zcat
|
||||
gcov-dump-10 neqn svlc zcmp
|
||||
gcov-tool netcat switcherooctl zdiff
|
||||
gcov-tool-10 networkctl sxw2odt zdump
|
||||
gcr-viewer newgrp synaptic-pkexec zegrep
|
||||
gdbus ngettext sync zenity
|
||||
gdialog nice system-config-printer zfgrep
|
||||
|
||||
# ------------------------------------
|
||||
# --- cropped the list for clarity ---
|
||||
# ------------------------------------
|
||||
|
||||
gdk-pixbuf-csource nisdomainname system-config-printer-applet zforce
|
||||
gdk-pixbuf-pixdata nl systemctl zgrep
|
||||
gdk-pixbuf-thumbnailer nm systemd zipdetails
|
||||
|
@ -1046,7 +711,7 @@ SYNOPSIS
|
|||
unset, until, wait, while.
|
||||
```
|
||||
|
||||
### Absolute and relative paths
|
||||
## Absolute and relative paths
|
||||
|
||||
> All roads lead to Rome.
|
||||
|
||||
|
@ -1103,19 +768,29 @@ waldek@hellodebian:~$
|
|||
|
||||
The `..` means go **back** one directory so in our example we go back **two** directories, which brings us to the `/` of our system and from there we go **up** to `home` and then `waldek`.
|
||||
|
||||
### Exercise
|
||||
## `root` and `/` and `/root` are not the same thing
|
||||
|
||||
The word *root* has multiple meanings and can be a bit confusing at the start.
|
||||
Every Linux machine will have a `root` user **and** a `/` of the system.
|
||||
The `root` user is an account essential to the proper working of a Linux system, whereas `/` is a location, the *root* of the filesystem.
|
||||
The `/root` is also a location but is the **home** of the user `root`, located at the `/` of the filesystem.
|
||||
If this sounds confusing read the above paragraph slowly until you see the differences.
|
||||
I do want to note that the name of the user `root` *can* change but it's ID will always be `0`.
|
||||
We'll go into detail about users and ID's later down the line.
|
||||
|
||||
# Exercise
|
||||
|
||||
Explore your system a bit using `cd` and `ls`.
|
||||
You'll probably encounter some weird messages along the way.
|
||||
Keep note of them so we can discuss it together.
|
||||
|
||||
### `root` and `/` and `/root` are not the same thing
|
||||
|
||||
## A pit stop to review what we've learned so far
|
||||
# A pit stop to review what we've learned so far
|
||||
|
||||
Below is a list of programs and command we've seen so far.
|
||||
We've seen that some take arguments, some don't.
|
||||
This list will grow as we go so I advise you to take some notes of your own.
|
||||
|
||||
|command|desciption|
|
||||
|command|description|
|
||||
|---|---|
|
||||
|systemctl|manipulate running services|
|
||||
|apt|the Debian package manager|
|
||||
|
@ -1129,3 +804,404 @@ Below is a list of programs and command we've seen so far.
|
|||
|cd|change directory|
|
||||
|ls|list content of a directory|
|
||||
|
||||
# Arguments and flags
|
||||
|
||||
The `ls` program is one of the most used commands.
|
||||
It's like a very basic *file explorer* in a graphical environment and just like it's graphical counter part you can use it to display it's data in different ways.
|
||||
Think of the *details* versus *thumbnail* views in your favorite explorer.
|
||||
But how do you do this?
|
||||
We can **add flags or options** to the program to modify it's behavior.
|
||||
Have a look at the output below.
|
||||
|
||||
```
|
||||
waldek@hellodebian:~$ ls
|
||||
Desktop Documents Downloads Music Pictures Public Templates Videos
|
||||
waldek@hellodebian:~$ ls -l
|
||||
total 32
|
||||
drwxr-xr-x 2 waldek waldek 4096 Feb 18 12:50 Desktop
|
||||
drwxr-xr-x 2 waldek waldek 4096 Feb 18 12:50 Documents
|
||||
drwxr-xr-x 2 waldek waldek 4096 Feb 18 12:50 Downloads
|
||||
drwxr-xr-x 2 waldek waldek 4096 Feb 18 12:50 Music
|
||||
drwxr-xr-x 2 waldek waldek 4096 Feb 18 12:50 Pictures
|
||||
drwxr-xr-x 2 waldek waldek 4096 Feb 18 12:50 Public
|
||||
drwxr-xr-x 2 waldek waldek 4096 Feb 18 12:50 Templates
|
||||
drwxr-xr-x 2 waldek waldek 4096 Feb 18 12:50 Videos
|
||||
waldek@hellodebian:~$ ls -a
|
||||
. .bashrc Desktop .gnupg .profile Templates .vboxclient-seamless.pid
|
||||
.. .cache .dmrc .local Public .vboxclient-clipboard.pid Videos
|
||||
.bash_history .config Documents Music .python_history .vboxclient-display-svga-x11.pid .Xauthority
|
||||
.bash_logout .dbus Downloads Pictures .ssh .vboxclient-draganddrop.pid .xsession-errors
|
||||
```
|
||||
|
||||
The `-l` and `-a` additions are what we call *flags* or *options*.
|
||||
Aren't they just extra *arguments*?
|
||||
There is no real rule to the naming of this concept but [this](https://unix.stackexchange.com/questions/285575/whats-the-difference-between-a-flag-an-option-and-an-argument) is a rather interesting take.
|
||||
|
||||
We can combine arguments if we want, and some programs even allow *concatenation* of arguments.
|
||||
Have a look below to understand what I mean by that.
|
||||
|
||||
```
|
||||
waldek@hellodebian:~$ ls -a -l
|
||||
total 112
|
||||
drwxr-xr-x 16 waldek waldek 4096 Feb 21 18:12 .
|
||||
drwxr-xr-x 3 root root 4096 Feb 18 12:49 ..
|
||||
-rw------- 1 waldek waldek 2772 Feb 22 10:45 .bash_history
|
||||
-rw-r--r-- 1 waldek waldek 220 Feb 18 12:49 .bash_logout
|
||||
-rw-r--r-- 1 waldek waldek 3526 Feb 18 12:49 .bashrc
|
||||
drwx------ 16 waldek waldek 4096 Feb 18 14:24 .cache
|
||||
drwx------ 20 waldek waldek 4096 Feb 18 14:23 .config
|
||||
drwx------ 3 waldek waldek 4096 Feb 18 12:52 .dbus
|
||||
drwxr-xr-x 2 waldek waldek 4096 Feb 18 12:50 Desktop
|
||||
-rw-r--r-- 1 waldek waldek 35 Feb 18 13:33 .dmrc
|
||||
drwxr-xr-x 2 waldek waldek 4096 Feb 18 12:50 Documents
|
||||
drwxr-xr-x 2 waldek waldek 4096 Feb 18 12:50 Downloads
|
||||
drwx------ 2 waldek waldek 4096 Feb 18 15:07 .gnupg
|
||||
drwxr-xr-x 3 waldek waldek 4096 Feb 18 12:50 .local
|
||||
drwxr-xr-x 2 waldek waldek 4096 Feb 18 12:50 Music
|
||||
drwxr-xr-x 2 waldek waldek 4096 Feb 18 12:50 Pictures
|
||||
-rw-r--r-- 1 waldek waldek 807 Feb 18 12:49 .profile
|
||||
drwxr-xr-x 2 waldek waldek 4096 Feb 18 12:50 Public
|
||||
-rw------- 1 waldek waldek 11 Feb 21 18:12 .python_history
|
||||
drwx------ 2 waldek waldek 4096 Feb 21 12:45 .ssh
|
||||
drwxr-xr-x 2 waldek waldek 4096 Feb 18 12:50 Templates
|
||||
-rw-r----- 1 waldek waldek 5 Feb 18 15:06 .vboxclient-clipboard.pid
|
||||
-rw-r----- 1 waldek waldek 5 Feb 18 15:06 .vboxclient-display-svga-x11.pid
|
||||
-rw-r----- 1 waldek waldek 5 Feb 18 15:06 .vboxclient-draganddrop.pid
|
||||
-rw-r----- 1 waldek waldek 5 Feb 18 15:06 .vboxclient-seamless.pid
|
||||
drwxr-xr-x 2 waldek waldek 4096 Feb 18 12:50 Videos
|
||||
-rw------- 1 waldek waldek 56 Feb 18 13:33 .Xauthority
|
||||
-rw------- 1 waldek waldek 2701 Feb 18 13:33 .xsession-errors
|
||||
waldek@hellodebian:~$ ls -la
|
||||
total 112
|
||||
drwxr-xr-x 16 waldek waldek 4096 Feb 21 18:12 .
|
||||
drwxr-xr-x 3 root root 4096 Feb 18 12:49 ..
|
||||
-rw------- 1 waldek waldek 2772 Feb 22 10:45 .bash_history
|
||||
-rw-r--r-- 1 waldek waldek 220 Feb 18 12:49 .bash_logout
|
||||
-rw-r--r-- 1 waldek waldek 3526 Feb 18 12:49 .bashrc
|
||||
drwx------ 16 waldek waldek 4096 Feb 18 14:24 .cache
|
||||
drwx------ 20 waldek waldek 4096 Feb 18 14:23 .config
|
||||
drwx------ 3 waldek waldek 4096 Feb 18 12:52 .dbus
|
||||
drwxr-xr-x 2 waldek waldek 4096 Feb 18 12:50 Desktop
|
||||
-rw-r--r-- 1 waldek waldek 35 Feb 18 13:33 .dmrc
|
||||
drwxr-xr-x 2 waldek waldek 4096 Feb 18 12:50 Documents
|
||||
drwxr-xr-x 2 waldek waldek 4096 Feb 18 12:50 Downloads
|
||||
drwx------ 2 waldek waldek 4096 Feb 18 15:07 .gnupg
|
||||
drwxr-xr-x 3 waldek waldek 4096 Feb 18 12:50 .local
|
||||
drwxr-xr-x 2 waldek waldek 4096 Feb 18 12:50 Music
|
||||
drwxr-xr-x 2 waldek waldek 4096 Feb 18 12:50 Pictures
|
||||
-rw-r--r-- 1 waldek waldek 807 Feb 18 12:49 .profile
|
||||
drwxr-xr-x 2 waldek waldek 4096 Feb 18 12:50 Public
|
||||
-rw------- 1 waldek waldek 11 Feb 21 18:12 .python_history
|
||||
drwx------ 2 waldek waldek 4096 Feb 21 12:45 .ssh
|
||||
drwxr-xr-x 2 waldek waldek 4096 Feb 18 12:50 Templates
|
||||
-rw-r----- 1 waldek waldek 5 Feb 18 15:06 .vboxclient-clipboard.pid
|
||||
-rw-r----- 1 waldek waldek 5 Feb 18 15:06 .vboxclient-display-svga-x11.pid
|
||||
-rw-r----- 1 waldek waldek 5 Feb 18 15:06 .vboxclient-draganddrop.pid
|
||||
-rw-r----- 1 waldek waldek 5 Feb 18 15:06 .vboxclient-seamless.pid
|
||||
drwxr-xr-x 2 waldek waldek 4096 Feb 18 12:50 Videos
|
||||
-rw------- 1 waldek waldek 56 Feb 18 13:33 .Xauthority
|
||||
-rw------- 1 waldek waldek 2701 Feb 18 13:33 .xsession-errors
|
||||
waldek@hellodebian:~$
|
||||
```
|
||||
|
||||
# Getting help
|
||||
|
||||
## Options
|
||||
|
||||
OK, so we have *a lot* of programs we can use on the command line, plus we can change how they work by adding obscure characters.
|
||||
How on earth can we *discover* what a program can and can't do?
|
||||
Introducing the **most important flag**: `--help`.
|
||||
|
||||
Most programs come with builtin help to explain you how to use the program.
|
||||
Often, but not always, this help can be displayed on the terminal by adding the `--help` flag.
|
||||
Let's investigate this.
|
||||
|
||||
```
|
||||
waldek@hellodebian:~$ ls --help
|
||||
Usage: ls [OPTION]... [FILE]...
|
||||
List information about the FILEs (the current directory by default).
|
||||
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
|
||||
|
||||
Mandatory arguments to long options are mandatory for short options too.
|
||||
-a, --all do not ignore entries starting with .
|
||||
-A, --almost-all do not list implied . and ..
|
||||
--author with -l, print the author of each file
|
||||
-b, --escape print C-style escapes for nongraphic characters
|
||||
--block-size=SIZE with -l, scale sizes by SIZE when printing them;
|
||||
e.g., '--block-size=M'; see SIZE format below
|
||||
-B, --ignore-backups do not list implied entries ending with ~
|
||||
-c with -lt: sort by, and show, ctime (time of last
|
||||
modification of file status information);
|
||||
with -l: show ctime and sort by name;
|
||||
otherwise: sort by ctime, newest first
|
||||
-C list entries by columns
|
||||
--color[=WHEN] colorize the output; WHEN can be 'always' (default
|
||||
if omitted), 'auto', or 'never'; more info below
|
||||
-d, --directory list directories themselves, not their contents
|
||||
-D, --dired generate output designed for Emacs' dired mode
|
||||
-f do not sort, enable -aU, disable -ls --color
|
||||
-F, --classify append indicator (one of */=>@|) to entries
|
||||
--file-type likewise, except do not append '*'
|
||||
--format=WORD across -x, commas -m, horizontal -x, long -l,
|
||||
single-column -1, verbose -l, vertical -C
|
||||
--full-time like -l --time-style=full-iso
|
||||
-g like -l, but do not list owner
|
||||
--group-directories-first
|
||||
group directories before files;
|
||||
can be augmented with a --sort option, but any
|
||||
use of --sort=none (-U) disables grouping
|
||||
-G, --no-group in a long listing, don't print group names
|
||||
-h, --human-readable with -l and -s, print sizes like 1K 234M 2G etc.
|
||||
--si likewise, but use powers of 1000 not 1024
|
||||
-H, --dereference-command-line
|
||||
follow symbolic links listed on the command line
|
||||
--dereference-command-line-symlink-to-dir
|
||||
follow each command line symbolic link
|
||||
that points to a directory
|
||||
--hide=PATTERN do not list implied entries matching shell PATTERN
|
||||
(overridden by -a or -A)
|
||||
--hyperlink[=WHEN] hyperlink file names; WHEN can be 'always'
|
||||
(default if omitted), 'auto', or 'never'
|
||||
--indicator-style=WORD append indicator with style WORD to entry names:
|
||||
none (default), slash (-p),
|
||||
file-type (--file-type), classify (-F)
|
||||
-i, --inode print the index number of each file
|
||||
-I, --ignore=PATTERN do not list implied entries matching shell PATTERN
|
||||
-k, --kibibytes default to 1024-byte blocks for disk usage;
|
||||
used only with -s and per directory totals
|
||||
-l use a long listing format
|
||||
-L, --dereference when showing file information for a symbolic
|
||||
link, show information for the file the link
|
||||
references rather than for the link itself
|
||||
-m fill width with a comma separated list of entries
|
||||
-n, --numeric-uid-gid like -l, but list numeric user and group IDs
|
||||
-N, --literal print entry names without quoting
|
||||
-o like -l, but do not list group information
|
||||
-p, --indicator-style=slash
|
||||
append / indicator to directories
|
||||
-q, --hide-control-chars print ? instead of nongraphic characters
|
||||
--show-control-chars show nongraphic characters as-is (the default,
|
||||
unless program is 'ls' and output is a terminal)
|
||||
-Q, --quote-name enclose entry names in double quotes
|
||||
--quoting-style=WORD use quoting style WORD for entry names:
|
||||
literal, locale, shell, shell-always,
|
||||
shell-escape, shell-escape-always, c, escape
|
||||
(overrides QUOTING_STYLE environment variable)
|
||||
-r, --reverse reverse order while sorting
|
||||
-R, --recursive list subdirectories recursively
|
||||
-s, --size print the allocated size of each file, in blocks
|
||||
-S sort by file size, largest first
|
||||
--sort=WORD sort by WORD instead of name: none (-U), size (-S),
|
||||
time (-t), version (-v), extension (-X)
|
||||
--time=WORD change the default of using modification times;
|
||||
access time (-u): atime, access, use;
|
||||
change time (-c): ctime, status;
|
||||
birth time: birth, creation;
|
||||
with -l, WORD determines which time to show;
|
||||
with --sort=time, sort by WORD (newest first)
|
||||
--time-style=TIME_STYLE time/date format with -l; see TIME_STYLE below
|
||||
-t sort by time, newest first; see --time
|
||||
-T, --tabsize=COLS assume tab stops at each COLS instead of 8
|
||||
-u with -lt: sort by, and show, access time;
|
||||
with -l: show access time and sort by name;
|
||||
otherwise: sort by access time, newest first
|
||||
-U do not sort; list entries in directory order
|
||||
-v natural sort of (version) numbers within text
|
||||
-w, --width=COLS set output width to COLS. 0 means no limit
|
||||
-x list entries by lines instead of by columns
|
||||
-X sort alphabetically by entry extension
|
||||
-Z, --context print any security context of each file
|
||||
-1 list one file per line. Avoid '\n' with -q or -b
|
||||
--help display this help and exit
|
||||
--version output version information and exit
|
||||
|
||||
The SIZE argument is an integer and optional unit (example: 10K is 10*1024).
|
||||
Units are K,M,G,T,P,E,Z,Y (powers of 1024) or KB,MB,... (powers of 1000).
|
||||
Binary prefixes can be used, too: KiB=K, MiB=M, and so on.
|
||||
|
||||
The TIME_STYLE argument can be full-iso, long-iso, iso, locale, or +FORMAT.
|
||||
FORMAT is interpreted like in date(1). If FORMAT is FORMAT1<newline>FORMAT2,
|
||||
then FORMAT1 applies to non-recent files and FORMAT2 to recent files.
|
||||
TIME_STYLE prefixed with 'posix-' takes effect only outside the POSIX locale.
|
||||
Also the TIME_STYLE environment variable sets the default style to use.
|
||||
|
||||
Using color to distinguish file types is disabled both by default and
|
||||
with --color=never. With --color=auto, ls emits color codes only when
|
||||
standard output is connected to a terminal. The LS_COLORS environment
|
||||
variable can change the settings. Use the dircolors command to set it.
|
||||
|
||||
Exit status:
|
||||
0 if OK,
|
||||
1 if minor problems (e.g., cannot access subdirectory),
|
||||
2 if serious trouble (e.g., cannot access command-line argument).
|
||||
|
||||
GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
|
||||
Full documentation <https://www.gnu.org/software/coreutils/ls>
|
||||
or available locally via: info '(coreutils) ls invocation'
|
||||
waldek@hellodebian:~$
|
||||
```
|
||||
|
||||
The output above teaches us that the options `-la` change the output so it becomes:
|
||||
|
||||
* `-a, --all do not ignore entries starting with .`
|
||||
* `-l use a long listing format`
|
||||
|
||||
To *not ignore entries starting with .* we can use two different flags, `-a` or `--all`.
|
||||
The former is called short arguments and the latter long ones.
|
||||
The long ones are more *verbose* so it's often easier to understand what a line *does* just by reading it.
|
||||
Note that `ls` only has one way of showing the help by adding `--help` whereas the help for `htop` can be shown with both `-h` or `--help`.
|
||||
This inconsistency is sadly a byproduct of the decentralized nature of Linux.
|
||||
To add to this mess some programs use *single dash long form* (`-help`) but those programs are rather rare.
|
||||
|
||||
## Manuals
|
||||
|
||||
The `--help` flag is tremendously useful as it gives you an overview of how you can modify a programs behaviour, kind of like settings, but it doesn't always explain you what a program is *for*.
|
||||
The is where the manuals come into play.
|
||||
I see the `--help` flag as a *cheat sheet* to quickly discover options and the man pages as a reference.
|
||||
We can read the manual by calling the `man` program with an argument.
|
||||
This argument is the *name* of the program you want to read the manual for.
|
||||
Same idea as with `which`.
|
||||
|
||||
```
|
||||
waldek@hellodebian:~$ man ls
|
||||
```
|
||||
|
||||
You're now in a program called `less`, which is a [pager](https://en.wikipedia.org/wiki/Terminal_pager).
|
||||
You can scroll the manual with the arrows of `vi` based navigation (which we'll get into later).
|
||||
If you hit `h` you'll see the builtin documentation of `less` and press `q` to quit (twice if you're in the help section).
|
||||
This brings you back to your prompt.
|
||||
It's worth reading the [wikipedia entry](https://en.wikipedia.org/wiki/Man_page) of the `man` command to understand it's history and operation.
|
||||
|
||||
The output below illustrates the *tree* of a terminal that's reading a manual.
|
||||
In a `bash` shell you invoke `man ls` which in turn runs the `pager` program to display the content.
|
||||
If you're intrigued by this `pstree` program go and read the manual!
|
||||
|
||||
```
|
||||
waldek@hellodebian:~$ pstree 10845 -a
|
||||
bash
|
||||
└─man ls
|
||||
└─pager
|
||||
waldek@hellodebian:~$
|
||||
```
|
||||
|
||||
Not every command has a manual.
|
||||
For example, `cd` does not have one.
|
||||
This is kind of logical because `cd` is a builtin.
|
||||
To learn more about builtin commands you can use the `help` program.
|
||||
On it's own it gives you all the builtin command you can invoke and with an argument it outputs the help about that specific command.
|
||||
|
||||
```
|
||||
waldek@hellodebian:~$ help
|
||||
GNU bash, version 5.1.4(1)-release (x86_64-pc-linux-gnu)
|
||||
These shell commands are defined internally. Type `help' to see this list.
|
||||
Type `help name' to find out more about the function `name'.
|
||||
Use `info bash' to find out more about the shell in general.
|
||||
Use `man -k' or `info' to find out more about commands not in this list.
|
||||
|
||||
A star (*) next to a name means that the command is disabled.
|
||||
|
||||
job_spec [&] history [-c] [-d offset] [n] or history -anrw [filename] or history -ps>
|
||||
(( expression )) if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else>
|
||||
. filename [arguments] jobs [-lnprs] [jobspec ...] or jobs -x command [args]
|
||||
: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [>
|
||||
[ arg... ] let arg [arg ...]
|
||||
[[ expression ]] local [option] name[=value] ...
|
||||
alias [-p] [name[=value] ... ] logout [n]
|
||||
bg [job_spec ...] mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C c>
|
||||
bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyse> popd [-n] [+N | -N]
|
||||
break [n] printf [-v var] format [arguments]
|
||||
builtin [shell-builtin [arg ...]] pushd [-n] [+N | -N | dir]
|
||||
caller [expr] pwd [-LP]
|
||||
case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p>
|
||||
cd [-L|[-P [-e]] [-@]] [dir] readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C>
|
||||
command [-pVv] command [arg ...] readonly [-aAf] [name[=value] ...] or readonly -p
|
||||
compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlis> return [n]
|
||||
complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpa> select NAME [in WORDS ... ;] do COMMANDS; done
|
||||
compopt [-o|+o option] [-DEI] [name ...] set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]
|
||||
continue [n] shift [n]
|
||||
coproc [NAME] command [redirections] shopt [-pqsu] [-o] [optname ...]
|
||||
declare [-aAfFgiIlnrtux] [-p] [name[=value] ...] source filename [arguments]
|
||||
dirs [-clpv] [+N] [-N] suspend [-f]
|
||||
disown [-h] [-ar] [jobspec ... | pid ...] test [expr]
|
||||
echo [-neE] [arg ...] time [-p] pipeline
|
||||
enable [-a] [-dnps] [-f filename] [name ...] times
|
||||
eval [arg ...] trap [-lp] [[arg] signal_spec ...]
|
||||
exec [-cl] [-a name] [command [argument ...]] [redirection ...] true
|
||||
exit [n] type [-afptP] name [name ...]
|
||||
export [-fn] [name[=value] ...] or export -p typeset [-aAfFgiIlnrtux] [-p] name[=value] ...
|
||||
false ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]
|
||||
fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command] umask [-p] [-S] [mode]
|
||||
fg [job_spec] unalias [-a] name [name ...]
|
||||
for NAME [in WORDS ... ] ; do COMMANDS; done unset [-f] [-v] [-n] [name ...]
|
||||
for (( exp1; exp2; exp3 )); do COMMANDS; done until COMMANDS; do COMMANDS; done
|
||||
function name { COMMANDS ; } or name () { COMMANDS ; } variables - Names and meanings of some shell variables
|
||||
getopts optstring name [arg ...] wait [-fn] [-p var] [id ...]
|
||||
hash [-lr] [-p pathname] [-dt] [name ...] while COMMANDS; do COMMANDS; done
|
||||
help [-dms] [pattern ...] { COMMANDS ; }
|
||||
waldek@hellodebian:~$ help cd
|
||||
cd: cd [-L|[-P [-e]] [-@]] [dir]
|
||||
Change the shell working directory.
|
||||
|
||||
Change the current directory to DIR. The default DIR is the value of the
|
||||
HOME shell variable.
|
||||
|
||||
The variable CDPATH defines the search path for the directory containing
|
||||
DIR. Alternative directory names in CDPATH are separated by a colon (:).
|
||||
A null directory name is the same as the current directory. If DIR begins
|
||||
with a slash (/), then CDPATH is not used.
|
||||
|
||||
If the directory is not found, and the shell option `cdable_vars' is set,
|
||||
the word is assumed to be a variable name. If that variable has a value,
|
||||
its value is used for DIR.
|
||||
|
||||
Options:
|
||||
-L force symbolic links to be followed: resolve symbolic
|
||||
links in DIR after processing instances of `..'
|
||||
-P use the physical directory structure without following
|
||||
symbolic links: resolve symbolic links in DIR before
|
||||
processing instances of `..'
|
||||
-e if the -P option is supplied, and the current working
|
||||
directory cannot be determined successfully, exit with
|
||||
a non-zero status
|
||||
-@ on systems that support it, present a file with extended
|
||||
attributes as a directory containing the file attributes
|
||||
|
||||
The default is to follow symbolic links, as if `-L' were specified.
|
||||
`..' is processed by removing the immediately previous pathname component
|
||||
back to a slash or the beginning of DIR.
|
||||
|
||||
Exit Status:
|
||||
Returns 0 if the directory is changed, and if $PWD is set successfully when
|
||||
-P is used; non-zero otherwise.
|
||||
waldek@hellodebian:~$
|
||||
```
|
||||
|
||||
Last but not least there are a few extra programs to give you quick and condensed information about a program, `whatis` and `apropos`.
|
||||
|
||||
```
|
||||
waldek@hellodebian:~$ whatis bash
|
||||
bash (1) - GNU Bourne-Again SHell
|
||||
waldek@hellodebian:~$ apropos bash
|
||||
bash (1) - GNU Bourne-Again SHell
|
||||
bash-builtins (7) - bash built-in commands, see bash(1)
|
||||
bashbug (1) - report a bug in bash
|
||||
builtins (7) - bash built-in commands, see bash(1)
|
||||
dh_bash-completion (1) - install bash completions for package
|
||||
rbash (1) - restricted bash, see bash(1)
|
||||
waldek@hellodebian:~$
|
||||
```
|
||||
|
||||
# Exercise
|
||||
|
||||
**Read** some manual pages on the commands we've seen until now.
|
||||
**Apply** some options you read about in the manual to experiment with said programs.
|
||||
|
||||
# Creating and modifying
|
||||
|
||||
## Directories
|
||||
|
||||
## Files
|
||||
|
||||
### `nano`
|
||||
|
||||
### `vi` and `vim`
|
||||
|
|
Loading…
Reference in New Issue