Tip extremadament útil si fas servir la terminal (Unir comandament CD amb LS ... i molts més)

Sóc dels que fa servir gran part de el temps la terminal (consola, bash, shell, com vulguin cridar-li), Per X o I motius he d'estar constantment canviant de directori, treballant-hi 🙂

En la gran majoria dels casos, canvi de directori (Per exemple: cd / opt /) Ia més desig saber què es troba en aquest directori, per saber això segon faig ús de ls.

O sigui, seria així:

kzkggaara @ geass: ~ $ cd / opt /
kzkggaara @ geass: / opt / $
kzkggaara @ geass: / opt / $ ls
nessus

Moltes vegades ho he dit ... sóc bastant vague, m'agrada fer el mínim de passos a terminal, per això és que després de bastant experimentar, he aconseguit just el que volia.

Vegin el següent, que no és més que jo entrant a / Opt / amb el simple comandament cd / opt /:

Com poden veure, en un sol pas (cd / opt /) Entro a directori i MÉS em llista el contingut d'aquest directori, i ... per si fos poc, m'ho mostra amb colors 😀

Aquí l'exemple de jo accedint a / Etc / amb cd / etc/:


Els colors són simples d'entendre:

sense color = Arxius
color blau = Carpetes
color verd = Arxius amb permisos d'execució

Però, passem al principal ... ¿Com dimonis usant solament cd puc més automàticament llistar el directori a què accedeixo?

El nostre arxiu .bashrc (ubicat al nostre home o carpeta) Ens ajudarà a fer això, primer hem de declarar una funció, a la qual anomenarem CDLS:

function CDLS {cd «$ 1»; ls -color;}

Aquesta línia la posem en qualsevol costat del nostre .bashrc ... aquí els deixo la comanda per fer-ho:

echo "" >> $HOME/.bashrc && echo "function cdls { cd "$1"; ls --color;}" >> $HOME/.bashrc

NO necessàriament han de fer-ho amb aquesta comanda, l'objectiu és que l'arxiu .bashrc contingui aquesta línia, així que simplement editen aquest arxiu amb el seu editor de text preferit (Mousepad, kate, gedit, nano, vaig veure, etc) I la afegeixen.
Guarden el canvi, tanquen la terminal que tinguin oberta i obren una nova.

Hi escriurem el següent i pressionem [Entrar]:

cdls $HOME

Això ha de ser suficient per accedir a la nostra carpeta personal en aquesta terminal, ia més ens llistarà el contingut d'ella (amb colors i tot).

O sigui, que CDLS ja fa el que volem ... ara només ens queda aconseguir el mateix però amb cd

Per això, afegim a l'arxiu .bashrc la següent línia:

alias cd='cdls'

Això farà que quan escrivim cd ... en realitat s'executarà l'acció que definim per CDLS

Els deixo la comanda que posarà automàticament aquesta línia anterior:

echo "" >> $HOME/.bashrc && echo "alias cd='cdls'" >> $HOME/.bashrc

Però igual com els vaig dir abans, l'objectiu és afegir aquesta altra línia el mateix arxiu, poden utilitzar l'editor de text de la seva preferència per a això.

Un cop fet això, tanquin la terminal i obrin una nova ... en ella escriguin el següent i pressionin [Entrar]:

cd /etc/

I bingo, entraran a / etc/ Ia més se'ls llistarà el contingut d'aquesta carpeta, i amb colors 😉 (just com en una foto anterior)

A que és útil? 😀

Per als curiosos que es pregunten què significa aquesta funció? ... els deixo la simple explicació:

