You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

87 lines
7.9 KiB
Markdown

# Basics of GNU/Linux
First we will introduce some of the most used Bash commands. By using this command we will learn how to manage files, directories, and modify the contents of files. Later, the terminal is introduced. The terminal will be our most used front-end frame to work in mobile devices or servers. Thus, few improvements are going to be make, to support our daily task in the Bash terminal. Finally, we will work with the package manger tool. We are going to install some useful packages that will be used later, and we will make some data science in terminal by creating our first on-liner task.
## Basic File System Commands
The most used commands at the terminal are listed below. These are know as File System Commands, because they mainly handle file in our system
| Name | Command | options | example |
3 years ago
|-------------------|---------|---------------------------------------|----------------------------------|
| List files | ls | -a shows all | ls -la |
| | | -l long format | |
| | | -R recursive | |
3 years ago
|-------------------|---------|---------------------------------------|----------------------------------|
| Current directory | pwd | -P prints the physical location | pwd |
3 years ago
|-------------------|---------|---------------------------------------|----------------------------------|
| Change | cd | .. takes you up a level | cd /home/gmarx |
| directory | | ~ takes you to home directory | cd ~ |
3 years ago
|-------------------|---------|---------------------------------------|----------------------------------|
| Make | mkdir | -p make parent directories as needed | mkdir -p test/example |
| directory | | -v print a message for each directory | mkdir -p /test/example |
| | | | *first example creates |
| | | | folders inside the |
| | | | current folder, other one |
| | | | creates folder in root directory |
3 years ago
|-------------------|---------|---------------------------------------|----------------------------------|
| Delete a | rm | -r recursive (use for directories) | rm sample.txt |
| file or directory | | -d remove empty directory | rm -r test |
3 years ago
|-------------------|---------|---------------------------------------|----------------------------------|
| Copy a file | cp | -r recursivec copy | cp a.txt b.txt |
| or directory | | -u copy only if the source is newer | cp test-a test-b |
| | | -v verbose (show output) | |
3 years ago
|-------------------|---------|---------------------------------------|----------------------------------|
| Move a file or | mv | -i prompts before overwrite | mv a.txt c.txt |
| directory | | No -r; Moving into the same directory | mv test example |
| | | performs a renaming | |
3 years ago
|-------------------|---------|---------------------------------------|----------------------------------|
| | touch | | |
3 years ago
|-------------------|---------|---------------------------------------|----------------------------------|
| | more | | |
3 years ago
|-------------------|---------|---------------------------------------|----------------------------------|
| | cal | | |
3 years ago
|-------------------|---------|---------------------------------------|----------------------------------|
| | | | |
## Terminal
There are several Terminal emulators that will help to visualize and work better during a connection to our local or remote system.
I have tested some of them and I can recommend some of they:
* [ConEmu](https://conemu.github.io). ConEmu is a powerful and fast window based terminal manager that can handle all the shell in your Windows system (cmd, PowerShell, Git Bash, Python). *However the colors and text make an ugly tool to work with for several hours*.
* [Hyper](https://hyper.is). Hyper is a terminal built on web technologies, based on JavaScript, HTML, and CSS providing a beautiful and extensible experience for command-line interface users. The application has a lot of APIs and extension and is highly configurable for several tasks. *However, the emulator requieres a complex configuration file and the speed of the emulator is not good enough compared with other projects*.
* [Alacritty](https://github.com/alacritty/alacritty). Alacritty is a modern terminal emulator that comes with sensible defaults, but allows for extensive configuration. By integrating with other applications, rather than reimplementing their functionality, it manages to provide a flexible set of features with high performance. The supported platforms currently consist of BSD, Linux, macOS and Windows. The project is in Beta version but actually used by several users daily. *However, the first approach for new user and lack of information make roughly first contact*.
Once you have decided and installed a terminal emulator, we can start typing commands and improving the Bash. Below, there are some terminal commands to move around in the daily typing task.
| Command | Description |
3 years ago
|---------|------------------------|
| CTRL-c | Stop current command |
| CTRL-z | Sleep program |
| CTRL-a | Go to start of line |
| CTRL-e | Go to end of line |
| CTRL-u | Cut from start of line |
| CTRL-k | Cut to end of line |
| CTRL-r | Search history |
| !! | Repeat last command |
| Tab key | Autocompletes |
3 years ago
|---------|------------------------|
| | |
3 years ago
Remember that the terminal is the front-end window of the back-end shell system. The system can be Shell, Bash, Fish, Z-Shell, or any other. The most standard used or pre-installed one is the Bash (Bourne-again Shell), Bash is a command processor that typically runs in a text window where the user types commands that cause actions. Bash can also read and execute commands from a file, called a shell script. Like most Unix shells, it supports filename globbing (wildcard matching), piping, here documents, command substitution, variables, and control structures for condition-testing and iteration. The keywords, syntax, dynamically scoped variables and other basic features of the language are all copied from sh. Other features, e.g., history, are copied from csh and ksh. Bash is a POSIX-compliant shell, but with a number of extensions.
*** Package management
| Command | Debian |
3 years ago
|------------------------------------|----------------------|
| Install a package | sudo apt install vim |
| Upgrade the package in your system | sudo apt upgrade |
3 years ago
|------------------------------------|----------------------|
| | |
*** Basic file editing with VIM
3 years ago
*** Expanding the file system