Command Window Config

Informatie


Internet

zoek op "linux shell voor beginners", linux command prompt, linux shell, CLI, etc
http://community.linuxmint.com/tutorial/view/100 The 5-Minute Essential Shell Tutorial @Linux Mint

https://nl.wikibooks.org/wiki/Linux_voor_beginners/De_terminal
Heel leerzaam :

Wiki

http

Computer Tip

http


Command Window gebruiken

Sneltoetsen op de prompt

Met Shift-PageUp en Shift-PageDown scrollt u door het scherm (handig bij lange listings).
Met Shift-Pijl omhoog en Shift-Pijl omlaag scrollt u door laatst gebruikte opdrachten (het bestand ~/.bash_history).
U kunt ze met de pijl opzij toetsen editen en met enter herhalen.

Command Window Config



Uitleg

Command window, terminal, xterm, allemaal namen voor zo een raampje waar je opdrachten in kunt intiepen.
Ook wel afgekort : CLI : Command Line Interface

Dit is een bijzonder krachtig stuk gereedschap. Absoluut de moeite waard om hier mee te leren omgaan.
Veel zaken kunnen ook zonder intiep commando' s uitgevoerd worden.
Vraag een demo en laat u verrassen.

Mijn Terminal met wat leuke commando's

Opdrachten uitvoeren met je eigen account :




Opdrachten uitvoeren met het Root account :

De standaard manier in Linux Mint is de methode met sudo
Als gewone gebruiker, in een CLI, type in : sudo <commando> en sluit af met enter.
Na het intypen van je paswoord wordt het commando uitgevoerd.

Voor veel taken moet je super user zijn. Dat is root.
Inloggen als root in een CLI doe je met : su - root
paswoord ingeven en vanaf dat moment zijn alle ingegeven commandos van user root.
Wel opletten wat je doet, want vanaf nu kun je van alles kapot maken >:-)


Nadeel : je ziet niet dat je root bent in deze terminal
Dus verander de kleur in de systeembeheerders kleuren :
zwart op gele achtergrond

Terminal voor user root (de systeem beheerder)

Gevolg : terminal van jouzelf wordt ook geel ...
Oplossing : profielen maken, een voor jou, een voor root.
Zie hieronder


Veantwoording

Onderstaand verhaal geeft aan hoe ik mijn command window africht.
Dat wil niet zeggen dat u dat ook moet doen. Sterker nog, dit is een gevorderd verhaal en het begrijpen van de achtergrond is van belang.

Nog mooier wordt het door gebruik te maken van profielen.
Zie het menu Bestand.

Command Window Instellingen

Het volgende is een kwestie van krachtig gereedschap goed inrichten.
Dit verhaal is dus eenmalig uit te voeren. Er is de nodige overlap met de rest van de uitleg.
Open in het menu het Terminalvenster
Kies met de rechter muisknop in de bovenbalk eenmalig : Altijd bovenop.
Type in sudo su, geef je paswoord in en je bent super user in deze terminal
Dat zie je aan het #, de prompt voor root
Type maar eens in : whoami

Zorg dat je de kornshell geinstalleerd hebt. pdksh. Zie installeren. Methode Hans !
En dat je bij je gebruikers instelling je standaard shell aangepast hebt naar /bin/ksh of /bin/mksh

zie hiervoor jouw account in /etc/passwd
tux:x:1000:1000:Tux PingWing,,,:/home/tux:/bin/bash
tux:x:1000:1000:Tux PingWing,,,:/home/tux:/bin/ksh

2014 0629
Voeg deze regel toe aan /etc/shells (als je de kornshell middels pdksh wilt gebruiken):
/bin/ksh
Dit zorgt ervoor dat een aantal programma's vanuit het menu gewoon opstartbaar blijven.


We gaan in de terminal twee profielen maken, een voor user jijzelf, en een voor root.
Zie
Bestand - Nieuw profiel
Bewerken - Profielen

