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 / unix / 问题

All perguntas(unix)

Martin Hope
Saravana
Asked: 2024-10-14 00:42:01 +0800 CST

Personalize o prompt de status do comando man para mostrar a porcentagem de leitura

  • 12

Gosto que o prompt de status do comando man seja personalizado. O padrão escolhido de sua própria página man é assim,

Manual page name(sec) line x

Mas, fazer com que ele me mostre a porcentagem de conteúdo lido é minha preferência. Então eu defino a variável de ambiente que controla o prompt, MANLESScomo,

export MANLESS='?pt%pt \%: '

O prompt está vazio. Coloquei -P na frente como,

export MANLESS='-P?pt%pt \%: '

Nenhum progresso, agora o prompt contém apenas -P. Então, eu o configurei diretamente para cada invocação usando a -ropção,

man -r '?pt%pt \%: ' less

Isso também não ajudou. Mas, esse mesmo prompt quando definido como LESS env. variável como

export LESS="-P?pt%pt \%"

Cada invocação direta de less está mostrando o prompt desejado como

x %.

Somente quando menos pager é chamado pelo homem, ele não funciona.

man
  • 1 respostas
  • 756 Views
Martin Hope
nst1911
Asked: 2024-10-10 19:37:52 +0800 CST

Seria uma má ideia definir sources.list e sources.list.d apenas como permissões de root?

  • 12

Preciso adicionar um repositório que requer autenticação OAuth 2.0, então preciso passar um token de acesso. Uma ideia é escrevê-lo como um parâmetro de consulta ou como senha Basic Auth no /etc/apt/sources.listarquivo:

deb http://oauthrepourl.com?accesstoken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 suite classic

OR

deb http://somelogin:[email protected] suite classic

Mas acho que não seria seguro manter um token de acesso lá porque sources.listos sources.list.darquivos são acessíveis para leitura por todos os usuários:

-rw-rw-r-- 1 root root  2852 апр 24 13:41 sources.list
drwxr-xr-x 2 root root  4096 сен 25 10:17 sources.list.d

Seria uma má ideia tornar sources.listum sources.list.dconteúdo acessível apenas para o usuário root ( -rwx------)? Você pode usar o apt de qualquer maneira como root (como tem que ser) e usuários comuns não conseguiriam roubar o token de acesso desses arquivos.

PS: Sei que há um arquivo /etc/apt/auth.confque ajudaria a mantê-lo em segredo, mas parece que minha distribuição apté muito antiga e não o suporta.

linux
  • 1 respostas
  • 296 Views
Martin Hope
Viscountess of the Junkyard
Asked: 2024-07-19 17:18:19 +0800 CST

Existe um equivalente a caniuse para comandos em sistemas posix?

  • 12

Estou pensando em usar uma chamada para jqum script de utilitário que estou escrevendo, em vez de analisar o JSON manualmente.

Para tornar o script o mais portátil possível, quero saber quais versões de Unix/Linux/MacOS/WSL/etc suportam este comando sem qualquer instalação de pacote adicional.

Da mesma forma, no passado, descobri que alguns scripts usam chamadas para wget, que estão faltando em pelo menos um tipo por padrão.

Isso me fez pensar: existe algum tipo de ferramenta que diga às pessoas se é "seguro" usar um comando arbitrário em seus scripts dessa maneira? Idealmente, ele agiria como o site caniuse, mostrando quais sabores principais suportam ou não um comando em seus shells padrão.

===

EDIT: Agradecendo ao usuário Kusalananda por apontar que meus exemplos não são comandos POSIX, mudei o título para evitar rotulá-los incorretamente como tal.

shell
  • 3 respostas
  • 646 Views
Martin Hope
Max
Asked: 2024-07-13 08:31:38 +0800 CST

Como o Linux encontra a variante em negrito de uma determinada fonte?

  • 12

Há uma família de fontes monoespaçadas de que gosto, chamada IBM Plex Mono. Ele vem com vários pesos de fonte além do normal e do negrito, a saber:

