reconstrua o índice de preenchimento automático (ou o que for chamado) e binários no cache $ path no zsh
<p>após a instalação do novo software, um terminal já aberto com o zsh não saberá sobre os novos comandos e não poderá gerar o preenchimento automático para eles. aparentemente, a abertura de um novo terminal resolve o problema, mas o índice (ou o que você chamar) pode ser reconstruído para que o preenchimento automático funcione no terminal antigo?</p><p>eu tentei com <code>compinit</code> mas isso não ajudou. além disso, existe uma maneira que não depende do shell? é bom ter uma maneira de verificar a resposta também (exceto para desinstalar algo e reinstalá-lo).</p><p>o que quero dizer é que depois de digitar alguns caracteres do nome de um comando, posso pressionar <kbd>tab</kbd>, e <code>zsh</code> devem fazer o resto para exibir o nome completo.</p>
<p>para reconstruir o cache de comandos executáveis, use <code>rehash</code> ou <code>hash -rf</code>.</p><p>verifique se você não desmarcou o <code>hash\_list\_all</code> opção (causa menos acessos ao disco, mas faz com que o cache seja atualizado com menos frequência).</p><p>se não quiser digitar um comando, você pode dizer ao zsh para não confiar no cache ao concluir, colocando a seguinte linha no seu <code>~/.zshrc</code>¹:</p><pre><code>zstyle ":completion:*:commands" rehash 1 </code></pre><p>existe um custo de desempenho, mas hoje é insignificante em uma configuração típica de área de trabalho. (não é se você tiver <code>$path</code> no nfs ou em um sistema sem memória ram.)</p><p>o comando <code>zstyle</code> está documentado na página do manual <code>zshmodule</code>. os valores dos estilos estão documentados nas páginas de manual <code>zshcompsys</code> e <code>zshcompwid</code>, ou você pode ler a fonte (aqui, das <code>\_command\_names</code> função). se você quiser alguma documentação legível ... se você encontrar alguma, me avise!</p><p>¹ <sub>requer zsh≥4.3.3, obrigado <a href="https://unix.stackexchange.com/users/1107/chris-johnsen">chris johnsen</a> </sub></p>
acabei de descobrir um utilitário bem poderoso de controle de processos no terminal o nome dele é htop e com ele é possível fazer o que você quer mas vai ter que configurar ele para fazer isso no próprio utilitário

