LINUXOPOLIS #85 • DEBIAN ~ STRETCH TO BUSTER
linux·@wglenz·
0.000 HBDLINUXOPOLIS #85 • DEBIAN ~ STRETCH TO BUSTER
<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 by Willi Glenz</center> <center><h4>CONTENTS</h4></center> ``` 017 DEBIAN v2 19-05 092 faq v1 19-05 086 reference-handbook v1 19-05 081 administrator-handbook v1 19-05 091 installation v1 19-05 004 update & upgrade & dist-upgrade v1 19-05 093 stretch to buster v1 19-05 new 029 system information v1 19-05 013 toolbox v2 19-05 052 systemv v1 19-05 080 systemd v2 19-05 023 memory v1 19-05 032 network v1 19-05 031 swap space v1 19-05 007 ram-disk permanent v1 19-05 006 ram-disk temporary v1 19-05 045 languages v1 19-05 047 users v1 19-05 049 backup v2 19-05 079 hard disk v1 19-05 044 raspberry pi v2 19-05 082 dhcp-server v1 19-05 084 http-server-apache2 v2 19-05 005 /etc/apt/sources.list v2 19-05 009 /etc/fstab v1 19-05 041 sources v2 19-05 026 BASH v3 19-05 update 094 bash-guide-for-beginners v1 19-05 new 085 bash-scripting-guide v1 19-05 008 aliases v2 19-05 022 one-liner & cowsay v2 19-05 038 job-control v1 19-05 055 bash-to-fish|zsh v3 19-05 043 fish v2 19-05 090 zsh v1 19-05 012 ~/.bashrc v1 19-05 020 VIM v3 19-05 037 first-steps v4 19-05 053 vim-compressed v7 19-05 072 buffers v1 19-05 070 windows v1 19-05 075 tabs v3 19-05 077 marks v1 19-05 078 folds v1 19-05 083 macros 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 v2 19-05 034 ~/.vimrc v5 19-05 074 tutorials v1 19-05 073 sources v1 19-05 060 JAVA v1 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 025 tutorials v4 19-05 019 PYTHON v3 19-05 088 installation v1 19-05 087 tutorials v1 19-05 051 HTML v2 19-05 089 selfhtml (de) v1 19-05 ~~~ 076 javascript v1 19-05 048 c v2 19-05 066 perl v1 19-05 024 awk v1 19-05 061 git v1 19-05 ~~~ 015 shortcuts 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 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 003 dconf-editor v1 19-05 002 gnome-tweak-tool v1 19-05 ``` <center><h4>#094</h4></center> ``` 094 • BASH ~ BASH-GUIDE-FOR-BEGINNERS ``` ``` ldp.org/LDP/Bash-Beginners-Guide/html/index.html ``` <br> ``` 093 • DEBIAN ~ UPGRADE STRETCH TO BUSTER ``` ``` $ hostnamectl # apt update # apt upgrade # apt dist-upgrade # cp /etc/apt/sources.list /etc/apt/sources.list.backup1 # sed -i.backup2 's/stretch/buster/g' /etc/apt/sources.list # apt update # apt upgrade # apt dist-upgrade $ hostnamectl ``` <br> ``` 092 • 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 ``` ``` FAQ : debian.org/doc/manuals/debian-faq/ ``` <br> ``` 091 • DEBIAN ~ INSTALLATION ``` ``` • Installation Guide : debian.org/releases/stable/amd64/ • Release Notes : debian.org/releases/stable/amd64/release-notes/ ``` <br> ``` 090 • ZSH ``` ``` $ apt install zsh OH-MY-ZSH • github.com/robbyrussell/oh-my-zsh $ sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)" $ uninstall_oh_my_zsh ``` ``` • MAN-Pages : $ man zsh • FAQ : zsh.sourceforge.net/FAQ/ ``` <br> ``` 089 • HTML - SELFHTML (DE) ``` ``` # apt install selfhtml # apt show selfhtml $ dpkg -L selfhtml | less > file://usr/share/doc/selfhtml/html/index.htm ``` <br> ``` 088 • PYTHON ~ INSTALLATION ``` ``` # apt get install python python3 idle3 # snap install pycharm-community --classic INSTALLATION v3.7.3 $ mkdir ~/tmp; cd ~/tmp; $ wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tar.xz $ xz --uncompress Python-3.7.3.tar.xz $ tar -xf Python-3.7.3.tar $ rm Python-3.7.3.tar $ cd Python-3.7.3/ $ view README.rst $ ./configure $ make $ make test # make install $ rm -r ~/tmp; ls -lisa ~ UPDATE-ALTERNATIVE $ python<tab><tab> $ python --version # update-alternatives --list python # update-alternatives --install /usr/local/bin/python3 python /usr/bin/python3.7 1 # update-alternatives --config python # update-alternatives --list python $ python --version # update-alternatives --remove python /usr/bin/python2.7 ``` ``` • Download : python.org/downloads/ • Documentation : docs.python.org/3.7/ ``` <br> ``` 087 • PYTHON - 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 ``` <br> ``` 086 • DEBIAN-REFERENCE-HANDBOOK ``` ``` # 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.org/doc/manuals/debian-reference/ ``` <br> ``` 085 • BASH-SCRIPTING-GUIDE ``` ``` # apt search abs-guide # apt show abs-guide # apt install abs-guide $ dpkg -L abs-guide > file:///usr/share/doc/abs-guide/html/index.html ``` ``` tldp.org/LDP/abs/html/ ``` <br> ``` 084 • APACHE-HTTP-SERVER ``` ``` # apt search apache2 # apt show apache2 # apt install apache2 apache2-doc $ ip a $ w3m localhost|---.---.---.--- $ /var/www/html/index.html $ systemctl status apache2.service $ ps aux | grep -i apache # netstat -tulpn # tail -f /var/log/apache2/access.log # tail -f /var/log/apache2/error.log $ dpkg -L apache2-doc | less > file:///usr/share/doc/apache2-doc/manual/en/mod/index.html ``` <br> ``` 083 • VIM ~ MACROS ``` ``` [ qa q @a ] start stop run [ :reg ] register [ :put a ] edit a [ 0"ay$ ] update a :map <F2> a<C-R>=strftime("%c")<CR><ESC> :map <F2> ggVG"+y :map <F2> :set list! ``` <br> ``` 082 • DHCP-SERVER ``` ``` INSTALLATION $ apt-cache show isc-dhcp-server # apt-get install isc-dhcp-server # man dhcpd # man dhcpd.conf CONFIGURATION # ifconfig; ip a # service isc-dhcp-server start | stop | restart # systemctl start isc-dhcp-server # systemctl enable isc-dhcp-server # ufw allow 67/udp # ufw reload # vim /etc/dhcp/dhcpd.conf > option broadcast-address 192.168.0.255; > option domain-name "linux.local"; > default-lease-time 3600; > max-lease-time 7200; > authoritative; > > subnet 192.168.0.0 netmask 255.255.255.0 { > option routers 192.168.0.1; > option subnet-mask 255.255.255.0; > option domain-search "linux.local"; > option domain-name-servers 8.8.8.8, 8.8.4.4; > range 192.168.0.10 192.168.0.100; > range 192.168.0.150 192.168.0.200; > } SOURCES • isc.org/downloads/dhcp/ • help.ubuntu.com/community/isc-dhcp-server • tools.ietf.org/html/rfc1531 • en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol ``` <br> ``` 081 • 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 $ firefox file:///usr/share/doc/debian-handbook/html/en-US/index.html ``` <br> ``` 080 • SYSTEMD ``` ``` $ systemctl $ systemctl list-units | grep .service $ systemctl list-unit-files $ systemctl is-enabled ufw.service $ systemctl status apache2.service $ systemctl status ssh.service # systemctl enable|disable apache2.service # systemctl start|stop|restart apache2.service # journalctl # journalctl -b # journalctl -b -p err # journalctl -b -u NetworkManager # journalctl -b -u NetworkManager --since='yesterday' # journalctl -b -u NetworkManager --since='yesterday' -p err /etc/systemd/ /etc/systemd/system/ ``` <br> ``` 079 • HARD DISK ``` ``` $ lsblk # blkid /dev/sda1 # badblocks -v /dev/sdb # tune2fs -l /dev/sdb # tune2fs -m 0 /dev/sdb $ cat /sys/devices/virtual/thermal/thermal_zone0/temp # fdisk -l # hwinfo --short | less # hwinfo --disk # lshw -short | less $ mount | column -t # mount -t tmpfs -o size=2048M tmpfs /media/ramdisk # mount -o loop /home/user/iso/xyz.iso /mnt/ # smartctl -i /dev/sda $ sync ``` <br> ``` 078 • VIM ~ FOLDS ``` ``` $vim ~/.vimrc [autocmd BufWinLeave *.* mkview ] [autocmd BufWinEnter *.* silent loadview ] :wq [ zf ] create [ zo zn ][ :%foldopen ] open none [ zc zm ][ :%foldclose ] close more [ zd ] delete [:mkview :loadview ] save load [:set foldmethod :set fdm ] foldmethod ``` <br> ``` 077 • VIM ~ MARKS ``` ``` [ ma 'a `a ] set mark [ :marks :marks ABC ] list marks [ mA mB 'A 'B ] different files [ :delmarks A-Z a,b,c :delmarks! ] delete marks ``` <br> ``` 076 • JAVASCRIPT ``` ``` TUTORIALS • JavaScriptInfo : javascript.info • W3Schools : w3schools.com/Js/ • TutorialsPoint : tutorialspoint.com/javascript/ ``` <br> ``` 075 • VIM ~ TABS ``` ``` [ :tabnew ] tab new [ :tabe dummy.txt ] tab edit [ :tab split ] tab split [ :tabn :tabn2 :tabp ][ gt 3gt gT ] tab next previous [ :tabmove 0 ] tab move [ :tab ba ] tab buffer all [ :tabonly ] tab only [ :tabm :tabm 0 ] tab move [ :tabclose :q ] tab close quit ``` <br> ``` 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 ~ SOURCES ``` ``` [ $ 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 120 ] 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 • BASH-TO-FISH|ZSH ``` ``` $ grep -i user /etc/passwd $ echo $SHELL $ cat /etc/shells # apt install fish zsh $ cat /etc/shells • Option 1: # vim /etc/passwd • Option 2: $ chsh -s /usr/bin/fish • Option 3: # usermod -s /bin/bash user $ chsh -s /usr/bin/fish $ chsh -s /bin/fish $ cat /etc/passwd | cut -d: -f7 | sort | uniq -c | sort -nr ``` <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 • SYSTEMV ``` ``` # 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 • Homepage : raspberrypi.org • Configuration : raspberrypi.org/documentation/configuration/ • Download : raspberrypi.org/downloads/raspbian/ ``` ``` MAGPI • 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 • 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 • Beginners Book : raspberrypi.org/magpi-issues/Beginners_Book_v1.pdf $ clear; lsblk; lsblk -l $ dd bs=4M if=2018-10-09-raspbian-stretch.img of=/dev/sdX status=progress conv=fsync # raspi-config ``` <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-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 ``` ``` [ $ vim ~/.vimrc ] edit ~/.vimrc [ vim, :w ~/.vimrc_backup ] backup ~/.vimrc "IDE syntax on set autoindent set smartindent set cindent "FOLDING autocmd BufWinLeave *.* mkview autocmd BufWinEnter *.* silent loadview let mapleader = "," "Leaderkey set scrolloff=99 "Scrolling behaviour set splitright "Splitting behaviour set rnu "Relative line numbers set nonu "Line numbers set nocompatible set showmode set ruler set linebreak set showcmd set laststatus=1 set background=dark set encoding=utf8 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> "SEARCH set nohlsearch set incsearch "TABs set tabstop=4 set softtabstop=4 set shiftwidth=4 "set expandtab "KEY MAPPINGS "map <F2> :echo 'Current time is ' . strftime('%c')<CR> nmap <F2> ggVG"+y map <F5> :set list!<CR> map <F6> :setlocal spell! spelllang=en_us<CR> map <F8> :set nu!<CR> map <Leader><F8> :set rnu!<CR> map <Leader>, :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 ``` ``` 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 ``` ``` Homepage : gnu.org/software/bash/ Documentation : gnu.org/software/bash/manual/html_node/index.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/ $ scp -r folder/ user@a.b.c.d:~ $ scp dummy.txt user@a.b.c.d:~ $ sudo -H pip install --upgrade youtube-dl $ watch -d -n 5 ls -l $ watch free -h $ watch mail :%sort :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 • Homepage : python.org • Documentation : docs.python.org/3.7/ • Download : python.org/downloads/ ``` ``` # apt-get install python3 python-pip spyder3 diveintopython3 $ python3 $ python -m SimpleHTTPServer 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 SOURCES • 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 ``` ``` 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 • 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 ``` ``` Homepage : debian.org Download : debian.org/distrib/netinst#smallcd ``` <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 b30='clear; curl rate.sx/btc@30d' alias b3='clear; curl rate.sx/btc@3d' alias b='clear; curl rate.sx/btc@3d' 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 cd2='clear; \cd ~/2019; echo; lsd -l; echo' alias cdh='\cd; clear; echo; lsd -l; echo' alias cdp='clear; \cd ~/.phoenix; echo; lsd -l; echo' alias d='clear; curl rate.sx/dash@3d' alias dir='dir --color=auto' 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/user1/.exclude.txt" /home/user1/ /media/veracrypt1/' alias s30='clear; curl rate.sx/steem@30d' alias s3='clear; curl rate.sx/steem@3d' alias s='clear; curl rate.sx/steem@3d' 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' alias yt='sudo -H pip install --upgrade youtube-dl' :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 • DEBIAN ~ /ETC/APT/SOURCES.LIST ``` ``` • # 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 • DEBIAN ~ UPDATE & UPGRADE & DIST-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 ```