Instalei uma nova instalação do Ubuntu 24.04 em um PC.
Agora o problema é que não é possível clicar em todo o canto superior direito de qualquer aplicativo maximizado.
Você tem alguma ideia do que pode estar errado e como consertar?
Recebi esta resposta para É possível encadear dois comandos find consecutivos? ano passado.
Hoje eu queria testar a recomendação mais recente para unir dois find
comandos.
find ... -print0 | find -files0-from - ...
Para minha surpresa não funcionou e recebi este erro:
encontrar: predicado desconhecido `-files0-from'
Eu verifiquei a file
versão usando file --version
e foifind (GNU findutils) 4.8.0
Isso me confunde, pois uso o Ubuntu 22.04.3 LTS e executo apt update && apt upgrade
todos os dias.
Então, como posso atualizar meu find
comando para a versão mais recente?
Eu uso este código para consumir a API do GitHub e automatizar algumas tarefas:
curl --silent -H 'Authorization: token github_access_token' 'https://api.github.com/orgs/OrganizationName/repos?per_page=100'
Às vezes, recebo isso como resposta:
[
]
Eu quero saber se a resposta é uma matriz vazia ou não.
Pensei em usar jq
like echo $Response | jq -r ".[]"
mas não sei como continuar a partir daí.
Como posso descobrir que uma string JSON é uma matriz vazia no bash?
Posso usar este comando para definir o número de espaços de trabalho via shell:
gsettings set org.gnome.desktop.wm.preferences num-workspaces 9
Mas não consigo encontrar a chave para alterá-lo de Dynamic workspaces para Fixed number of workspaces .
Como posso fazer isso no shell?
De Como redimensionar imagens facilmente via linha de comando? Eu sei que posso usar este comando para redimensionar uma imagem no bash:
convert -resize 1024X768 source.png dest.jpg
Mas estou preso em fornecer apenas a largura e manter a proporção.
man convert
não fornece nenhuma ajuda para -resize
flag.
eu quero algo comoconvert -resize 1024 -keep-ratio source.png dest.png
Qual seria o comando?
Estou tentando executar este código:
while read Item; do
export environmentVariables="$environmentVariables\n - $Item"
done <<< "$(
cat /LocalSecrets/EnvironmentVariables.json |
jq -r 'to_entries[] | "\(.key)=\(.value)"' |
)"
Eu tenho um arquivo JSON simples em /LocalSecrets/EnvironmentVariables.json
. É um objeto JSON simples de par chave/valor:
{
"FirstKey": "FirstValue",
"SecondKey": "SecondValue",
"ThirdKey": "ThirdValue"
}
E eu quero lê-lo usando jq
e anexá-los todos a uma variável de shell $environmentVariables
como:
FirstKey=FirstValue
SecondKey=SecondValue
ThirdKey=ThirdValue
Mas como jq
precisa de aspas duplas em seu comando e preciso usar heredoc para preservar o $environmentVariables
shell atual no loop, estou preso. Esse código não é executado e tem erros sintáticos.
O que devo fazer? Estou aberto a outras soluções também.
Aqui está um resultado real do meu ping 192.168.1.1
comando:
64 bytes from 192.168.1.1: icmp_seq=964 ttl=64 time=1018 ms
64 bytes from 192.168.1.1: icmp_seq=965 ttl=64 time=921 ms
64 bytes from 192.168.1.1: icmp_seq=966 ttl=64 time=847 ms
64 bytes from 192.168.1.1: icmp_seq=967 ttl=64 time=866 ms
64 bytes from 192.168.1.1: icmp_seq=968 ttl=64 time=895 ms
64 bytes from 192.168.1.1: icmp_seq=969 ttl=64 time=858 ms
64 bytes from 192.168.1.1: icmp_seq=970 ttl=64 time=886 ms
64 bytes from 192.168.1.1: icmp_seq=971 ttl=64 time=890 ms
64 bytes from 192.168.1.1: icmp_seq=972 ttl=64 time=888 ms
64 bytes from 192.168.1.1: icmp_seq=973 ttl=64 time=910 ms
64 bytes from 192.168.1.1: icmp_seq=974 ttl=64 time=915 ms
64 bytes from 192.168.1.1: icmp_seq=975 ttl=64 time=937 ms
64 bytes from 192.168.1.1: icmp_seq=976 ttl=64 time=933 ms
64 bytes from 192.168.1.1: icmp_seq=977 ttl=64 time=947 ms
ping: sendmsg: Network is unreachable
ping: sendmsg: Network is unreachable
ping: sendmsg: Network is unreachable
ping: sendmsg: Network is unreachable
ping: sendmsg: Network is unreachable
ping: sendmsg: Network is unreachable
64 bytes from 192.168.1.1: icmp_seq=985 ttl=64 time=1.09 ms
64 bytes from 192.168.1.1: icmp_seq=986 ttl=64 time=2.02 ms
64 bytes from 192.168.1.1: icmp_seq=987 ttl=64 time=3.37 ms
64 bytes from 192.168.1.1: icmp_seq=988 ttl=64 time=1.08 ms
64 bytes from 192.168.1.1: icmp_seq=989 ttl=64 time=2.87 ms
64 bytes from 192.168.1.1: icmp_seq=990 ttl=64 time=1.11 ms
64 bytes from 192.168.1.1: icmp_seq=991 ttl=64 time=1.39 ms
64 bytes from 192.168.1.1: icmp_seq=992 ttl=64 time=1.11 ms
64 bytes from 192.168.1.1: icmp_seq=993 ttl=64 time=1.10 ms
Por alguns motivos desconhecidos, às vezes minha conexão WiFi fica muito lenta e a principal causa é o tempo de ping.
Devo desconectar manualmente meu WiFi e reconectá-lo.
Estou no Ubuntu 20.04 LTS.
Eu quero que seja automático. Aqui estão os trechos de script que eu criei. Mas não consigo juntá-los:
# Read time using awk
ping 192.168.1.1 | awk '{gsub("time=", ""); print $7}'
# Disconnecting from WiFi
nmcli con down WiFiName
# Reconnecting to WiFi
nmcli device wifi connect
Eu tentei isso, mas não funciona:
while read Line; do
echo "read line"
echo $Line
done <<< $(ping 192.168.1.1)
Basicamente, estou preso em redirecionar ping
a saída padrão para um loop while e estou preso em agregar o tempo médio usando o awk
comando.
Como posso combiná-los?
Atualizar
Para quem estiver interessado no script final, veja minha resposta abaixo.
Eu criei com sucesso um observador para modificações dentro de um diretório, recursivamente:
inotifywait -m -r -e modify --format '%w%f' "$Path" | while read File
do
echo "File $File is modified"
done
No entanto, tenho alguns links simbólicos dentro desse diretório. E quando abro eles em um editor e os altero, inotifywait
não imprime nada.
Acho que é porque os arquivos reais estão em outro diretório.
Como posso dizer inotifywait
para detectar alterações de links também?
Eu sei que posso usar envsubst
o comando para substituir variáveis de ambiente dentro de um arquivo e gravá-lo em um arquivo de saída:
envsubst < input.txt > output.txt
No entanto, agora eu só tenho uma variável e não é um arquivo. Mas ainda preciso substituir qualquer variável de ambiente dentro dele.
export original_text="Hello $name, please come here $date"
# I want to be able to replace $name and $date, in the RAM and not on disk and files
export $name="John"
export $date="tomorrow"
output=$(envsubst < $original_text) # this is a pseudo-command
echo $output
# prints => Hello John, please come here tomorrow
É possível? Como pode fazer isso?
Baixei o .deb
arquivo do VS Code para o Ubuntu. Renomeei para vs.deb
.
Então eu vou para o meu diretório de downloads:
cd ~/Downloads
E agora que estou aqui, tento instalá-lo:
sudo apt install vs.deb
E aqui está o que eu recebo:
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package vs.deb
E: Couldn't find any package by glob 'vs.deb'
Mas quando eu instalo usando ./vs.deb
, ele é instalado:
sudo apt install ./vs.deb
Por que o Linux não aceita o nome do arquivo dentro do mesmo diretório sem exigir o caminho relativo?
Eu tenho este script para verificar git status
todos os meus repositórios:
find / -type d -name .git 2>&- |
while read gitFolder; do
if [[ $gitFolder == *"/Temp/"* ]]; then
continue;
fi
if [[ $gitFolder == *"/Trash/"* ]]; then
continue;
fi
if [[ $gitFolder == *"/opt/"* ]]; then
continue;
fi
parent=$(dirname $gitFolder);
if [[ `git -C $parent status --porcelain` ]]; then
echo "";
echo $parent;
git -C $parent status --porcelain
else if [[ $(git -C $parent status | grep ahead) ]]; then
echo "";
echo "$parent is not pushed yet";
fi
done
Mas não está funcionando. Se eu remover o segundo else-block
, então funciona.
Basicamente eu quero saber se um repositório git tem alguma alteração (primeiro if) ou se está à frente do master (segundo if).
Como devo alterar essa segunda condição if?
Busco um editor onde Ctrl+ Ccopia, Ctrl+ Xcorta, Ctrl+ Vcola, Ctrl+ Zdesfaz, Ctrl+ Yrefaz, F3busca e F2renomeia. Quando clico com o botão esquerdo do mouse, o cursor deve ir para lá. Todos os modos devem estar ativos ao mesmo tempo (comando e inserir e ...).
Além disso , Ctrl+ Wfecha a guia atual em interfaces com guias, Alt+ F4fecha o aplicativo em foco no momento, Ctrl+ Tabguias entre adivinhar, guias, Ctrl+ Oabre a caixa de diálogo, Ctrl+ Pexibe a caixa de diálogo de impressão,
Qual editor Linux existe por aí que pode ser usado no terminal e tem esse comportamento?
Estou tentando instalar o Docker no Ubuntu 20.04 LTS. Estou usando os documentos oficiais . Já fiz isso antes sem problemas.
Aqui está o erro após a execução sudo apt-get update
:
Hit:1 http://dl.google.com/linux/chrome/deb stable InRelease
Hit:2 http://packages.microsoft.com/repos/code stable InRelease
Get:3 http://security.ubuntu.com/ubuntu focal-security InRelease [114 kB]
Hit:4 http://ir.archive.ubuntu.com/ubuntu focal InRelease
Hit:5 http://ir.archive.ubuntu.com/ubuntu focal-updates InRelease
Get:6 https://download.docker.com/linux/ubuntu focal InRelease [52.1 kB]
Hit:7 http://ir.archive.ubuntu.com/ubuntu focal-backports InRelease
Err:6 https://download.docker.com/linux/ubuntu focal InRelease
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 7EA0A9C3F273FCD8
Reading package lists... Done
W: GPG error: https://download.docker.com/linux/ubuntu focal InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 7EA0A9C3F273FCD8
E: The repository 'https://download.docker.com/linux/ubuntu focal InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
Eu vi Como faço para corrigir o erro GPG "NO_PUBKEY"? mas não consegui resolver o problema.
Existem zilhões de perguntas e respostas sobre como renomear arquivos. Eu sou novo no Linux e essa infinidade de maneiras possíveis e resultados diferentes e configurações diferentes me confundem.
Por exemplo:
rename
funciona, mas não recursivamentegrep
funciona recursivamente, mas não pode ser usado para pesquisar nomes de arquivos e diretórios, em vez do conteúdo do arquivofind
funciona, mas tem uma sintaxe longa e feia quando você deseja pesquisar usando expressões regulares.E também muitas respostas sobre ask ubuntu e stackoverflow não funcionam para mim e não sei como depurá-las e solucioná-las.
Então, me perdoe por perguntar mais uma vez.
Estou procurando uma maneira limpa e memorizável de:
Renomear arquivos recursivamente usando expressão regular simples .
Eu já faço isso para o conteúdo dos arquivos usando esta sintaxe:
grep -rl search_regex | xargs sed -i 's/old/new/g'
Funciona sem muita frustração. Funciona fora da caixa. Ele apenas funciona. Estou procurando uma solução viável que seja limpa e organizada. Você pode me ajudar por favor?