LINUXOPOLIS #66 • VIM ~ TUTORIALS by wglenz

View this thread on steempeak.com
· @wglenz ·
$0.10
LINUXOPOLIS #66 • VIM ~ TUTORIALS
<center><h3>LINUXOPOLIS</h3>A short summary of building a personal Linux environment.<br><a href="https://steempeak.com/@wglenz">Published with SteemPeak</a></center>


<center>![Screenshot](https://files.steempeak.com/file/steempeak/wglenz/MXnIF3aj-Hintergrund_11.png)Screenshot by Willi Glenz</center>


<center><h4>CONTENTS</h4></center>

```
	VIM	- A PROGRAMMERS TEXT EDITOR

020 vim												// v3 19-05 update 
037 first-steps										// v4 19-05 	
053 vim-compressed									// v7 19-05 update 
072 buffers											// v1 19-05 
070 windows											// v1 19-05 
001 vim-mode in bash								// v2 19-05 
067 vim-mode in fish								// v1 19-05 
040 github repository								// v1 19-05							
027 ranger - a file manager with vi key bindings	// v2 19-05
034 ~/.vimrc										// v3 19-05 
074 tutorials										// v1 19-05 new
073 documentation									// v1 19-05 new

	JAVA - PLATFORM

060 api												// v1 19-05 
025 tutorials										// v4 19-05 
059 primitive-data-types		 					// v1 19-05
065 operators										// v1 19-05 
035 modifier										// v1 19-05 
069 cli												// v1 19-05 
056 basic-cli-snippet								// v2 19-05 
062 basic-gui-snippet								// v1 19-05 
064 jar-file										// v2 19-05 
030 eclipse											// v1 19-05
058 netbeans										// v1 19-05
068 intellij idea									// v2 19-05 
071 scanner											// v1 19-05 
    
	PROGRAMMING

066 perl											// v1 19-05 
048 c												// v2 19-05 
019 python											// v1 19-05
024 awk												// v1 19-05
051 html											// v1 19-05
061 git												// v1 19-05
 
	ADMINISTRATION

013 toolbox											// v2 19-05
029 system information								// v1 19-05
052 services										// v1 19-05
023 memory											// v1 19-05
032 network											// v1 19-05
031 swap space										// v1 19-05
045 languages										// v1 19-05
047 users											// v1 19-05
049 backup											// v2 19-05	
041 sources											// v1 19-05
    
043 fish											// v2 19-05
026 bash											// v1 19-05
055 change the default shell						// v2 19-05
012 bashrc											// v1 19-05	
008 aliases											// v1 19-05
015 shortcuts										// v1 19-05
022 one-liner & cowsay								// v1 19-05			
038 job-control										// v1 19-05
    
017 debian											// v1 19-05
005 sources.list for debian-stretch					// v1 19-05
014 linux-from-scratch (lfs)						// v2 19-05
    
042 at												// v1 19-05
028 cron											// v1 19-05
    
063 inxi											// v1 19-05 
046 youtube-dl										// v3 19-05 								
057 R												// v1 19-05
054 firefox											// v2 19-05
050 gpg												// v3 19-05
044 raspberry pi									// v1 19-05
039 task & timewarrior								// v1 19-05
036 i3wm											// v1 19-05
033 snap											// v1 19-05
021 neofetch										// v1 19-05
018 glances											// v1 19-05
016 screen											// v1 19-05
011 fuzzi finder									// v1 19-05
010 cryptocurrencies								// v1 19-05
009 /etc/fstab										// v1 19-05
007 ram-disk permanent								// v1 19-05
006 ram-disk temporary								// v1 19-05
004 system update & upgrade							// v1 19-05
003 dconf-editor									// v1 19-05
002 gnome-tweak-tool								// v1 19-05
```

<center><h4>#074</h4></center>

```
074 • VIM TUTORIALS
```
```
• TutorialsPoint	: tutorialspoint.com/vim/index.htm
• Bram Moolenaar	: moolenaar.net/habits.html
• Ben McCormick	I	: benmccormick.org/2014/06/30/learning-vim-in-2014-the-basics
• Ben McCormick	II	: benmccormick.org/2014/07/02/learning-vim-in-2014-vim-as-language
```

<br>
```
073 • VIM DOCUMENTATION
```
```
[ $ man vim											] 
[ :help :h :resize									] 
[ :h user-manual :resize							] 
[ file:///usr/share/doc/vim-doc/html/index.html 	] 

• Documentation I	- vimhelp.org
• Documentation II	- vimhelp.org/usr_toc.txt.html
• FAQ				- vimhelp.org/vim_faq.txt.html
• Wiki				- vim.wikia.com/wiki/Vim_Tips_Wiki
```

<br>
```
072 • VIM BUFFERS
```
```
[:buffer :ls					] buffers list
[:bp :b# :bn :b1				] buffer previous next 1
[:set hidden|nohidden :bp! :bn! ] buffer hidden
[:bd							] buffer delete
[:mks :mks!						] save session
```

<br>
```
071 • JAVA SCANNER
```
```
import java.util.Scanner;
Scanner scanner = new Scanner(System.in);
System.out.print("Input: ");
String msg = scanner.nextLine();
scanner.close();

file:///usr/share/doc/openjdk-11-jre-headless/api/java.base/java/util/Scanner.html
```

<br>
```
070 • VIM WINDOW-MANAGEMENT
```
```
[^wn										] new window
[^ws ^wv			][:sp :vs :vs|b2		] split window
[^w= ^w_ ^w20< ^w|	][:res :vertical res 64	] resize windows
[^wc ^wq			][:q :close				] close window
[^wr ^wR ^wx		][						] rotate/exchange window 
[					][:set splitright		] ~/.vimrc
[					][:h ^w					] documentation
[^whjkl ^wt ^wb	^wp ^ww ^wx					] top bottom previous ...
[^wo :ls :ba :vert ba :vert 2ba :vs|b2		] playing with buffers
[:mks session $ vim -S session				] save and restore a session
```

<br>
```
069 • JAVA CLI
```
```
# apt-get install default-jdk default-jdk-doc
# apt-get install openjdk-11-jdk openjdk-11-doc
$ java -version; javac -version
# update-java-alternatives -l
# update-java-alternatives -s java-1.11.0-openjdk-amd64
# update-alternatives --display java
# update-alternatives --config java
$ mkdir -p ~/Projects/Phoenix/source/{tools,docu,de/wglenz/phoenix};
$ cd ~/Projects/source; tree
$ vim -O de/wglenz/phoenix/Main.java de/wglenz/phoenix/Class2.java
$ vim, ^wt ^wl :terminal ^wr htop ^wt ^w=
```

<br>
```
068 • INTELLIJ IDEA
 • Homepage 		: jetbrains.com/idea/
 • Download			: jetbrains.com/idea/download/#section=linux
 • Documentation	: jetbrains.com/idea/documentation/
```
```
INSTALLATION
 # snap refresh
 # snap install intellij-idea-community --classic

TUTORIALS
 • JetBrains		: jetbrains.com/idea/documentation/
 • TutorialsPoint	: tutorialspoint.com/intellij_idea/index.htm
```

<br>
```
067 • VIM-MODE IN FISH
```
```
~> 	vim .config/fish/config.fish
	#fish_default_key_bindings
	fish_vi_key_bindings
	:wq
~>	<ctrl-d>
```

<br>
```
066 • PERL
 • Homepage			: perl.org
 • Documentation	: perl.org/docs.html 
 • CPAN				: cpan.org 
```
```
# apt-get install perl-doc
$ perldoc perlintro
$ perl -v

$ vim ~/scripts/file.pl
  #!/usr/bin/perl
  use strict;
  use warnings;
:w

TUTORIALS
• Learning			: perl.org/learn.html
• TutorialsPoint	: tutorialspoint.com/perl/
• Beginning Perl	: learn.perl.org/books/beginning-perl
```

<br>
```
065 • JAVA OPERATORS
```
```
Arithmetic		+ - * / & ++ --
Relational		== != > < >= <=
Bitwise			& | ^ ~ << >> >>>
Logical			&& || !
Assignment		= += -= *= /= %= <<= >>=  &= ^= |=
Miscellaneous	?: instanceof
```

<br>
````
064 • JAR-FILE
````
````
PROJECT-FOLDER
$ cd ~; clear; lsd -l
$ mkdir -p ~/projects/phoenix/source/de/wglenz/phoenix
$ clear; lsd -l
$ tree ~/projects

SOURCE-CODE
$ cd ~/projects/phoenix/source/
$ tree
$ vim de/wglenz/phoenix/Main.java
> package de.wglenz.phoenix;
> public class Main { ... }
:wq
$ tree ..

BYTE-CODE
$ cd ~/projects/phoenix/source/
$ javac -d ../classes de/wglenz/phoenix/*.java
$ tree ..

MANIFEST-FILE
$ cd ~/projects/phoenix/classes/
$ tree ..
$ vim manifest.txt
> Main-Class: de.wglenz.phoenix.Main
:wg
$ tree ..

JAR-FILE
$ cd ~/projects/phoenix/classes/
$ tree ..
$ jar -cvmf manifest.txt phoenix.jar de
$ jar -tf phoenix.jar
$ tree ..
$ tree ~/projects/

RUN-APPLICATION
$ tree ~/projects/
$ cd ~/projects/phoenix/classes/
$ java -jar phoenix.jar
````


<br>
````
063 • INXI
````
````
$ vim ~/scripts/check	

  1 #!/bin/bash
  2 # check [host cpu disk network] 
  3 # Wrapper for inxi, nmap and ip
  4 #
  5 
  6 clear
  7 
  8 while [ -n "$1" ]
  9 do
 10    case "$1" in
 11       "host" )
 12          echo
 13          inxi -v7
 14          echo
 15          ;;
 16       "cpu" )
 17          echo
 18          inxi -f
 19          echo
 20          ;;
 21       "disk" )
 22          echo
 23          inxi -Dp
 24          echo
 25          ;;
 26       "network" )
 27          echo
 28          inxi -i
 29          nmap --iflist
 30          ip neigh
 31          echo
 32          ;;
 33    esac
 34    shift
 35 done
 36 
 37 exit
 
 :wq
````

<br>
```
062 • JAVA BASIC-GUI-SNIPPET
```
```
package de.wglenz.java;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Main {

	JFrame frame;
	JPanel panelWest;
	JPanel panelCenter;
	JLabel label;
	JButton buttonWest;
	JButton buttonSouth;
	JButton buttonEast;

	public Main() {
		super();

		panelWest = new JPanel();
		panelCenter = new JPanel();
		label = new JLabel("LabelCenter");
		
		buttonWest = new JButton("ButtonWest");
		buttonWest.addActionListener(new Listener1());

		buttonSouth = new JButton("ButtonSouth");
		buttonSouth.addActionListener(new Listener2());

		buttonEast = new JButton("ButtonEast");
		buttonEast.addActionListener(new Listener3());

		frame = new JFrame("Phoenix v 0.003");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.getContentPane().add(BorderLayout.CENTER, panelCenter);
		frame.getContentPane().add(BorderLayout.WEST, panelWest);
		frame.getContentPane().add(BorderLayout.SOUTH, buttonSouth);
		frame.getContentPane().add(BorderLayout.EAST, buttonEast);
		frame.setSize(1200, 600);
		frame.setVisible(true);
		
		panelCenter.add(label);
		panelWest.add(buttonWest);	
		}

	public static void main(String... args) {
		Main phoenix = new Main();
		phoenix.run();
		}

	class Listener1 implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			label.setText("ButtonWest: OK");
			}
		}

	class Listener2 implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			label.setText("ButtonSouth: OK");
			}
		}

	class Listener3 implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			label.setText("ButtonEast: OK");
			}
		}

	public void run() {
		//
		}

}
```

<br>
```
061 • GIT
 • Homepage		: git-scm.com
 • Reference	: git-scm.com/docs
 • Videos		: git-scm.com/videos
 • Git-Book		: git-scm.com/book/en/v2
```
```
# apt install git
```

<br>
```
060 • JAVA API
```
```
$ apt-cache show openjdk-11-jdk
# apt install openjdk-11-doc
$ firefox file:///usr/share/doc/openjdk-11-jre-headless/api/index.html
```


<br>
```
059 • JAVA PRIMITIVE-DATA-TYPES
```
```
PRIMITIVE DATA TYPES

TYPE		SIZE	RANGE					DEFAULT	CLASS&FIELD
byte		8 bit	-2^7 to 2^7 -1			0
short		16 bit	-2^15 to 2^15 -1		0
int			32-bit	-2^31 to 2^31 -1		0		Integer.MIN_VALUE to Integer.MAX_VALUE
long		64 bit	-2^63 to 2^63-1			0L
float		32 bit	-3.4E38 to 3.4E38		0f
double		64 bit	-1.7E308 to 1.7E308		0d
char		16 bit	'\u0000' to '\uffff'	'\u0000'
					(0 to 65,565)
boolean		1 bit							false

WRAPPER CLASSES

public Short(short|String value|s)
public Integer(int|String value|s)
public Long(long|String value|s)
public Float(float|double|String value|value|s)
public Double(double|String value|s)
public Character(char value)
public Boolean(boolean|String value|s)
```

<br>
```
058 • NETBEANS
 • Homepage			: netbeans.apache.org
 • Documentation	: docs.oracle.com/cd/E50453_01/doc.80/e50452.pdf
 • Shortcuts		: netbeans.org/project_downloads/usersguide/shortcuts-80.pdf
```
```
# snap install netbeans

alt + insert 				: Generate code
alt + shift + f 			: Format selection
ctrl + x 					: Delete line
ctrl + e 					: Delete line
shift + ctrl + minus | plus : Collaps | Expand all
```


<br>
```
057 • R
 • Homepage	: r-project.org
 • CRAN		: cloud.r-project.org/index.html
 • Journal	: journal.r-project.org
 • Manual	: cran.r-project.org/manuals.html
```
```
$ R
> help.start()

TUTORIALS
 • Introduction to R Programming	: youtu.be/92zCRV3eQxw
 • An Introduction to R				: cran.r-project.org/doc/manuals/r-release/R-intro.pdf
```

<br>
```
056 • JAVA BASIC-CLI-SNIPPET
```
```
package de.wglenz.phoenix;
import java.util.Scanner;

public class Main {

   private String msg;
   private Scanner scanner;

   public Main() {
      super();
      msg = "Hello World!";
      scanner = new Scanner(System.in);
   	  }

   public static void main(String[] args) {
      Main phoenix = new Main();
      phoenix.run();
      }

   public void run() {
	  System.out.print("Input: ");
	  msg = scanner.nextLine();
      System.out.println(msg);
      scanner.close;
      }

}
```

<br>
```
055 • CHANGE-THE-DEFAULT-SHELL
```
```
• Option 1:	# vim /etc/passwd				
• Option 2:	$ chsh -s /usr/bin/fish			
• Option 3:	# usermod -s /bin/bash user		


$ echo $SHELL
$ grep user /etc/passwd
$ chsh -s /usr/bin/fish

$ cat /etc/passwd | cut -d: -f7 | sort | uniq -c | sort -nr
$ grep -i user /etc/passwd
$ cat /etc/shells && whereis zshell

```

<br>
```
054 • FIREFOX
```
```
send.firefox.com

about:blank
about:cache
about:config
about:crashes
about:downloads
about:memory
about:performance
about:plugins
about:profiles
about:serviceworkers
about:support
```

<br>
```
053 •  VIM-COMPRESSED
```
```
[ :ab :abc :unab ^v									] abbreviate
[ a A i I o O s S C ~								] append insert substitute
[ $ vim -u NONE -N									] baseline
[ :ls :buffers :badd :b1 :b2 :bn :bp :bf :bl		] buffer
[ r x ~												] character replace delete change
[ ci( ci{ ci< ci"									] change inner ...
[ v j " + y											] clipboard
[ <esc> gg v G "+ y									] copy
[ dd D x d$ dip diw daw dit di" das   				] delete
[ $ vim -O ~/.vimrc ~/.bashrc ^ww ^wr ^wc ^wq		] edit
[ ~ :e :edit $ ^xe									] edit
[ zf5j zo zc zd										] folding
[ :ve ^g g^g										] information
[ qa :reg a @a										] macros
[ m1 '1 `1 marks									] mark
[ [InsertMode] ^n									] match
[ hjkl gj gk gg G HML								] move cursor
[ 1% 50% 100% zz zb zt z<enter>						] move cursor
[ :set nu|nonu :set rnu|nornu						] numbers
[ .													] repeat
[ / f * # q/ q? q: :%s/one/two/g					] search
[ /\cabc /\Cabc /\<abc\> :nohl						] search
[ :set incsearch noincsearch :set hls nhls			] search
[ $ vimtutor en										] tutorial
[ u U ^r											] undo redo
[ ^wv ^ws ^wq ^ww ^wr ^wc							] windows
[ gg G ^g 50% ^e ^y ^n ^u ^d ^f ^b					] windows
[ :set ruler noruler								] windows
[ :set linebreak nolinebreak						] windows
[ :call matchadd('colorColumn', '\%81v', 100)		] windows
[ :q :q! :qa :qa! :wq :wqa :exit ZZ ZQ				] exit
```

<br>
```
052 • SERVICES 
```
```
# tasksel
# tasksel --list-tasks
# service --status-all | less
# service --status-all | awk '/[+]/ { print $4  }' | tee /tmp/active.txt
# service network-manager restart
# service ssh status
# service cron status
# service apache2 start | restart | stop
# apt-get install printer-driver-cups
# ufw status
```

<br>
```
051 • HTML 
```
```
BASE-DOCUMENT

<!DOCTYPE html>
<html lang="en-US">
	<head>
		<meta charset="utf-8">
		<title>Homepage</title>
	</head>
	
	<body>
	<h1>Heading 1</h1>
	<h2>Heading 2</h2>
	<p>This is the first paragraph</p>
	<p>This is the second paragraph</p>
	<center><b>text</b></center>
	<a href="url">text</a>
	</body>
</html>

EDITOR

$ apt install bluefish

SOURCES

• w3schools.com/html/default.asp
• tutorialspoint.com/html/index.htm
• open.cs.uwaterloo.ca/web-basics
```

<br>
```
050 • GPG - GnomePrivacyGuard
• Homepage			: gnupg.org
• Documentation		: gnupg.org/documentation/manuals/gnupg.pdf
• HowTo				: dewinter.com/gnupg_howto/english/GPGMiniHowto.html
```
```
FIRST-STEPS

$ gpg --version
$ gpg --dump-options | less
$ tree ~/.gnupg

KEY-GENERATION

$ gpg --full-gen-key

ENCRYPTION

$ echo "Hello World!" >> file
$ gpg -r abc.xyz@gmail.com -e file
$ shred -u file

DECRYPTION

$ gpg -d file.gpg
$ gpg -d file.gpg >> file
```

<br>
```
049 • BACKUP
```
```
$ archivemount archive.tar.gz ~/mnt/
# dd if=/dev/sdABC of=/dev/sdXYZ bs=64K conv=noerror,sync
$ tar -cvzf ~/backup/backup.tar.gz ~/java
$ tar -tvf backup.tar.gz
$ ssh user@a.b.c.d "tar -zcf - /home/user/scripte" > scripte.tar.gz

TOOLS
• grsync rsync
```

<br>
```
048 • C
```
```
$ gcc -v

HELLO WORLD

$ vim hello.c
> #include <stdio.h>
>
> int main() 
> {
>    printf("Hello, World! \n");
>    return 0;
> }
:wq
$ gcc hello.c
$ ./a.out

SOURCES
• TutorialsPoint		: tutorialspoint.com/cprogramming/
```

<br>
```
047 • USERS
```
```
PATHS

/etc/passwd 
/etc/shadow 
/etc/group 
/etc/profile 
/etc/default/useradd

~/.bashrc 
~/.profile

STATUS

# passwd -S user1
$ clear; finger; echo; finger user1; echo
$ cut -d: -f1 < /etc/passwd | sort | xargs
# find /home -uid 1000 | wc -l
# find /home -uid 1000 | tee 1000-files.txt
# find / -uid 1000 -exec chown -v 1002:1002 {} \;
$ id -u root
$ id -u user1
$ id user1
$ fuser -v /media/xyz
$ getent passwd user1

CREATING I					// Debian

# ls -lisa /etc/skel
# vim /etc/adduser.conf
# adduser user1	
# passwd -S user1		
$ clear; finger; echo; finger user1; echo
$ id user1

CREATING II					// Low level

# ls -lisa /etc/skel
# useradd -D
# vim /etc/default/useradd
# useradd user1													// Default
# useradd user1 -c "User's full name" -d /home/test -u 1099		// Modified
# passwd user1
# passwd -S user1
$ clear; finger; echo; finger user1; echo
$ id user1

MODIFYING

# usermod -c "Another full name" user1
# chown -R user1:user1 /home/userxyz
# vim /etc/sudoers

DELETING

# passwd -u user1
# passwd -l user1
# userdel -r user1
```

<cr>
```
046 • YOUTUBE-DL
 • Documentation	: github.com/ytdl-org/youtube-dl/blob/master/README.md#readme
```
```
FISH-FUNCTION

~> vim /home/user/.config/fish/functions/yt.fish

  function yt
  	 sudo -H pip install --upgrade youtube-dl
  end

:wq
```

<br>
```
045 • LANGUAGES
```
```
INSTALLATION/CONFIGURATION

• # apt-get purge locales
• # apt-get install locales
• # dpkg-reconfigure locales
• # dpkg-reconfigure keyboard-configuration
• # locale-gen

PATHS

• /etc/locale.gen
• /etc/default/locale
• /etc/environment	( login - gdm - ssh )

COMMANDS

• $ locale
• $ apt-cache show locales
• $ locale -a

LANGUAGE-CODE

• language-code_COUNTRY-CODE
• ISO-8859-1	“Latin 1”
• ISO-8859-15	“Latin 9”
• UTF-8			unicode.org

SOURCES

• file:///usr/share/doc/debian-handbook/html/en-US/basic-configuration.html#sect.config-language-support
• wiki.debian.org/Locale
• unicode.org
```

<br>
```
044 • RASPBERRY PI
```
```
$ clear; lsblk; lsblk -l
$ dd bs=4M if=2018-10-09-raspbian-stretch.img of=/dev/sdX status=progress conv=fsync
# raspi-config

MAGPI 2019

• Issue 81 2019-05	: raspberrypi.org/magpi-issues/MagPi81.pdf
• Issue 80 2019-04	: raspberrypi.org/magpi-issues/MagPi80.pdf
• Issue 79 2019-03	: raspberrypi.org/magpi-issues/MagPi79.pdf
• Issue 78 2019-02	: raspberrypi.org/magpi-issues/MagPi78.pdf
• Issue 77 2019-01	: raspberrypi.org/magpi-issues/MagPi77.pdf

MAGPI 2018

• Issue 76 2018-12	: raspberrypi.org/magpi-issues/MagPi76.pdf
• Issue 75 2018-11	: raspberrypi.org/magpi-issues/MagPi75.pdf
• Issue 74 2018-10	: raspberrypi.org/magpi-issues/MagPi74.pdf
• Issue 73 2018-09	: raspberrypi.org/magpi-issues/MagPi73.pdf
• Issue 72 2018-08	: raspberrypi.org/magpi-issues/MagPi72.pdf
• Issue 71 2018-07	: raspberrypi.org/magpi-issues/MagPi71.pdf
• Issue 70 2018-06	: raspberrypi.org/magpi-issues/MagPi70.pdf
• Issue 69 2018-05	: raspberrypi.org/magpi-issues/MagPi69.pdf
• Issue 68 2018-04	: raspberrypi.org/magpi-issues/MagPi68.pdf
• Issue 67 2018-03	: raspberrypi.org/magpi-issues/MagPi67.pdf
• Issue 66 2018-02	: raspberrypi.org/magpi-issues/MagPi66.pdf
• Issue 65 2018-01	: raspberrypi.org/magpi-issues/MagPi65.pdf

DOCUMENTATION
• Beginners Guide	: raspberrypi.org/magpi-issues/Beginners_Guide_v1.pdf

SOURCES
• Homepage			: raspberrypi.org 
• Configuration		: raspberrypi.org/documentation/configuration/
• Download			: raspberrypi.org/downloads/raspbian/
```

<br>
```
043 • FISH
 • Homepage			: fishshell.com
 • Tutorial			: fishshell.com/docs/current/tutorial.html
 • Documentation	: fishshell.com/docs/current/index.html
 • Commands			: fishshell.com/docs/current/commands.html
 • FAQ				: fishshell.com/docs/current/faq.html
 • Design			: fishshell.com/docs/current/design.html
```
```
# apt-get install fish
$ man fish
~> fish_config
~> cd ~/.config/fish/functions

CONFIGURATION

~> fish_config
~> vim ~/.config/fish/config.fish
~> fish_vi_key_bindings
-> fish_default_key_bindings

PATHS

~/.config/fish
~/.config/fish/functions

EXAMPLES

$ fish
~> help

function c
   clear
   echo
   neofetch
   cowsay -W 131 -f moose (cat ~/bin/oneliner.txt | shuf -n1)
   echo
end

function s -d "Steem Price"
   if $argv = "";
      set argv 3;
   end
   set STEEM rate.sx/steem@{$argv}d
   clear
   curl $STEEM 
end
```

<br>
```
042 • AT
```
```
$ at now | midnight | noon | teatime | HH:MM
> echo "Hello World!"
> <ctrl-d>
$ from

$ tty				# Terminal number
$ at now +60 minutes
> echo "Hello World!" > /dev/pts/2
> <ctrl-d>

$ at 1am tomorrow
$ at now +1 minutes | hours | weeks
$ at 4pm +3 days
$ at 10am Jul 31

$ at noon shutdown -h now
$ atq			: list pending jobs
$ atrm id		: id from atq

SOURCES
$ man at
$ man at.allow
$ man at.deny
$ man atd
• time specification can be found in /usr/share/doc/at/timespec
```

<br>
```
041 • SOURCES
```
```
MAN-PAGES ( -? --help man info pinfo /usr/share/doc )
• $ manpath
• $ mandb
• $ man man
• $ man -a bash
• $ man -t bash | lp
• $ man -k bash; apropos bash; whatis bash

DEBIAN-ADMINISTRATOR-HANDBOOK
• # apt-get install debian-handbook
• $ dpkg -L debian-handbook | grep -i index
• > /usr/share/doc/debian-handbook/html/en-US/index.html
• > file:///usr/share/doc/debian-handbook/html/en-US/index.html

DEBIAN-FAQ
• # apt-get install debian-faq
• $ dpkg -L debian-faq | grep -i index
• > /usr/share/doc/debian/FAQ/index.en.html
• > file:///usr/share/doc/debian/FAQ/index.en.html

DEBIAN-REFERENCE
• # apt-get install debian-reference
• $ dpkg -L debian-reference
• $ ls -l /usr/share/doc/debian-reference/docs/ | grep -i index
• > /usr/share/doc/debian-reference/docs/index.en.html
• > file:///usr/share/doc/debian-reference/docs/index.en.html

DEBIAN-REFERENCE-CARD
• # apt-get install debian-refcard
• $ dpkg -L debian-refcard | grep -i index
• > /usr/share/doc/debian-refcard/index.html
• > file:///usr/share/doc/debian-refcard/index.html
• > file:///usr/share/doc/debian-refcard/refcard-en-a4.pdf.gz

DEBIAN-DOCUMENTATION
• $ ls -l /usr/share/doc | less
• $ man man
• wiki.debian.org

LINUX
• linux.com
• kernel.org
• linuxlinks.com
• tldp.org/LDP/intro-linux/html/index.html
• tldp.org/sorted_howtos_full.html

OPEN-BOOKS
• O'Reilly			- oreilly.com/openbook
• Rheinwerk (de)	- rheinwerk-verlag.de/openbook/
```

<br>
```
040 • VIM - GITHUB REPOSITORY
```
```
$ cd ~/Apps										# Place of your local installations
$ git clone https://github.com/vim/vim.git		# At the first time
$ git pull										# Update to the latest version
$ cd vim/src
# make distclean								# If you build Vim before
# make
# make install


SOURCE
• vim.org/git.php
```

<br>
```
039 • TASK & TIMEWARRIOR
```
```
INSTALLATION

$ apt-cache search taskwarrior timewarrior
# apt-get install taskwarrior tasksh timewarrior
$ apt-cache show taskwarrior taskwarrior
$ man task

CONFIGURATION TASKWARRIOR

$ vim ~/.taskrc

CONFIGURATION TIMEWARRIOR

$ ls -l ~/.timewarrior
$ cp /usr/local/share/doc/timew/ext/on-modify.timewarrior ~/.task/hooks/
$ chmod +x ~/.task/hooks/on-modify.timewarrior 
$ vim ~/.timewarrior/timewarrior.cfg
> define exclusions:
>	monday    = <9:00 12:30-13:00 >17:00
>	tuesday   = <9:00 12:30-13:00 >17:00
>	wednesday = <9:00 12:30-13:00 >17:00
>	thursday  = <9:00 12:30-13:00 >17:00
>	friday    = <9:00 12:30-13:00 >17:00
>	saturday  = >0:00
>	sunday    = >0:00
:wq

STOPWATCH

$ timew
$ timew start
$ timew stop

TASKWARRIOR

$ task
$ task add project:Phoenix Task1
$ task add project:Running Task2
$ task
$ task 1 edit
$ task 1 modify priority:H
$ task 1 modify due:eow
$ task 1 modify due:eom
$ task 1 modify project:Java
$ task 1 start
$ task 1 stop
$ task 1 information
$ task calc now + 21d
$ task calendar 2019
$ task
$ task 1 done
$ task 2 delete
$ task
$ task burndown.daily; task burndown.weekly; task burndown.monthly
$ alias t='clear; task'
$ alias tt='clear; task burndown.daily'

TIMEWARRIOR

$ timew start | stop | continue
$ timew running start | stop
$ timew day | week | month
$ timew tags
$ timew summary

SOURCES TASKWARRIOR

• Homepage			taskwarrior.org
• Documentation		taskwarrior.org/docs
• Tutorial			taskwarrior.org/docs/30second.html

SOURCES TIMEWARRIOR

• Tutorial			taskwarrior.org/docs/timewarrior/tutorial.html
• Documentation		taskwarrior.org/docs/timewarrior
```

<br>

```
038 • JOB-CONTROL
```
```
$ vim ~/.vimrc <ctrl>+z
$ vim ~/.bashrc <ctrl>+z
$ ranger <ctrl>+z
$ htop <ctrl>+z
$ glances &
$ jobs
$ fg 1

RUN A BACKGROUNd-JOB
$ sleep 10000 &
$ jobs -l
$ kill 12345

SOURCES
$ help jobs
$ help fg
$ help bg
```

<br>
```
037 • VIM FIRST-STEPS
```
```
INSTALL VIM
 # apt-get install vim gvim vim-doc vim-scripts 
 $ dpkg -L vim-doc
 # update-alternatives --config editor
 $ vim --version | less

REMAP <CAPS LOCK> TO <ESC>
 • GNOME-TWEAK-TOOL: Typing-Tab > Caps Lock key behaviour > Make Caps Lock an additional ESC

LEARN AND TRAIN THE BASICS
 $ vimtutor en
 $ firefox vim-adventures.com
 • vim, :h user-manual :resize

DISABLE YOUR ARROW KEYS
 $ vim ~/.vimrc 
   map <up> <nop>
   imap <up> <nop>
   map <down> <nop>
   imap <down> <nop>
   map <left> <nop>
   imap <left> <nop>
   map <right> <nop>
   imap <right> <nop>
   :wq

CONFIGURE YOUR BASH-ENVIRONMENT
 : echo $MYVIMRC
 # update-alternatives --config editor
 $ vim ~/.bashrc
   EDITOR=/usr/bin/vim
   VISUAL=$EDITOR
   export EDITOR VISUAL
   :wq

ACTIVATE VIM-MODE IN BASH
 $ vim ~/.bashrc
   set -o vi
   bind -m vi-insert "\C-l"		# clear-screen
   :wq

ACTIVATE VIM-PLUGIN IN FIREFOX
 Plugin: Vim Vixen
```

<br>
```
036 • I3WM
```
```
Exit									<alt><shift>e
Help									F1
-------------------------------------------------------
Terminal								<alt><enter>
Menu									<alt>d
Workspace								<alt>0-9
Move a window to another workspace		<alt><shift>0-9
Fullscreen								<alt>f
Kill a window							<alt><shift>q


SOURCES
• Homepage								: i3wm.org
• ReferenceCard							: i3wm.org/docs/refcard.html
• Documentation							: i3wm.org/docs/userguide.html
• Tutorial								: youtu.be/Wx0eNaGzAZU
```


<br>
```
035 • JAVA MODIFIER
```
```
				Class Package Subclass World
private			   ok		-		 -	   -
default			   ok	   ok		 -	   -
protected		   ok	   ok	    ok     -
public			   ok	   ok		ok	  ok
```


<br>
```
034 • VIM-VIMRC
```
```
"GENERAL
syntax on								
set nocompatible
set showmode
set ruler								
set linebreak
set showcmd
set laststatus=2
set background=dark
set encoding=utf8
set scrolloff=99
filetype on
filetype plugin on
"set mouse=a
"set colorcolumn=80
"set cursorline

"DISABLE ARROW KEYS
map <up> <nop>
imap <up> <nop>
map <down> <nop>
imap <down> <nop>
map <left> <nop>
imap <left> <nop>
map <right> <nop>
imap <right> <nop>

"NUMBERS
set relativenumber
"set number                 

"SEARCH
set hlsearch
set incsearch

"TABs
set autoindent
set tabstop=3
set softtabstop=3
set shiftwidth=3
"set expandtab

let mapleader = " "

"KEY MAPPINGS
map <F2> :echo 'Current time is ' . strftime('%c')<CR>
map <F5> :set list!<CR>
map <F6> :setlocal spell! spelllang=en_us<CR>
map <Leader>c :w<CR>:!clear && javac % && java %:r<CR>
map <Leader>d <esc>dG
map <Leader>s :w<CR>
map <Leader>w :w<CR>

"ABBREVIATIONS
:iab ii <esc>
:iab psv public static void(String[] args) {<cr>}<esc>ko 
:iab sout System.out.println(                            
```

<br>
```
033 • SNAP
```
```
INSTALLATION

# apt update &&  apt install snapd
$ snap version
$ whereis snapd

$ vim ~/.bashrc
> export PATH=/snap/bin:$PATH
:wq

PACKAGES

$ snap find idea
$ snap info intellij-idea-community
# snap install intellij-idea-community --classic
$ snap find eclipse
$ snap info eclipse
# snap install eclipse --classic

UPDATE

$ snap list
# snap refresh

SOURCES

• Homepage		: snapcraft.io
• Documentation	: docs.snapcraft.io/snap-documentation/3781
```


<br>
```
032 • NETWORK
```
```
CONFIGURATION

• /etc/hosts
• /etc/hostname
• /etc/resolv.conf
• /etc/network/interfaces
• /etc/init.d/networking
• /etc/NetworkManager/system-connections/
• /etc/ssh/ssh_config
• # macchanger -r eth0
• # nm-connection-editor
• # hostname mars; cat /proc/sys/kernel/hostname

HOST

• $ inxi -i
• $ w3m myip.is
• $ w3m ifconfig.me
• $ curl ifconfig.me/all
• $ ip address show
• # ifconfig
• # ifconfig -a | grep -Po '\b(?!255)(?:\d{1,3}\.){3}(?!255)\d{1,3}\b' | xargs nmap -A -p0-
• # ifconfig eth0 down | up
• # netstat -tulpn
• $ netstat -ie
• $ netstat -a | less
• # clear; netstat -tupanc
• # clear; echo; netstat -i; echo; netstat -r
• $ sshfs name@server:/path/to/folder /path/to/mount/point
• $ nmap --iflist
• $ domainname
• $ dnsdomainname
• # iw dev wlan0 scan | egrep "SSID|signal" | awk -F ":" '{print $2}' | sed 'N;s/\n/:/' | sort
• $ speedometer -r eth0

LAN

• # arp-scan a.b.c.d/24
• $ ip neigh show
• $ ip route show
• $ ping -c4 8.8.8.8
• $ ping router.linux.local
• $ host 8.8.4.4
• $ nmap -A -T4 a.b.c.d
• $ nmap -sP a.b.c.d/24
• $ ssh -X user@a.b.c.d

WAN

• $ traceroute 8.8.8.8
• $ mtr --curses 8.8.4.4

SOURCES

• linuxhowtos.org/Security/understandssh.htm
• linux.die.net/Intro-Linux/chap_10.html
• file:///usr/share/doc/debian-handbook/html/en-US/index.html
```

<br>
```
031 • SWAP SPACE
```
```
CHECK

$ free -h
$ top | htop | atop | glances
$ vmstat -w
$ cat /proc/swaps
# fdisk -l
$ cat /proc/sys/vm/swappiness 

TROUBLESHOOTING

01 # swapon -s
02 # ls -lh /tmp 
03 # dd if=/dev/zero of=/tmp/swap_tmp bs=1024 count=1000000
04 # ls -lh /tmp
05 # chmod 600 /tmp/swap_tmp
06 # mkswap /tmp/swap_tmp
07 # swapon /tmp/swap_tmp
08 # swapon -s
09 # echo 100 > /proc/sys/vm/swappiness

PERMANENT

# blkid
# vim /etc/fstab
> # Emergency swap partition
> UUID= (value from blkid)     none     swap     sw    0     0
:wq
```

<br>
```
030 • ECLIPSE
```
```
KEYS

• Activate Editor		F12
• Quick Assist			control+1 			control+2 control+3
• Content Assist		control+space	
• Active Keybindings	shift+control+l
• Full Screen			alt+F11
• Maximum Editor		control+m
• Open Declaration		F3
• Toggle Breakpoint	shift+control+b
• Insert line			shift+enter			shift+control+enter
• Run Debug				control+F11			F11
	
EDITING

• Toggle Comment		control+shift+/		
• Format				control+shift+f		
• Maximum View			control+m			
• Folding				control+<Num-Div>	
• Delete line			control+d			
• Undo					control+z            
• Goto line number		control+l			
• Format				control+shift+f		
• sysout^<space>
• main^<space>
	
FOLDING

• control+shift+num-div
• control+num-plus
• control+num-minus	
• control+num-multiply

SOURCES

• Homepage		eclipse.org
• Download		eclipse.org/downloads/download.php?file=/oomph/epp/2018-12/R/eclipse-inst-linux64.tar.gz
• Documentation	help.eclipse.org/2019-03/index.jsp
• Tutorial		tutorialspoint.com/eclipse/
```

<br>
```
029 • SYSTEM INFORMATION
``` 
```
LOCALHOST

• IP-Address					$ hostname -i
• Runtime and load				$ watch uptime
• Last reboot history			$ last reboot
• System information I			# inxi -v7
• System information II			# inxi -v7 -c0 | tee system.txt
• Hostname I					$ hostname; hostname -f; hostname -d
• Hostname II					$ cat /etc/hostname; hostnamectl; uname --nodename
• Hostname III					$ cat /proc/sys/kernel/hostname
• Hostname IV					# hostname mars
• Prelogin message				$ cat /etc/issue
• Shell							$ echo $0
• Operating system				$ cat /etc/os-release; lsb_release -a; uname --operating-system
• Debian version				$ cat /etc/debian_version
• Debian Upgradeable packets 	$ apt-show-versions -u > upgradeableVersions.txt; vim upgradeableVersions.txt
• Kernel						$ uname -a
• Kernel name					$ uname --kernel-name
• Kernel release				$ uname --kernel-release
• Kernel version				$ uname --kernel-version
• Kernel ring buffer I			# dmesg | less
• Kernel ring buffer II			# dmesg | tail -n 25
• Rootkit scanner				# chkrootkit
• System log I					# logwatch | less
• System log II					# tail -f /var/log/syslog
• Systemd journal				# journalctl
• CPU Model						$ cat /proc/cpuinfo
• Memory						$ watch free -h
• Physical Memory				$ grep MemTotal /proc/meminfo 
• MEM Info						$ cat /proc/meminfo
• Processes I					$ ps auxw | sort | less
• Processes II					$ atop
• Processes III					$ htop
• Processes IV					$ top
• Processes V					$ glances
• Disk I						# lshw -short -class disk
• File System Hierarchy (FHS)	$ man hier
• Disk II						$ df -hT
• Disk III						# e4defrag /home -c
• Disk IV						# du -hs /home/userxyz
• Disk V						# du -h --max-depth=1 /home/userxyz | sort -n
• Disk VI						# du -h --max-depth=1 / 2>/dev/null | sort -n
• Volumes						# lshw -short -class volume
• USB							# usbview; lsusb
• Documentation					$ man -k . | less

NETWORK & SERVER

• ufw - ufw status					# ufw status
• netstat - TCP Sessions			# netstat -tupan
• nmap - Interfaces & Routes		$ nmap --iflist
• arp-scan - ARP					# arp-scan --localnet
• ip - Neighbours					$ ip neigh; ip monitor
• mtr - Network diagnostic			$ mtr --curses google.com
• sntop - Network status			$ sntop
• nmap - Services					$ nmap -A -T4 -Pn a.b.c.d
• nmap - Identify Internet Services	$ nmap a.b.c.d; nmap -sP a.b.c.d/24

• SYSSTAT			$ sar -o file 10 8640
	Homepage		: sebastien.godard.pagesperso-orange.fr/index.html
	Documentation	: sebastien.godard.pagesperso-orange.fr/documentation.html
	Tutorial		: sebastien.godard.pagesperso-orange.fr/tutorial.html

• BLEACHBIT			# bleachbit --gui & 	  
	Homepage		: bleachbit.org
	Documentation	: docs.bleachbit.org
	Tutorial		: bleachbit.org/videos

• CACTI				: localhost/cacti : user admin  
	Homepage		: cacti.net
	Documentation	: cacti.net/documentation.php
	Tutorial 		: nwlab.net/tutorials/cacti/cacti-tutorial.html

• ZABBIX					
	Homepage		: zabbix.com
	Documentation	: zabbix.com/documentation/1.8/start
	Tutorial		: zabbix.com/documentation/1.8/manual/tutorials
```

<br>
```
028 • CRON
```
```
COMMANDS

$ ls -ld /etc/cron*
# ranger /etc/cron.d
# crontab -l
# crontab -e
$ crontab -e

DAEMON

$ systemctl status cron.service
# service cron status
# service --status-all | less

CONFIGURATION

$ crontab -u user -e
> ┌──────────────── minute			(0 - 59) 
> │ ┌────────────── hour			(0 - 23) 
> │ │ ┌──────────── day of month	(1 - 31) 
> │ │ │ ┌────────── month			(1 - 12) 
> │ │ │ │ ┌──────── day of week		(0 - 6) Sunday to Saturday 
> │ │ │ │ │ 
> * * * * * 		echo "Test" >> /tmp/crontest.txt
> 0 9 * * * 		tar -zcf /var/backups/eclipse.tgz /home/user/eclipse-workspace/
> 0 9 * * 4 		rm -rf /home/user/tmp/*
> 0 0 1,15 * * 		echo "Test" >> /tmp/crontest.txt
> */10 * * * * 		echo "Test" >> /tmp/crontest.txt
> 0 0-5 * * * 		echo "Test" >> /tmp/crontest.txt
> 0 0 */2 * * 		echo "Test" >> /tmp/crontest.txt
> */30 9/17 * * 1-5	echo "Test" >> /tmp/crontest.txt
> 0 12  *  *  *  	/usr/sbin/tripwire --check
:wq

SOURCES

$ w3m crontab.guru
$ man cron
$ man -a crontab
$ man 5 crontab
```


<br>
```
027 • RANGER - A console file manager with VI key bindings
```
```
F1		F2		F3		F4		F5		F6		F7		F8		F10
help	rename	view	edit	copy	cut		mkdir	delete	exit	

Exit				: q
Help				: ? <f1>
--------------------------------------
Shell				: S s
Show hidden files	: <ctrl>h
File rename			: <ctrl>cw :rename
File delete			: <ctrl>dD :delete
File tag			: t ct
Go home				: gh
Go /etc				: ge

INSTALLATION

# pip install ranger-fm

CONFIGURATION

$ ranger --copy-config=all
$ vim ~/.config/ranger/rc.conf
> set draw_borders true
:wq

SOURCES

• Homepage			: ranger.github.io
• Documentation		: github.com/ranger/ranger/wiki	
• User-Guide		: github.com/ranger/ranger/wiki/Official-user-guide
• Wiki-Arch-Linux	: wiki.archlinux.org/index.php/Ranger
```

<br>
```
026 • BASH
```
```
ADVANCED-BASH-SCRIPTING-GUIDE

# apt install abs-guide
$ dpkg -L abs-guide
$ firefox file:///usr/share/doc/abs-guide/html/index.html &

SESSION

$ sudo !!
# apt-get update && apt-get upgrade && apt-get dist-upgrade; apt-get autoremove -yy
# init 0
# init 6
# shutdown -c
# shutdown -h 1:00
# shutdown -r now

SUDO

# visudo 
> Defaults:user timestamp_timeout=30

SOURCES

• Homepage					: gnu.org/software/bash/
• Documentation				: gnu.org/software/bash/manual/html_node/index.html
• Bash-Guide-for-Beginners	: tldp.org/LDP/Bash-Beginners-Guide/html/index.html
• Advanced-Bash-Scrip-Guide	: tldp.org/LDP/abs/html/
```

<br>
```
025 • JAVA
• Homepage			: oracle.com/java/
• Whitepaper		: oracle.com/technetwork/java/langenv-140151.html
• Download			: oracle.com/technetwork/java/javase/downloads/index.html
• Documentation		: docs.oracle.com/en/java/javase/12/index.html
• API				: docs.oracle.com/en/java/javase/12/docs/api/index.html
```
```
TUTORIALS

• Bradley Kjell		: chortle.ccsu.edu/java5/index.html
• TutorialsPoint	: www.tutorialspoint.com/java/index.htm
• JavaTpoint		: www.javatpoint.com/java-tutorial

ORACLE-TUTORIALS

Index				: docs.oracle.com/javase/tutorial/reallybigindex.html
Getting Started		: docs.oracle.com/javase/tutorial/getStarted
Language Basics		: docs.oracle.com/javase/tutorial/java/nutsandbolts/index.html
OOP Concepts		: docs.oracle.com/javase/tutorial/java/concepts/index.html
Classes and Objects : docs.oracle.com/javase/tutorial/java/javaOO/index.html
Annotations 		: docs.oracle.com/javase/tutorial/java/annotations/index.html
Interfaces and Inheritance: docs.oracle.com/javase/tutorial/java/IandI/index.html
Numbers and Strings : docs.oracle.com/javase/tutorial/java/data/index.html
Generics 			: docs.oracle.com/javase/tutorial/java/generics/index.html
Packages 			: docs.oracle.com/javase/tutorial/java/package/index.html
Exceptions 			: docs.oracle.com/javase/tutorial/essential/exceptions/index.html
Basic I/O 			: docs.oracle.com/javase/tutorial/essential/io/index.html
Concurrency 		: docs.oracle.com/javase/tutorial/essential/concurrency/index.html
Platform Environment: docs.oracle.com/javase/tutorial/essential/environment/index.html
Regular Expressions : docs.oracle.com/javase/tutorial/essential/regex/index.html
Collections 		: docs.oracle.com/javase/tutorial/collections/index.html
Date & Time 		: docs.oracle.com/javase/tutorial/datetime/index.html
Deployment 			: docs.oracle.com/javase/tutorial/deployment/index.html
Swing 				: docs.oracle.com/javase/tutorial/uiswing/index.html
JavaFX 				: docs.oracle.com/javase/8/javase-clienttechnologies.htm
Networking 			: docs.oracle.com/javase/tutorial/networking/index.html
Generics 			: docs.oracle.com/javase/tutorial/extra/generics/index.html
Internationalization: docs.oracle.com/javase/tutorial/i18n/index.html
JavaBeans 			: docs.oracle.com/javase/tutorial/javabeans/index.html
JDBC 				: docs.oracle.com/javase/tutorial/jdbc/index.html
RMI 				: docs.oracle.com/javase/tutorial/rmi/index.html
Reflection 			: docs.oracle.com/javase/tutorial/reflect/index.html
Security 			: docs.oracle.com/javase/tutorial/security/index.html
Sound 				: docs.oracle.com/javase/tutorial/sound/index.html
2D Graphics 		: docs.oracle.com/javase/tutorial/2d/index.html

AWK • SWING • JavaFX

• O'Reilly			: oreilly.com/openbook/javawt/book/index.html
• Bradley Kjell		: chortle.ccsu.edu/java5/Notes/chap55/ch55_1.html
• TutorialsPoint	: tutorialspoint.com/swing/index.htm
• Oracle Trail		: docs.oracle.com/javase/tutorial/uiswing/
• Oracle JavaFX		: docs.oracle.com/javase/8/javase-clienttechnologies.htm
```

<br>
```
024 • AWK
```
```
$ awk 'BEGIN { print "Don\47t Panic!" }'
$ awk -F: '{ print $1 }' /etc/passwd | sort | tee user.txt
$ awk -F: '$1 == "userxyz" { print $0 }' /etc/passwd
$ awk -F: '/userxyz|root/ { print $0 }' /etc/passwd

INSTALLATION

# apt-get install gawk gawk-doc
$ dpkg -L gawk-doc | less
> file:///usr/share/doc/gawk-doc/gawk-html/index.html#Top

DOKUMENTATION

• Manual			: gnu.org/software/gawk/manual/gawk.html
• Tutorial I		: tutorialspoint.com/awk/index.htm
• Tutorial II		: tldp.org/LDP/abs/html/sedawk.html
```

<br>
```
023 • MEMORY
```
```
SYSTEM-INFORMATION

$ top $ htop $ atop $ glances
$ watch free -h
$ less /proc/meminfo
$ cat /proc/sys/vm/swappiness
# sysctl -a

TROUBLESHOOTING

# sysctl -a
# sysctl vm.swappiness=15
# sysctl -a

# sysctl -a
# bash -c "sync; echo 3 > /proc/sys/vm/drop_caches"
# sysctl -p
# sysctl -a
```


<br>
```
022 • ONE-LINER & COWSAY
```
```
INSTALLATION

$ cp ~/.bashrc ~/.bashrc_old
$ echo 'clear' >> ~/.bashrc
$ echo 'echo' >> ~/.bashrc
$ echo 'neofetch' >> ~/.bashrc
$ echo 'cowsay -W 80 -f moose $(cat ~/bin/oneliner.txt | shuf -n1)' >> ~/.bashrc
$ echo 'echo'
$ . ~/.bashrc

ONE-LINER-TEXTFILE

$ vim ~/bin/oneliner.txt
> $ alias ea='vim ~/.bash_aliases && source ~/.bash_aliases'
> # bash -c "sync; echo 3 > /proc/sys/vm/drop_caches"
> $ cat /etc/passwd | cut -d: -f7 | sort | uniq -c | sort -nr
> $ cat /etc/shells
> $ curl wttr.in
> $ echo "It is now $(date +%T) on $(date +%A)"
> $ find -size +1G | less
> $ find -size +100M | less
> # find /home -user userxyz -size +1G
> $ find . -name "*.jpg" -exec convert {} -scale 50% +repage {} \;
> $ find ~ -maxdepth 1 -type f -exec grep "^alias " '{}' \; -print
> $ find ~ -maxdepth 1 -type f -mtime 3
> $ find ~ -maxdepth 1 -type f -exec grep "^alias " '{}' \; -print
> # find / -uid 1000 -exec chown -v 1002:1002 {} \;
> # find / -user userxyz -type f -exec rm -f {} \;
> $ find /etc -type f -print 2> /dev/null | less
> $ find /etc/*tab -type f -print
> # find /home -user userxyz -mtime -3
> $ mkdir -p Backups/{Sales,Development,HR}/{Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec}/{Sun,Mon,Tue,Wed,Thu,Fri,Sat}
> # mkdir -p /mnt/ram; mount -t tmpfs tmpfs /mnt/ram -o size=8192M
> $ mkdir -p dummy/{1..100}/{1..100}
> $ mpg123 -zvC /home/user/music/*
> $ ranger ~/.local/share/Trash/
> $ sudo -H pip install --upgrade youtube-dl
> $ watch -d -n 5 ls -l
> $ watch free -h
> $ watch mail
:wq
```

<br>
```
021 • NEOFETCH
```
```
$ apt-cache search neofetch
$ apt-cache show neofetch
# apt install neofetch
$ cp ~/.bashrc ~/.bashrc_old
$ \ls -lisa ~/.bashrc*
$ echo "neofetch" >> ~/.bashrc
$ . ~/.bashrc

---
$ inxi -v1
```

<br>
```
020 • VIM
 • Homepage		: vim.org
 • Reference	: vimhelp.org/quickref.txt.html
```
```
MODES					

• Normal Mode			<esc>
• Insert Mode			i, a, c
• Visual Mode			v, V, <ctrl-v>
• Command-line Mode		:, /, ?

INSERT MODE

i	: Insert text before the cursor.
I	: Insert text before the first non-blank in the line.
s	: Delete character under the cursor and start insert mode.
S	: Delete line and start insert mode.
a	: Enter insert mode after cursor.
A	: Enter insert mode at the end of the line.
o	: Enter insert mode on the next line.
O	: Enter insert mode on th above line.
C	: Delete from cursor to end of line and begin insert.

TEXT OBJECTS

aw	: a word
aW	: a WORD
iw	: inner word
iW	: inner WORD
ap	: a paragraph
ip	: inner paragraph
ab	: a bracket
ib	: inner bracket
at	: a tag
it	: inner tag
i"	: inner quotes
ip	: inner paragraph
i{	: inner brackets
as	: a sentence
```

<br>
```
019 • PYTHON
```
```
# apt-get install python3 python-pip spyder3 diveintopython3
$ pip install --pre -U spider
$ python3
$ python -m SimpleHTTPServer

INSTALL ALTERNATIVE

$ python<tab><tab>
$ python --version
# update-alternatives --list python
# update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
# update-alternatives --install /usr/bin/python python /usr/bin/python3.5 2
# update-alternatives --list python
$ python --version

CHANGE/DELETE ALTERNATIVE

# update-alternatives --config python
# update-alternatives --remove python /usr/bin/python2.7

DIVE-INTO-PYTHON-3

# apt install diveintopython3
$ dpkg -L diveintopython3 | grep -i index
> /usr/share/doc/diveintopython3/html/index.html
> file:///usr/share/doc/diveintopython3/html/index.html

TUTORIALS

• Python from Scratch 	: open.cs.uwaterloo.ca/python-from-scratch/
• Tutorial				: docs.python.org/3/tutorial/index.html
• Dive Into Python 3	: file:///usr/share/doc/diveintopython3/html/index.html
• Tutorial				: file:///usr/share/doc/python3.5/html/tutorial/index.html

SOURCES

• Homepage				: python.org
• Documentation			: docs.python.org/3/
• CheatSheet          	: cheat.sh/python/:learn
• IDE					: Spyder3
```

<br>
```
018 • GLANCES
```
```
$ apt-cache search glances
# apt install glances glances-doc
$ apt-cache show glances
$ man glances
$ dpkg -L glances
$ w3m /usr/share/doc/glances/html/quickstart.html

ALTERNATIVE

• Github							: github.com/nicolargo/glances
# pip install --upgrade glances
```

<br>
```
017 • DEBIAN
```
```
Homepage				: debian.org
Download				: debian.org/distrib/netinst#smallcd
Tutorials				: debiantutorials.com
DistroWatch				: distrowatch.com/table.php?distribution=debian 
w3Tech					: w3techs.com

Debian News				: debian.org/News
Debian Security			: debian.org/security/#DSAS
Debian Version			$ cat /etc/debian_version

Package Documentation	: /usr/share/doc
Sources List Generator	: debgen.simplylinux.ch 
Debian Backports		: backports.org

DOCUMENTATION

• Documentation			: debian.org/doc

• Installation Guide	: debian.org/releases/stable/amd64/
• Release Notes			: debian.org/releases/stable/amd64/release-notes/
• FAQ					: debian.org/doc/manuals/debian-faq/
• Wiki					: wiki.debian.org/FrontPage
• Debian & Java			: debian.org/doc/manuals/debian-java-faq/index.en.html
• Securing Debian		: debian.org/doc/manuals/securing-debian-howto/index.en.html
• Menu System			: debian.org/doc/packaging-manuals/menu.html/ch1.html
• Networking HowTo		: tldp.org/HOWTO/NET3-4-HOWTO.html
• Gnome					: help.gnome.org

• Reference Card		# apt install debian-refcard
						$ dpkg -L debian-refcard | less
						$ w3m /usr/share/doc/debian-refcard/index.html
						
• Reference				: debian.org/doc/manuals/debian-reference/
						# apt install debian-reference-en
						$ dpkg -L debian-reference-en
						$ w3m /usr/share/doc/debian-reference/docs/index.en.html
						
• Handbook				: debian.org/doc/manuals/debian-handbook/
						# apt install debian-handbook
						$ dpkg -L debian-handbook | less
						$ w3m /usr/share/doc/debian-handbook/html/en-US/index.html						
```

<br>
```
016 • SCREEN
```
```
# apt install screen

DOCUMENTATION

$ man screen
$ w3m gnu.org/software/screen/manual/screen.html
• ctrl a?			: Keybindings

SESSIONS

$ screen -S firstsession glances
$ screen -X -S firstsession quit
$ screen -ls		: List screen sessions
$ screen -r			: Reattaching
$ screen -x			: Attach to a not detached screen session
• ctrl ad			: Detach session
• ctrl ax			: Lock session

WINDOWS

• ctrl ac			: Create window
• ctrl aA			: Rename window
• ctrl aa			: Toggle window
• ctrl a[0 .. 9]	: Toggle window
• ctrl a|			: Split window vertically
• ctrl aS			: Split window horizontally
• ctrl aX			: Kill pane
• ctrl an			: Next window
• ctrl ap			: Previous window
• ctrl ak			: Kill window
• ctrl a\			: Kill all windows
• ctrl aw			: Window bar 
• ctrl a"			: Window list
• ctrl ah			: Hardcopy

EXAMPLE

$ screen -S firstsession
• ctrl aS
• ctrl a|
$ htop
• ctrl a<tab>
• ctrl ac
$ atop
• ctrl <tab>
• ctrl ac
$ df -hT

CONFIGURATION

# vim /etc/screenrc
$ vim ~/.screenrc
```

<br>
```
015 • SHORTCUTS
```
```
DAILY USE

• <ctrl>+z fg bg jobs <ctrl>+u <ctrl>+k <ctrl>+w <alt>+. <bash-vim-mode>

CHARACTER

• ctrl f	: Move forward one character
• ctrl b	: Move backward one character
• ctrl h	: Generate a backspace character
• ctrl d	: Delete one character

EDITOR

• ctrl xe	: Editor

DESKTOP

• alt F2	: Run Command

HISTORY

• ctrl r	: Search from history searching mode
• ctrl g	: Escape from history searching mode
• alt .		: Use the last word of the previous command

LINE

• esc # 	: Making the line a comment
• ctrl a	: Go to the beginning of the line
• ctrl e	: Go to the end of the line
• ctrl xx	: Move between start of commandline and current position and back again
• ctrl eu	: Clear the line 
• ctrl k	: Delete from cursor to the end of the line
• ctrl u	: Delete from cursor to the start of the line

TERMINAL

$ gnome-terminal
• ctrl alt F3
• reset				: Reset the terminal
• ctrl d or exit	: Exit the terminal
• shutdown -h now	: Shut down the system

SCREEN

• ctrl +-	: Size
• ctrl l	: Clear the screen
• ctrl s	: Stop output to the screen
• ctrl q	: Allow output to the screen
```

<br>
```
014 • LINUX-FROM-SCRATCH (LFS)
• Homepage		: linuxfromscratch.org/lfs/index.html
• Documentation	: linuxfromscratch.org/lfs/view/stable/
• Download		: linuxfromscratch.org/lfs/downloads/stable/
• DistroWatch	: distrowatch.com/table.php?distribution=lfs
```
```
PROJECTS

• Linux From Scratch			: linuxfromscratch.org/lfs/
• Beyond Linux From Scratch		: linuxfromscratch.org/blfs/
• Automated Linux From Scratch	: linuxfromscratch.org/alfs/
• Cross Linux From Scratch		: trac.clfs.org/

STEPS

03 Virtualbox		: # apt install virtualbox
02 Debian Live-CD	: cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/
01 RTFM				: linuxfromscratch.org/lfs/view/stable/
```

<br>
```
013 • TOOLBOX
```
```
# apt install ...
A - alacarte atop aview
B - backintime-qt4 bluefish boostnote
C - calcurse clipit cherrytree cmus
E - espeak 
F - firmware-iwlwifi firmware-realtek focuswriter fzf
G - gdebi gkrellm glances gnome-clocks gnome-do gparted grsync guake 
H - htop hwinfo 
I - inxi i3-wm
K - kismet  
L - libreoffice links lsd lvm2  
M - mc menulibre 
N - netcat net-tools nmap
P - powertop printer-driver-cups 
R - ranger
S - screen sudo syncthing
T - taskwarrior terminator tilda timeshift timewarrior tripwire 
V - veracrypt* vim virtualbox vym 
W - w3m
Y - youtube-dl
```

<br>
```
012 • BASHRC
```
```
$ vim ~/.bashrc
>
> HISTCONTROL=ignoreboth:erasedups
> HISTSIZE=1000
> HISTFILESIZE=1000
>
> alias h='clear; echo; history 30; echo'
>
> set -o vi
> bind -m vi-insert "\C-l":clear-screen
> EDITOR=/usr/bin/vim
> VISUAL=$EDITOR
> export EDITOR VISUAL
>
:wq
```

<br>
```
011 • FUZZI FINDER
```
```
$ fzf -e --preview 'head -100 {}'
```

<br>
```
010 • CRYPTOCURRENCIES
```
```
$ curl rate.sx
$ curl rate.sx/btc@3d
$ curl rate.sx/steem@3d
```

<br>
```
009 • /ETC/FSTAB
```
```
# blkid
# vim /etc/fstab
> #RAMDISK
> none /media/ramdisk tmpfs nodev,nosuid,noexec,nodiratime,size=1024M 0 0
```

<br>
```
008 • ALIASES
```
```
$ alias
$ ls -l ~/.bash_aliases
$ cp ~/.bash_aliases ~/.bash_aliases_backup
$ alias > ~/.bash_aliases

$ vim ~/.bash_aliases
alias a='clear; echo; alias; echo'
alias b='clear; curl rate.sx/btc@3d'
alias b3='clear; curl rate.sx/btc@3d'
alias b30='clear; curl rate.sx/btc@30d'
alias bu='buku'
alias c='clear; neofetch; cowsay -W 131 -f moose $(cat ~/bin/oneliner.txt | shuf -n1); echo'
alias cc='clear; ncal -wy'
alias cdh='\cd; clear; echo; lsd -l; echo'
alias cdp='clear; \cd ~/.phoenix; echo; lsd -l; echo'
alias dir='dir --color=auto'
alias e='clear; cd ~/Apps; ./eclipse &'
alias ea='vim ~/.bash_aliases && source ~/.bash_aliases'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias g='clear; glances'
alias grep='grep --color=auto'
alias h='clear; echo; history 30; echo'
alias i='intellij-idea-community &'
alias l='clear; echo; lsd -l; echo'
alias ls='ls --color=auto'
alias p='(clear; \cd ~/.phoenix; java -jar phoenix.jar)'
alias py='clear; python3'
alias r='ranger'
alias rs='clear; rsync -avzP --delete --stats --exclude-from "/home/user/.exclude.txt"  /home/user/ /media/'
alias s='clear; curl rate.sx/steem@3d'
alias s3='clear; curl rate.sx/steem@3d'
alias s30='clear; curl rate.sx/steem@30d'
alias sc='screen -S firstsession'
alias ss='clear; curl rate.sx/steem@1d; gnome-screenshot -ac'
alias t='clear; task; timew week; timew summary'
alias tm='clear; timew month'
alias tt='clear; task burndown.daily'
alias ttt='clear; task calendar 2019'
alias tw='timew'
alias u='clear; sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade; sudo apt-get autoremove -yy'
alias vdir='vdir --color=auto'
:wq

$ . ~/.bashrc
```

<br>
```
007 • RAM-DISK PERMANENT
```
```
# mkdir	-p /media/ramdisk
# vim /etc/fstab
> none /media/ramdisk tmpfs nodev,nosuid,noexec,nodiratime,size=1024M 0 0
# mount -a
$ mount | column -t
```

<br>
```
006 • RAM-DISK TEMPORARY
```
```
# mkdir	-p /media/ramdisk 
$ mount | column -t
# mount -t tmpfs -o size=1024M tmpfs /media/ramdisk
# mount -a
$ mount | column -t
```

<br>
```
005 • SOURCES.LIST FOR DEBIAN-STRETCH
```
```
• # vim /etc/apt/sources.list

• # Security updates
• deb http://security.debian.org/debian-security stretch/updates main contrib non-free
• deb-src http://security.debian.org/debian-security stretch/updates main contrib non-free

• # Base repository
• deb http://ftp.de.debian.org/debian/ stretch main contrib non-free
• deb-src http://ftp.de.debian.org/debian/ stretch main contrib non-free

• # Stable updates
• deb http://ftp.de.debian.org/debian/ stretch-updates main contrib non-free
• deb-src http://ftp.de.debian.org/debian/ stretch-updates main contrib non-free

• # Stable backports
• deb http://ftp.debian.org/debian stretch-backports main contrib non-free
• deb-src http://ftp.debian.org/debian stretch-backports main contrib non-free

• # Virtualbox
• deb https://download.virtualbox.org/virtualbox/debian stretch contrib
```

<br>
```
004 • SYSTEM UPDATE AND UPGRADE
```
```
alias u='clear; sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade; sudo apt-get autoremove -yy'
```

<br>
```
003 • DCONF-EDITOR
```
```
# apt install dconf-editor && apt show dconf-editor
• /org/gnome/terminal/legacy/default-show-menubar
```

<br>
```
002 • GNOME-TWEAK-TOOL
```
```
# apt install gnome-tweak-tool && apt show gnome-tweak-tool
• Typing-Tab > Caps Lock key behaviour > Make Caps Lock an additional ESC|
```

<br>
```
001 • VIM-MODE in BASH
```
```
$ vim ~/.bashrc
  set -o vi
  bind -m vi-insert "\C-l"		# clear-screen
:wq
```
👍  , , , , , , , , , , , , , , , , , ,
properties (23)
post_id74,694,390
authorwglenz
permlinklinuxopolis-66-vim-tutorials
categorylinux
json_metadata{"app":"steempeak\/1.9.9","format":"markdown","tags":["linux","debian","bash","java"],"users":["wglenz","a","gmail.com","a.b.c.d","server","3d","30d","1d"],"links":["\/@wglenz"],"image":["https:\/\/files.steempeak.com\/file\/steempeak\/wglenz\/MXnIF3aj-Hintergrund_11.png"]}
created2019-05-13 23:08:51
last_update2019-05-13 23:08:51
depth0
children0
net_rshares211,290,638,756
last_payout2019-05-20 23:08:51
cashout_time1969-12-31 23:59:59
total_payout_value0.080 SBD
curator_payout_value0.023 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length53,322
author_reputation1,724,513,770,671
root_title"LINUXOPOLIS #66 • VIM ~ TUTORIALS"
beneficiaries
0.
accountsteemchiller
weight100
1.
accountsteempeak
weight100
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars0
author_curate_reward""
vote details (19)