2012. nov. 2.

Alias


Azok a Linux felhasználók, akik már rendszeresen használják a terminált, bizonyos parancsok, műveletek elvégzéséhez, már ismerhetik az Alias-t. Akik azonban még csak barátkoznak a terminállal, azoknak elsőre egy TV-sorozat ugrik be. Pedig az Alias egy igen hasznos parancssori eszköz.

Miben tud nekünk segíteni az Alias?


Nos, amikor hosszabb parancsokat kell beírnunk a terminálba, akkor sokszor idegesítő lehet, ha egymás után többször kell valamit megismételni, vagy hosszan kell írogatni, egy egyébként egyszerű művelet végrehajtatásához. Ilyenkor lehet nagyon jó segítség számunkra az Alias. Ezzel a paranccsal saját egyedi parancsszót, vagy rövidítést adhatunk a terminál parancsoknak, vagy akár parancsok sorozatának is. A bemutató részben Debian alapú rendszerek csomagkezelő parancsai is szerepelnek, mivel én azt használom, de természetesen ez egyéb csomagkezelőkkel, és parancsokkal is működik. Ha szeretnénk egy rendszerfrissítést végrehajtani, ahhoz ezt kell begépelnünk:

sudo apt-get update && sudo apt-get upgrade

Viszont, ha létrehozunk egy aliast a parancsunknak:

alias sysupdate='sudo apt-get update && sudo apt-get upgrade'

akkor, ha ezek után beírjuk az "sysupdate"-szót a terminálba, a fent leírt parancs végrehajtásra kerül!

Ezzel még nem sokat könnyítettünk a dolgunkon, hiszen ez az aliasunk a munkamenet végével (azaz a terminálablak bezárásakor) el is veszik. Viszont van arra módunk, hogy "tartósítsuk" a gyakran használt aliasokat! Bizonyára mindenki hallott már a bash-scriptekről! Nincs más hátra írnunk kell egy bash-scriptet, amelyben az aliasaink fognak szerepelni. Mit kell ehhez tudnunk? 

Részlet a Bash Wikipedia bejegyzésből

A bash egy unix rendszerhéj, amely a GNU Projekt részeként készült. A futtatható fájl neve bash egy játékos mozaikszó, mely a Bourne again illetve a born again kifejezéseket rövidíti. Ez a korai Bourne shell-re utal, melyet még 1978-ban adtak ki a Unix 7 Verzió részeként. A bash-t 9 évvel ezt követően 1987-ben készítette el Brian Fox, majd 1990-ben Chet Ramey vette át a szoftver gondozását.
A legtöbb Linux rendszeren, valamint a Mac OS X rendszereken a bash az alapértelmezett shell. A Microsoft Windows platformra is átírták a Subsystem for UNIX-based Applications (SUA) használatával, vagy POSIX emuláció biztosításával a Cygwinnel, MSYS-szal.
A bash-t a GNU GPL licenc alatt publikálták, tehát szabad szoftver.

A Bash, mint minden a Linuxon, tárol a rendszerben valahol egy konfigurációs fájlt, amiben az általános beállításai, alapértelmezett funkciók szerepelnek. Ezt kiegészíthetjük saját parancsokkal, utasításokkal. Persze mint minden hasonló beavatkozáshoz, ehhez is root jogok szükségesek. De mielőtt nekiesnénk a bashrc-nek, előbb kicsit részletesebben nézzünk körül a saját mappánkban! Ha megnyitjuk a fájlkezelőt, és megjelenítjük a rejtett fájlokat, akkor láthatunk párat a saját mappánkban is. A legtöbb disztribúcióban első két rejtett fájl amit találunk a mappánkban, az a .bash_history, valamint a .bash_logout. A .bash_history funkcióját már a nevéből is könnyen kitalálhatjuk, ez a legutóbbi terminálparancsainkat rejti. A .bash_logout pedig a kijelentkezéskor "kipucolja" a bash-history-t azaz az előzményeket. Nos, ezek is bash-scriptek, amiket a parancsértelmező láthatatlanul a háttérben hajt végre. Tehát célszerű ide helyeznünk a mi kis alias-scriptünket. Ahhoz azonban, hogy ez végrehajtásra is kerüljön, valahogy tudatnunk kell a bash-sel, hogy hová tettük a scriptünket.

De hogyan tehetjük ezt meg? Minden Linux rendszeren található egy .bashrc-fájl, ami a Bash-nek az alap utasításait tartalmazza. Ennek tartalma disztribúciónként változhat. Nekem a LinuxMint alatt, az /etc/bash.bashrc -helyen található. Ezt ha root jogokkal megnyitjuk, majd a végére beillesztjük a következő sorokat:

if [ -f ~/.parancsaim ]; then
    . ~/.parancsaim
fi

Ezek után a bashrc, most így fog kinézni:

# System-wide .bashrc file for interactive bash(1) shells.

# To enable the settings / commands in this file for login shells as well,
# this file has to be sourced in /etc/profile.

# If not running interactively, don't do anything
[ -z "$PS1" ] && return

# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize

# 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

use_color=false

