This shows you the differences between two versions of the page.
uso:laboratoare:new:05-cli:nice-to-know [2018/10/30 00:14] liza_elena.babu |
uso:laboratoare:new:05-cli:nice-to-know [2019/10/27 19:34] (current) adrian.zatreanu |
||
---|---|---|---|
Line 1: | Line 1: | ||
===== Nice to know ===== | ===== Nice to know ===== | ||
- | === Aliasuri === | + | ==== Aliasuri ==== |
În shell, un **alias** este un șir de caractere ce poate ține locul oricărei comenzi. Putem vedea ce | În shell, un **alias** este un șir de caractere ce poate ține locul oricărei comenzi. Putem vedea ce | ||
Line 10: | Line 10: | ||
<code bash> | <code bash> | ||
student@uso:~$ cat ~/.bashrc | 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 | # some more ls aliases | ||
alias ll='ls -alF' | alias ll='ls -alF' | ||
Line 130: | Line 42: | ||
<code bash> | <code bash> | ||
- | student@uso:~/uso.git/$ cat ~/.bash_aliases | + | student@uso:~/uso-lab$ cat ~/.bash_aliases |
alias go='gnome-open' | alias go='gnome-open' | ||
alias grep='grep --color=auto' | alias grep='grep --color=auto' | ||
Line 143: | Line 55: | ||
</code> | </code> | ||
- | 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 | + | - 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, consultați [[https://stackoverflow.com/questions/2518127/how-do-i-reload-bashrc-without-logging-out-and-back-in|această]] pagină. |
- | asupra fișierului rulați comanda consultați | + | |
- | [[https://stackoverflow.com/questions/2518127/how-do-i-reload-bashrc-without-logging-out-and-back-in|această]] | + | |
- | pagină. | + | |
- | === Personalizarea shell-ului === | + | ==== Personalizarea shell-ului ==== |
Prin personalizarea shell-ului înțelegem modificarea unor fișiere de configurație, schimbarea culorilor, | 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 | 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 | + | aliasuri etc. La această secțiune vrem să modificăm ''prompt-ul''. |
- | [[https://vitux.com/how-to-customize-ubuntu-bash-prompt/|aici]] pentru a modifica prompt-ul să arate în | + | |
- | felul următor: | + | |
- | + | ||
- | <code bash> | + | |
- | tom@disney:~# | + | |
- | </code> | + | |
- | + | ||
- | <note> | + | |
- | Atenție! Urmăriți toți pașii din acel tutorial, inclusiv cei care modifică prompt-ul la loc. Modificările | + | |
- | făcute în fișierul ''~/.bashrc'' sunt **persistente**, adică sunt modificări care apar chiar și dupa reboot. | + | |
- | </note> | + | |
+ | - La acest exercițiu ne propunem să personalizăm culorile pentru ''username'' și ''hostname''. Intrați [[http://ezprompt.net|aici]] pentru a vă selecta culorile, după care faceți modificările în fișierul ''~/.bashrc''. După ce salvați fișierul rulați comanda ''. ~/.bashrc''. | ||
- | === Editarea comenzilor === | + | ==== Editarea comenzilor ==== |
De foarte multe ori ni se poate întâmpla să scriem o comandă și să ne dăm seama că e | De foarte multe ori ni se poate întâmpla să scriem o comandă și să ne dăm seama că e | ||
Line 173: | Line 72: | ||
taste. | taste. | ||
- | Mutați-vă la calea ''~/uso.git/labs/05-cli/support/nice-to-know/editare-comenzi'' înainte de a începe acest | + | Mutați-vă la calea ''~/uso-lab/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ă. | tutorial. Încercați să scrieți voi comenzile fără a copia din laborator fiecare comandă. | ||
Line 196: | Line 95: | ||
student@uso:~/.../support/nice-to-know/editare-comenzi$ gcc -g main.c summ.c -o main | 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 | gcc: error: summ.c: No such file or directory | ||
- | </code bash> | + | </code> |
- | Observăm faptul că tot avem o problemă cu această comandăs. De data asta am scris greșit numele | + | Observăm faptul că tot avem o problemă cu această comandă. 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 | 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) | combinația ''CTRL + D'' pentru a o șterge. Dacă vrem să stergem tot la dreapta (până ajungem la primul spațiu) | ||
Line 211: | Line 110: | ||
</note> | </note> | ||
- | === Variabile de mediu === | + | ==== Variabile de mediu ==== |
Pentru a afișa variabilele de mediu din sistem, folosiți comanda ''env''. | Pentru a afișa variabilele de mediu din sistem, folosiți comanda ''env''. | ||
<code> | <code> | ||
- | student@uso:~/uso.git/$ env | + | student@uso:~/uso-lab$ env |
(...) | (...) | ||
LESSOPEN=| /usr/bin/lesspipe %s | LESSOPEN=| /usr/bin/lesspipe %s | ||
Line 228: | Line 127: | ||
<code bash> | <code bash> | ||
- | student@uso:~/uso.git/$ pwd | + | student@uso:~/uso-lab$ pwd |
- | /home/student/uso.git | + | /home/student/uso-lab |
- | student@uso:~/uso.git/$ cd labs/ | + | student@uso:~/uso-lab$ cd 05-cli/ |
- | student@uso:~/uso.git/labs/$ pwd | + | student@uso:~/uso-lab/05-cli$ pwd |
- | /home/student/uso.git/labs | + | /home/student/uso-lab/05-cli |
- | student@uso:~/uso.git/labs/$ echo $OLDPWD | + | student@uso:~/uso-lab$ echo $OLDPWD |
- | /home/student/uso.git | + | /home/student/uso-lab |
</code> | </code> | ||
- | 1. Completați fișierul ''~/uso.git/labs/05-cli/support/nice-to-know/env/print_env.c'' pentru a afișa | + | - Completați fișierul ''~/uso-lab/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 [[https://www.sanfoundry.com/c-program-environment-variable/|aici]]) |
- | variabilele de mediu. Folosiți al treilea argument al funcției ''main''. | + | |
- | (Hint: urmăriți explicațiile de [[https://www.sanfoundry.com/c-program-environment-variable/|aici]]) | + | |
- | === Variabila de mediu PATH === | + | ==== Variabila de mediu PATH ==== |
Variabila de mediu ''PATH'' conține diverse căi din sistem în care se caută binarele rulate de noi în terminal. | Variabila de mediu ''PATH'' conține diverse căi din sistem în care se caută binarele rulate de noi în terminal. | ||
Line 256: | Line 153: | ||
numit ''ls''. | numit ''ls''. | ||
- | 1. Creați un program C numit ''sum.c'' care să calculeze suma a două numere citite de la tastatură. | + | - 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 ''mysum''. Rulați programul pentru a vă asigura că totul este în regulă. |
- | Compilați-l și obțineți executabilul ''sum''. Rulați programul pentru a vă asigura că totul este în regulă. | + | - Modificați variabila ''PATH'' astfel încât programul vostru să poată fi rulat de oriunde din sistem prin comanda ''mysum''. (Atenție! Vrem ca atât executabilele vechi cât și binarul ''mysum'' să poată fi rulate de oriunde.) |
- | 2. Modificați variabila ''PATH'' astfel încât programul vostru să poată fi rulat de oriunde din sistem prin | + | |
- | comanda ''sum''. (HINT: variabila ''PATH'') | + |