Suggerimento estremamente utile se si utilizza il terminale (comando Join CD con LS ... e molti altri)

Sono uno di quelli che impiega molto tempo terminale (console, bash, shell, come vuoi chiamarlo), per ragioni X o Y devo cambiare costantemente directory, lavorandoci 🙂

Nella stragrande maggioranza dei casi, il cambio di directory (Ad esempio: cd / opt /) e voglio anche sapere cosa c'è in quella directory, per sapere questo secondo che uso ls.

Cioè, sarebbe così:

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

L'ho detto molte volte ... sono abbastanza pigro, mi piace fare il minor numero di passaggi nel terminale, ecco perché dopo molti esperimenti ho ottenuto proprio quello che volevo.

Vedi quanto segue, che non è altro che il mio inserimento / optare / con il semplice comando cd / opt /:

Come puoi vedere, in un passaggio (cd / opt /) Entro nella directory e INOLTRE elenca il contenuto di quella directory, e ... come se non bastasse me lo mostra a colori 😀

Ecco l'esempio di me che accedo /eccetera/ con cd / ecc/:


I colori sono semplici da capire:

Incolore = File
Colore blu = Cartelle
Colore verde = File con autorizzazioni di esecuzione

Ma passiamo al principale ... Come diavolo posso usare anche solo cd per elencare automaticamente la directory a cui accedo?

Il nostro archivio .bashrc (che si trova nella nostra cartella home o personale) ci aiuterà a farlo, dobbiamo prima dichiarare una funzione, che chiameremo cdl:

funzione cdls {cd "$ 1"; ls –color;}

Mettiamo questa linea su entrambi i lati del nostro file .bashrc ... ecco il comando per farlo:

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

NON devi necessariamente farlo con questo comando, l'obiettivo è che il file .bashrc contiene questa riga, quindi modifica questo file con il tuo editor di testo preferito (tappetino per mouse, kate, gedit, nano, vi, ecc) e aggiungilo.
Salvano la modifica, chiudono il terminale che hanno aperto e ne aprono uno nuovo.

In esso scriveremo quanto segue e premeremo [Accedere]:

cdls $HOME

Questo dovrebbe essere sufficiente per accedere alla nostra cartella personale in quel terminale e ne elencherà anche il contenuto (con i colori e tutto il resto).

Voglio dire, cosa cdl fa già quello che vogliamo ... ora possiamo solo ottenere lo stesso, ma con cd

Per questo, aggiungiamo nel file .bashrc la riga seguente:

alias cd='cdls'

Questo lo farà quando scriviamo cd … L'azione che definiamo verrà effettivamente eseguita per cdl

Vi lascio il comando che inserirà automaticamente questa riga precedente:

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

Ma proprio come ho detto prima, l'obiettivo è aggiungere quest'altra riga allo stesso file, puoi usare l'editor di testo di tua scelta per questo.

Fatto ciò, chiudi il terminale e aprine uno nuovo ... in esso scrivi quanto segue e premi [Accedere]:

cd /etc/

E il bingo, entreranno / Etc/ e verrà elencato anche il contenuto di questa cartella, e con i colori 😉 (proprio come in una foto precedente)

A cosa serve? 😀

Per i curiosi che si chiedono cosa significa questa funzione? ... vi lascio la semplice spiegazione:

funzione cdls = Qui definiamo che stiamo creando una nuova funzione e sarà chiamata cdls
cd "$ 1" = E ciò che questa funzione farà (farà ogni volta che la chiamiamo, la usiamo o la eseguiamo) è fare un cd (invio) verso il 1 ° parametro, cioè ... - »« cd / home / », il« $ 1 »significa« quello che scriviamo dopo cd ", in questo esempio il primo parametro è" / home / ".
; = Questo significa che quell'ordine finisce qui, o azione da eseguire ... ma una funzione può avere più azioni da fare, e ora ne definiremo una seconda.
ls –colore; = Significa che oltre a qualsiasi azione dichiarata prima, creerà anche una "ls" dove ci troviamo, e la "ls" lo farà con color (–color).

Ultima cosa ... i più intelligenti, si renderanno conto che questa logica (prendere una funzione e configurarla per eseguire più azioni) ha molto, molto potenziale, per esempio ... se voglio entrare in una cartella, e anche eliminare un altro, cioè, voglio entrare in /casa/ e anche eliminare / opt / temp / la funzione per questo sarebbe:

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