Profiel voor gebruiker

Moet aangepast worden voor Linux Mint 18.1
Voortschrijdend inzicht. Heb te moeilijk gedaan.


Eerst het profiel voor jouwzelf als normale linux gebruiker
Bestand - Nieuw profiel
Kies als profielnaam jouw Voornaam, of iets anders zinvols.
Creeeren

In Tab algemeen :
x Menu balk tonen ...
Let op de Selecteer per woord tekens. Tis maar dat u het weet ..

In tab Titel en opdracht :
BeginTitel : Gebruiker (of je Voornaam)
  • opdracht uitvoeren als aanmeldshell
  • Login-rapport ...
  • Aangepaste opdracht, en hier invullen : ksh -l

In de Tab Kleuren
Tekst kleur : Geel
Achtergrond Kleur : Blauw
of net wat je fijn vindt

In de Tab achtergrond :
x Effen kleur

In tab Schuiven : Schuif links zetten
x onbeperkt
x Schuiven bij nieuwe uitvoer
x Schuiven bij een toetsaanslag


Profiel voor root

En nu nog het profiel als super user
Bestand - Nieuw profiel
Baseren op zojuist al gemaakte gebruikers profiel
Kies als profielnaam Root.
Creeeren

In tab Titel en opdracht :
BeginTitel : Root (Systeem Beheerder)
  • opdracht uitvoeren als aanmeldshell
  •  Login-rapport ...
  •  Aangepaste opdracht, en hier invullen : su -

In de tab Kleuren
  • maak de achtergrond geel en de tekst zwart.
  • er zijn meerdere  mogelijkheden om dat te doen
  • Er is een ingebouwd schema : Zwart op lichtgeel. Helemaal goed.
  • ...
  • kleuren van het systeem thema gebruiken, uitvinken
  • Ingebouwd schema : Zwart op licht geel, of geel = iets als #FDFF90
  • Vetgedrukte kleur : Zelfde als tekstkleur. Opleuken mag, bijvoorbeeld blauw maken.
  • Achtergrond kleur : lichtgeel. Opleuken mag, een beetje geler knalt er lekker uit.
In de Tab achtergrond :
x Effen kleur

In tab Schuiven : Schuif links zetten
  • onbeperkt
  • Schuiven bij nieuwe uitvoer
  • Schuiven bij een toetsaanslag
Sluit de profiel voorkeuren af
Open bewerken - profielen
Gebruikt profiel bij starten van een nieuwe terminal : Die van jou
De default kun je weggooien, of laten staan. Jouw profiel is voortaan de regel ! >;-)

Profielen gebruiken

Bestand - Nieuw Tabblad - Gebruiker
Bestand - Nieuw Tabblad - Root : Inloggen !

Bewerken - Profielen
Selecteer het gebruikers profiel als op te starten van een nieuwe terminal

Aanpassen met Menu - Beheer - Gebruikers en groepen


Command Window Configuratie file


Maak met user root een tekst filetje met de naam user_cfg.sh
en plaats dat in /etc/profile.d

verander de bestandsrechten in -rwxr-wr-w
bijvoorbeeld in de terminal met chmod 755 *sh
en zorg dat ze van root in de groep root zijn,
bijvoorbeeld met chown root.root *sh

