Como você se lembra das opções de comando? [fechadas]

13

Estou curioso para saber qual truque você usa para se lembrar de opções para vários comandos? Procurar páginas de manual o tempo todo consome tempo e não é tão legal!

Atul
fonte
2
Entre outras coisas: unix.stackexchange.com/questions/138720/… é útil para criar um resumo personalizado de coisas que costumo estragar ou esquecer. BTW, quanto mais você lê páginas de manual, mais você as aprecia.
precisa saber é o seguinte
Há algum tempo sinto que estou esquecendo tudo. Fiquei me perguntando se eu sou o único que tem dificuldade em lembrar todas as opções úteis em cima da cabeça .. Sua sugestão parece ser uma boa solução .. Obrigado!
Atul
3
Lendo manpáginas é muito legal ... :)
jasonwryan
1
P: Como você chega ao Carnegie Hall ? A: Prática!
precisa saber é
4
Eu acho que isso merece algum XKCD: xkcd.com/1168
Darkhogg 04/08/14

Respostas:

39

O truque é simples: você simplesmente não. É uma perda de tempo e simplesmente não é necessária. Memorizar opções de comando não é uma habilidade particularmente útil. É muito mais importante entender como as coisas funcionam em geral e ter uma vaga idéia de quais ferramentas existem em primeiro lugar e para que você as utiliza. Uma habilidade muito importante aqui é saber como descobrir coisas que você ainda não conhece.

As páginas de manual são demoradas? Não tão. Não é como se você tivesse que lê- los - pelo menos nem sempre - existe uma função de pesquisa. Portanto, se eu não me lembro qual opção enigmática foi a opção hdparmpara desativar o timer ocioso em alguns discos WD, eu faço man hdparme /idle3e ei, foi -J. Procurar coisas assim é tão rápido que nem me lembro de fazê-lo depois.

Imagine alguém realmente memorizando todas as hdparmopções. Que perda de tempo.

Tudo bem se você se lembrar de opções porque as usa com frequência. Isso acontece automaticamente, sem sequer pensar nisso. Mas, conscientemente, gastando tempo memorizando-os ... para que serve? Um teste de papel?

frostschutz
fonte
4
Voto positivo: a habilidade é encontrar o que você precisa, não uma memória mecânica. man hdparm | less -p idle3é também uma maneira prática de saltar para o termo desejado ...
jasonwryan
Concordo plenamente com esta resposta, embora eu pense que vale a pena enfatizar que é normal memorizar as poucas opções mais comuns para programas comuns, apenas porque você as usa com tanta frequência. Como rm -i -f -r, ln -s, df -s -h, cp -r -i, ls -l -h -a, etc. (a lista varia de pessoa para pessoa).
David Z
8

O Zsh possui a função run-help , por padrão vinculada a Alth. Com essa função, você pode começar a digitar um comando com muitas ou complexas opções difíceis de lembrar, como rsyncpor exemplo, e manabrir a página desse comando . Então:

 rsync Alth

leia a manpágina e calcule quais comutadores são necessários, pressione qe retorne ao prompt de comando, exatamente de onde parou, pronto para concluir o comando com as opções necessárias:

rysnc -azP file dir/

Como observa o wiki:

A função pode ser personalizada ainda mais, definindo funções auxiliares do formulário run-help-command. Existem três funções disponíveis na distribuição padrão: run-help-git, run-help-svk e run-help-svn.
jasonwryan
fonte
Da mesma forma, bashpossui o bash-completeque fornecerá muitas opções de parâmetros para muitos comandos.
Ericx
2
@ericx "Da mesma forma" pode estar exagerando um pouco ... O Zsh também está completo, este é um passo em frente.
Jasonwryan
hey ... Eu já ouvi pessoas me gabar, mas eu nunca tenteizsh
Ericx
A conclusão do @ericx também bashnão suporta adicionar descrições à lista de conclusão nem agrupar entradas ( --classify -F -- append file type indicatorspor exemplo, na conclusão do GNU ls do zsh), portanto, não é tão útil quanto o zsh.
Stéphane Chazelas
** root @ milicent ** ~ / tmp ** ter 05 de agosto 09:24:55 # informações do pkg (-e -d -f -l -o -p -D) -r [Exibe as dependências reversas] (-e -d -r -f -o -p -D) -l [Exibe todos os arquivos] (-e -d -r -l -f -p -D) -o [Exibe a origem] (-e -d -r - l -o -f -D) -p [Exibe o prefixo] (-e -d -r -l -o -p -D) -f [Exibe informações completas] (-e -d -r -l -o -p -f) -D [Exibe mensagem] (-e -f -r -l -o -p -D) -d [Exibe as dependências] (-f -d -r -l -o -p -D) -e [Retorna 0 se <pkg-name> estiver instalado] (-g -X -a -F) -x [Processar pacotes que correspondem ao padrão regex] (-g -x -X -F) -a [Processar todo o pacote
ericx
4

Usar um histórico de comandos muito longo e pesquisar nele é muito útil.

