O history
comando bash é muito legal. Entendo por que ele mostra os números das linhas, mas existe uma maneira de chamar o comando history e suprimir os números das linhas?
O ponto aqui é usar o comando history, portanto, não responda cat ~/.bash_history
Saída atual:
529 man history
530 ls
531 ll
532 clear
533 cd ~
534 history
Saída desejada:
man history
ls
ll
clear
cd ~
history
Obrigado a todos por suas ótimas soluções. O Paul é o mais simples e funcionará para mim porque meu tamanho do histórico do bash é definido em 2000.
Eu também queria compartilhar um artigo interessante que encontrei esta manhã. Agora, estou usando algumas boas opções, como manter entradas duplicadas fora do histórico do bash e garantir que várias sessões do bash não sobrescrevam o arquivo do histórico: http://blog.macromates.com/2008/working-with -history-in-bash /
cat ~/.bash_history
está descartada?Respostas:
Tente o seguinte:
fonte
history
comando em vez de ler o arquivo?man cut
. Está excluindo os 7 primeiros caracteres de cada linha de saída dohistory
comando. Só deve ter problemas se o número exceder 99.999, algo que nunca vi (e uso muito conchas ). Mas se você está preocupado com isso:history | sed 's/^ *[0-9]* *//'
cut
sintaxe faz mais sentido :) Obrigado @Keith Thompson pela solução que funcionará para mais de 100 mil históricos.awk
pode ajudar:Esta resposta pode falhar se você tiver um longo histórico.
fonte
substr
é muito mais simples, eu tenho usadohistory | awk '{for (i=2;i<=NF;i++) printf("%s ", $i);print("\r")}'
para o meu !!Estou bem ciente de que esta pergunta é para o bash e muitas pessoas preferem não mudar para o zsh (cue downvotes ...)
No entanto, se você estava disposto a mudar para o zsh , o zsh suporta isso de forma nativa (assim como outras opções para formatação de histórico)
(Consulte /server/114988/removing-history-or-line-numbers-from-zsh-history-file )
fonte
fc
é umbash
builtin também. A única diferença é que a primeira linha é1
, por isso seriafc -ln 1
Estou atrasado neste, mas o método mais curto seria adicionar o seguinte no seu arquivo
~/.bashrc
ou~/.profile
:HISTTIMEFORMAT="$(echo -e '\r\e[K')"
Do bash
manpage
:Usando esse recurso, um hack inteligente consiste em tornar a variável "imprimir" um retorno de carro (
\r
) e limpar a linha (código ANSIK
) em vez de um carimbo de data / hora real.fonte
HISTTIMEFORMAT=$'\r\e[K'
HISTTIMEFORMAT=$'\r\e[K' history
Como alternativa, você pode usar o sed:
Usando o alias, você pode definir isso como seu padrão (cole-o no seu bash_profile):
fonte
\+
em uma expressão regular básica não é compatível com POSIX. Use\{1,\}
se o seused
não suportar a\+
extensão não padrão .Embora o corte com a
-c
opção funcione para os propósitos mais práticos, acho que canalizar o histórico para o awk seria uma solução melhor. Por exemplo:OU
Ambas as soluções fazem a mesma coisa. A saída da história está sendo alimentada pelo awk. O Awk apaga a primeira coluna, que corresponde aos números na saída do comando history. Aqui, o awk é mais conveniente porque você não precisa se preocupar com o número de caracteres na parte numérica da saída.
print $0
é equivalente aprint
, já que o padrão é imprimir tudo o que aparece na linha. A digitaçãoprint $0
é mais explícita, mas qual você escolhe depende de você. O comportamento deprint $0
e simplesmenteprint
quando usado com o awk é mais evidente se você usou o awk para imprimir um arquivo (cat
seria mais rápido digitar em vez do awk, mas isso é apenas para ilustrar um ponto).[Ex] Usando o awk para exibir o conteúdo de um arquivo com $ 0
[Ex] Usando o awk para exibir o conteúdo de um arquivo sem $ 0 explícito
[Ex] Usando awk quando a linha do histórico abrange várias linhas
fonte
Da saída de
history --help
:Ele grava o histórico atual no arquivo especificado -
/dev/stdout
neste caso.fonte
history
O comando não tem uma opção para suprimir os números de linha. Você terá que combinar vários comandos, pois todo mundo está sugerindo:Exemplo:
fonte
sed
qualquer maneira, o corte inicial será redundante - basta adicioná-lo à expressão.Você pode tentar https://github.com/dvorka/hstr, que permite a filtragem "sugerir estilo de caixa" do histórico do Bash com pedidos baseados em métricas (opcionais), ou seja, é muito mais eficiente e mais rápido nas direções para a frente e para trás:
Pode ser facilmente ligado Ctrl-re / ouCtrl-s
fonte
Você pode usar o comando
cut
para resolvê-lo:Recorte os campos do STDIN ou dos arquivos.
Recorte os dezesseis primeiros caracteres de cada linha de STDIN:
cut -c 1-16
Recorte os dezesseis primeiros caracteres de cada linha dos arquivos fornecidos:
cut -c 1-16 file
Recorte tudo, desde o terceiro caractere até o final de cada linha:
cut -c3-
Recorte o quinto campo de cada linha, usando dois pontos como delimitador de campo (o delimitador padrão é a guia):
cut -d':' -f5
Recorte os 2º e 10º campos de cada linha, usando um ponto e vírgula como delimitador:
cut -d';' -f2,10
Recorte os campos 3 a 7 de cada linha, usando um espaço como delimitador:
cut -d' ' -f3-7
fonte
Eu sei que estou atrasado para a festa, mas isso é muito mais fácil de lembrar:
fonte