function CDLS = Aquí definim que estem creant una nova funció, i es dirà CDLS
cd «$ 1» = I aquesta funció el que farà (farà cada vegada que la truquem, usem o executem) serà fer un cd (entrar) cap al 1er paràmetre, és a dir ... - »« cd / home / », el« $ 1 »significa« el que escrivim després de cd », en aquest exemple el 1er paràmetre és« / home / ».
; = Això vol dir que aquí acaba aquesta ordre, o acció a executar ... però una funció pot tenir més accions a fer, i li definirem una segona ara.
ls -color; = Significa que a més de qualsevol acció declarada abans, també farà un «ls» on estiguem situats, i el «ls» ho farà amb color (-color).

Ultima cosa ... els més llestos, s'adonaran que aquesta lògica (prendre una funció i configurar-la perquè executi diverses accions) té molt però molt potencial, per exemple ... si vull entrar a una carpeta, ia més esborrar una altra, és a dir, vull entrar a / home / ia més esborrar / Opt / temp / la funció per a això seria:

function asdasd { cd "$1"; rm -Rv "$2"; }

I escrivint en una terminal asdasd / home / / opt / test / ho faria, perquè entrarà a l'1er paràmetre (/ home /) I esborrarà el segon (/ Opt / temp /).

En fi, de debò això té MOLT potencial jeje, queda per part de vostès aprofitar el més que puguin.

Si tenen algun dubte o pregunta, queixa o suggeriment amb molt de gust els dono un cop mà, no sóc ni de lluny un expert però al menys m'agrada ajudar 😀

