Skip to content

Instantly share code, notes, and snippets.

@tiagofrancafernandes
Last active March 12, 2024 04:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tiagofrancafernandes/80a327df25db4148d5ca0b33b5fd00cf to your computer and use it in GitHub Desktop.
Save tiagofrancafernandes/80a327df25db4148d5ca0b33b5fd00cf to your computer and use it in GitHub Desktop.
dev-linux-snippets
1>/dev/null regular output 2>/dev/null errors output
necessária autenticação para criar um dispositivo gerido pela cor
https://www.google.com/search?q=%22necess%C3%A1ria+autentica%C3%A7%C3%A3o+para+criar+um+dispositivo+gerido+pela+cor%22
## Explantion:
## Ia a security policy
## Policy file (on ubuntu 20.04):
## /usr/share/polkit-1/actions/org.freedesktop.color.policy
# Create pkla file
sudo nano /etc/polkit-1/localauthority/50-local.d/create-device-tf2.pkla
# Add folow content
[Allow Color Manager]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile;org.freedesktop.color-manager.install-system-wide;org.freedesktop.color-manager.device-inhibit;org.freedesktop.color-manager.sensor-lock
ResultAny=yes
ResultInactive=yes
ResultActive=yes
nohup some_command &> nohup2.out &
nohup php _dev_dir/core/zd-clear-2022-08.php &> nohup-$(date +%Y_%m_%d__%H).out &
## E.g 1
while inotifywait -e close_write /project-base/queries/array.js; do echo "alterado"; done
## E.g 2
while inotifywait -e close_write ./file.js; do clear;node < ./file.js; done
##! Ao final algumas alternativas:
## Precisa do inotifywait
## Ubuntu, Debian, Kali Linux, Windows (WSL2), Raspbian
sudo apt-get install inotify-tools
## Alpine
apk add inotify-tools
## Arch Linux
pacman -S inotify-tools
## Fedora
dnf install inotify-tools
## Dockerfile
dockerfile.run/inotifywait
## Docker
docker run cmd.cat/inotifywait inotifywait
### Alternativas:
## https://geekflare.com/execute-command-when-file-changes/

Erro: rc-update: not found

apk add openrc

Dockerfile

FROM alpine:3.3