Inhoud van user_cfg.sh (#!/bin/sh moet op de eerste regel !) :

#!/bin/sh
#######################################################
#######################################################
#
# User configuratie voor de Terminal / Command window
echo Dit is /etc/profile.d/user_cfg.sh
sleep 1

# 2015-11-27 : created

#######################################################
# PROMPT PS1
PS1="${LOGNAME}:...\${PWD##*/}>>"; export PS1

# command line settings
# maak vi de standaard edit funktie op de kommmand line
# alleen doen als je met vi overweg kunt.
# vi is zeker de moeite waard om te leren
# Door het # weg te halen wordt vi aangezet
# set -o vi
#######################################################
#  alias which="type -path"
alias f="ls -lF"
alias c="clear"
alias cf="clear; ls -lF"
alias d="ls -l | grep '^d'"
alias fd="ls -lF"
alias lsd="ls -ltcr"
alias lsdr="ls -ltc"
alias lsn="ls -lF | sort +8 -9"
alias lsnr="ls -lF | sort -r +8 -9"
alias lsp="ls -lF | sort +0 -1"
alias lspr="ls -lF | sort -r +0 -1"
alias lss="ls -lF | sort +4 -5 -n"
alias lssr="ls -lF | sort -r +4 -5 -n -r"

# Foto Aliassen
# installeer eerst jhead, en onderstaand commando hernoemt fotoos in betreffende map
alias fotonaam='jhead -n%Y_%m%d_%H%M%S *[JjPpGg]'

# cd
# echo "Hallo $LOGNAME"
echo Dit was /etc/profile.d/user_cfg.sh
sleep 3
clear

# Einde van user_cfg.sh
#######################################################
#######################################################



Terminal Prompt a la Hans


Ik wil dus een prompt, waarin ik de actiev user zie, en het allerlaatste deel van de directory waarin ik zit.
Dit kun je realiseren met :
PS1="${LOGNAME}:...\${PWD##*/}>>"

De ingelogde user zit in de variabele LOGNAME.
En die directory vraag je op met PWD,

Doe maar :
echo LOGNAME=$LOGNAME
echo PWD=$PWD
(hiervoor heb je het commando PWD >;-)

oja en deze ook ff doen :
echo "${LOGNAME}:...\${PWD##*/}>>"
Waarom gaat dat niet ???

Zie hierboven hoe je het standaard instelt, in een config scriptje in /etc/profile.d. Dacht ik ...
Maar wat als dat niet werkt ? Tot en met Linux Mint 14 werkte het. In 17 heb ik wat extra's meoten doen. Zie verderop.

Terminal Prompt a la Hans in Linux Mint 18

In Linux Mint 18
bleek pdksh er niet meer te zijn. Maar ik vond mksh. Het daarmee geprobeerd. Later bleek de enige echte ksh zelf beschikbaar te zijn.
bleek het ook niet te werken OOTB (Out of the Box)
De truuk hieronder uit Mint 17 weer geprobeerd
Voor mksh in de file /etc/mkshrc onderstaande aanpassing gedaan. En daarna mksh verwijderd in het voordeel van ksh zelf
Voor ksh in de file /etc/profile  onderstaande aanpassing gedaan

Daar heb ik deze regels in gezet.
# Toegevoegd door Hans op 2016 1124
PS1="${LOGNAME}:...\${PWD##*/}>>"

Mijn /etc/profile ziet er nu zo uit :
TBD : geen aanpassingen dus eigenlijk.

En als ik (user hans) nou een nieuwe terminal open, krijg ik dan meteen mn mooie prompt ?
Nee. Helaas.

Dus ...
op naar /home/hans/.profile

Daar heb ik deze regels in gezet. Op het eind.
# Toegevoegd door Hans op 2016 1124
PS1="${LOGNAME}:...\${PWD##*/}>>"

En doet ie het nu ?

JA ! BINGO

Dus vanuit /etc/profile.d/hans_cfg.sh werkt het niet meer ...

Dus een aanpassing in /home/hans/.profile met deze config regel hoeft niet.

in /etc/profile is goed.
Dan werkt het voor alle users die hun shell ingesteld hebben op ksh (zie /etc/passwd)
hans:x:1001:1001:Hans Zelf,,,:/home/hans:/bin/ksh

Blijft de vraag over PS1 in mn sriptje in /etc/profile.d ...
Daar heb ik m uitgezet. Die doet het dus even niet ...

Terminal Prompt a la Hans in Linux Mint 17

In Linux Mint 17 bleek de PROMPT PS1 regel overruled te worden door een van Mint zelf
Na het installeren van pdksh heb ik na goed zoeken
in de file /etc/mkshrc onderstaande aanpassing gedaan

Ergens staat deze regel :
} '"$PS1 "; export EDITOR HOSTNAME MKSH TERM USER

