Eu queria copiar alguns códigos que tenho do Neovim para o Firefox, mas o material que arranquei não é transferido para fora do Neovim.
Depois que verifiquei :checkhealth
, foi o que disse:
O que devo fazer para lidar com esse problema?
Depois de alguns anos instalei o Ubuntu novamente e estou tentando configurá-lo ao meu gosto. Possuo uma conta da Microsoft com 1 TB de armazenamento em nuvem. Instalei o cliente Onedrive no Ubuntu, mas parece que ele baixa todos os arquivos e não tenho espaço suficiente no meu laptop para armazená-los, então só quero usar o Onedrive da mesma forma que o Nautilus e o Google Drive funcionam, por apontando para os arquivos sem baixar até clicar nos arquivos para abri-los. Existe alguma configuração que devo tentar? Pesquisei no Google por um tempo e não descobri como fazer isso. A propósito, como você inicia o OnedriveGUI? Eu instalei, mas não sei como iniciar a GUI novamente.
Estou usando um programa projetado para Windows que eu mesmo compilei para GNU/linux. O programa funciona na linha de comando e um argumento se parece com este:
prgm -arg1 abcd(10)(22) -i files.ext
Onde (10)
e estão (22)
sinalizadores como a
, e . Este comando está falhando porque tenta interpretar o conteúdo interno e apresenta um erro de sintaxe. Então, eu tenho duas perguntas:b
c
d
bash
()
Eu sei que o grep me permite procurar uma string em arquivos, porém não consegui encontrar o método correto para procurar a seguinte string:
"snapshot3" : {
"@custom_name" : true
Portanto, a string que estou procurando contém uma quebra de linha, aspas, o sinal de arroba @...
Alguma ideia de como eu poderia procurar exatamente essa string em arquivos de texto?! Alternativamente, seria suficiente para mim se eu pudesse procurar por arquivos onde existam apenas 2 ou 3 palavras separando 'snapshot3' de 'true'
Recentemente, precisei anotar a saída do meu terminal. E eu li esta pergunta para encontrar a resposta. Mas agora, gostaria de anotar meus comandos (que digito no terminal, por exemplo: sudo apt update
etc.) para armazenar o histórico do que fiz anteriormente.
Como posso salvar minha entrada em um arquivo e executar essa entrada simultaneamente?
PS script
contém muito lixo do tipo: ^[[?
^[[m
etc. Eu gostaria de uma maneira mais simples, que salva apenas meus comandos.
No meu ambiente, existem três veth na ponte:
$ brctl show virbr1
bridge name bridge id STP enabled interfaces
virbr1 8000.52540071337a yes eth1
virbr1-nic
vnet1
e posso obter o endereço MAC deles:
$ brctl showmacs virbr1
port no mac addr is local? ageing timer
3 52:54:00:25:7a:ab yes 0.00
3 52:54:00:25:7a:ab yes 0.00
3 52:54:00:99:67:68 no 9.15
2 52:54:00:99:d8:05 no 8.48
2 fe:54:00:99:d8:05 yes 0.00
2 fe:54:00:99:d8:05 yes 0.00
Mas como posso obter o endereço IP daqueles que estão em bridge? Atualmente, posso obter o endereço IP arp
; existe alguma outra maneira de obter mais detalhes?
~$ sudo arp
Address HWtype HWaddress Flags Mask Iface
192.168.252.246 ether 52:54:00:99:d8:05 C virbr1
192.168.252.254 ether 52:54:00:99:67:68 C virbr1
192.168.252.83 ether 52:54:00:99:d8:05 C virbr1
...
eu tenho esse roteiro
#verifica pastas perdidas+encontradas função chklnf { #DOC echo "chklnf - lista todos os arquivos em pastas perdidas+encontradas em dispositivos montados" x="perdido+encontrado/" se [ "$EUID" != 0 ] ;então echo "Por favor, digite a senha do sudoers para permitir acesso às pastas $x." sudo echo "Obrigado..." fi para p em $(mount | sed -nre 's,^/dev/.+ on ([^ ]+).*$,\1,p') fazer se [ -d "$p/$x" ] ;então echo -n "--- $p/$x --- " sudo ls -l "$p/$x" fi feito }
Eu gostaria que isso fosse executado uma vez no final do .bash_profile, mas;
é inconveniente ter que digitar a senha para cada novo prompt do shell.
Então: é possível "se livrar" disso pelo "ls -l" aí?
Alternativamente:
como detectar se o "modo sudo" já está presente? (ref: "$EUID" no script)
$ sudo cat /etc/sudoers [sudo] senha para hannu: **************** # # Este arquivo DEVE ser editado com o comando 'visudo' como root. #... {SNIP}
# Script único especial hannu ALL=(raiz) NOPASSWD: /home/hannu/bin/checklostfound
$ ls -l /home/hannu/bin/checklostfound -rwx------ 1 hannu hannu 526 24 de setembro 16:30 /home/hannu/bin/checklostfound
$ sudo ~/bin/checklostfound --- //perdido+encontrado/ --- total 0
$
No final, com ajuste para $p tendo um /
no final:
$ cat /home/hannu/bin/checklostfound #!/bin/env bash #verifica pastas perdidas+encontradas #DOC echo "chklnf - lista todos os arquivos em pastas perdidas+encontradas em dispositivos montados" x="perdido+encontrado/" se [ "$EUID" != 0 ] ;então echo "Por favor, digite a senha do sudoers para permitir acesso às pastas $x." sudo echo "Obrigado..." fi para p em $(mount | sed -nre 's,^/dev/.+ on ([^ ]+).*$,\1,p') fazer set="/" se [ "${p: -1}" = "/" ]; então set=""; fi se [ -d "$p$sep$x" ] ;então echo -n "--- $p$sep$x --- " sudo ls -l "$p$sep$x" fi feito $ sudo /home/hannu/bin/checklostfound -- /perdido+encontrado/ --- total 0 --- /media/hannu/Data8/lost+found/ --- total 0 $ /home/hannu/bin/checklostfound Por favor, digite a senha do sudoers para permitir o acesso às pastas perdidas+encontradas/. [sudo] senha para hannu: Obrigado... --- /perdido+encontrado/ --- total 0 --- /media/hannu/Data8/lost+found/ --- total 0 $
Por exemplo, digamos que você pesquise ns registros consultando df.uba.ar
o uba.ar
servidor de nomes, digamos ns.uba.ar
.
Um registro dessa consulta pode encaminhá-lo para o servidor de nomes df.uba.ar
em um endereço completamente fora do domínio do servidor de nomes consultado, digamos, em mynameserver.net
, isso é possível?
Cometi um erro terrível ao transferir fotos de um cartão microSD para um disco rígido externo.
Eu conecto o cartão microSD e o HDD externo ao meu iPad. Eu pude ver todas as fotos do cartão SD. Selecionei todos eles e queria copiar para o HDD externo, mas não consegui encontrar o botão "copiar", então cliquei no botão "mover" (muito errado! Me arrependo muito).
Infelizmente, há muitos arquivos (mais de 4.000) e meu iPad ficou sem bateria, então o processo MOVE foi interrompido. Depois disso, todos os arquivos (cerca de 2.000) no disco rígido externo mostram seus nomes, seus tamanhos são 0 bits. Esses arquivos no cartão microSD também mostram apenas seus nomes e seus tamanhos são todos de 0 mordida.
O que posso fazer?
Ao tentar estender uma partição do meu SSD (que continha minha partição Arch Linux), o Windows a converteu em uma unidade dinâmica, o que atrapalhou minha inicialização do GRUB, pois aparentemente o Linux não consegue ler unidades dinâmicas. Voltei para uma unidade simples usando o AOMEI Partition Assistant, conforme sugerido em algumas postagens.
No entanto, parece ter bagunçado a tabela de partições, pois ainda não consigo inicializar no GRUB e, ao verificar a partir de um USB inicializável, o gdisk mostra as tabelas de partição MBR e GPT disponíveis. Aqui estão todas as saídas do gdisk:
Informações do disco :
[[email protected] ~]$ sudo gdisk /dev/nvme0n1
GPT fdisk (gdisk) version 1.0.9.1
Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: present
Found valid MBR and GPT. Which do you want to use?
1 - MBR
2 - GPT
3 - Create blank GPT
MBR :
Disk /dev/nvme0n1: 1953525168 sectors, 931.5 GiB
Model: Samsung SSD 970 EVO Plus 1TB
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 1A0E603E-51F0-4487-B502-11E625DF814E
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 1953525134
Partitions will be aligned on 2048-sector boundaries
Total free space is 211840366 sectors (101.0 GiB)
Number Start (sector) End (sector) Size Code Name
1 1426096128 1427144703 512.0 MiB 0700 Microsoft basic data
2 1427144704 1741717503 150.0 GiB 0700 Microsoft basic data
5 32768 1426096126 680.0 GiB 0700 Microsoft basic data
GPT :
Disk /dev/nvme0n1: 1953525168 sectors, 931.5 GiB
Model: Samsung SSD 970 EVO Plus 1TB
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): A9089CC8-91CB-4A00-AB2F-F39D643718A8
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 1953525134
Partitions will be aligned on 8-sector boundaries
Total free space is 211807631 sectors (101.0 GiB)
Number Start (sector) End (sector) Size Code Name
1 34 2081 1024.0 KiB 4201 LDM metadata partition
2 2082 32767 15.0 MiB 0C01 Microsoft reserved ...
3 32768 1426096127 680.0 GiB 4200 LDM data partition
4 1426096128 1427144703 512.0 MiB EF02
5 1427144704 1741717503 150.0 GiB 8300
Parece que a tabela GPT é anterior à conversão para o volume simples, pois contém dados LDM como antes. A tabela MBR está correta na forma como minhas partições foram distribuídas antes do disco ser convertido em dinâmico, mas todas as partições são mostradas como dados básicos da Microsoft, então não tenho certeza se devo reverter para isso.
Ao abrir gparted
a unidade parece bem, a partição de 150 Gb ainda mostra o uso do sistema de arquivos ext4 ( captura de tela gparted ) que está correto e posso até montá-lo a partir da linha de comando, no entanto, não consigo montá-los a partir da GUI do gerenciador de arquivos inicializável. Na verdade, não consigo montar nenhuma partição dessa unidade pela GUI. O GRUB também parece ter sido corrompido em alguma etapa porque meu PC inicializa com "Falha no dispositivo de inicialização selecionado. Pressione qualquer botão para reiniciar" quando seleciono essa partição de inicialização. Ainda consigo inicializar o Windows, pois ele foi instalado em outra unidade. Além disso, todos os discos, exceto este, têm uma tabela de partição GPT, não tenho certeza se este era GPT ou MBR antes de bagunçar a unidade dinâmica do Windows.
Não tenho certeza do que fazer aqui. Existe uma maneira de recuperar minha tabela de partições antiga e não perder nenhum dado?
Nota: estou usando Arch Linux (EndeavourOS) em inicialização dupla com Windows 10.
Edição 1: Depois de converter de volta para a unidade Simple, minha partição arch fica visível (mas é claro, não acessível) tanto no Windows Explorer quanto no gerenciador de partição, onde é mostrada como RAW.
Estou tentando inicializar um kernel Linux sem mudar para qualquer modo VGA. Então, eu só quero a exibição do personagem. Posso de alguma forma fazer isso? Na verdade, alguns como um vga=off
ou similar seriam muito bons.
Preciso renomear vários arquivos (mais de 100) em um sistema Ubuntu e quero saber como fazer isso quando o padrão dos arquivos é algo como "Filename_01.jpg" para "NameOfFile_01.jpg" no Windows, Eu digitaria:
ren Filename_*.jpg NameOfFile*.jpg
Devido à maneira complicada como os vários comandos que encontrei (renomear, mmv, etc.) funcionam e aos exemplos de sintaxe, não consigo entender esses comandos. Não preciso de uma explicação completa de como o comando funciona, só preciso da sintaxe exata para fazer isso.
Estou construindo um servidor doméstico para hospedar alguns aplicativos auto-hospedados no docker (Ubuntu LTS). Gostaria de colocar todos os arquivos dos aplicativos na pasta inicial do usuário para mantê-los em um só lugar e facilitar o backup. Estou pensando em 2 pastas principais: /home/user/docker – para docker compose e todos os volumes do docker e /home/user/data – para todos os meus arquivos:
/home/user/
docker/
container1
container2
…
data/
entertainment/
movies
series
music
downloads/
documents/
photos/
personal files/
backups/
laptop_backups/
phone_backups/
Atribuirei os dados/pasta ao Nextcloud para acesso de laptops e telefones familiares.
Eu tenho um SSD de 500 GB, HDD de 1 TB + alguns HDDs de tamanhos menores diferentes + provavelmente adicionarei mais HDDs no futuro. Talvez também mais um SSD.
Estou planejando dividir o armazenamento como LVM:
SSD – 2 partições: 100 GB e 400 GB HDD – 1 partição: 1 TB
Criarei 3 grupos de volumes: 100 GB – “sistema”, 400 GB – “SSD”, 1 TB – “HDD”.
Estou pensando na seguinte configuração:
“sistema” VG 100GB – “sistema” LV para /
VG “HDD” – LV “dados lentos” para:
/home/user/data/entertainment
/home/user/data/backups
/home/user/data/downloads
VG “SSD” – LV “dados rápidos” para:
/home/user/data/documents
/home/user/user/docker
Minha dúvida é: qual a melhor forma de dividir o armazenamento entre Grupos de Volumes e Volumes Lógicos? Gostaria de ter uma configuração flexível para poder redimensionar e alterar o armazenamento em disco no futuro e ao mesmo tempo usar o espaço SSD da melhor maneira.
Estou tentando escrever uma função find e cd assim:
findcd () {
cd "$(dirname "$(find '$1' -type '$2' -name '$3')")"
}
ser chamado assim:
find . f [FILE_NAME]
Mas é ver o cifrão e esperar mais argumentos em oposição à execução do que está dentro. Estou apenas começando a escrever aliases e funções, então qualquer conselho seria muito útil!
Estou em um Raspberry Pi, mas não acho que essa pergunta seja específica do Raspberry Pi OS.
Eu só uso uma chave SSH para fazer login como usuário pi.
Eu tenho um script que chama sudo -v
e atualmente pede a senha do usuário pi
.
Quero facilitar essa etapa, então, de preferência, não peça nenhuma senha ou tenha uma senha bem simples (como "pi"
).
Mas é claro que não quero expor uma conta de usuário via SSH com uma senha tão simples.
Já tenho um arquivo /etc/sudoers.d
que contém pi ALL=(ALL) NOPASSWD: ALL
, mas não desativa a pergunta de senha para sudo -v
.
Quais são minhas opções?
Editar: Resultado sudo -l
conforme solicitado nos comentários:
pi@klipper:~ $ sudo -l
Matching Defaults entries for pi on klipper:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin, env_keep+=NO_AT_BRIDGE, env_keep+="http_proxy HTTP_PROXY", env_keep+="https_proxy HTTPS_PROXY", env_keep+="ftp_proxy FTP_PROXY",
env_keep+=RSYNC_PROXY, env_keep+="no_proxy NO_PROXY"
User pi may run the following commands on klipper:
(ALL : ALL) ALL
(ALL) NOPASSWD: ALL
Estive lendo uma postagem no blog de Paul Randal sobre o processo de backup do SQL Server, onde ele descreve as principais fases de um backup completo. Um ponto que ele menciona é que durante um backup completo, o processo lê "todas as extensões alocadas, independentemente de todas as 8 páginas da extensão estarem em uso".
Um backup completo tem as seguintes fases principais:
- Execute um ponto de verificação.
- Leia todos os dados em uso dos arquivos de dados (tecnicamente, lendo todas as extensões alocadas, independentemente de todas as 8 páginas da extensão estarem em uso).
- Leia todo o log de transações desde o início da transação não confirmada mais antiga, desde o ponto de verificação inicial até o momento em que a fase 2 terminou. Isso é necessário para que o banco de dados possa ser recuperado para um ponto consistente durante o processo de restauração (veja esta postagem para mais detalhes).
- (Opcionalmente, teste todas as somas de verificação da página, opcionalmente execute a compactação de backup e, opcionalmente, execute a criptografia de backup).
Essa afirmação me levou a pensar sobre os detalhes do que exatamente é feito o backup. Especificamente, o processo de backup inclui todas as extensões alocadas, mesmo que nem todas as páginas dentro dessas extensões estejam em uso?
Eu apreciaria quaisquer insights ou esclarecimentos sobre este tópico. Agradeço antecipadamente por sua ajuda!
Abaixo de dois sql estava funcionando bem com MariaDB 10.5.8 e MySQL 5.7
SET @curRow=0;
select @curRow := @curRow + 1 AS row_number, `users`.`name` from `users`
ou
select ROW_NUMBER() OVER (ORDER BY users.id) AS row_number, `users`.`name` from `users`
Mas quando executo no MariaDB 11.1.2 gera erro: Query 1 ERROR: You have an error in your SQL sintaxe; verifique o manual que corresponde à versão do seu servidor MariaDB para obter a sintaxe correta a ser usada perto de 'row_number, users
. name
de users
'na linha 1
Eu verifiquei com ChatGPT 3.5. Ele me sugere
SELECT row_number FROM (
SELECT @curRow := @curRow + 1 AS row_number, name
FROM users, (SELECT @curRow := 0) r
) AS subquery_alias
O erro que você está encontrando é porque você não pode usar uma variável definida pelo usuário para gerar números de linha diretamente na cláusula SELECT e depois referenciá-la na mesma cláusula SELECT no MariaDB. Em vez disso, você deve usar uma subconsulta ou uma expressão de tabela comum (CTE) para conseguir isso. Veja como você pode reescrever sua consulta usando uma subconsulta.
Mas isto não está funcionando. Então, o que fazer no MariaDB 11?
Se eu tiver uma tabela conforme https://www.db-fiddle.com/f/arPEdUty3U6AJEQfqYEyRc/1 com uma lista de lançamentos:
INSERT INTO `releases` (`ReleaseID`, `ReleaseNumber`) VALUES
(1, '10.6'),
(2, '10.8'),
(3, '_TBD'),
(4, '10.9'),
(5, 'Future'),
(6, '10.10'),
(7, '10.11');
Como posso classificá-lo para que as coisas que começam com _
venham primeiro, depois os números, ordenados como 10.6
, 10.8
, 10.9
, 10.10
, 10.11
, e depois qualquer outra coisa?
Minha tentativa de conversão atual ( CAST(ReleaseNumber as SIGNED INTEGER)
coloca Future
depois _TBD
em vez de no final.
A saída desejada deste exemplo seria
_TBD
, 10.6
, 10.8
, 10.9
, 10.10
, 10.11
,Future
Adoro usar CTEs para criar consultas claras e agradáveis. No entanto, tenho certeza de que a consulta que criei é realmente ineficiente.
Existe uma maneira melhor de fazer isso e manter as coisas claras?
with first_date as (
-- selecting just 1 date
-- namely: 1 full year ago
select (extract(year from current_date - interval '1 year')||'-01-01' )::date as date
)
, last_date as (
select date from star.dim_date where current_cal_day='Current'
)
, total_active_customers_ps_day as(
select
dd.date
, dd.is_first_day_in_month
, dd.is_last_day_in_month
, count(dc.id) as total_customers
from first_date, last_date,
star.dim_date dd
-- join with dim_client, using first_subscription_start_date & last_subscription_end_date
-- to get the ids of just the active clients
join star.dim_client dc on dd.date
between dc.first_subscription_start_date and coalesce(dc.last_subscription_end_date::date, '3000-01-01')
and dc.created <= dd.date
and dc.first_subscription_start_date >= dc.created::date
where
dd.date >= first_date.date
and dd.date <= last_date.date
group by
dd.date
, dd.is_first_day_in_month
, dd.is_last_day_in_month
)
select * from total_active_customers_ps_day ;
Acho que estou causando algumas junções cartesianas, já que essa consulta é bem mais eficiente
with total_active_customers_ps_day as(
select
dd.date
, dd.is_first_day_in_month
, dd.is_last_day_in_month
, count(dc.id) as total_customers
from
star.dim_date dd
-- join with dim_client, using first_subscription_start_date & last_subscription_end_date
-- to get the ids of just the active clients
join star.dim_client dc on dd.date
between dc.first_subscription_start_date and coalesce(dc.last_subscription_end_date::date, '3000-01-01')
and dc.created <= dd.date
and dc.first_subscription_start_date >= dc.created::date
where
dd.date >= (extract(year from current_date - interval '1 year')||'-01-01' )::date
and dd.date <= (select date from star.dim_date where current_cal_day='Current')
group by
dd.date
, dd.is_first_day_in_month
, dd.is_last_day_in_month
)
select * from total_active_customers_ps_day ;
Qual é a melhor maneira de fazer isso?
Entendo que, para obter uma lista de clusters, pg_lscluster
preciso usar ferramentas como pg_createcluster
.
Mas eu uso initdb
e pg_ctl
para criar clusters. Eu sei que eles estão em execução porque posso acessar cada cluster (tenho três clusters) com arquivos psql -p [port]
.
Como obtenho uma lista de clusters criados com essas ferramentas?