Salutacions


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   blablabla va dir

    I tot això per no usar zsh.

    1.    KZKG ^ Gaara va dir

      En realitat no el coneixia 😉
      Gràcies per la dada, el trobaré un ull.

      No obstant això, el coneixement no ocupa lloc ... com més tips i coneixements XNUMX:XNUMX aconsegueixi adquirir, serà millor no ho creus? 🙂

      1.    MSX va dir

        Zsh és de mariques, els homes usen sh !!! >: D

        en realitats

        1.    KZKG ^ Gaara va dir

          Hahaha no no no ... no ho crec, i tampoc ho diguis així, perquè es podrien sentir alguns ofesos.
          Cadascú fa servir el que més li convé, el que més li agrada 😀

          1.    MSX va dir

            ;)

            Una app que ús molt per navegar per meu sistema és Autojump:
            https://github.com/joelthelion/autojump/blob/master/README.md

        2.    blablabla va dir

          Els homes són pràctics, les dones i els maricas són a qui els agrada complicar-se la vida. No cal donar més aclariments.

          1.    KZKG ^ Gaara va dir

            Si us plau, intentar no fer comentaris sobre preferències sexuals si? ... han hagut situacions incòmodes per aquest tipus de coses.

            Espero s'entengui.

          2.    blablabla va dir

            Aquesta aclariment hauria de ser per @msx. les idees es construeixen amb asseveracions verídiques, objectives i racionals, no amb insults o grolleries.

            1.    KZKG ^ Gaara va dir

              En el comentari meu de més amunt li vaig dir que no digués aquestes coses (valgui la redundància).
              I ara ho torno a dir sí, però no dirigit a tu només en específic, és vàlid per a tots i totes.

              No t'ho prenguis a malament, la intenció no era fer sentir a ningú incòmode o malament, només intento evitar malentès 🙂


          3.    Martin va dir

            Hahaha, acabat veig aquest comentari!

            «Aquesta aclariment hauria de ser per a @msx. les idees es construeixen amb asseveracions verídiques, objectives i racionals, no amb insults o grolleries. »
            Dejá de desayunarte amb llimones man que ja estàs ben igual a Franklin en el bitllet d'o $ s100: http://www.watchingamerica.com/frankfurterallgemeine000009.shtml

            ????

        3.    abel va dir

          ¿Zsh és de mariques ?, bo crec que m'agrada ser marica llavors per que des que va aprendre a usar-lo no ho he deixat ni penso fer-ho. o_____o

          ¿Els homes usen sh ?, és estrany aquest comentari venint d'algú que té el bashrc ple de coses, així que suposaré que ets dona. xP

          1.    KZKG ^ Gaara va dir

            A això és al que no volia arribar. Si us plau, deixem aquí la baralla si? 🙂
            Cadascú fa servir el que vulgui ... sh, zsh, o el que vulgui, i més ... cadascú té les preferències sexuals que vulgueu tenir, ja han hagut baralles aquí per coses així 🙁

          2.    MSX va dir

            jajaja xD

            Darrerament va evolucionar molt zsh, ni bé tingui temps -ja, que il·lús! - vaig a llegir tant com pugui de la seva documentació per treure-li profit i faig el cambiazo 🙂

            Ara parlant seriosament: l'única cosa que em fot una miqueta de zsh és que no és 100% compatible amb Bash, llavors si fem servir zsh al nostre scripts traient-li tot el seu potencial, és molt però molt possible que aquest script falli en bash, d'altra banda, si encara usem zsh escrivim els nostres shell scripts en bash és un malbaratament estar usant zsh ... o_O

            Així i tot crec que zsh val la pena. Parlant de shell, coneixen Fish? El projecte va ressorgir de les seves cendres, ara es diu fishfish i ho estan desenvolupant molt ràpid.

    2.    hackloper775 va dir

      Jo penso que s'ha d'escriure zsh ja que la terminal és molt sensible amb les minúscules i majúscules

      Encara que també es val cd && ls / ruta

      Encara que és mes llarg d'escriure

      Salutacions 😀

      1.    hackloper775 va dir

        M'equivoqui se me'n va anar el dit

        Vaig posar que amb això es llista i s'accedeix a un directori

        cd && ls / ruta

        però només es llista

        encara que per només llistar s'usa

        ls / ruta

        la comanda que és l'equivalent és

        cd / ruta && ls

        Salutacions

        1.    KZKG ^ Gaara va dir

          En efecte, usant && s'aconsegueix el mateix 😀
          L'única diferència és que «cd / opt / && ls» té 6 caràcters més que simplement «cd / opt /», és a dir, hauria de pressionar 6 tecles més ^ - ^ U ... sóc una mica gandul per a coses així de simple jeje.

          És per això que vaig unir el cd + ls ... LOL !!

          1.    hackloper775 va dir

            El que també ús és que filtre els resultats per extensions.

            Exemple

            Tinc molts arxius en ~ / Descàrregues mes de 100 i només vull veure els .png per fer això faig

            cd Descàrregues && ls * png

            ¿Que hauria d'afegir o fer per filtrar els resultats en un codi més simple?

            Salutacions

            1.    KZKG ^ Gaara va dir

              simple 😉
              Crees una funció que sigui per exemple, cdlsf:
              function cdlsf { cd "$1"; ls *.$2; }

              Per usar-la seria:
              cdlsf / opt / png

              I això et llistarà només els arxius .png en / Opt /
              O sigui, el 1er paràmetre (en l'exemple / Opt /) Seria el directori a què vols accedir, i el 2n paràmetre (en l'exemple png) Seria l'extensió que vols filtrar quan llistes directori.

              Un altre exemple, si vols entrar a / home / usuari / Pictures i veure només els arxius que siguin .JPG, seria:
              cdlsf / home / usuari / Pictures jpg

              ????

              Això era el que volies no?

              PD: Poso cdlsf per cd (entrar) ls (llistar) f (filtrar) ... però la funció òbviament la pots anomenar com vulguis.


    3.    ever va dir

      zsh no és POSIX, ia sobre triga mes a iniciar, així que prefereixo ser marica, però més eficient

      1.    blablabla va dir

        Primer, en zsh es pot activar compatibilitat amb POSIX. Segon, triga a iniciar d'acord a totes les funcions carregui a l'inici, llavors pot ser tan lleuger com un vulgui. Tercer, amb zsh un és més pràctic i eficient que amb qualsevol altre shell. Quart, utilitzeu-lo abans de criticar.

        1.    MSX va dir

          5to. Quan pots activar la compatibilitat POSIX deixa de tenir sentit utilitzar zsh.

          El vaig estar usant una estona, no val la pena, sh es curt i Bash és perfecte, no hi ha res que no puguis fer en Bash amb els àlies i funcions adequades.

  2.   Marco va dir

    m'agrada molt el tema. de fet, haurien de crear algun article més extens sobre les ordres que es poden utilitzar en general a la terminal, i en distros específiques, com Chakra.

  3.   Ridal va dir

    M'ha semblat molt interessant ja que a part d'ensenyar aquest truquillo, has explicat com funciona cada comanda.

    Us porto seguint des que vaig començar en el món linux (no fa gaire ...) i m'he animat a comentar només per felicitar-te per l'article 😉

    1.    KZKG ^ Gaara va dir

      Gràcies a tu per passar-te i deixar-nos el comentari 😀
      Sempre que m'aventuro a explicar alguna cosa, m'agrada deixar-ho tan clar com sigui possible ... doncs, jo sé molt bé el que és llegir tutorials a internet i no entendre res de res jajaja.

      Benvingut doblement ... benvingut a el món de l'Tux jaja, ia més benvingut a l'bloc 🙂
      Si tens algun dubte ja saps, ens deixes saber jeje.

      Salutació i gràcies pel comentari ^ ⁻ ^

  4.   Iván va dir

    Acabo de llegir la teva entrada des d'un altre lloc web, i no he pogut resistir-me:

    No seria més fàcilment, simplement crear dins de l'.bashrc un àlies?

    àlies cd = 'ls'

    1.    KZKG ^ Gaara va dir

      En realitat el que intento aconseguir és entrar a un directori X (/ opt / ... / home / usuari / ... el que sigui) ia més quan entri en ell, automàticament em llisti el contingut d'aquest directori.

      Que sigui tot amb 1 sol pas o comandament.

      Fent un àlies com indiques, llavors em llistaria directori sí, però no entraria en ell.

      1.    Iván va dir

        Pel que entenc, l'objectiu de realitzar tot això, és que si vols ara entrar a «/ etc» per mitjà de la comanda «cd», a l'entrar, automàticament et mostri el contingut d'aquest directori, cert?

        Si és així, pots simplificar la funció en un «àlies», on dins de l'.bashrc col·loques:

        àlies cd = »ls»

        Amb això, quan en una terminal utilitzis:

        cd / etc

        Entressis a directori «/ etc» i a més automàticament et llistés tots els arxius i directoris que estiguin aquí dins.

        Si vaig entendre malament l'objectiu, una disculpa 😛

        1.    KZKG ^ Gaara va dir

          En efecte, vull entrar a un directori i un cop a dins que llisti el que contingui.
          Vaig intentar el que dius, declarant que cd = ls mitjançant un àlies, però no em va resultar.
          El configurar així mateix, i després faig:
          cd / etc /

          Però em llista / etc / ... mes no entra a aquest directori.
          Deixo un screenshot perquè vegis: http://img204.imageshack.us/img204/5272/cdlserror.png

          1.    Iván va dir

            El meu error 😀

            Era obvi que no anava a funcionar d'aquesta manera, i tot i que intenti amb un:

            àlies CDLS = 'cd $ 1; ls'

            Per alguna estranya raó no funciona, simplement llista directori però no entra al D:

            Bash error? xD

            Una disculpa pels comentaris sense sentit! 😀 I em porto la funció per a la meva bashrc 😛

            1.    KZKG ^ Gaara va dir

              És que un àlies no és el mateix que una funció, un àlies si vols que sigui igual a diversos comandaments, has de obligatòriament utilitzar && ... no és com a les funcions, que usant; i escrivint més instruccions et resultarà.

              Haha nah per a res amic, res a disculpar 😀
              Salutacions

              PD: ... fotre ... que nostàlgia m'entra quan veig el logotip d'Arch .... T_T ...


          2.    Iván va dir

            Es que no és el mateix però em imagini que funcionària (Error: P)

            Només que al meu si em funciona el utilitzar «;» en lloc de «&&» dins d'un àlies D: (Tinc dos àlies així, el que no entenc és per que no funciona amb l'àlies que vaig voler crear per a aquest cas)

            Gràcies i per cert, crec que em quedés al bloc sota el títol de «lector freqüent» 😀 Em va agradar molt el contingut de l'bloc 😛

            Oooh si ho es, jo em separo de vegades del meu estimat Arch però, no es perquè, sempre m'és impossible no tornar a l'xD

            Salutacions!

            1.    KZKG ^ Gaara va dir

              Bé ... Tux és misteriós, fa les coses i moltes vegades no li entenem, però té un pla o propòsit per a tots ... JAJA 😀

              Un plaer llegir el que dius, un altre usuari més d'Arch que se suma a l'bloc jajajaja ... tot un plaer 😀

              Jo el vaig haver de deixar d'usar per problemes raríssims que em donava el nucli ... però encara ocupa un lloc en el meu cor 🙁


          3.    Iván va dir

            jajajaja

            No he conegut usuari d'Arch que no li prengui un gran afecte a la distribució, té un «no sé què, que que es jo»: P, igual i si els problemes que et donava van ser fa temps podries pensar en tornar a Arch 😀

            Per cert, jo sabia que en algun altre lloc ja havia llegit el teu nom (bé, nick, pseudònim, sobrenom, whatever), ets part dels redactors de arteescritorio, no? 🙂
            Solia llegir-los 🙂

  5.   Hugo va dir

    En realitat per llistar el contingut d'un directori no cal entrar al, de manera que no crec que l'exemple que has escollit sigui el més feliç, jeje. Dit això, les funcions sí que es poden fer servir per a moltes coses útils.

    Per exemple, jo faig servir aquesta funció per crear un directori i entrar en l'immediatament (validant que s'utilitzi només un paràmetre):

    function mkcd () {
    FNERR="Parametros incorrectos.\nUso: mkcd "
    if [ $# -eq 1 ] ; then
    mkdir -p "$1" && cd "$1"
    else
    echo -e $FNERR
    fi
    }

    1.    Hugo va dir

      Hmmm ... el bloc es va menjar part de la comanda, intentaré posar la línia incompleta amb etiquetes HTML:

      FNERR="Parametros incorrectos.\nUso: mkcd <nombre del directorio a crear>"

    2.    KZKG ^ Gaara va dir

      El que volia aconseguir era estalviar-me un pas.
      O sigui, suposem que vull entrar a un directori (/ etc / squid /) per llavors editar un arxiu en aquest directori, i no recordo el nom de l'arxiu.

      Els passos normalment serien:
      cd / etc / squid /
      ls
      nano arxiu.conf

      Però, amb aquest tip que proposo, em converteix els 2 primers passos en 1 sol, de manera que simplement fent:
      cd / etc / squid /

      Automàticament em llistarà també el contingut de directori.
      Es tracta simplement d'estalviar-nos un pas 😀

      M'entens?

      ... és que em costa explicar-me jaja.

      1.    Hugo va dir

        No, l'explicació no tenia cap problema, em referia al fet que potser l'exemple que vas escollir per il·lustrar el tip no va ser l'ideal, atès que un pot fer un simple «ls directori».

        En realitat quant vaig veure la funció vaig entendre el propòsit. Jo també ús diverses funcions en el meu .bash_aliases, Per exemple, aquesta és una que ús bastant per gestionar l'historial:

        h () {
        if [ $# -eq 0 ] ; then
        history | tail -n 25 | less
        elif [ $# -eq 1 ] ; then
        history | egrep -i "$1" | less
        else
        echo -e "Parametros incorrectos."
        fi
        }

        (Amb aquesta funció, si només poso h em surten els últims 25 ordres, però si per exemple poso h mount em surten els últims comandaments relacionats amb muntatges).

        1.    KZKG ^ Gaara va dir

          Em guardo la vostra funció jejeje ... mereix estudiar-la 😀

        2.    anibal va dir

          genial la teva funció! gràcies

        3.    MSX va dir

          +1

  6.   hackloper775 va dir

    KZKG ^ Gaara

    Molt bona resposta em va servir molt bé, ja no vaig poder respondre institutriu dalt

    Ara usés cdlsf per augmentar la meva productivitat, molt bon nom per una ordre 😀

    Salutacions

  7.   Cristòfor Castro va dir

    Com li fas per posar-li l'hora a la terminal, ja ho havia fet jo abans era un bashrc que descarregui però no recordo com es deia.

  8.   abel va dir

    Bona entrada, no coneixia el truc, el pondre en practica a veure que tal. xP

    Salutacions.

    1.    abel va dir

      Seria bo que el meu navegador fora agregat. xD

      Salutacions, de nou. xD

      1.    KZKG ^ Gaara va dir

        Quin navegador utilitzes?
        Doncs en un altre comentari vaig veure que feies servir Firefox 🙂

        1.    abel va dir

          Si, ús Firefox però cada vegada és menys i aquesta deixant de ser el meu navegador principal, estic fent servir DWB i seria bo que pogués ser agregat. xP

          Salutacions.

  9.   Guillermo va dir

    I fer aquest àlies no donarà problemes en scripts a l'intentar fer cd simplement i donar adeams la sortida de ls? jo particularment prefereixo fer àlies amb noms que no facin servir altres executables, perquè no és la primera vegada que em dóna problemes ...

  10.   irigol va dir

    Com aconsegueixes les línies discontínues i l'hora després de cada comanda?

  11.   MSX va dir

    El meu aportació:
    àlies ldir = 'ls | grep -v \\. ' ## llista només els directoris (ull, no ho renom a ld ja que hi ha comanda de GNU / Linux amb aquest nom)
    -
    àlies ll = 'ls -lah -color | awk '\ »{k = 0; for (i = 0; i <= 8; i ++) k + = ((substr ($ 1, i + 2,1) ~ / [rwx] /) * 2 ^ (8-i )); if (k) printf ( "% 0o", k); print} '\' ''

    L'interessant d'aquest àlies és el awk que parseja la sortida de l'ls, resultat? Mostra els permisos d'arxius en format octal a la banda de rwx, per a mi infinitament més pràctic i ràpid que les lletres.

    -
    àlies lg = 'ls -lah -color | awk '\' '{k = 0; for (i = 0; i <= 8; i ++) k + = ((substr ($ 1, i + 2,1) ~ / [rwx] /) * 2 ^ (8- i)); if (k) printf ( "% 0o", k); print} '\' '| grep -i'

    Variant de l'àlies de dalt. Li vaig agregar XNUMX grep a al final perquè d'aquesta forma quan faci per exemple:
    $ Lg zip
    Em mostri només els arxius que contingui zip en qualsevol de les seves formes (notin l'-i de la fin) a més dels permisos octals, etc.
    -
    àlies grep = 'grep -color = auto' ## acoloreix el matcheo de grep
    -

    Tinc molts més per compartir però es em fa atapeït aquest petit lloc xD

    @KZKG, Staff: els sembla obrir un post al blog o al fòrum (a què linkeemos cada vegada que es publica algun tip relacionat a la consola) per anar ajuntant totes aquestes perletes?

    Salutacions!

    1.    KZKG ^ Gaara va dir

      Amb el de link et refereixes a aquest? - » https://blog.desdelinux.net/tag/bash

  12.   MSX va dir

    No vaig dir res, no cal res de la resta, està tot perfectament taggeado!

  13.   Franklin Rodríguez va dir

    Que chilero, molt bona funció aquesta!