edit: [[htop]](https://plus.diolinux.com.br/uploads/default/original/2x/b/bf9b441cc78eb9fabbadaa634f575feeca2b97d8.png "htop.png")

eu consegui configurar e ordenar ele para uso de leitura e escrita do … boa noite em virtude de ter desinstalado o programa de exel e word sem saber, agora tenho nessecidade de o recoperar, como fazer <p>vamos primeiro ver o que acontece se um programa for iniciado a partir de um shell interativo (conectado a um terminal) sem <code>&amp;</code> (e sem nenhum redirecionamento). então, vamos supor que você acabou de digitar <code>foo</code>:</p><ul> <li>o processo executando <code>foo</code> é criado.</li> <li>o processo herda stdin, stdout e stderr do shell. portanto, também está conectado ao mesmo terminal.</li> <li>se o shell receber um <code>sighup</code>, ele também envia um <code>sighup</code> para o processo (o que normalmente causa o término do processo).</li> <li>caso contrário, o shell aguarda (está bloqueado) até o processo terminar.</li> </ul><p>agora, vejamos o que acontece se você colocar o processo em segundo plano, ou seja, digite <code>foo &amp;</code>:</p><ul> <li>o processo executando <code>foo</code> é criado.</li> <li>o processo herda stdout/stderr do shell (portanto, ele ainda grava no terminal).</li> <li>o processo em princípio também herda stdin, mas assim que tenta ler a partir de stdin, ele é interrompido.</li> <li>ele é colocado na lista de trabalhos em segundo plano que a shell gerencia, o que significa especialmente: <ul> <li>ele está listado com <code>jobs</code> e pode ser acessado usando <code>%n</code> (onde <code>n</code> é o número do trabalho).</li> <li>ele pode ser transformado em um trabalho em primeiro plano usando <code>fg</code>, caso em que continua como se você não tivesse usado <code>&amp;</code> (e se foi interrompido devido à tentativa de leitura da entrada padrão, agora pode prosseguir com a leitura do terminal).</li> <li>se o shell recebeu um <code>sighup</code>, ele também envia um <code>sighup</code> para o processo. dependendo do shell e possivelmente das opções definidas para o shell, ao finalizar o shell, ele também enviará um <code>sighup</code> para o processo.</li> </ul> </li> </ul><p>agora <code>disown</code> remove o trabalho da lista de trabalhos do shell, para que todos os subpontos acima não se apliquem mais (incluindo o processo que está sendo enviado um <code>sighup</code> pelo shell). no entanto, observe que <em> ainda </em> está conectado ao terminal, portanto, se o terminal for destruído (o que pode acontecer se for um pty, como os criados por <code>xterm</code> ou <code>ssh</code>, e o programa de controle é finalizado, fechando o xterm ou finalizando a <a href="http://en.wikipedia.org/wiki/secure\_shell"> ssh </a> conexão), o programa falhará assim que tentar ler da entrada padrão ou gravar na saída padrão.</p><p>o que <code>nohup</code> faz, por outro lado, é separar efetivamente o processo do terminal:</p><ul> <li>ele fecha a entrada padrão (o programa <em> não </em> consegue ler qualquer entrada, mesmo que seja executada em primeiro plano. não é interrompido, mas será receba um código de erro ou <code>eof</code>).</li> <li>ele redireciona a saída padrão e o erro padrão para o arquivo <code>nohup.out</code>, para que o programa não falhe ao gravar na saída padrão se o terminal falhar, portanto, o que o processo gravar não será perdido.</li> <li>impede que o processo receba um <code>sighup</code> (portanto, o nome).</li> </ul><p>observe que <code>nohup</code> <em> não remove </em> o processo do controle de tarefas do shell e também não o coloca em segundo plano (mas desde que um primeiro plano <code>nohup</code> trabalho é mais ou menos inútil, você geralmente o coloca em segundo plano usando <code>&amp;</code>). por exemplo, diferentemente de <code>disown</code>, o shell ainda informa quando o trabalho nohup foi concluído (a menos que o shell seja encerrado antes, é claro).</p><p>então, para resumir:</p><ul> <li><code>&amp;</code> coloca o trabalho em segundo plano, ou seja, impede a tentativa de ler as entradas e faz com que o shell não espere sua conclusão.</li> <li><code>disown</code> remove o processo do controle de trabalho do shell, mas ainda o deixa conectado ao terminal. um dos resultados é que o shell não enviará um <code>sighup</code>. obviamente, ele só pode ser aplicado a trabalhos em segundo plano, porque você não pode inseri-lo quando um trabalho em primeiro plano está em execução.</li> <li><code>nohup</code> desconecta o processo do terminal, redireciona sua saída para <code>nohup.out</code> e o protege de <code>sighup</code>. um dos efeitos (o de nomeação) é que o processo não receberá nenhum <code>sighup</code> enviado. é completamente independente do controle do trabalho e pode, em princípio, ser usado também para trabalhos em primeiro plano (embora isso não seja muito útil).</li> </ul> meu bruxo, obrigado! a princípio, resolvi somente reinstalando no terminal. vou bem de boas, só achei estranho porque nunca deu esse problema antes… anyway, very gracias!! <p>tente fazer isso (requer <code>bash --version</code>&gt; = 4):</p><pre><code>shopt -s globstar rename -n 's/special/regular/' ** </code></pre><p>remova a opção <code>-n</code> quando seus testes estiverem ok</p><p><img src="https://pix.toile-libre.org/upload/original/1377510865.png" alt="warning"> <strong>existem outras ferramentas com o mesmo nome que podem ou não ser capazes de fazer isso, então seja cuidadoso.</strong><br> <br/></p><p>se você executar o seguinte comando (<code>gnu</code>)</p><pre><code>$ file "$(readlink -f "$(type -p rename)")" </code></pre><p>e você tem um resultado como </p><pre><code>.../rename: perl script, ascii text executable </code></pre><p>e não contendo:</p><pre><code>elf </code></pre><p>então esta parece ser a ferramenta certa =)</p><p>se não, para torná-lo o padrão (geralmente já o caso) em <code>debian</code> e derivado como <code>ubuntu</code>:</p><pre><code>$ sudo update-alternatives --set rename /path/to/rename </code></pre><p>(substitua <code>/path/to/rename</code> pelo caminho do seu comando <code>perl's rename</code>.</p><hr><p>se você não tiver este comando, procure em seu gerenciador de pacotes para instalá-lo ou <a href="https://metacpan.org/module/rmbarker/file-rename-0.20/rename.pl">faça-o manualmente</a> </p><hr><p>por último, mas não menos importante, esta ferramenta foi originalmente escrita por larry wall, o pai do perl.</p> no começo do arquivo .patch tem o caminho esperado do arquivo que será alterado. nesse caso é esperado que vc esteja na raiz de onde extraiu o kernel. daí é mandar aplicar executar o comando informando o arquivo .patch.

por exemplo, vc extraiu o código fonte em /home/thiago/downloads/linux-5.10.9

… <p>os nomes dos módulos compilados estão em <a href="http://docs.python.org/library/sys.html#sys.builtin\_module\_names"><code>sys.builtin\_module\_names</code></a> . para todos os módulos importáveis, consulte <a href="http://docs.python.org/library/pkgutil.html#pkgutil.iter\_modules"><code>pkgutil.iter\_modules</code></a> .</p><p>execute-os de uma forma limpa <a href="http://pypi.python.org/pypi/virtualenv"><code>virtualenv</code></a> para obter (quase) apenas os módulos que vêm com o próprio python.</p><hr><p>observe que uma &ldquo;pesquisa de popularidade” incluirá necessariamente módulos que usam convenções de nomenclatura antigas e desencorajadas porque foram escritas antes das diretrizes de hoje serem implementadas e não podem ser alteradas porque precisam ser compatíveis com versões anteriores. pode ser útil para algo, mas não para responder a perguntas sobre práticas recomendadas, como &ldquo;como devo nomear minhas funções?”. para isso, veja o <a href="http://www.python.org/dev/peps/pep-0008/">pep8, o guia de estilo python</a> , especialmente a seção &ldquo;convenções de nomenclatura”.</p> <p><kbd>ctrl</kbd> + <kbd>space</kbd></p><p>ou</p><p><kbd>ctrl</kbd> + <kbd>j</kbd></p><p>você também pode ir ao menu <em>ferramentas</em> → <em>opções</em> → <em>ambiente</em> → <em>teclado</em> e verifique o que é atribuído a esses atalhos. o nome do comando deve ser <code>edit.completeword</code>.</p> está a funcionar… 
tive de reiniciar mesmo o sistema … não bastou “recarregar automações” <p>enviar uma nova linha <code>\n</code> executará o comando. <code>.end()</code> sairá do shell.</p><p>modifiquei o exemplo para trabalhar com o bash enquanto estou no osx.</p><pre><code>var terminal = require('child\_process').spawn('bash'); terminal.stdout.on('data', function (data) { console.log('stdout: ' + data); }); terminal.on('exit', function (code) { console.log('child process exited with code ' + code); }); settimeout(function() { console.log('sending stdin to terminal'); terminal.stdin.write('echo "hello $user. your machine runs since:"\n'); terminal.stdin.write('uptime\n'); console.log('ending terminal session'); terminal.stdin.end(); }, 1000); </code></pre><p>a saída será:</p><pre><code>sending stdin to terminal ending terminal session stdout: hello root. your machine runs since: stdout: 9:47 up 50 mins, 2 users, load averages: 1.75 1.58 1.42 child process exited with code 0 </code></pre>