Thin
ExtraLight
Light
Regular
Medium
SemiBold
Bold

Agora, tenho duas estações de trabalho que uso regularmente. Um deles roda o Kubuntu 22.04, onde instalei esta família de fontes usando apt(está nos repositórios). O outro roda o Fedora Kinoite, e eu instalei a fonte baixando os .woff2arquivos e copiando-os para o meu ~/.local/share/fontsdiretório.

Em ambas as máquinas, configurei a fonte monoespaçada padrão (usando as configurações de Fontes nas configurações do KDE) para IBM Plex Medium, que é o peso que gosto de usar no meu terminal (Konsole). Depois de fazer isso, o Konsole utiliza o peso médio correto no terminal.

No entanto, as duas máquinas renderizam texto em negrito no terminal de maneira diferente, o que você pode testar executando echo -e "\033[1mBold\033[0m normal"para imprimir algum texto em negrito usando códigos de escape ANSI.

  • Na máquina Kubuntu, um peso de fonte mais ousado (acho que é o Boldpeso) é usado.
  • Na máquina Fedora, o peso da fonte é exatamente o mesmo, como se a resolução da fonte tivesse decidido que Medium“já” é ousada o suficiente.

Meu problema imediato, é claro, é que eu gostaria de descobrir como fazer com que o Fedora (ou pelo menos o Konsole) use uma variante da fonte que realmente tenha maior peso, para que eu possa distinguir o texto em negrito do normal.

Mas a minha pergunta é mais ampla do que isso - dada uma pilha de .woff2(ou .ttfo que quer que seja) arquivos em ~/.local/share/fonts, e que eu especifiquei um deles como minha fonte monoespaçada padrão, como o Linux decide qual variante usar quando o Konsole pede "monoespaçado padrão com peso ousado"? Existe uma maneira de eu mesmo controlar isso, por exemplo, em /etc/fonts/conf.d/?


Esta pergunta é semelhante à minha, mas é bastante antiga e não cobre realmente as "melhores práticas" sobre como configurar esses tipos de mapeamento (por exemplo, onde devo colocar esse XML): Como faço para alias o peso em negrito de um família de fontes para o peso em negrito de outra família de fontes?

fonts
  • 1 respostas
  • 290 Views
Martin Hope
Marco Montevechi Filho
Asked: 2024-07-08 18:21:14 +0800 CST

Compreendendo a barra de memória superior

  • 12

Estou tentando mudar do htop para o top porque muitas vezes estive em servidores que não possuem o primeiro.

Quando digito tope entro pela primeira vez, o uso de memória é mostrado no MiB:

primeira saída superior

Então eu gosto de alternar para GiB Epara que os números fiquem mais confortáveis ​​de ler:

segunda saída superior

E finalmente alterno a barra de memória com m:

saída superior final

Mas após esta etapa final vejo os números 61,8/15,2. Parece óbvio para mim que 15,2 é a RAM disponível, mas e o significado de 61,8? Neste formato eu esperaria ter a memória usada neste lado da barra, mas obviamente não é isso.

top
  • 1 respostas
  • 847 Views
Martin Hope
Targeloid
Asked: 2024-07-03 16:45:57 +0800 CST

Por que o redirecionamento do stderr interfere no manuseio de $COLUMNS e da opção `checkwinsize` pelo bash?

  • 12

Estou criando um script de uma estrutura de teste no bash e estou me deparando com uma situação estranha.

Algumas coisas que estou fazendo nesta postagem para fins ilustrativos:

  • Adicionando echolinhas aos scripts; estes não fazem parte do conjunto de testes.
  • Executando todos os scripts em janelas de terminal com mais de 80 caracteres
  • A execução de todos os scripts dos diretórios em que residem, por meio, por exemplo, de ./test1.

Primeiro, há um setupscript. Isso sourcevem dos próprios scripts de teste (não pode ser executado em um subshell porque precisa definir variáveis ​​de ambiente). O primeiro corte fica assim.

# Make output consistent regardless of width of terminal running the script.
export COLUMNS=80
echo setup: $COLUMNS