Eu basicamente coleciono todos os arquivos de histórico do shell e o grep através deles.

Em muitos casos, os resultados encontrados são muito úteis, pois é fácil procurar boas palavras-chave.
Procurando um argumento específico que você usou, como uma URL, você encontra os comandos e opções relacionados também. E, ao procurar por opções específicas, você também encontrará argumentos relevantes.

Volker Siegel
fonte
4

A maioria dos comandos tem --help para referência rápida, e geralmente é o suficiente para lembrar o que eu costumava saber.

Dito isto, tenha o hábito de escrever --help em vez de -h ou até - ?. Você nunca sabe o que é -h antes de procurar a saída de uso ou a página de manual. Na pior das hipóteses, o -h pode ser uma mão curta para a destruição automática perigosa.

kerolasa
fonte
2
... A maioria dos comandos nos sistemas GNU . comandos em sistemas Unix normalmente não têm --help. -?necessidades citando com zsh, csh, tcshou fishou se existem arquivos cujos nomes são -seguidos por um único caractere no diretório atual. -:pode ser preferível lá.
Stéphane Chazelas
Bem ... muitos sistemas que não são GNU têm resultados de uso tão terríveis que são inúteis nem olhar. Nesse caso, veja as páginas de manual e a boa sorte memorizando com hard coz, nada mais funcionará.
Kerolasa
"Isso dito tem o hábito de escrever". Palavra que falta?
Faheem Mitha
1

Uma opção que eu gosto é criar aliases que tenham as mesmas opções ou opções semelhantes, por exemplo

alias rmi='rm -i'
alias rmiv='rm -iv'
alias rmv='rm -v'
alias cpr='cp -r'
alias cprv='cp -rv'

Dessa forma, você tem um bom atalho que em breve se lembrará facilmente, mas que também reterá informações sobre as opções reais que ele reflete.

Outra abordagem com aliases é escolher as opções mais comuns e criar um alias super curto que as use. Por exemplo, lseu quase sempre faço lisso porque eu tenho:

alias l='ls -alFtrG'

Outra opção é apenas trazer as opções que você gosta para o comando base, por exemplo

alias ls='ls -F --color=always'

Finalmente pratique, pratique, pratique e paciência. Continue digitando opções comuns e, eventualmente, você as aprenderá. Os mais comuns em dias, outros em semanas e sim alguns levam anos para serem conhecidos por você. Pense nisso como um prazer, pois a programação unix continuará a entretê-lo por um longo tempo.

Outra opção de que gosto é um apelido para facilitar a pesquisa no meu histórico e, por isso, tenho dois apelidos semelhantes:

alias hg='history | tail -200 | grep -i'
alias hga='history | grep -i'

Estes permitem-me procurar usos de um comando, por exemplo:

hg lsmostrará todos os usos recentes de ls da história
hga lsmostrará todos os usos de ls de toda a minha história.

Eu desenvolvi hg depois de descobrir que hga tendia a mostrar muito.

Michael Durrant
fonte
4
Se o OP não conseguir se lembrar do que rm -ivfaz, provavelmente também não se lembrará do que rmivfaz. Eu não acho que é o hífen que é o problema.
precisa saber é o seguinte
Eu, pessoalmente, alias rm -ivpara safe_deleteourm_prompt
slebetman
Obrigado pessoal! Acho que estava me preocupando muito por lembrar mais do que aprender mais ... aprenderei quando usar a arma em vez de aprender quais são as dimensões e velocidade da bala! Sorte de ter tantas boas pessoas linux aqui .. Felicidades para unix / linux !!
Atul
1

Eu normalmente faço:

man ${CMD} | grep 'what was I thinking about?'

Ou alguma variação disso. Com alguns greps, você pode especificar -C / A / B para o contexto , depois e antes, respectivamente. Caso contrário, nle sedpode ser bem compatível:

man hdparm |                      #hard to forget
nl -bp'idle3' -nln -w1 |          #I had to grep man to put this together
sed -n '/^[0-9]/{N;N;N;s///p}'    #no print until line begins w/ number, next,next,next

           Drive's "idle3" timeout value.  This timeout
            controls how often the drive parks its heads
            and  enters  a  low power consumption state.
            The factory default is  eight  (8)  seconds,
           zero (0) to disable the WD idle3 timer  com‐
            pletely (NOT RECOMMENDED!).

     -k     Get/set  the "keep_settings_over_reset" flag

As mesmas técnicas funcionam com --helpmenus, se você os tiver, mas pode ser necessário fazer isso ${CMD} --help 2>&1 | ..filter..porque é uma prática bastante padrão para imprimir essas coisas stderr.

Enfim, acho que a moral da história é, lembre-se de pelo menos man e grep. Talvez não se preocupe o resto.

mikeserv
fonte
1
+1. Costumo grepmanejar páginas quando procuro um recurso específico, o que é bastante útil.
John WH Smith
As -A -B -Copções do grep também podem ser úteis, por exemploman bash | grep -A 25 PROMPTING$