# Set colorful PS1 only on colorful terminals.
# dircolors --print-database uses its own built-in database
# instead of using /etc/DIR_COLORS.  Try to use the external file
# first to take advantage of user additions.  Use internal bash
# globbing instead of external grep binary.
safe_term=${TERM//[^[:alnum:]]/?}   # sanitize TERM
match_lhs=""
[[ -f ~/.dir_colors   ]] && match_lhs="${match_lhs}$(<~/.dir_colors)"
[[ -f /etc/DIR_COLORS ]] && match_lhs="${match_lhs}$(
[[ -z ${match_lhs}    ]] \
        && type -P dircolors >/dev/null \
        && match_lhs=$(dircolors --print-database)
[[ $'\n'${match_lhs} == *$'\n'"TERM "${safe_term}* ]] && use_color=true

if ${use_color} ; then
        # Enable colors for ls, etc.  Prefer ~/.dir_colors #64489
        if type -P dircolors >/dev/null ; then
                if [[ -f ~/.dir_colors ]] ; then
                        eval $(dircolors -b ~/.dir_colors)
                elif [[ -f /etc/DIR_COLORS ]] ; then
                        eval $(dircolors -b /etc/DIR_COLORS)
                fi
        fi

        if [[ ${EUID} == 0 ]] ; then

                PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\h\[\033[01;34m\] \W \$\[\033[00m\] '
        else
                PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\] '
        fi

        alias ls='ls --color=auto'

        alias grep='grep --colour=auto'
else
        if [[ ${EUID} == 0 ]] ; then
                # show root@ when we don't have colors
                PS1='\u@\h \W \$ '
        else
                PS1='\u@\h \w \$ '
        fi
fi

# Try to keep environment pollution down, EPA loves us.
unset use_color safe_term match_lhs

# Commented out, don't overwrite xterm -T "title" -n "icontitle" by default.
# If this is an xterm set the title to user@host:dir
#case "$TERM" in
#xterm*|rxvt*)
#    PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'
#    ;;
#*)
#    ;;
#esac

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi

# if the command-not-found package is installed, use it
if [ -x /usr/lib/command-not-found ]; then
function command_not_found_handle {
       # check because c-n-f could've been removed in the meantime
                if [ -x /usr/lib/command-not-found ]; then
  /usr/bin/python /usr/lib/command-not-found -- $1
                   return $?
else
  return 127
fi
}
fi

if [ -f ~/.parancsaim ]; then
    . ~/.parancsaim
fi

/usr/bin/mint-fortune

Miután ezt elvégeztük, mentsük el a bash.bashrc -t.

Mit is csináltunk most? Megmutattuk a bashrc -nek, hogy honnan "húzza" be az aliasainkat. Ha ezzel végeztünk, akkor hozzunk létre egy szöveges dokumentumot Gedit -ben, vagy egyéb egyszerű szövegszerkesztőben. Írjuk bele a leggyakrabban használt parancsaink aliasait. Segítségképp mellékelem a sajátomat:

## csomagkezelő parancsok
alias Ud='sudo apt-get update'
alias Ug='sudo apt-get upgrade'
alias removepkg='sudo apt-get autoremove'
alias UG='sudo apt-get update && sudo apt-get upgrade'

## fájlkezelő parancsok
alias NF='touch'

## azonnali bezárás
alias kill='killall'

## szövegszerkesztés
alias SZERK='sudo geany'
alias edit='geany'

## képernyőkép készítése a "-d 10" a képernyőkép készítésének késleltetési idejét jelenti másodpercekben
alias scrot10='scrot -d 10 /home/tom/scrot10.png'

## másik partíció felcsatolása
##alias msda1='sudo mount /dev/sda1  /home/tom/windows -t ntfs'

## telepítés pl: install inkscape
alias install='sudo apt-get install'
alias remove='sudo apt-get autoremove'
alias mindenamikell='sudo apt-get install agave blender inkscape geany gimp gnome-commander gparted k3b vlc'

## terminál képernyő törlése
alias clr='clear'


A fentiekből a következőket figyelhetjük meg

A BASH Scriptekben, és egyéb végrehajtható szöveges parancsfájlokban a kommenteket kettős kereszttel azaz a #-tel jelöljük. A # -tel kezdődő sorokat a rendszerünk figyelmen kívül hagyja.

A parancsaink végrehajtatásánál figyeljünk arra, hogy kis és nagybetűs szavakat is használhatunk, viszont ha egy nagybetűvel kezdődő parancsot adunk meg, akkor azt végrehajtatáskor is ugyanúgy kell leírnunk!

A fájl neve előtt szereplő pont azt jelenti, hogy ez egy rejtett fájl. Tehát, ahogy az Windowson is van, a Unix/Linux rendszereken is van lehetőségünk rejtett fájlokat, mappákat használni. Itt egy pont jelöli a fájl, vagy mappa neve előtt.

Miután létrehoztuk a szöveges fájlt, mentsük el a saját mappánkba, arra az útvonalra, amit a bashrc-nek előzőleg megadtunk. Kiterjesztést nem kell használnunk, csak nevet! Tehát a fájlunkat ne .parancsaim.txt-nek, vagy .parancsaim.rtf-nek nevezzük el, hanem csak egyszerűen .parancsaim -nak.

További szép napot, és rendszerösszeomlás mentes kísérletezést mindenkinek!

Forrás: Wikipedia

Nincsenek megjegyzések:

Megjegyzés küldése

DE-k WM-ek, satöbbi.. Mé útálom a Gnome-ot?

Mint az virtuális ismerőseim körében ismeretes, Openbox fan vagyok nagyon régóta. Mégsem ezt ajánlanám olyanoknak, akiknek nincs türelme/id...