This is an old revision of the document!
În shell, un alias este un șir de caractere ce poate ține locul oricărei comenzi. Putem vedea ce
aliasuri sunt deja create în sistem dacă inspectăm fișierul ~/.bashrc
. De regulă, ele se află la
sfârșitul fișierului sau sunt definite separat în fișierul ~/.bash_aliases
. Inspectați ambele
fișiere.
student@uso:~$ cat ~/.bashrc # ~/.bashrc: executed by bash(1) for non-login shells. # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) # for examples # If not running interactively, don't do anything case $- in *i*) ;; *) return;; esac # don't put duplicate lines or lines starting with space in the history. # See bash(1) for more options HISTCONTROL=ignoreboth # append to the history file, don't overwrite it shopt -s histappend # for setting history length see HISTSIZE and HISTFILESIZE in bash(1) HISTSIZE=1000 HISTFILESIZE=2000 # check the window size after each command and, if necessary, # update the values of LINES and COLUMNS. shopt -s checkwinsize # If set, the pattern "**" used in a pathname expansion context will # match all files and zero or more directories and subdirectories. #shopt -s globstar # make less more friendly for non-text input files, see lesspipe(1) [ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" # set variable identifying the chroot you work in (used in the prompt below) if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then debian_chroot=$(cat /etc/debian_chroot) fi # set a fancy prompt (non-color, unless we know we "want" color) case "$TERM" in xterm-color|*-256color) color_prompt=yes;; esac # uncomment for a colored prompt, if the terminal has the capability; turned # off by default to not distract the user: the focus in a terminal window # should be on the output of commands, not on the prompt #force_color_prompt=yes if [ -n "$force_color_prompt" ]; then if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then # We have color support; assume it's compliant with Ecma-48 # (ISO/IEC-6429). (Lack of such support is extremely rare, and such # a case would tend to support setf rather than setaf.) color_prompt=yes else color_prompt= fi fi if [ "$color_prompt" = yes ]; then PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' else PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' fi unset color_prompt force_color_prompt # If this is an xterm set the title to user@host:dir case "$TERM" in xterm*|rxvt*) PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" ;; *) ;; esac # enable color support of ls and also add handy aliases if [ -x /usr/bin/dircolors ]; then test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" alias ls='ls --color=auto' #alias dir='dir --color=auto' #alias vdir='vdir --color=auto' alias grep='grep --color=auto' alias fgrep='fgrep --color=auto' alias egrep='egrep --color=auto' fi # colored GCC warnings and errors #export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' # some more ls aliases alias ll='ls -alF' alias la='ls -A' alias l='ls -CF' # Add an "alert" alias for long running commands. Use like so: # sleep 10; alert alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' # Alias definitions. # You may want to put all your additions into a separate file like # ~/.bash_aliases, instead of adding them here directly. # See /usr/share/doc/bash-doc/examples in the bash-doc package. if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi # enable programmable completion features (you don't need to enable # this, if it's already enabled in /etc/bash.bashrc and /etc/profile # sources /etc/bash.bashrc). if ! shopt -oq posix; then if [ -f /usr/share/bash-completion/bash_completion ]; then . /usr/share/bash-completion/bash_completion elif [ -f /etc/bash_completion ]; then . /etc/bash_completion fi fi
student@uso:~/uso.git/$ cat ~/.bash_aliases alias go='gnome-open' alias grep='grep --color=auto' alias grpe='grep' alias gpre='grep' alias gti='git' alias gigt='git' alias cal='ncal -M' alias ncal='ncal -M' alias boot-cli='systemctl set-default multi-user.target' alias boot-gui='systemctl set-default graphical.target'
1. Creați-vă propriul alias și verificați că funcționează așa cum vă așteptați. După ce faceți modificări asupra fișierului rulați comanda consultați această pagină.
Prin personalizarea shell-ului înțelegem modificarea unor fișiere de configurație, schimbarea culorilor,
să modificăm username-ul
, hostname-ul
, home directory
și/sau prompt-ul
, creearea unor
aliasuri etc. La această secțiune vrem să modificăm prompt-ul
. Urmăriți tutorialul de
aici pentru a modifica prompt-ul să arate în
felul următor:
tom@disney:~#
~/.bashrc
sunt persistente, adică sunt modificări care apar chiar și dupa reboot.
De foarte multe ori ni se poate întâmpla să scriem o comandă și să ne dăm seama că e parțial incorectă sau că am scris un cuvânt greșit. Tendința este să abuzăm de tasele săgeată-stânga și săgeată-dreapta pentru a corecta. Urmăriți tutorialul de mai jos pentru a vedea cum putem opera cu terminalul mai rapid și eficient folosind câteva combinații de taste.
Mutați-vă la calea ~/uso.git/labs/05-cli/support/nice-to-know/editare-comenzi
înainte de a începe acest
tutorial. Încercați să scrieți voi comenzile fără a copia din laborator fiecare comandă.
student@uso:~/.../support/nice-to-know/editare-comenzi$ ls main.c sum.c sum.h student@uso:~/.../support/nice-to-know/editare-comenzi$ gcv -g main.c summ.c -o main Command 'gcv' not found, but can be installed with: sudo apt install scotch student@uso:~/.../support/nice-to-know/editare-comenzi$ # săgeată sus pentru a avea ultima comandă dată
Cursorul se află în acest moment după ultimul caracter din comanda dată. Observăm că am scris greșit
gcc
. Pentru a ne muta la începutul comenzii folosim combinația de taste CTRL + A
. Faceți această
modificare a comenzii. Pentru a muta cursorul din nou la sfârșitul liniei, folosim combinația de taste
CTRL + E
.
student@uso:~/.../support/nice-to-know/editare-comenzi$ gcc -g main.c summ.c -o main gcc: error: summ.c: No such file or directory
Observăm faptul că tot avem o problemă cu această comandăs. De data asta am scris greșit numele
fișierului sum.c
pe care vrem să-l compilăm. Mutați-vă cu cursorul deasupra literei greșite și folosiți
combinația CTRL + D
pentru a o șterge. Dacă vrem să stergem tot la dreapta (până ajungem la primul spațiu)
folosim combinația Alt + D
.
Modificați comanda fără a o scrie din nou până când nu vor mai apărea erori și fișierele vor fi compilate cu succes.
Pentru a afișa variabilele de mediu din sistem, folosiți comanda env
.
student@uso:~/uso.git/$ env (...) LESSOPEN=| /usr/bin/lesspipe %s LC_TIME=ro_RO.UTF-8 _=/usr/bin/env OLDPWD=/home/student/uso/labs/05-cli/support/nice-to-know/editare-comenzi
Ultima variabilă de mediu afișată mai sus este variabila OLDPWD
care este, de fapt, directorul în
care ne-am aflat înainte să ne mutăm în cel care suntem în acest moment. Un exemplu de comandă care
folosește această variabilă este cd -
care ne mută chiar în directorul anterior.
student@uso:~/uso.git/$ pwd /home/student/uso.git student@uso:~/uso.git/$ cd labs/ student@uso:~/uso.git/labs/$ pwd /home/student/uso.git/labs student@uso:~/uso.git/labs/$ echo $OLDPWD /home/student/uso.git
1. Completați fișierul ~/uso.git/labs/05-cli/support/nice-to-know/env/print_env.c
pentru a afișa
variabilele de mediu. Folosiți al treilea argument al funcției main
.
(Hint: urmăriți explicațiile de aici)
Variabila de mediu PATH
conține diverse căi din sistem în care se caută binarele rulate de noi în terminal.
Folosim comanda echo $PATH
pentru a afișa ce conține ea.
student@uso:~/.../support/nice-to-know/env$ cd ~ student@uso:~$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
Concret, se pune problema: de unde știe sistemul să ruleze binarul /usr/bin/ls
atunci când dăm comanda
ls
dacă nu avem un alias pentru el? El va căuta în căile reținute de variabila PATH
executabilul
numit ls
.
1. Creați un program C numit sum.c
care să calculeze suma a două numere citite de la tastatură.
Compilați-l și obțineți executabilul sum
. Rulați programul pentru a vă asigura că totul este în regulă.
2. Modificați variabila PATH
astfel încât programul vostru să poată fi rulat de oriunde din sistem prin
comanda sum
. (HINT: variabila PATH
)