This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
os_cp:intro [2025/03/05 22:38] jkonczak [Accessing the shell] |
os_cp:intro [2026/03/12 00:57] (current) jkonczak [Glob names and wildcards] |
||
|---|---|---|---|
| Line 60: | Line 60: | ||
| * Apple operating systems (e.g. MacOS) ship with modified BSD tools [[https://opensource.apple.com/releases/|[1]]] [[https://github.com/apple-oss-distributions/file_cmds|[2]]] [[https://github.com/apple-oss-distributions/text_cmds|[3]]] | * Apple operating systems (e.g. MacOS) ship with modified BSD tools [[https://opensource.apple.com/releases/|[1]]] [[https://github.com/apple-oss-distributions/file_cmds|[2]]] [[https://github.com/apple-oss-distributions/text_cmds|[3]]] | ||
| * Embedded / resource restrained systems often use [[https://www.busybox.net/downloads/BusyBox.html|BusyBox]] | * Embedded / resource restrained systems often use [[https://www.busybox.net/downloads/BusyBox.html|BusyBox]] | ||
| - | * Android uses [[https://www.landley.net/toybox/|toybox]] [[https://cs.android.com/android/platform/superproject/main/+/main:external/toybox/toys/posix/|[4]]] | + | * Android uses [[https://www.landley.net/toybox/|toybox]] [[https://cs.android.com/android/platform/superproject/main/+/main:external/toybox/toys/posix/|[4]]] |
| * For more, see [[https://wiki.archlinux.org/title/core_utilities]] | * For more, see [[https://wiki.archlinux.org/title/core_utilities]] | ||
| <html></small></html> | <html></small></html> | ||
| Line 99: | Line 99: | ||
| where ''user'' is the user name and ''host'' is the name or address of the target device. | where ''user'' is the user name and ''host'' is the name or address of the target device. | ||
| \\ | \\ | ||
| - | For instance, if used ''john'' would like to log into a computer named ''polluks.cs.put.poznan.pl'', he would have to input \\ ''ssh john@polluks.cs.put.poznan.pl''. | + | For instance, if the user ''john'' would like to log into a computer named ''polluks.cs.put.poznan.pl'', he would have to input \\ ''ssh john@polluks.cs.put.poznan.pl''. |
| + | \\ | ||
| + | To terminate a ssh session, one can use either ''logout'' or ''exit'' command, or use //Ctrl// + //d// key combination on empty prompt line((//Ctrl// + //d// actually indicates //end-of-file// condition.)). | ||
| Currently all major operating systems (including Windows) provide ''ssh'' command by default. | Currently all major operating systems (including Windows) provide ''ssh'' command by default. | ||
| Line 111: | Line 113: | ||
| It is vital for security to confirm the authenticity of the server – the client | It is vital for security to confirm the authenticity of the server – the client | ||
| must verify that it does not contact a rogue server that can learn the password | must verify that it does not contact a rogue server that can learn the password | ||
| - | ([[https://docs.ssh-mitm.at/user_guide/authentication.html#id2|ready-to-go tool]]) | + | ([[https://docs.ssh-mitm.at/user_guide/authentication.html#id2|ready-to-go tool]]) |
| - | and/or hijacks the session. | + | and/or hijack the session. |
| \\ | \\ | ||
| [[https://en.wikipedia.org/wiki/Public-key_cryptography|Asymmetric cryptography]] | [[https://en.wikipedia.org/wiki/Public-key_cryptography|Asymmetric cryptography]] | ||
| Line 121: | Line 123: | ||
| Hence, upon the first connection to a new server the SSH client program requests | Hence, upon the first connection to a new server the SSH client program requests | ||
| the user to verify the authenticity of the public key and stores the key (in | the user to verify the authenticity of the public key and stores the key (in | ||
| - | OpenSSH in ''~/.ssh/known_hosts'') to verify it automatically upon subsequent | + | OpenSSH in ''~/.ssh/known_hosts'') to verify it automatically upon subsequent |
| connections. | connections. | ||
| Line 128: | Line 130: | ||
| ~~Exercise.#~~ Run a terminal emulator. Execute command ''date'' and ''echo $SHELL'' within. | ~~Exercise.#~~ Run a terminal emulator. Execute command ''date'' and ''echo $SHELL'' within. | ||
| - | ~~Exercise.#~~ Execute command ''sleep 1h'' and interrupt it by pressing //Ctrl + c//. | + | ~~Exercise.#~~ Execute command ''sleep 1h'' and interrupt it by pressing //Ctrl + c//. |
| ~~Exercise.#~~ Switch to second virtual console and log in. Execute ''pwgen''. Return to graphical console. | ~~Exercise.#~~ Switch to second virtual console and log in. Execute ''pwgen''. Return to graphical console. | ||
| - | ~~Exercise.#~~ Use SSH to access ''polluks.cs.put.poznan.pl''. | + | ~~Exercise.#4~~a Use SSH to access your neighbour's computer. |
| + | \\ | ||
| + | <small>~~Exercise.#4~~b Use SSH to access ''polluks.cs.put.poznan.pl''.</small> | ||
| ===== Getting help ===== | ===== Getting help ===== | ||
| Line 142: | Line 146: | ||
| ~~Exercise.#~~ Display help for ''cat'' and ''bat'' commands by running them with help option. <html><small></html>(NB: ''bat'' is installed by default only in some Linux distros.)<html></small></html> | ~~Exercise.#~~ Display help for ''cat'' and ''bat'' commands by running them with help option. <html><small></html>(NB: ''bat'' is installed by default only in some Linux distros.)<html></small></html> | ||
| - | Usually together with a program comes with a set of system manual pages. The pages can be displayed using the **''man //pagename//''** command. To leave the manual, type ''q''. | + | Usually a program comes together with a set of system manual pages. The pages can be displayed using the **''man //pagename//''** command. To leave the manual, type ''q''. |
| ~~Exercise.#~~ Display manual page for ''timeout'' command. | ~~Exercise.#~~ Display manual page for ''timeout'' command. | ||
| Line 150: | Line 154: | ||
| Page names are unique within a section, but there may be pages with the same name in different sections. | Page names are unique within a section, but there may be pages with the same name in different sections. | ||
| \\ | \\ | ||
| - | You may use the **''whatis //pagename//''** command to learn which sections contain given page name and display the full page title. | + | You may type **''whatis //pagename//''** or <small>''man -f //pagename//''</small> to learn which sections contain given page name and display the full page title. |
| ~~Exercise.#~~ List all pages that are named ''time''. | ~~Exercise.#~~ List all pages that are named ''time''. | ||
| - | To select a page from a given section, one has to use ''man //section// //pagename//'' syntax. | + | To select a page from a given section, one has to use ''man //section// //pagename//'' syntax, e.g., ''man 2 write''. |
| ~~Exercise.#~~ The ''man'' itself is described on two manual pages. Display both. What information is contained in each one? | ~~Exercise.#~~ The ''man'' itself is described on two manual pages. Display both. What information is contained in each one? | ||
| Line 165: | Line 169: | ||
| <html><small></html> | <html><small></html> | ||
| - | For searching within manual there is also the ''apropos //what//'' command that searches within page names and titles. | + | For searching within manual there are also the ''apropos //what//'' and ''man -k //what//'' commands that search within page names and titles. |
| Apart from ''man'', there is an alternative (and less popular) documentation system called ''info''. To see an Info page, type ''info //name//''. Some programs ship with a more detailed Info document than manual page. | Apart from ''man'', there is an alternative (and less popular) documentation system called ''info''. To see an Info page, type ''info //name//''. Some programs ship with a more detailed Info document than manual page. | ||
| Line 231: | Line 235: | ||
| The command **''ls [//dir//]''** lists file in directory ''dir''. When run with no arguments, it lists the current working directory. | The command **''ls [//dir//]''** lists file in directory ''dir''. When run with no arguments, it lists the current working directory. | ||
| \\ | \\ | ||
| - | By default ''ls'' does not list hidden files. The **''-a''** and ''--all'' switch changes this behaviour. | + | By default ''ls'' does not list hidden files. The **''-a''** switch changes this behaviour. |
| \\ | \\ | ||
| - | Switch **''-l''** / ''--list'' prints list of files with details such as file owner, size, modification date, etc. | + | Switch **''-l''** prints list of files with details such as file owner, size, modification date, etc. |
| ~~Exercise.#~~ List files in ''/usr/share/zoneinfo/'' and ''../../../../../bin''. | ~~Exercise.#~~ List files in ''/usr/share/zoneinfo/'' and ''../../../../../bin''. | ||
| Line 259: | Line 263: | ||
| To change directory the command **''cd [//target//]''** is used. If no target is provided, ''cd'' changes current directory to the home directory. | To change directory the command **''cd [//target//]''** is used. If no target is provided, ''cd'' changes current directory to the home directory. | ||
| \\ | \\ | ||
| - | <html><small></html>If ''-'' is uses as the target, the directory is changed to the previously visited. <html></small></html> | + | <html><small></html>If ''-'' is used as the target, the directory is changed to the previously visited. <html></small></html> |
| ~~Exercise.#~~ Enter ''.config'' directory (located in your home directory) and list files within. | ~~Exercise.#~~ Enter ''.config'' directory (located in your home directory) and list files within. | ||
| Line 284: | Line 288: | ||
| \\ | \\ | ||
| For instance, //lines beginning with a word followed by an equals sign// might | For instance, //lines beginning with a word followed by an equals sign// might | ||
| - | be written as a regular expression ''^\w+=''. | + | be written as a regular expression ''^\w+=''. |
| There are countless syntaxes and implementations of such patterns/expressions. | There are countless syntaxes and implementations of such patterns/expressions. | ||
| In the shell, [[https://en.wikipedia.org/wiki/Wildcard_character|wildcards]] | In the shell, [[https://en.wikipedia.org/wiki/Wildcard_character|wildcards]] | ||
| - | and [[https://en.wikipedia.org/wiki/Regular_expression|regular expressions]] | + | and [[https://en.wikipedia.org/wiki/Regular_expression|regular expressions]] |
| are commonplace. | are commonplace. | ||
| Line 296: | Line 300: | ||
| \\ | \\ | ||
| The shell uses syntax summarized e.g., in | The shell uses syntax summarized e.g., in | ||
| - | ''[[https://man7.org/linux/man-pages/man7/glob.7.html|man 7 glob]]'' and | + | ''[[https://man7.org/linux/man-pages/man7/glob.7.html|man 7 glob]]'' and |
| - | ''[[https://man7.org/linux/man-pages/man7/regex.7.html|man 7 regex]]'' | + | ''[[https://man7.org/linux/man-pages/man7/regex.7.html|man 7 regex]]'' |
| </small> | </small> | ||
| Line 319: | Line 323: | ||
| ~~Exercise.#~~ Change directory to ''/usr/bin/'' directory. List all files that end with ''cat''. | ~~Exercise.#~~ Change directory to ''/usr/bin/'' directory. List all files that end with ''cat''. | ||
| - | ~~Exercise.#~~ List all files that end with ''cat'' in ''/usr/bin/'' while being in your home directory. | + | ~~Exercise.#~~ Change directory to your home directory. From there, list all files that end with ''cat'' in ''/usr/bin/''. |
| - | ~~Exercise.#~~ List all files that are in the ''/usr/bin/'' directory that have names consisting of two chatacters. | + | ~~Exercise.#~~ List all files that are in the ''/usr/bin/'' directory that have names consisting of two characters. |
| ~~Exercise.#~~ List contents of ''/usr/share/zoneinfo/'' and its subdirectories using a single command. | ~~Exercise.#~~ List contents of ''/usr/share/zoneinfo/'' and its subdirectories using a single command. | ||