O script test1é assim.

#!/bin/bash

# Send output to both the screen and a file.
exec > >(tee logfile)

echo before: $COLUMNS
. ./setup
echo after: $COLUMNS

Executar test1dá os resultados esperados.

before:
setup: 80
after: 80

Adicionar uma linha para setupbagunçar tudo, no entanto.

# Make output consistent regardless of width of terminal running the script.
export COLUMNS=80
echo setup: $COLUMNS

date
echo setup 2: $COLUMNS

Agora a saída da execução test1é:

before:
setup: 80
Tue Jul  2 13:36:43 CDT 2024
setup 2: 232
after: 232

Isso é explicado pela checkwinsizeopção bash. Como a página de manual documenta esta opção: "Se definido, o bash verifica o tamanho da janela após cada comando externo (não integrado) e, se necessário, atualiza os valores de LINHAS e COLUNAS. Esta opção é habilitada por padrão." exporte echonão são comandos externos, mas datesão, e é por isso que chamá-los anula o $COLUMNSvalor definido explicitamente.

A próxima estranheza surge quando outro script de teste, test2tem requisitos de log diferentes e envia stdout e stderr para logfile.

$ diff test1 test2
3c3
< exec > >(tee logfile)
---
> exec > >(tee logfile) 2>&1

Correr test2produz isto:

before:
setup: 80
Tue Jul  2 13:46:20 CDT 2024
setup 2: 80
after: 80

Por que isso anularia a checkwinsizeopção?

A setupdesativação checkwinsizeresolve meu problema prático, que é fazer com que todos os scripts de teste respeitem o $COLUMNSvalor definido explicitamente. Mas ainda estou intrigado com o motivo pelo qual a adição de 2>&1altera tanto o comportamento. É este o resultado pretendido?

Estou vendo isso no bash versão 5.0.18(1). Eu sei que isso é um pouco antigo e estaria interessado em saber se o comportamento é o mesmo em uma festa mais recente.

Não é o mesmo em um ainda mais antigo ao qual tenho acesso (versão 3.2.57(1)) - curiosamente, a diferença aqui é que a dateinvocação não é redefinida $COLUMNSpara a largura do terminal, apesar da página de manual desta versão documentar checkwinsizeessencialmente de forma idêntica . Portanto, esta versão parece ter bugs, pois seu comportamento não corresponde à documentação.

bash
  • 1 respostas
  • 136 Views
Martin Hope
anol
Asked: 2024-06-27 22:07:49 +0800 CST

Qual é o significado da sintaxe do colchete angular em `apt depende`?

  • 12

Ao executar apt dependsem alguns pacotes (por exemplo, libgtk3-devno Ubuntu 24.04), alguns nomes são colocados entre colchetes angulares ( <>) e outro nome de pacote é exibido em uma linha abaixo dele:

...
Depends: wayland-protocols (>= 1.17)
  Depends: <gir1.2-atk-1.0-dev>
    libatk1.0-dev
  Depends: <gir1.2-cairo-1.0-dev>
    gir1.2-freedesktop-dev
  Depends: <gir1.2-gdkpixbuf-2.0-dev>
    libgdk-pixbuf-2.0-dev
...

man apte man apt-cachenão parecem descrever esta sintaxe. O que isso significa?

debian
  • 1 respostas
  • 327 Views
Martin Hope
Stéphane Chazelas
Asked: 2024-06-21 20:26:41 +0800 CST

O tempo limite de select() / poll() se estende no Linux

  • 12

Ao escrever esta resposta para outra pergunta e resposta aqui , percebi que o tempo na solução zsh que usa select()para dormir por um determinado número de centissegundos estava errado em uma quantidade maior do que eu esperava.

Parece que está select()no meu sistema, cujo tempo limite parece ter um desvio consistente, como se seus segundos valessem 1.001 segundos normais.