Daar heb ik deze regels ondergezet.
# Toegevoegd door Hans op 2015 1127
PS1="${LOGNAME}:...\${PWD##*/}>>"

Je ziet het. Goed documenteren moet !
Hoe ? Ja. Met dit kommando kun jij het ook !
sudo  gedit /etc/mkshrc &

Tip : maak een kopie van /etc/mkshrc in /root
met filenaam plus datum erin : /root/mkshrc_2015_1127

Path Setting

Scripts die vanuit willekeurige directories gedraaid moeten kunnnen worden, horen thuis in een directory die voorkomt in de variabele PATH
Samen met nog wat instellingen wordt het dan mogelijk om dat script overal te draaien.
Van belang is : waar hoort dit ingesteld te worden, en hoe. Het kan slecht, beter, en goed. Zorg voor de goede keuzes.

Advies : maak een directory bin : /home/jijzelf/bin
en plaats hierin je scripts

Doe maar eens, in de terminal :
cd
echo $PATH

cat .bashrc
cat .profile




Google op "linux path setting" voor meer uitleg. Belangrijk om het goed te doen ...

Omgeving variabelen instellen
https://wiki.archlinux.org/index.php/Environment_variables
Code: Setting PATH environment variable

Ergens deze regel gevonden ... geldt dat in Linux Mint ook ?
If you need to change your $PATH, create the file ~/.bashrc and add the lines

Dit is de truuk die ergens bij het opstarten van de terminal toegepast moet worden
PATH="$HOME/somedir:$PATH"

Stel dat je je scripts verzameld hebt in /home/jijzelf/bin, dan wordt het
PATH="$HOME/bin:$PATH"



PATH variabele instellen
Zie het Linux Systeem beheer handboek (welk boek ? Goede vraag)

Het gaat hierom. Je kunt directories met daarin jouw scripts, toevoegen aan het zoekpad PATH :
PATH="$HOME/bin:$PATH"
of ...
PATH="$HOME/bin:$HOME/linux/scripts:$PATH"

Doel ? Je kunt ze dan ik willekeurige directories aanroepen, zonder het hele pad op te geven


Zie de uitleg hieronder in de /home/hans/.profile
Deze file heb ik omdat ik de kornshell gebruik !?

Bash shell gebruikers (de Linux standaard) hebben vergelijkbare configuratie in ~/.bashrc !?
Zie /usr/share/doc/bash/examples/startup-files for examples, zoals hieronder aangegeven is.

hans:...hans>>cat ~/.profile
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
    fi
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi
hans:...hans>>

https://en.wikipedia.org/wiki/PATH_%28variable%29
http://www.wikihow.com/Change-the-Path-Variable-in-Linux
http://stackoverflow.com/questions/14637979/how-to-permanently-set-path-on-linux


Script naamgeving

Geef ze een mooie duidelijke naam, met versie nummering erin
Voorbeeld : mijnscript-1.0.sh
Plaats je script in /home/jijzelf/bin

Geef ze rechten om uitgevoerd te worden : rwxr-xr-x
In de terminal doe je dat met : chmod 755 mijnscript.sh
Het kan ook met Nemo, met de bestandsrechten.

Maak een symbolische link mijnscript naar mijnscript-1.0.sh, met dit commando ;
ln -s /home/hans/bin/mijnscript-1.0.sh /home/hans/bin/mijnscript

als de bin directory in het zoekpad staat (zie hiervoor),
en als je script de juiste rechten heeft : rwxr-xr-x,
dan kun je je script uitvoeren
door het intypen van : mijnscript




Comments