RUN apk update \
    && apk upgrade \
    && apk add bash curl openvpn iptables \
    && rm -rf /var/cache/apk/* \
    && rc-update add openvpn default \
    && echo "tun" >> /etc/modules

pra quem quiser testar uma distribuição Linux antes de baixar e instalar:

(acessado em 2023-11-11) https://distrosea.com/

Ver quando o Linux foi instalado

ls -lct /etc | tail -1 | awk '{print $6, $7, $8}'
command_exists() {
    command -v "$1" > /dev/null 2>&1
}

download_into() {
    if command_exists curl; then
        curl -sSL "$1" -o "$2"
    elif command_exists wget; then
        wget -qO "$2" "$1"
    else
        echo "Please install curl or wget"
        exit 1
    fi
}

if command_exists curl; then
  DOWNLOAD_WITH=curl
elif command_exists wget; then
  DOWNLOAD_WITH=wget
else
  echo "Please install curl or wget"
  exit 1
fi

Para comprimir imagens via linha de comando no Linux, você tem várias opções dependendo do formato da imagem e das suas necessidades específicas. Aqui estão algumas abordagens com base nas informações fornecidas:

Usando jpegoptim para Imagens JPEG

O jpegoptim é uma ferramenta poderosa para otimizar imagens JPEG, reduzindo o tamanho do arquivo sem perder muita qualidade. Ele pode ser instalado a partir dos repositórios de muitas distribuições Linux, incluindo Ubuntu. Para instalar o jpegoptim, você pode usar o gerenciador de pacotes da sua distribuição. Por exemplo, no Ubuntu, você pode instalar com:

sudo apt-get install jpegoptim

Para comprimir uma imagem JPEG, você pode usar o seguinte comando:

jpegoptim -m75 -p --strip-all imagem.jpg

Este comando comprime a imagem imagem.jpg com uma qualidade de 75% e remove todos os metadados, como datas de alteração e comentários [1].

Usando ImageMagick para Imagens JPEG e Outros Formatos

O ImageMagick é uma coleção de ferramentas de linha de comando para manipulação de imagens. Ele pode ser usado para converter e comprimir imagens em vários formatos. Para instalar o ImageMagick, você pode usar o gerenciador de pacotes da sua distribuição. Por exemplo, no Ubuntu:

sudo apt-get install imagemagick

Para comprimir uma imagem JPEG com ImageMagick, você pode usar o comando convert:

convert imagem.jpg -quality 75 imagem_comprimida.jpg

Este comando converte imagem.jpg para uma nova imagem imagem_comprimida.jpg com uma qualidade de 75% [1].

Usando cwebp para Converter Imagens PNG para WebP

O cwebp é uma ferramenta de linha de comando para converter imagens para o formato WebP, que oferece uma excelente compressão sem comprometer a qualidade. Para instalar o cwebp, você pode usar o gerenciador de pacotes da sua distribuição. Por exemplo, no Ubuntu:

sudo apt-get install webp

Para converter uma imagem PNG para WebP com cwebp, você pode usar o seguinte comando:

cwebp -q 100 -lossless -m 6 imagem.png -o imagem.webp

Este comando converte imagem.png para imagem.webp com uma qualidade de 100% e sem perda, mantendo um tamanho de arquivo menor [4].

Essas são algumas das maneiras de comprimir imagens via linha de comando no Linux. A escolha da ferramenta depende do formato da imagem e das suas necessidades específicas de compressão.

Citations: [1] https://angelitomg.com/blog/comprimindo-imagens-jpg-via-linha-de-comando/ [2] https://www.edivaldobrito.com.br/compressor-de-imagens-image-optimizer-no-linux/ [3] https://www.vivaolinux.com.br/dica/Manipular-imagens-via-linha-de-comando [4] https://blog.ironlinux.com.br/converter-imagens-png-para-webp-linux/ [5] https://www.hardware.com.br/comunidade/salvar-fazer/929424/ [6] https://www.digitalocean.com/community/tutorials/reduce-file-size-of-images-linux [7] https://wiki.sj.ifsc.edu.br/index.php/Opera%C3%A7%C3%B5es_com_PDF_em_linha_de_comando_no_Linux_(comprimir,_juntar,_dentre_outros) [8] https://www.edivaldobrito.com.br/redimensione-imagens-rapidamente-usando-o-imagemagick-no-terminal/ [9] https://sempreupdate.com.br/como-usar-o-trimage-para-comprimir-imagens/ [10] https://www.digitalocean.com/community/tutorials/como-criar-uma-imagem-do-seu-ambiente-linux-e-lanca-la-na-digitalocean-pt

Procurando arquivos com certo conteúdo

find [PATH] -type f -name '[FILE NAME]' -exec grep -Rn "[CONTENT]" {} +
find /tiago_projects/ -type f -name 'composer.json' -exec grep -Rn "beebmx/blade" {} +
/tiago_projects/open-sources-tiago/pure-php-base/composer.json:6:        "beebmx/blade": "^1.5"
/tiago_projects/open-sources-tiago/pure-php-base/vendor/beebmx/blade/composer.json:2:    "name": "beebmx/blade",

Procura na pasta atual até 5 níveirs por pastas que tenham o nome de node_modules

find . -maxdepth 5 -type d -name "node_modules"

Percorro via for uma lista gerada pela pesquisa anterior [depois imprimo na tela o valor de cada linha]

for dir in $(find . -maxdepth 5 -type d -name "node_modules"); do
    # Agora que tenho o caminho da pasta, posso fazer qualquer coisa. Aqui só imprimo o caminho
    echo $dir;
done;

Agora que tenho o caminho da pasta, posso ver o tamanho da pasta

for dir in $(find . -maxdepth 5 -type d -name "node_modules"); do
    SIZE_OF=$(du -ahd0 $dir|wc -l)
    echo "${SIZE_OF} | ${dir}";
done;

Agora que tenho tamanho da pasta, posso pegar somente as que me interessam, no caso, que tenham 50M ou mais

for dir in $(find . -maxdepth 5 -type d -name "node_modules"); do
    SIZE_OF=$(du -ahd0 -t 50M $dir|wc -l)

    if [ $SIZE_OF -ge 1 ]; then
        echo "${SIZE_OF} | ${dir}";
    fi
done;

Se quiser remover, só mude o código para fazer isso

for dir in $(find . -maxdepth 5 -type d -name "node_modules"); do
    SIZE_OF=$(du -ahd0 -t 50M $dir|wc -l)

    if [ $SIZE_OF -ge 1 ]; then
        rm -rf "${dir}";
    fi
done;

Se quiser fazer isso em 1 linha apenas, pode fazer assim

for dir in $(find . -maxdepth 5 -type d -name "node_modules"); do [ $(du -ahd0 -t 50M $dir|wc -l) -ge 1 ] && rm -rf $dir; done
sudo apt install -y markdown lynx

echo '### Ola' > /tmp/my.md

markdown /tmp/my.md ## Output <h3>Ola</h3>

## Preview #1
markdown /tmp/my.md > /tmp/my.html && lynx /tmp/my.html

## Preview #2
markdown /tmp/my.md |lynx -stdin

## Preview #3 - Using alias
alias md-preview='f() { markdown $1 |lynx -stdin ; unset -f f}; f'

md-preview /tmp/my.md

Criar e usar arquivo swap no Ubuntu

Para criar e usar um arquivo swap no Ubuntu, você pode seguir os seguintes passos:

  1. Verifique se o sistema já possui um arquivo swap ativado. Você pode fazer isso executando o seguinte comando no terminal:

    sudo swapon -s
    

    Isso mostrará se há algum arquivo swap ativo no momento.

  2. Antes de criar o arquivo swap, verifique se há espaço livre suficiente no disco. Recomenda-se que o tamanho do arquivo swap seja igual ou duas vezes o tamanho da memória RAM do sistema. Por exemplo, se você tiver 4 GB de RAM, pode criar um arquivo swap de 4 GB ou 8 GB.

  3. Para criar o arquivo swap, você pode usar o comando fallocate. Por exemplo, para criar um arquivo swap de 4 GB chamado "swapfile", execute o seguinte comando:

    sudo fallocate -l 4G /swapfile
    
  4. Defina as permissões corretas para o arquivo swap:

    sudo chmod 600 /swapfile
    
  5. Em seguida, você precisa formatar o arquivo swap usando o comando mkswap:

    sudo mkswap /swapfile
    
  6. Ative o arquivo swap recém-criado usando o comando swapon:

    sudo swapon /swapfile
    
  7. Para tornar as alterações permanentes, adicione uma entrada para o arquivo swap no arquivo /etc/fstab. Abra o arquivo usando um editor de texto, como o nano:

    sudo nano /etc/fstab
    

    Adicione a seguinte linha no final do arquivo:

    /swapfile none swap sw 0 0
    

    Salve o arquivo e feche o editor de texto.

Agora você criou e ativou com sucesso um arquivo swap no Ubuntu. O sistema usará o arquivo swap para liberar memória quando necessário.

Lembre-se de que o tamanho e o uso do arquivo swap podem variar dependendo das preferências pessoais e das necessidades do sistema.

Com senha

sudo adduser nome_do_usuario && sudo usermod -aG sudo nome_do_usuario

## Exemplo
sudo adduser ubuntu && sudo usermod -aG sudo ubuntu

Sem senha

sudo adduser nome_do_usuario --disabled-password --quiet && sudo usermod -aG sudo nome_do_usuario

## Exemplo
sudo adduser ubuntu --disabled-password --quiet && sudo usermod -aG sudo ubuntu
## Com senha (desabilitada no prompt)
sudo adduser [nome_do_usuario] --disabled-password --quiet && echo "[nome_do_usuario]:[senha]" | sudo chpasswd

## Exemplo
sudo adduser devs --disabled-password --quiet && echo "devs:devpass123" | sudo chpasswd
sudo apt install -y inotify-tools
while inotifywait -e close_write ./target-file.php; do echo 'the file "./target-file.php" was changed'; done
sudo apt install git zip unzip curl zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# export ZSH_CUSTOM=$HOME/.oh-my-zsh/custom/plugins/
export ZSH_CUSTOM=$HOME/.oh-my-zsh/custom
git clone https://github.com/zsh-users/zsh-autosuggestions.git $ZSH_CUSTOM/plugins/zsh-autosuggestions
echo 'source $ZSH_CUSTOM/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh' >> ~/.zshrc
## nano +73 ~/.zshrc
## plugins=(git history-substring-search history)
## hstr --show-zsh-configuration >> ~/.zshrc
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment