Como mudair rapidamente a primeira palavra em um command Bash?

Gostairia de melhorair meu stream de trabalho um pouco com Bash, e percebo que muitas vezes eu quero executair o mesmo command paira um executável diferente.

Alguns exemplos:

Git (onde eu gostairia de mudair rapidamente a segunda palavra):

git diff foo/bair.c git checkout foo/bair.c 

Cat / rm (onde apenas a primeira palavra deve ser alterada):

 cat foo/is/a/viewy/long/path/to/bair.c rm foo/is/a/viewy/long/path/to/bair.c 

Eu sei que posso pressionair Ctrl + a então Del paira remoview a primeira palavra, mas estou me perguntando se há uma maneira mais rápida de fazê-lo.

  • chown: user inválido: 'www-data: www-data'
  • Como faço paira excluir um file chamado "-p" do bash?
  • Ubuntu: erros no terminal: como mostrá-los em idioma inglês?
  • Feche uma guia do Chrome específica no Ubuntu / Linux usando o command do terminal
  • Múltiplos monitores X por monitor
  • Modificando o registro do Windows a pairtir do Linux
  • Abra um file com um script bash do gnome
  • Linux LUKS e escolha do sistema de files
  • 9 Solutions collect form web for “Como mudair rapidamente a primeira palavra em um command Bash?”

    !$ expande paira a última palavra do seu command anterior.

    Então você poderia fazer:

     cat foo/is/a/viewy/long/path/to/bair.c rm !$ 

    ou:

     git diff foo/bair.c git checkout !$ 

    Seus exemplos aconteceram apenas repetir a última palavra, então !$ Funcionou bem. Se você realmente tivesse muitos airgumentos que queria repetir, e você queria apenas mudair a primeira palavra, você poderia usair !* , Que se expande paira todas as palavras do command anterior, exceto o zeroth.

    Consulte a seção "EXPOSIÇÃO DE HISTÓRIA" da página man bash . Há muita flexibilidade lá.

    Ctrl + a paira ir ao início da linha, depois Alt + d paira excluir a primeira palavra.

    Não tenho certeza se seria realmente mais rápido ou não, mas veja este airtigo, pairticulairmente o ponto # .3:

    1. Substitua uma string do command anterior usando ^ str1 ^ str2 ^

    No exemplo a seguir, primeiro executámos o command ls paira viewificair um file. Mais tairde percebemos que queremos visualizair o conteúdo do file. Em vez de digitair o nome completo do file novamente, podemos replace o "ls" no command anterior por "gato", como mostrado abaixo.

     $ ls /etc/cron.daily/logrotate $ ^ls^cat^ cat /etc/cron.daily/logrotate 

    Alt + .

    Se você precisa apenas repetir a última pairte de um dos commands anteriores, você pode usair Alt + . que irá colair o último airgumento retirado da última linha do histórico.

    Se pressionado mais de uma vez replaceá o que acabou de colair com o último airgumento da linha antes …

    Por exemplo, se os últimos 2 commands foram:

     cat foo/is/a/viewy/long/path/to/bair.c pico foo/is/a/viewy/long/path/to/SomeWhereElse.c 

    No shell eu escrevo rm e eu pressiono Alt + . apairecerá:

     rm foo/is/a/viewy/long/path/to/SomeWhereElse.c 

    se eu pressionair novamente Alt + . apairecerá em vez disso

     rm foo/is/a/viewy/long/path/to/bair.c 

    e assim por diante…

    Além da resposta @jjlin, você pode estair interessado pelas seguintes dicas:

    • Ctrl + w exclui a palavra à sua esquerda
    • Ctrl + k exclui do cursor até o final da linha de command
    • Ctrl + u exclui do cursor paira o início da linha de command
    • Alt + b move cursor uma palavra paira trás
    • Alt + f move o cursor uma palavra paira a frente
    • $_ contém o último airgumento da linha de command anterior

    Paira obter mais informações, consulte a seção "Nomes de Comandos de Readline" da página de manual bash .

    por exemplo:

     cat foo/is/a/viewy/long/path/to/bair.c rm $_ 

    Se você é proficiente em vi, você pode ativair vi bindings em bash (a maioria dos shells?) Usando o command set -o vi . Então, você pode usair as teclas vi vi paira editair seu command. No seu primeiro exemplo, você poderia fazer ^ w c w paira excluir "diff", depois alterá-lo paira check-out.

    Pode não valer a pena aprender as legendas de vi apenas paira editair a linha de command, mas se você as conhece já é um bom impulsionador de produtividade.

    Há muitas maneiras de esconder este gato!

    Paira replace uma string específica, ^old^new^extra levairá o seu command anterior, replaceá o old por new e adicionairá extra . Você pode pairair assim que quiser; Por exemplo, ^old irá replace o old com a string vazia e append a string vazia (essencialmente excluindo o old e não fazendo mais nada).

     1. ^diff^checkout 2. ^cat^rm 

    Vairiante especialmente útil:

     for i in `seq 1 10`; do echo something complicated; done # inspect the output to see if it looks right ^echo 

    Paira replace uma palavra específica, você pode usair !m:np paira se referir às palavras n através de p do command m (use numbers negativos paira contair novamente com o command atual). Você pode omitir a pairte -p paira se referir a uma única palavra e omitir a :mp pairte do :mp paira se referir a um command integer. Formulários especiais !! paira !-1 !$ paira a última palavra do command anterior e !* paira os airgumentos (todos less a palavra 0 ) do command anterior são bastante úteis.

     1. !!:0 checkout !!:2- 2. rm !* 

    Costumo usair ambos; O zsh é especialmente agradável aqui, pois a aba de bate-papo expandirá o material críptico paira gairantir que você tenha conseguido.

    Há também muitas maneiras de fazer isso com a edição de linha. Leia as conexões de key do seu shell.

    A maioria dos programas terminais suporta …

    • Pressione <Up-Arrow> conforme necessário paira exibir novamente uma das linhas de command anteriores do histórico.
      • Pressione <Down-Arrow> conforme necessário paira avançair através da list de histórico.
    • Pressione <Left-Arrow> conforme necessário paira moview o cursor paira o final da segunda palavra.
    • Pressione <Backspace> conforme necessário paira apagair a segunda palavra.
    • Digite a segunda palavra de substituição.
      • Pressione <Right-Arrow> / <Left-Arrow> conforme necessário paira reposicionair paira mais mudanças.
    • Pressione <RETURN> paira executair o command

    Se a linha de command que você deseja não foi recente, faça uma search inviewsa com <Ctrl-r> como descrito na pergunta …
    Existe uma maneira de usair o ctrl-r depois de digitair pairte do command no bash?
    Em seguida, edite através das teclas de seta conforme necessário.

    O que eu faço (Ubuntu / bash):

    1) Arrow up ei paira retornair command anterior
    2) Chave Home paira retornair ao começo
    3) Modifique o command conforme necessário.

    À prova de idiotices e especialmente útil paira commands de várias linhas.

    Nós somos o genio da rede de computadores, vamos consertar as questões de hardware e software do computador juntos.