Etsi edellinen komento juuri kirjoittamani etuliitteellä

Voimme navigoida ylös- ja alas-nuolilla komentohistoriassa.

Jotkut IDE: t, kuten Matlab, jos syötämme jotain ja painamme sitten nuolinäppäimiä, vieritämme vain historiakomentoja, jotka alkavat syötettävällä. Se on todella kätevää, mutta shell-päätelaitteessa tämä ei toimi.

Onko jollain tavalla mahdollista saada samanlainen toiminto shell-päätelaitteessa? Ja muita vinkkejä päätelaitteiden käytön tehostamiseksi?

Kommentit

  • Voit käyttää yksinkertaisesti kuorta, joka tarjoaa tällaisen ominaisuuden, kuten fish😉
  • @yoann you ’ olettaen, että bash ei ’ t . Se ei lukulinjan kautta ole vain oletusarvoisesti käytettävissä.
  • @muru Olen ’ tietoinen CTRL + R: stä bashissa ja egmont ’ vastaus tarjoaa siistin tavan tehdä se sivun ylös / alas-painikkeella. Onko kuitenkin mahdollista tehdä niin nuolinäppäimillä?
  • @yoann check out unix.stackexchange.com/a/76591/70524. Käytä \e[5~ ja \e[6~ sijasta \e[A, \e[B.

vastaus

Etsitkö Ctrl R .

Kirjoita Ctrl R ja kirjoita sitten haluamasi komento. Bash näyttää ensimmäisen vastaavan komennon. Kirjoita Ctrl R ja bash selaa edelliset vastaavat komennot.

Jos haluat hakea taaksepäin historiasta, kirjoita Ctrl S . (Jos Ctrl S ei toimi tällä tavalla sinulle, se tarkoittaa todennäköisesti sitä, että sinun on poistettava XON / XOFF-virtauksen hallinta käytöstä: jotta voit tehdä sen, suorita stty -ixon.)

Tämä on dokumentoitu kohdassa ”Haku” kohdassa man bash.

Kommentit

  • Ctrl-Q lopettaa jäädytetty tila, jos jo painat Ctrl-S sammuttamatta ensin virtauksen hallintaa ja päätelaite jäätynyt.

Vastaa

Sijoita nämä ~/.inputrc -kansioon:

"\e[5~": history-search-backward "\e[6~": history-search-forward 

Nämä tekevät Sivun ylös ja Sivu alas käyttäydy haluamallasi tavalla. (Joissakin jakeluissa se on jo määrittänyt sen puolestasi.) Pidän näitä henkilökohtaisesti mukavammina kuin Ctrl + R tai history.

Kommentit

  • Tämä on mukavin tapa kaikissa vastauksissa. Voisiko u plz antaa vähän selitys toimintamekanismista?
  • ~/.inputrc tai /etc/inputrc tai tiedostoon, johon ympäristömuuttuja $INPUTRC on kaikkien readlinea käyttävien sovellusten rivinmuokkausmääritystiedosto, mukaan lukien bash (komentotulkki). Sillä on tietyt sisäänrakennetut rivinmuokkausominaisuudet, mukaan lukien nämä kaksi: etsi bash ’ -sivulla manuaalisesti yksi näistä avainsanoista saadaksesi lisätietoja. \e[5~ / \e[6~ ovat paeta sekvenssit, jotka Sivu ylös / alas-näppäimet tuottavat useimmissa pääteemulaattoreissa; nähdäksesi sen, käynnistä cat -komento ja paina sitten näitä näppäimiä (poistumistavu on terminaalissa ^[, inputrc-muodossa kuin \e).
  • Alkuperäisen kysymyksesi esimerkissä sanotaan, että Ylös / Alas-näppäimet toimivat tällä tavalla Matlabissa. Olisi mielenkiintoista nähdä, mitä tapahtui, jos asetat Ylös- ja Alas-sarjat inputrc: hen ja määrität tälle toiminnolle; toimiiko se oikein vai aiheuttaako se ikäviä sivuvaikutuksia, koska se on ristiriidassa heidän oletuskäyttäytymisensä kanssa. En tiedä ’ en, en ’ ole iloinen kuullessani havainnoistasi, jos kokeilet tätä.
  • Kun teen echo $INPUTRC, se on tyhjä. ’ m Ubuntu 14.04 -käyttöjärjestelmällä
  • Pidän henkilökohtaisesti mieluummin ylä- ja alanuolen ohittamista: "\e[A": history-search-backward ja "\e[B": history-search-forward

vastaus

^ r / ^ historian lisäksi -search:

alt . lisää edellisen komennon viimeisen ”sanan” kohdistimeen. Toista se saadaksesi viimeisen sanan vanhemmista komennoista. (Huomaa kuitenkin, että perässä oleva & lasketaan taustakomentojen viimeiseksi sanaksi).

Tämä on erittäin kätevä mkdir foo, cd alt-piste. Jopa ylänuolta nopeammin, ^ a, alt-d (poista eteenpäin oleva sana), cd.

Saadaksesi toisesta viimeiseen sanan, käytä esc - 2 alt+. (eli käytä emacs-tyylistä numeerista argumenttia alt+..Negatiivinen laskee loppupäästä, positiivinen laskee eteenpäin alusta alkaen.) Mutta tämä on yleensä enemmän vaivaa kuin sen arvoinen; jossain vaiheessa sitä on nopeammin tavoittaa hiiri ja kopioida / liittää tai ylös-nuoli ja ^ w / ^ y osa siitä (katso alla).


Jos pääte on asetettu oikein / oikein, ctrl-left ja ctrl-right siirtyvät taaksepäin / eteenpäin sanoin. Jos ei, toivottavasti ainakin alt-b ja alt-f tekevät saman.


ctrl- / on kumottu. Voit käyttää automaattista toistoa sanojen poistamiseen paljon tehokkaammin, jos voit kumota, kun ylität hiukan.


Voimakkaampi komentojen sekoittaminen / sovittaminen syntyy kill-renkaan käytöstä, joka toimii aivan kuten Emacsissa. ctrl-y liittää viimeinen ctrl-w / ctrl-u / ctrl-askelpalautin / alt-d. alt-y selaa vanhempaa tapettua tekstiä.

Useita ctrl-w tai mitä tahansa peräkkäin tekee kill-ring-merkinnästä. Käytä vasenta ja oikeaa nuolta tai jotain hajottaaksesi merkinnän, jos haluat poistaa kaksi asiaa ja liittää vain yhden myöhemmin.

Yhdistämällä kaikki nämä yhdessä voit

  • ala kirjoittaa komentoa
  • ctrl-r palataksesi takaisin vanhaan komentoon ja tarttumalla sen osaan control-w tai vastaavalla.
  • esc-r tai alt+r palauttaaksesi sen tilaan, joka oli ennen osan poistamista.
  • alt- > siirtyäksesi historian loppuun (eli alaspäin osoittava nuoli koko matkan) ja palataksesi takaisin komentoon, jonka keskellä olit.

Muut vuorovaikutteisen käytön vinkit:

Ota käyttöön shopt -s globstar, jotta voit tehdä **/*.c (rekursiivinen, mukaan lukien nykyinen dir). Joskus kätevä interaktiiviseen käyttöön, mutta yleensä find -name "*.c" -exec foo {} + on parempi.

Jos kirjoitat bash-komentosarjoja, sinun on kätevää olla shopt -s extglob käytössä myös interaktiivisissa kuoreissasi. Löydät joskus käyttötarkoituksen *.!(c|h) kaltaisille tiedostoille vastaamaan tiedostoja, jotka eivät pääty .c tai .h kanssa.

Löydä haluamasi aliakset ls -l, less ja muulle tekemäsi paljon. (cp -i, mv -i ja rm -I ovat mukavia. Älä tapaa riippuen heidän tekevän valikoivan rm: n. GNU rm ”s -Pyydän kerran kaikki argit.)

Pidän alias m=less (m merkille ”enemmän”). less on määritetty , ja . sidottu edelliseen / seuraavaan tiedostoon (lesskey). Oletusarvo on usean näppäimen painallusjakso, jota ei voi käyttää automaattisen toistamisen kanssa.


Haluan tehdä kaiken GNU-näytössä. Minusta on helpompaa seurata numeroituja näyttöikkunoita kuin veneiden määrä välilehtiä Konsolessa (tai missä tahansa muussa päätelaitteessa, jota olen kokeillut). Jos et vielä tiedä screen, opi tmux, koska se on uudempi ja vähemmän raakaa.

Jos haluat saada aikaan jotain, kuten uuden kuoren avaaminen sama cwd kuin toinen kuori, käytän mukautettua koukkua cd / pushd / popd: lle, jonka avulla voin tehdä cds 8 cd: ksi mihin tahansa dir shellin käyttö ruutuikkunassa 8 on käytössä. Tämä toimii myös kuorien kanssa ruudun istunnon ulkopuolella, kunhan vain yksi ruudun istunto on.

Kommentit

  • Minun ei näytä olevan ’ ” oikein määritetty ”. Monet näkemistäni pikanäppäimistä eivät toimi ’, mutta käytän Ubuntu 14.04: n osaketerminaalia. Kuinka voin määrittää sen?
  • @JorgeeFG: Luulen, että se toimi minulle alusta gnome-terminal Ubuntu 14.04: ssä, ennen kuin vaihdoin KDE: hen. Asiaankuuluva vaihtoehto on päätelaitteen asetuksissa, esc-etuliite vs hig h-bit, ja ehkä joitain muita asetuksia. Jotkut heistä eivät toimi

t minulle täydellisesti ssh: n kautta. (esim. ctrl vasemmalle / oikealle munge nuolinäppäimen pakokoodi, ja saan5Dkirjaimellisesti)

vastaus

Lisää seuraavat rivit ~/.inputrc

"\e[A": history-search-backward "\e[B": history-search-forward 

Tämä on samanlainen kuin egmontin vastaus, mutta sen sijaan, että käytettäisi Sivu ylös ja Sivu alas, se käyttää pakosarjoja Nuoli ylös ja Nuoli alas. Tätä tapaa on paljon helpompi käyttää Macissa.

vastaus

Minulla on tapana konfiguroida koneeni aina suurella HISTSIZE -arvo, joten se pitää pidempää historialuetteloa sekä HISTTIMEFORMAT ja aikaleiman arvo niin Näen, milloin komento suoritettiin.

export HISTSIZE=10000 export HISTTIMEFORMAT="%m/%d/%Y %T " 

vastaus

Tarkoitan tavallisesti yhdistää history -komento grep

IE:

history | grep <command im looking for> 

Se näyttää kirjoittamiesi komentojen numeroidun historian, joka sisältää kyseisen komennon. Voit sitten käyttää tätä:

!<number listed in history command> 

toistaaksesi komennon.

IE:

history | grep history

142 history 143 history | grep lvresize 568 history | grep echo 570 history | grep echo 571 history | grep history 

ja sen jälkeen: !571

toistaa history | grep history

kommentit

  • CR = paljon parempi + paljon turvallisempi
  • Ehkä, Henkilökohtaisesti mielestäni grepiin ladattu historia on nopeampi tapa löytää useimmat komennot. Turvallisemman suhteen en ’ ole varma, mitä tarkoitat, mitkä ovat riskit historian käytössä, kun sitä käytetään hakemiseen sen kautta cR: llä?
  • @ Kastike Epäilen, että PSkocik tarkoittaa, että ! historian korvaaminen on vähemmän turvallista.
  • @Gravy Luontaiset riskit olisivat vahingossa väärän linjan saaminen. Ei ole aavistustakaan, miksi päätelaite on jäätynyt, ellet ole käyttänyt Control-S: ää ja xon / xoff-virtauksen hallinta on käytössä (usein oletus). Jos on, Control-Q tuo sen takaisin.
  • Olen samaa mieltä @PSkocikin kanssa, cr on paljon parempi, koska se ’ s historiarivin muokkaaminen on helpompaa kuin vain suorittaa se samalla tavalla. Aivan saman komennon suorittaminen uudelleen on vähäpätöinen tapa, jolla voit säästää aikaa kirjoittamalla muunnelmia monimutkaisille yhden rivin linjoille tai täydentämällä eri tiedoston sarkainta pitkällä polulla. Katso vastaukseni.

Vastaa

Käytin päivittäin 4 vinkkiä (ja joitain muita) bash-pääteessäni:

  • Suorita viimeinen komento: !!

  • Suorita komento N historiasta: !N

  • Tulosta viimeinen komento, joka alkaa etuliite historiasta: !prefix:p

  • Suorita viimeinen komento, joka alkaa etuliite historiasta: !prefix

kommentit

  • Luulen, että historian komennon N käyttö on yksi kaikkien aikojen suurimmat polut ampua itsesi jalkaan useimmille ihmisille 🙂 Pelkkä sanominen

Vastaa

Jos Voit käyttää zsh bash -tilan sijaan. Voit käyttää oh-mi-zsh sen vuoksi.

Voit selata komentohistoriaa ylös- ja alas-nuolilla. Se sallii myös saman navigoinnin, kun olet jo kirjoittanut tekstin (kuten Mathlabissa).

edit: Oh-my-zsh on suuri, kehittäjälähtöinen ohjelmistopaketti, joka sisältää monia muita ominaisuuksia, esim aliakset, teemat, laajennukset. Nämä lisäominaisuudet tekevät jakelusta monimutkaisemman käyttää kuin pikanäppäin.

https://github.com/robbyrussell/oh-my-zsh

Kommentit

  • oh-my-zsh sisältää tonnia tavaraa. Voit myös sanoa: Tämä tarkka ominaisuus sisältyy kyseiseen jakeluun, kun tarvitset vain tietyn asetuksen tai sovelluksen.
  • Muokatin viestiä: Varoitin, että se on isompi kuin yksinkertainen sovellus.

vastaus

Lisää seuraava alias kohteeseen ~ / .bashrc

alias h="history | awk """""{$1="";print}""""" |sed "s/^ *//" |grep -v "^h " | sort | uniq | grep" 

Käyttö: h fire saa luettelon komennoista, jotka sisältävät tulipalon . tai h ^fire saa minulle luettelon komennoista, jotka alkavat tulella .

Tästä on hyötyä, kun haluan tarkastella komentosarjaa samaan aikaan.

Muuten, """"" on ruma, mutta en voinut löytää muita tapoja välttää yksittäisiä lainauksia yksittäisissä lainauksissa.

Kommentit

  • fyi – h="history | awk '{\$1=\"\"; print}' pitäisi toimia. vaihtoehtoisesti luoda funktio ja kutsua se.
  • kiitos DarkHeart, mutta yritin koodiasi, ei löytänyt toimivan ympäristössäni, ehkä minun omassani on jotain erilaista

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *