AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-585416

Anton Samokat's questions

Martin Hope
Anton Samokat
Asked: 2024-07-31 16:53:50 +0800 CST

Como limitar o número de arquivos impressos por ls e imprimi-los em colunas como ls imprime normalmente?

  • 8

Aqui está a extensão da pergunta: Como limite o número de arquivos impressos por ls? com condição adicional: como imprimir os resultados em quantas colunas caberem na largura atual do terminal - como lsfaz por padrão.

Eu entendo como limitar o número de arquivos por headcomando, mas não encontrei a solução sobre como imprimir arquivos em colunas da mesma forma que lsfaz por padrão, mas após o processamento através do pipe.

Eu tentei ls -Csinalizar (de man ls:) -C list entries by columnscom tubulação para cat. Mas sua saída difere de lsfora:

for i in {1..30}; do touch file$i; done; echo '"ls" out:'; ls; echo '"ls -C | cat" out:'; ls -C | cat

"ls" out:
file1   file11  file13  file15  file17  file19  file20  file22  file24  file26  file28  file3   file4  file6  file8
file10  file12  file14  file16  file18  file2   file21  file23  file25  file27  file29  file30  file5  file7  file9

"ls -C | cat" out:
file1   file12  file15  file18  file20  file23  file26  file29  file4  file7
file10  file13  file16  file19  file21  file24  file27  file3   file5  file8
file11  file14  file17  file2   file22  file25  file28  file30  file6  file9

"ls" out fornece 2 linhas. E "ls -C | cat" out fornece 3 linhas. Isso pode ser ls -Cum bug?

Eu tentei columno comando. Mas quando um arquivo com nome mais longo está presente, ele fornece resultados diferentes de ls.

mv file30 file-with-long-name; ls
file1   file11  file13  file15  file17  file19  file20  file22  file24  file26  file28  file3  file5  file7  file9
file10  file12  file14  file16  file18  file2   file21  file23  file25  file27  file29  file4  file6  file8  file-with-long-name

ls | cat | column -c $(tput cols)
file1           file14          file19          file23          file28          file6
file10          file15          file2           file24          file29          file7
file11          file16          file20          file25          file3           file8
file12          file17          file21          file26          file4           file9
file13          file18          file22          file27          file5           file-with-long-name

lsdá 2 linhas. E ls | cat | column -c $(tput cols)dá 5 linhas. tput cols— calcula a largura do terminal. Existe uma alternativa para columnnão formatar a largura de todas as colunas de acordo com o nome de arquivo mais longo, mas fará isso como lsfaz?

Pode haver um comando alternativo para lsobter essa impressão limitando o número máximo de arquivos? (Mas eu também gostaria de ter uma lscoloração semelhante à dos arquivos.)

Com cada um cdpara outro diretório, quero mostrar automaticamente o conteúdo do diretório atual. Isso pode ser feito colocando lsuma $PROMPT_COMMANDvariável de ambiente. Mas há um problema com diretórios que contêm muitos arquivos. Eles farão muito barulho/lixo no console. Quero restringi-los para limitar lsa produção.

bash
  • 2 respostas
  • 389 Views
Martin Hope
Anton Samokat
Asked: 2024-07-26 19:26:48 +0800 CST

Como sobrecarregar/personalizar o manipulador de comandos do bash (ou qualquer outro shell)?

  • 8

Quando bashalgum comando inexistente é executado, a mensagem de erro correspondente aparece:

$ non-existent-command
non-existent-command: command not found

É possível personalizar esse comportamento?

Eu gostaria de alcançar o seguinte. Quando o comando inserido corresponder, por exemplo, ao padrão s\d\d\d, ele deverá ser tratado de maneira especial:

  • sdeve ser extraído e usado como um comando,
  • \d\d\ddeve ser extraído e usado como argumento para o scomando.
  • O comando criado pela análise acima deve ser executado.

