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
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-Qlopettaa jäädytetty tila, jos jo painatCtrl-Ssammuttamatta 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?
 -  
~/.inputrctai/etc/inputrctai tiedostoon, johon ympäristömuuttuja$INPUTRCon 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-backwardja"\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+rpalauttaaksesi 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-terminalUbuntu 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-zshsisä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
 
fish😉\e[5~ja\e[6~sijasta\e[A,\e[B.