$ strace -qqTe /select zsh -c 'zmodload zsh/zselect; zselect -t 6000'
pselect6(0, 0x7ffcee6a9f60, 0x7ffcee6a9fe0, 0x7ffcee6aa060, {tv_sec=60, tv_nsec=0}, NULL) = 0 (Timeout) <60.058930>
$ strace -qqTe /select zsh -c 'zmodload zsh/zselect; zselect -t 600'
pselect6(0, 0x7ffcf2042b70, 0x7ffcf2042bf0, 0x7ffcf2042c70, {tv_sec=6, tv_nsec=0}, NULL) = 0 (Timeout) <6.006212>
$ uname -rs
Linux 6.7.12-amd64

Veja como leva 6,006 segundos com um tempo limite de 6 segundos e 60,06 para um tempo limite de 60 segundos.

Observo o mesmo em hardware diferente e no Ubuntu 22.04 com Linux 6.5.0.

O mesmo com perlem vez de zsh:

$ strace -qqTe /select perl -e 'select undef,undef,undef,60'
pselect6(0, NULL, NULL, NULL, {tv_sec=60, tv_nsec=0}, NULL) = 0 (Timeout) <60.060218>

E o mesmo com poll() em vez de select():

$ strace -qqTe /poll perl -MIO::Poll -e 'IO::Poll->new()->poll(6)'
poll([], 0, 6000)                       = 0 (Timeout) <6.006215>
$ strace -qqTe /poll perl -MIO::Poll -e 'IO::Poll->new()->poll(60)'
poll([], 0, 60000)                      = 0 (Timeout) <60.060214>

Isso não parece se aplicar a clock_nanosleep()or alarm().

Esse é um problema conhecido? Isso é possivelmente intencional?

linux
  • 1 respostas
  • 244 Views
Martin Hope
Marc Le Bihan
Asked: 2024-05-22 13:37:27 +0800 CST

Tenho uma maneira mais limpa de atribuir uma string json parametrizada a uma variável bash?

  • 12

Gostaria de preparar um teste para um servidor REST petstore por meio de curl.

Para testar sua add new petAPI, preparo uma string json que contém o Petpara inserir em uma função bash que executa curl:

#!/bin/bash

# Add new pet
add_petstore() {
  local rest_url=$1

  local id_pet="$2"
  local id_category="$3"
  local category_name="$4"
  local pet_name="$5"
  local photo_url="$6"
  local tag_id="$7"
  local tag_name="$8"

  local pet_to_add="{ \
        \"id\": $id_pet, \
        \"category\": {  \
          \"id\": $id_category,  \
          \"name\": \"$category_name\"  \
        },  \
        \"name\": \"$pet_name\",  \
        \"photoUrls\": [  \
          \"$photo_url\"  \
        ],  \
        \"tags\": [  \
          {
            \"id\": $tag_id,  \
            \"name\": \"$tag_name\"  \
          }  \
        ]  \
      }"

  echo "$pet_to_add"

  curl -X 'POST' \
    "$rest_url" \
    -H 'accept: application/xml' \
    -H 'Content-Type: application/json' \
    -d "$pet_to_add"
}

add_petstore "http://localhost:8080/pet" "151" "12" "Dogs" "REX" "http://photosofrex/rex_rage.jpg" "1" "ferocious sales"

O echode $pet_to_addparece o que eu estou disposto a ter:

{         "id": 151,         "category": {            "id": 12,            "name": "Dogs"          },          "name": "REX",          "photoUrls": [            "http://photosofrex/rex_rage.jpg"          ],          "tags": [            {
            "id": 1,              "name": "ferocious sales"            }          ]        }

e add_petstoreo método me permite preparar facilmente alguns animais de estimação.


Mas a local pet_to_add=...declaração é muito suja.
Se alguém (ou eu mais tarde) precisar adaptar esse script, essa variável local não será acolhedora.

Pensei primeiro que poderia colocar seu conteúdo em um arquivo e lê-lo com uma extensão local pet_to_add=$(cat myfile). Mas isso não resolveria seus parâmetros variáveis.

Tenho uma maneira de escrever essa local pet_to_adddeclaração de maneira mais limpa?

bash
  • 3 respostas
  • 809 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
Prev
Próximo

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