Isto normalmente pode ser conseguido por meio de uma função chamada sque recebe os argumentos necessários. Uma chamada normal é usada para executar tal função. Por exemplo:

s 123

Mas quero customizar o comportamento para bashpoder executar tal função com, por exemplo, as seguintes chamadas:

  • s123
  • s500

Tentei encontrar informações relacionadas man bashpelas seguintes palavras-chave: overload, custom, overridee não tive sucesso.

Pelo que entendi, preciso personalizar de alguma forma o bashmanipulador usado para processar a entrada. Não investiguei basho código-fonte para entender se isso é viável.

Será melhor encontrar uma solução que seja utilizável para qualquer shell.

Provavelmente criar um bashwrapper/adaptador personalizado com a lógica necessária e usá-lo em vez do bashbinário padrão resolverá isso.

bash
  • 1 respostas
  • 137 Views
Martin Hope
Anton Samokat
Asked: 2024-07-26 14:57:27 +0800 CST

Como suprimir a saída para set +v / set +o verbose (desativando o sinalizador detalhado) no bash?

  • 7

Roteiro

#!/bin/bash
set -v
echo "verbose echo"
{ set +v; } &>/dev/null
echo "non verbose echo"

fornece a seguinte saída:

echo "verbose echo"
verbose echo
{ set +v; } &>/dev/null
non verbose echo

Quero suprimir a saída { set +v; } &>/dev/nulle obter a seguinte saída:

echo "verbose echo"
verbose echo
non verbose echo

Eu tentei a abordagem acima descrita aqui para suprimir a saída para desabilitar o sinalizador xtrace( x) com o comando { set +x; } &>/dev/nulle está funcionando para este xtracesinalizador. Não encontrei informações relacionadas nos manuais de bashe set.

Como solução alternativa, isso pode ser alcançado por meio de uma chamada de subshell, como mostrado aqui . Mas isso é possível sem usar subshell?

bash
  • 1 respostas
  • 28 Views
Martin Hope
Anton Samokat
Asked: 2024-05-11 19:57:45 +0800 CST

Como fazer o bc lidar com números explicitamente positivos?

  • 3

Considere o seguinte:

$ echo "-1" | bc
-1

$ echo "(1)" | bc
1

$ echo "+1" | bc
(standard_in) 1: syntax error

O sinal de menos e os colchetes são tratados corretamente, mas quando o sinal de mais explícito é especificado bcocorre erro. É possível tratar números explicitamente positivos como números positivos normais?

Quero ser capaz de calcular construções como:

  • +1++2(o resultado deve ser 3)

Até mesmo uma simples calculadora do Ubuntu pode realizar essas operações:

Tela Anexo com Calculadora

É estranho que bcnão possa. Parece um bug.

Como solução alternativa, sedpode ser usado para pré-processar a entrada para bc, ou talvez bctenha alguma configuração específica para isso? Ou pode haver alguma alternativa para bcisso?


Atualizar

Enviei uma solicitação à bcequipe de suporte do para considerar a correção desse bug.

Comentários de Kusalananda :

bcé um utilitário POSIX e, portanto, qualquer implementação do utilitário deve seguir a especificação POSIX . Esta especificação contém uma gramática que não inclui a operação unária mais. Se o GNU implementar um unário plus em sua implementação do bc, eles precisariam garantir que todo o código existente que usa bcainda funcione como antes e que qualquer código futuro que use bcfuncione como um leitor do padrão esperaria.

Observe também que isso -1--2é um erro, então você parece propor adicionalmente uma mudança na precedência dos operadores de incremento e decremento, certo?

Meu comentário:

Acho que bcdeveria ser capaz de realizar cálculos simples, como uma calculadora simples pode fazer. Se a equipe de suporte adicionar bcpelo menos a capacidade de lidar com casos com dígitos como -1--2 (com resultado 1) e +1++2 (com resultado 3) (apenas operação unária mais para dígitos, e não cair com erro ao tentar para executar operações de incremento/decremento em dígitos que ainda não são suportados) no meu entendimento, isso não afetará de forma alguma o código compatível com POSIX existente ou futuro.