E digitando in un terminale asdasd / home / / opt / test / lo sarebbe, perché entrerà nel 1 ° parametro (/casa/) ed eliminare il secondo (/ opt / temp /).

Ad ogni modo, questo ha davvero un SACCO di potenziale hehe, sta a te approfittarne il più possibile.

Se hai dubbi o domande, reclami o suggerimenti, ti aiuterò volentieri, non sono di gran lunga un esperto ma almeno mi piace aiutare

saluti


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   blablabla suddetto

    E tutto questo per non usare Zsh.

    1.    KZKG ^ Gaara suddetto

      Non lo conoscevo davvero 😉
      Grazie per il suggerimento, lo terrò d'occhio.

      Tuttavia, la conoscenza non avviene ... più suggerimenti e conoscenze si riesce ad acquisire, meglio è, non credi? 🙂

      1.    msx suddetto

        Zsh è per i queer, gli uomini usano sh !!! >: D

        In realtà

        1.    KZKG ^ Gaara suddetto

          HAHAHA no no no ... Non credo, e non dico nemmeno così, perché qualcuno potrebbe essere offeso.
          Ognuno usa ciò che gli si addice meglio, ciò che gli piace di più 😀

          1.    msx suddetto

            😉

            Un'app che uso molto per navigare nel mio sistema è Autojump:
            https://github.com/joelthelion/autojump/blob/master/README.md

        2.    blablabla suddetto

          Gli uomini sono pratici, le donne e i queer sono quelli a cui piace complicarsi la vita. Non sono necessari ulteriori chiarimenti.

          1.    KZKG ^ Gaara suddetto

            Per favore, cerca di non commentare le preferenze sessuali, sì? ... Ci sono state situazioni scomode per questo genere di cose.

            Spero sia comprensibile.

          2.    blablabla suddetto

            Questo chiarimento dovrebbe essere per @msx. Le idee sono costruite con dichiarazioni veritiere, obiettive e razionali, non insulti o maleducazione.

            1.    KZKG ^ Gaara suddetto

              Nel mio commento sopra gli ho detto di non dire quelle cose (perdona la ridondanza).
              E ora dico di nuovo di sì, ma non rivolto a te solo specificamente, è valido per tutti.

              Non prenderla nel modo sbagliato, l'intenzione non era quella di far sentire nessuno a disagio o male, sto solo cercando di evitare malintesi 🙂


          3.    martyn suddetto

            Hahaha, ho appena visto questo commento!

            «Quel chiarimento dovrebbe essere per @msx. Le idee sono costruite con affermazioni veritiere, oggettive e razionali, non con insulti o maleducazione ".
            Smettila di fare colazione con i limoni, sembri già Franklin sul conto da $ 100: http://www.watchingamerica.com/frankfurterallgemeine000009.shtml

            😀

        3.    Abel suddetto

          È queer zsh? Beh penso che mi piace essere un queer allora perché da quando ho imparato a usarlo non mi sono fermato e non penso di farlo. o_____o

          Gli uomini usano sh?, Quel commento è strano proveniente da qualcuno che ha una bashrc piena di cose, quindi presumo che tu sia una donna. xP

          1.    KZKG ^ Gaara suddetto

            Questo è quello che non volevo arrivare. Per favore, lasciamo qui la battaglia, sì? 🙂
            Tutti usano quello che vogliono ... sh, zsh o quello che vogliono, e anche ... ognuno ha le preferenze sessuali che vogliono avere, ci sono già stati litigi qui per cose del genere 🙁

          2.    msx suddetto

            ahahah xD

            Ultimamente zsh si è evoluto molto, non appena avrò tempo -ha, che delusione! - Leggerò il più possibile della sua documentazione per trarne vantaggio e apportare il cambiamento

            Ora parlando seriamente: l'unica cosa che mi infastidisce un po 'di zsh è che non è compatibile al 100% con Bash, quindi se usiamo zsh nei nostri script sfruttando tutto il suo potenziale, è molto, molto possibile che detto script fallisca in bash, d'altra parte D'altra parte, anche se usiamo zsh scriviamo i nostri script di shell in bash, è uno spreco usare zsh ...

            Anche così, penso che ne valga la pena. A proposito di conchiglie, conosci Fish? Il progetto è nato dalle ceneri, ora si chiama fishfish e lo stanno sviluppando molto velocemente.

    2.    hacker775 suddetto

      Penso che zsh dovrebbe essere scritto poiché il terminale è molto sensibile al maiuscolo / minuscolo

      Sebbene sia valido anche cd && ls / route

      Anche se è più lungo scrivere

      Saluti 😀

      1.    hacker775 suddetto

        Mi sbagliavo, il mio dito è andato via

        Ho messo che con questo è elencato e si accede a una directory

        cd && ls / percorso

        ma preparati

        anche se solo per elencarlo viene utilizzato

        ls / percorso

        il comando che è l'equivalente è

        cd / percorso && ls

        saluti

        1.    KZKG ^ Gaara suddetto

          In effetti, usando && si ottiene lo stesso 😀
          L'unica differenza è che "cd / opt / && ls" ha 6 caratteri in più rispetto a "cd / opt /", cioè dovrei premere altri 6 tasti ^ - ^ U ... sono un po 'pigro per cose del genere hehe.

          Ecco perché mi sono iscritto al cd + ls… LOL !!

          1.    hacker775 suddetto

            Quello che uso anche è che filtro i risultati per estensioni.

            Ejemplo

            Ho molti file in ~ / Download più di 100 e voglio solo vedere il .png per farlo.

            cd Download && ls * png

            Cosa dovrei aggiungere o fare per filtrare i risultati in un codice più semplice?

            saluti

            1.    KZKG ^ Gaara suddetto

              Semplice 😉
              Crei una funzione che è ad esempio, cdlf:
              function cdlsf { cd "$1"; ls *.$2; }

              Per usarlo sarebbe:
              cdlsf / opt / png

              E questo ti elencherà solo i file .png en / optare /
              Cioè, il primo parametro (nell'esempio / optare /) sarebbe la directory a cui si desidera accedere e il secondo parametro (nell'esempio png) sarebbe l'estensione che desideri filtrare quando elenchi la directory.

              Un altro esempio, se vuoi andare su / home / user / Pictures e vedere solo i file che sono .JPG, sarebbe:
              cdlsf / home / utente / Immagini jpg

              😀

              Questo era quello che volevi, vero?

              PS: metto cdlsf con cd (invio) ls (lista) f (filtro) ... ma ovviamente puoi chiamare la funzione come vuoi.


    3.    mai suddetto

      zsh non è POSIX, e per completare il tutto ci vuole più tempo per iniziare, quindi preferisco essere frocio, ma più efficiente

      1.    blablabla suddetto

        Innanzitutto, in zsh puoi abilitare il supporto POSIX. Secondo, ci vuole tempo per iniziare in base a quante funzioni si caricano all'inizio, quindi può essere leggero quanto si desidera. Terzo, con zsh uno è più pratico ed efficiente che con qualsiasi altra shell. Quarto, usalo prima di criticare.

        1.    msx suddetto

          5 °. Quando abiliti il ​​supporto POSIX, non ha senso usare ZSH.

          Lo uso da un po ', non ne vale la pena, sh è breve e Bash è perfetto, non c'è niente che non si possa fare in Bash con gli alias e le funzioni appropriati.

  2.   Marco suddetto

    Mi piace molto il soggetto. infatti, dovrebbero creare qualche articolo più ampio sui comandi che possono essere usati in generale nel terminale, e in distro specifiche, come Chakra.

  3.   Cavaliere suddetto

    L'ho trovato molto interessante poiché oltre a insegnare questo trucco, hai spiegato come funziona ogni comando.

    Ti seguo da quando ho iniziato nel mondo Linux (non molto tempo fa ...) e sono stato incoraggiato a commentare solo per congratularmi con te per l'articolo 😉

    1.    KZKG ^ Gaara suddetto

      Grazie per essere passato e averci lasciato il commento 😀
      Ogni volta che mi azzardo a spiegare qualcosa, mi piace che sia il più chiaro possibile ... beh, so benissimo cosa vuol dire leggere tutorial su internet e non capire niente ahahah.

      Benvenuto due volte ... benvenuto nel mondo di Tux haha, e benvenuto anche nel blog 🙂
      Se hai domande, lo sai, faccelo sapere hehe.

      Saluti e grazie per il commento ^ ⁻ ^

  4.   Ivan suddetto

    Ho appena letto il tuo post da un altro sito web e non ho potuto resistere:

    Non sarebbe più semplice, basta creare un alias all'interno del .bashrc?

    alias cd = 'ls'

    1.    KZKG ^ Gaara suddetto

      In realtà quello che sto cercando di ottenere è entrare in una directory X (/ opt /… / home / user /… qualunque) e anche quando la inserisco, elenca automaticamente il contenuto di quella directory.

      Crea tutto con 1 singolo passaggio o comando.

      Creando uno pseudonimo come da te indicato, elencherei la directory, sì, ma non la inserirò.

      1.    Ivan suddetto

        Da quello che ho capito, l'obiettivo di fare tutto questo è che se vuoi, ad esempio, inserire "/ etc" tramite il comando "cd", entrando ti mostrerà automaticamente il contenuto di quella directory, giusto?

        In tal caso, puoi semplificare la funzione in un "alias", dove all'interno del .bashrc inserisci:

        alias cd = »ls»

        Con questo, quando in un terminale usi:

        cd / ecc

        Entrerai nella directory «/ etc» e inoltre elencherà automaticamente tutti i file e le directory presenti.

        Se ho frainteso l'obiettivo, mi scuso 😛

        1.    KZKG ^ Gaara suddetto

          In effetti, voglio entrare in una directory e una volta dentro, elencare cosa contiene.
          Ho provato quello che dici, dichiarando che cd = ls mediante alias, ma non ha funzionato per me.
          Lo configuro da solo e poi faccio:
          cd / etc /

          Ma elenca / etc / ... ma non va in quella directory.
          Lascio uno screenshot così puoi vedere: http://img204.imageshack.us/img204/5272/cdlserror.png

          1.    Ivan suddetto

            Errore mio 😀

            Era ovvio che non avrebbe funzionato in quel modo, e anche quando ho provato a:

            alias cdls = 'cd $ 1; ls'

            Per qualche strano motivo non funziona, elenca solo la directory ma non va nella D:

            Errore di Bash? xD

            Scusa per i commenti inutili! 😀 E prendo la funzione per il mio bashrc 😛

            1.    KZKG ^ Gaara suddetto

              Un alias non è la stessa cosa di una funzione, un alias se vuoi che sia uguale a più comandi, devi usare && ... non è come nelle funzioni, quello che usa; e scrivere più istruzioni funzionerà per te.

              HAHA nah per niente amico, niente da scusare 😀
              saluti

              PS: ... dannazione ... che nostalgia mi viene quando vedo il logo di Arch ... T_T ...


          2.    Ivan suddetto

            So che non è la stessa cosa ma ho pensato che avrebbe funzionato (Errore: P)

            Solo che usando «;» funziona per me. invece di "&&" all'interno di un alias D: (ho due alias come questo, quello che non capisco è perché non funziona con l'alias che volevo creare per questo caso)

            Grazie ea proposito, penso che rimarrò sul blog con il titolo di "lettore frequente" 😀 Mi è piaciuto molto il contenuto del blog 😛

            oooh si lo so, a volte mi separo dal mio caro Arch ma, non so perché, mi è sempre impossibile non tornare da lui xD

            Saluti!

            1.    KZKG ^ Gaara suddetto

              Beh ... Tux è misterioso, fa cose e molte volte non lo capiamo, ma ha un piano o uno scopo per tutti ... HAHA 😀

              Un piacere leggere quello che dici, un altro utente di Arch che si unisce al blog hahahaha ... un piacere 😀

              Ho dovuto smettere di usarlo a causa di strani problemi che il kernel mi ha dato ... ma occupa ancora un posto nel mio cuore 🙁


          3.    Ivan suddetto

            LOL

            Non ho incontrato un utente di Arch che non prenda un grande affetto per la distribuzione, ha un "non so cosa, cosa so": P, forse e se i problemi che ti ho dato erano molto tempo fa, tu potrebbe pensare di tornare ad Arch 😀

            A proposito, sapevo che in qualche altro posto avevo già letto il tuo nome (beh, nick, pseudonimo, soprannome, qualunque cosa), fai parte degli scrittori di desktop art, giusto? 🙂
            Leggevo loro 🙂

  5.   Hugo suddetto

    In realtà per elencare il contenuto di una directory non è necessario inserirlo, quindi non credo che l'esempio che hai scelto sia il più felice, hehe. Detto questo, le funzioni possono essere utilizzate per molte cose utili.

    Ad esempio, utilizzo questa funzione per creare una directory e inserirla immediatamente (convalidando che viene utilizzato un solo parametro):

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

    1.    Hugo suddetto

      Hmmm ... il blog ha mangiato parte del comando, proverò a mettere la riga incompleta con i tag HTML:

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

    2.    KZKG ^ Gaara suddetto

      Quello che volevo ottenere era salvare un passaggio.
      In altre parole, supponiamo che io voglia entrare in una directory (/ etc / squid /) e quindi modificare un file in quella directory, e non ricordo il nome del file.

      I passaggi normalmente sarebbero:
      cd / etc / squid /
      ls
      file nano.conf

      Ma, con questo suggerimento che propongo, converto solo i primi 2 passaggi in 1, così che semplicemente facendo:
      cd / etc / squid /

      Elencherà automaticamente anche il contenuto della directory per me.
      Si tratta semplicemente di salvare un passaggio 😀

      Tu mi capisci?

      ... è che trovo difficile spiegare ahah.

      1.    Hugo suddetto

        No, la spiegazione non ha avuto problemi, volevo dire che forse l'esempio che hai scelto per illustrare il suggerimento non era l'ideale, dato che si può fare una semplice "directory ls".

        In realtà non appena ho visto la funzione ho capito lo scopo. Uso anche varie funzioni nel mio file .bash_aliasAd esempio, questo è quello che uso molto per gestire la cronologia:

        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
        }

        (Con questa funzione, se metto solo h Ottengo gli ultimi 25 comandi, ma se ad esempio metto h monte Ottengo gli ultimi comandi relativi agli assembly).

        1.    KZKG ^ Gaara suddetto

          Prendo il tuo ruolo hehehe ... merita di studiarlo 😀

        2.    Anibal suddetto

          grande la tua funzione! Grazie

        3.    msx suddetto

          +1

  6.   hacker775 suddetto

    KZKG ^ Gaara

    Risposta molto buona mi è servita molto bene, non ho potuto rispondere già sopra

    Ora userò cdlsf per aumentare la mia produttività, ottimo nome per un comando 😀

    saluti

  7.   Christopher castro suddetto

    Come si fa per impostare l'ora al terminale, l'avevo già fatto prima, era un bashrc che ho scaricato ma non ricordo come si chiamasse.

  8.   Abel suddetto

    Buona entrata, non conoscevo il trucco, lo metterò in pratica per vedere come funziona. xP

    Saluti.

    1.    Abel suddetto

      Sarebbe bello se il mio browser fosse aggiunto. xD

      Ancora saluti. xD

      1.    KZKG ^ Gaara suddetto

        Che browser utilizzate?
        Bene, in un altro commento ho visto che hai usato Firefox 🙂

        1.    Abel suddetto

          Sì, uso Firefox ma è sempre meno e non è più il mio browser principale, sto usando dwb e sarebbe bello se potesse essere aggiunto. xP

          Saluti.

  9.   fattura suddetto

    E fare questo alias non causerà problemi negli script quando si cerca di solo cd e anche di produrre ls? In particolare preferisco creare alias con nomi che altri eseguibili non usano, perché non è la prima volta che mi dà problemi ...

  10.   yrigol suddetto

    Come si ottengono le linee tratteggiate e l'ora dopo ogni comando?

  11.   msx suddetto

    Il mio contributo:
    alias ldir = 'ls | grep -v \\. ' ## elenca solo le directory (fai attenzione, non rinominarlo in ld poiché c'è un comando GNU / Linux con quel nome)
    -
    alias 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} '\' ''

    La cosa interessante di questo alias è awk che analizza l'output di ls, result? Mostra i permessi dei file in formato ottale accanto a rwx, per me infinitamente più pratico e veloce delle lettere.

    -
    alias 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'

    Variante dell'alias sopra. Ho aggiunto un grep alla fine in modo che in questo modo quando lo faccio ad esempio:
    $lgzip
    Mostrami solo i file che contengono zip in una qualsiasi delle sue forme (nota -i alla fine) oltre ai permessi ottali, ecc.
    -
    alias grep = 'grep –color = auto' ## colora la corrispondenza grep
    -

    Ne ho molte altre da condividere ma questo posticino mi rende stretto xD

    @KZKG, Staff: Pensi di aprire un post sul blog o sul forum (a cui rimandiamo ogni volta che viene pubblicato un suggerimento relativo alla console) per raccogliere tutte queste piccole perle?

    Saluti!

    1.    KZKG ^ Gaara suddetto

      Per link intendi questo? - » https://blog.desdelinux.net/tag/bash

  12.   msx suddetto

    Non ho detto niente, non serve altro, tutto è perfettamente etichettato!

  13.   Franklin Rodriguez suddetto

    Che cileno, questa è un'ottima funzione!