bash
  • 3 respostas
  • 87 Views
Martin Hope
Anton Samokat
Asked: 2024-05-10 22:08:52 +0800 CST

Como especificar várias condições alternativas (operador OR) para uma declaração de caso único? (Ou alternativamente, onde está a descrição da sintaxe do shell case?) [duplicado]

  • 4
Esta pergunta já tem respostas aqui :
Como especificar operadores AND/OR (condições) para declaração de caso? (3 respostas)
Fechado no mês passado .

Esta postagem foi editada e enviada para revisão no mês passado e não conseguiu reabrir a postagem:

Os motivos originais do fechamento não foram resolvidos

Eu quero algo assim:

time="1m"
case "$time" in
    *h*) 
    *m*) 
    *s*) 
        echo "handling several cases for h, m, s tokens" ;;
    *)
        echo "handling other cases" ;;
esac

Como conseguir isso para o shell POSIX?

shell
  • 1 respostas
  • 49 Views
Martin Hope
Anton Samokat
Asked: 2024-04-11 22:19:36 +0800 CST

Como encontrar arquivos com a ferramenta find no caminho do sistema ($PATH)? Ou, alternativamente, como especificar o diretório do ponto inicial para find como uma expressão?

  • 5

Por exemplo, quero encontrar todos os links simbólicos que fazem referência a um binário específico em todos os diretórios que pertencem ao sistema $ PATH. Isto pode ser alcançado com sucesso com a especificação manual de todos os diretórios:

sudo find ~/bin /home/samokat/.local/bin /home/samokat/bin /usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin /snap/bin -lname /opt/openoffice4/program/soffice

Mas quando estou tentando usar o comando com a expansão $PATH:

sudo find `echo $PATH | tr ':' ' '` -lname /opt/openoffice4/program/soffice

Recebo erro e resultado:

find: ‘~/bin’: No such file or directory
/usr/bin/soffice.link-to-openoffice-bak
echo $PATH | tr ':' ' '

gera o caminho correto:

~/bin /home/samokat/.local/bin /home/samokat/bin /usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin /snap/bin

Os seguintes também não estão funcionando:

sudo find `echo $PATH | tr ':' ' ' | xargs` -lname /opt/openoffice4/program/soffice
sudo find { `echo $PATH | tr ':' ' ' | xargs` } -lname /opt/openoffice4/program/soffice
sudo find eval "echo $PATH | tr ':' ' ' | xargs" -lname /opt/openoffice4/program/soffice
echo $PATH | tr ':' ' ' | xargs | sudo find -lname /opt/openoffice4/program/soffice  # runs some long computation

Como passar starting pointdiretórios como parâmetro calculável para find? Isso é possível?

bash
  • 2 respostas
  • 44 Views
Martin Hope
Anton Samokat
Asked: 2024-04-08 23:42:34 +0800 CST

Como posso criar um cabeçalho personalizado em menos? Ou alternativamente, como posso abrir dois arquivos simultaneamente em menos?

  • 12

Como posso acrescentar algum texto personalizado ao abrir um arquivo less? Por exemplo, gostaria de ver algo como:

My custom title

Content of the opened file goes here...

Eu quero um comando para isso como:

echo 'My custom title' | less file

lessnão possui esse recurso. Mas deve ser possível conseguir isso com alguma solução alternativa. Basicamente, precisamos combinar sequencialmente dois arquivos em um e depois abri-lo. Como posso criar um arquivo virtual temporário na RAM que conterá esse novo arquivo para abrir less?

Pergunta semelhante:

  • arquivos - 'menos' com linha de cabeçalho mantida no topo - Unix e Linux Stack Exchange
bash
  • 3 respostas
  • 1043 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve