Compare commits

..

61 Commits

Author SHA1 Message Date
Robin-Charles Guihéneuf 66015c7762 misc: Use ripgrep instead of ack 2026-04-27 13:55:26 +02:00
Robin-Charles Guihéneuf 1d947a4c9a misc: Install cargo from source 2026-04-27 13:55:26 +02:00
Robin-Charles Guihéneuf 1beccf1252 navi: Fix git clean command 2026-04-27 13:55:26 +02:00
Robin-Charles Guihéneuf 1333250def navi: Add git patch cheat sheets 2026-04-27 13:55:26 +02:00
Robin-Charles Guihéneuf fff6f346cb navi: Add docker image commands 2026-04-27 13:55:26 +02:00
Robin-Charles Guihéneuf 553b019911 navi: Improve compression commands 2026-04-27 13:55:26 +02:00
Robin-Charles Guihéneuf 89d164c957 navi: Rework replace commands 2026-04-27 13:55:26 +02:00
Robin-Charles Guihéneuf 521541490d navi: Add docker commands 2026-04-27 13:55:26 +02:00
Robin-Charles Guihéneuf bfcf494bba navi: Add docker compose commands 2026-04-27 13:55:26 +02:00
vulporuza c22dcc6274 terminator: Update configuration 2024-09-21 09:40:46 +02:00
vulporuza ffc9f09c0f navi: Update to docker compose v2 2024-09-21 09:38:39 +02:00
vulporuza 4f19441ab1 codium: Disable power mode 2024-09-11 15:16:37 +02:00
vulporuza 41e91b72af autoconf: Remove codium and undervolt 2024-09-11 15:16:25 +02:00
vulporuza 3c3a3b18ea aliases: Update local aliases 2024-09-11 15:15:32 +02:00
vulporuza 966b49204d aliases: Remove Netatmo stuffs 2024-09-11 15:15:18 +02:00
vulporuza bab8f8b6dd navi: Add GPG cheatsheet 2023-02-17 16:51:34 +01:00
vulporuza 120e4bbc37 config: Migrate to Code instead of Codium 2023-02-17 16:51:34 +01:00
vulporuza b23c47cb39 aliases: Add bin and .local/bin to PATH 2023-02-17 16:51:34 +01:00
vulporuza 7ebd50b761 aliases: Make aliases tolerant to main branch in git 2023-02-17 16:51:34 +01:00
vulporuza 2538ab1863 navi: Update docker-compose sheet 2023-02-17 16:51:34 +01:00
vulporuza d6588e34f6 navi: Update docker sheet 2023-02-17 16:51:34 +01:00
vulporuza 57c74103dd navi: Update misc sheet 2023-02-17 16:51:34 +01:00
vulporuza 6e61e5d96d navi: Update compression sheet 2023-02-17 16:51:34 +01:00
vulporuza 0bc5d22ca6 codium: Remove useless keybinding 2023-02-17 16:51:34 +01:00
vulporuza 814167d6b3 codium: Export Android SDK environment viariables 2023-02-17 16:51:34 +01:00
vulporuza 6bdccc0643 aliases: Use code as default 2023-02-17 16:51:34 +01:00
vulporuza 3e9866f5fc aliases: Remove personal zephyr includes 2023-02-17 16:51:34 +01:00
vulporuza 5163ff5981 codium: Update configuration 2023-02-17 16:51:34 +01:00
vulporuza c15177dbdf navi: Add reinstall cheat 2023-02-17 16:51:34 +01:00
vulporuza aafa944d07 aliases: Add NPC helpers 2023-02-17 16:51:34 +01:00
vulporuza 5707ee1f96 navi: Add helpers (compare & bluetooth) 2023-02-17 16:51:34 +01:00
vulporuza 50dacfbb4b aliases: Add NAS project 2023-02-17 16:51:34 +01:00
vulporuza b6b4f4f753 codium: Add lower case keybinding 2023-02-17 16:51:34 +01:00
vulporuza 30f5179e07 config: Add font installation in GUI 2023-02-17 16:51:34 +01:00
vulporuza ec2a91a017 codium: Misc configuration 2023-02-17 16:51:34 +01:00
vulporuza ede0942720 terminator: Change font 2023-02-17 16:51:34 +01:00
vulporuza 0feb7050f5 navi: Add meld cheat sheet 2023-02-17 16:51:34 +01:00
vulporuza e6e3110a58 codium: Change editor font 2023-02-17 16:51:34 +01:00
vulporuza a41f7b0c93 navi: Add nextcloud sheet 2023-02-17 16:51:34 +01:00
vulporuza 3efecc8630 navi: Add some IP helpers 2023-02-17 16:51:34 +01:00
vulporuza fc8f92112a navi: Add git tag helpers 2023-02-17 16:51:34 +01:00
vulporuza 4dc74f40aa navi: Add freqtrade cheat sheet 2023-02-17 16:51:34 +01:00
vulporuza 3ed757de4c aliases: Add micro alias 2023-02-17 16:51:34 +01:00
vulporuza 2655c4559b navi: Add some cheat sheets 2023-02-17 16:51:34 +01:00
vulporuza 65e03c4990 install: Add micro editor install 2023-02-17 16:51:34 +01:00
vulporuza 118acfc43a alias: Add git profile switch aliases 2023-02-17 16:51:34 +01:00
vulporuza fea88e35cc navi: Add nginx cheat sheet 2023-02-17 16:51:34 +01:00
vulporuza 13a2051c96 navi: Add syncapi debug cheatsheets 2023-02-17 16:51:34 +01:00
vulporuza 9ffd302013 aliases: Introduce git_parent and associated rebase aliases 2023-02-17 16:51:34 +01:00
vulporuza e5823ca52e aliases: General cleanup 2023-02-17 16:51:34 +01:00
vulporuza 204c530bd2 zsh: Add completion for Makefile implicit targets 2023-02-17 16:51:34 +01:00
vulporuza f0dff865a4 zsh: Add preexec & precmd hook to vulporuza theme 2023-02-17 16:51:34 +01:00
vulporuza c83c6650d8 aliases: Add Netatmo path to PATH variable 2023-02-17 16:51:34 +01:00
vulporuza 4229d767c4 aliases: Add git amend alias to amend commits automatically 2023-02-17 16:51:34 +01:00
vulporuza 57aecb00ae terminator: Include configuration file 2023-02-17 16:51:34 +01:00
vulporuza ad4f0fb2b9 codium: Migration from Nextcloud 2023-02-17 16:51:34 +01:00
vulporuza 82b66bbb1e navi: Migration from Nextcloud 2023-02-17 16:51:34 +01:00
vulporuza 14cbaa5168 aliases: Migration from Nextcloud 2023-02-17 16:51:34 +01:00
vulporuza 0b79526407 zsh: Migration from Nextcloud 2023-02-17 16:51:34 +01:00
vulporuza 57b4477fdd auto-config: Migration from Nextcloud 2023-02-17 16:51:34 +01:00
vulporuza 8e269de6e2 Initial commit 2023-02-17 16:51:34 +01:00
20 changed files with 508 additions and 105 deletions
+47 -41
View File
@@ -34,7 +34,8 @@ function config_update {
}
# Editor
alias c='codium'
alias c='code'
alias e='micro'
# Find
alias find='find . -name'
@@ -76,18 +77,22 @@ alias vpn="sudo openvpn --config $HOME/Nextcloud/#\ -\ Configs/rguiheneuf.ovpn"
alias gs='git status'
alias gc='git checkout'
alias gcm='git checkout master'
alias gpl='git pull'
alias gph='git push'
alias gsu='git submodule update --init'
alias gcp='git cherry-pick'
function gcm {
( git rev-parse --verify origin/master > /dev/null 2>&1 ) && git checkout master
( git rev-parse --verify origin/main > /dev/null 2>&1 ) && git checkout main
}
alias add='git add'
alias commit='git commit -m "To fixup"'
alias cont='git rebase --continue'
# Git cleaners
alias branch_clean='git branch --merged | egrep -v "(^\*|master|dev)" | xargs git branch -d'
alias branch_clean='git branch --merged | egrep -v "(^\*|master|main|dev)" | xargs git branch -d'
alias tag_clean='git tag -l | xargs git tag -d && git fetch -t'
function git_parent {
@@ -151,13 +156,16 @@ function grbm {
# Save current branch
BRANCH=$(git branch | grep \* | cut -d ' ' -f2)
# Checkout master & pull
git checkout master
# Checkout master/main & pull
gcm
git pull
# Save parent branch
PARENT=$(git branch | grep \* | cut -d ' ' -f2)
# Back to previous branch
git checkout ${BRANCH}
git rebase --interactive master
git rebase --interactive ${PARENT}
}
function grbi {
@@ -171,7 +179,7 @@ function grbi {
git checkout ${PARENT}
git pull
echo "Rebasing on" ${PARENT}
echo "Rebasing on ${PARENT}"
# Back to previous branch
git checkout ${BRANCH}
@@ -188,15 +196,23 @@ function ga {
}
function gam {
git autofixup master
git rebase --interactive --autosquash master
# Checkout master/main & pull
gcm
# Save parent branch
PARENT=$(git branch | grep \* | cut -d ' ' -f2)
git checkout -
git autofixup ${PARENT}
git rebase --interactive --autosquash ${PARENT}
}
function gai {
# Save parent branch
PARENT=$(git_parent)
echo "Rebasing with autofixup on" ${PARENT}
echo "Rebasing with autofixup on ${PARENT}"
git autofixup ${PARENT}
git rebase --interactive --autosquash ${PARENT}
@@ -206,43 +222,39 @@ function gai {
# ║ ╦│ │ ╠═╝├┬┘│ │├┤ ││ ├┤
# ╚═╝┴ ┴ ╩ ┴└─└─┘└ ┴┴─┘└─┘
function git_config {
echo "User: $(git config user.name)"
echo "Mail: $(git config user.email)"
}
function git_pro {
git config --global user.name "Robin-Charles GUIHENEUF"
git config --global user.email rguiheneuf@netatmo.com
git_config
}
function git_perso {
git config --global user.name "Robin-Charles Guihéneuf"
git config --global user.email robin-charles@hotmail.fr
git_config
}
# ╔═╗┬┌┬┐ ╔═╗┌┬┐┌─┐┌┐┌┌┬┐
# ║ ╦│ │ ╠═╣│││├┤ │││ ││
# ╚═╝┴ ┴ ╩ ╩┴ ┴└─┘┘└┘─┴┘
alias amend_pro="GIT_EDITOR=true git rebase --preserve-merges --exec 'git commit --amend --author=\"Robin-Charles GUIHENEUF <rguiheneuf@netatmo.com>\"' $1"
alias amend_perso="GIT_EDITOR=true git rebase --preserve-merges --exec 'git commit --amend --author=\"Robin-Charles Guihéneuf <robin-charles@hotmail.fr>\"' $1"
alias amend_pro="GIT_EDITOR=true git rebase --rebase-merges --exec 'git commit --amend --author=\"Robin-Charles GUIHENEUF <rguiheneuf@netatmo.com>\"' $1"
alias amend_perso="GIT_EDITOR=true git rebase --rebase-merges --exec 'git commit --amend --author=\"Robin-Charles Guihéneuf <robin-charles@hotmail.fr>\"' $1"
# ╦═╗┌─┐┌─┐┌─┐┌─┐┬┌┬┐┌─┐┬─┐┬┌─┐┌─┐
# ╠╦╝├┤ ├─┘│ │└─┐│ │ │ │├┬┘│├┤ └─┐
# ╩╚═└─┘┴ └─┘└─┘┴ ┴ └─┘┴└─┴└─┘└─┘
alias bc='cd $HOME/Netatmo/embedded/firmware-bitcloud'
alias fw='cd $HOME/Netatmo/embedded/firmware'
alias nmr='cd $HOME/Netatmo/embedded/nmr'
alias py='cd $HOME/Netatmo/core/python-emb-tools'
alias mag='cd $HOME/Netatmo/embedded/magellan'
alias nsp='cd $HOME/Netatmo/embedded/nsp'
alias mulot='cd $HOME/mulot/firmware'
alias mulot='cd $HOME/mulot'
alias moki='cd $HOME/mulot/moki'
# In editor
alias c_bc='c $HOME/Netatmo/firmware-bitcloud.code-workspace'
alias c_fw='c $HOME/Netatmo/firmware.code-workspace'
alias c_nmr='c $HOME/Netatmo/nmr.code-workspace'
alias c_py='c $HOME/Netatmo/python-emb-tools.code-workspace'
alias c_mag='c $HOME/Netatmo/magellan.code-workspace'
alias c_nsp='c $HOME/Netatmo/nsp.code-workspace'
alias c_mulot='c $HOME/mulot/mulot.code-workspace'
alias c_moki='c $HOME/mulot/moki.code-workspace'
# SSH keygen
function ssh_keygen {
@@ -258,7 +270,7 @@ function ssh_keygen {
# Flash sniffer nRF52
function nrf52 {
arm-none-eabi-objcopy -O ihex output/nrf52840/bin/$1 $1.hex
arm-none-eabi-objcopy -O ihex build/bin/$1 $1.hex
nrfutil pkg generate --hw-version 52 --sd-req=0x00 --application $1.hex --application-version 1 $1.zip
if [ -z "$2" ]
@@ -305,21 +317,18 @@ fi
# ║╣ ┌┴┬┘├─┘│ │├┬┘ │
# ╚═╝┴ └─┴ └─┘┴└─ ┴
export PATH=$PATH:~/Netatmo/core/embedded-tools/Linux/flasher
export PATH=$PATH:~/Netatmo/core/generic-embedded/stm32_sbm
export PATH=$PATH:~/Netatmo/core/generic-embedded/stm32_dfu
export PATH=$PATH:~/Netatmo/embedded/firmware-bitcloud/toolchain/arm-none-eabi/bin
export PATH=$PATH:~/Netatmo/embedded/nmr/scripts/flash
# Autofixup
export PATH=$PATH:$HOME/.git-autofixup
# Netatmo
export NETATMO_WORK_DIR=$HOME/Netatmo
# Cargo binaries (navi)
export PATH=$PATH:$HOME/.cargo/bin
# Python
export PATH=$PATH:$HOME/.local/bin
# User bin
export PATH=$HOME/bin:$PATH
# Navi
if [ -z "${ZSH}" ]; then
source <(navi widget bash)
@@ -327,8 +336,5 @@ else
source <(navi widget zsh)
fi
# Zephyr
[ -f $HOME/mulot/firmware/zephyr/zephyr-env.sh ] && source $HOME/mulot/firmware/zephyr/zephyr-env.sh
# West
export WEST_DIR=$HOME/mulot/firmware/.west/west
export ANDROID_HOME=~/Android/Sdk
export ANDROID_NDK_HOME=~/Android/Sdk/ndk-bundle
+9 -7
View File
@@ -19,7 +19,7 @@ install_git_repo () {
# Install packages
sudo apt update
sudo apt upgrade
sudo apt install minicom ssh git tig ack tree npm cargo python3-pip curl zsh
sudo apt install minicom ssh git tig ripgrep tree npm python3-pip curl zsh
# Install Oh my ZSH
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
@@ -57,19 +57,21 @@ install_git_repo https://github.com/junegunn/fzf.git $HOME/.fzf
$HOME/.fzf/install
# Install navi
curl https://sh.rustup.rs -sSf | sh
cargo install navi
mkdir -p $HOME/.local/share/navi/cheats
ln -sfn $HOME/.dotfiles/navi/ $HOME/.local/share/navi/cheats/vulporuza
# Update pip
pip3 install --upgrade pip
# Install undervolt
sudo pip3 install undervolt
# Update npm
sudo npm install -g npm
# Install rebase-editor
sudo npm install -g rebase-editor
git config --global sequence.editor rebase-editor
# Install micro
curl https://getmic.ro | bash
mkdir -p $HOME/.config/micro
ln -sfn $HOME/.dotfiles/micro/bindings.json $HOME/.config/micro/bindings.json
ln -sfn $HOME/.dotfiles/micro/settings.json $HOME/.config/micro/settings.json
sudo mv micro /usr/bin
+4 -11
View File
@@ -7,18 +7,11 @@ fi
# CLI Tools
$HOME/.dotfiles/auto-config-cli.sh
# Codium
if [ ! -f "/etc/apt/sources.list.d/vscodium.list" ]
then
wget -qO - https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/raw/master/pub.gpg | gpg --dearmor | sudo dd of=/etc/apt/trusted.gpg.d/vscodium-archive-keyring.gpg
echo 'deb [signed-by=/etc/apt/trusted.gpg.d/vscodium-archive-keyring.gpg] https://paulcarroty.gitlab.io/vscodium-deb-rpm-repo/debs/ vscodium main' | sudo tee /etc/apt/sources.list.d/vscodium.list
fi
sudo apt install terminator fonts-firacode
sudo apt install terminator codium
mkdir -p $HOME/.config/VSCodium/User/
ln -sf $HOME/.dotfiles/codium/keybindings.json $HOME/.config/VSCodium/User/keybindings.json
ln -sf $HOME/.dotfiles/codium/settings.json $HOME/.config/VSCodium/User/settings.json
mkdir -p $HOME/.config/Code/User/
ln -sf $HOME/.dotfiles/codium/keybindings.json $HOME/.config/Code/User/keybindings.json
ln -sf $HOME/.dotfiles/codium/settings.json $HOME/.config/Code/User/settings.json
mkdir -p $HOME/.config/terminator/
ln -sf $HOME/.dotfiles/terminator/config $HOME/.config/terminator/config
+8
View File
@@ -8,6 +8,10 @@
"key": "ctrl+alt+u",
"command": "editor.action.transformToUppercase"
},
{
"key": "ctrl+alt+l",
"command": "editor.action.transformToLowercase"
},
{
"key": "ctrl+[BracketRight]",
"command": "workbench.action.navigateForward"
@@ -27,5 +31,9 @@
{
"key": "ctrl+w",
"command": "-editor.action.addSelectionToNextFindMatch"
},
{
"key": "ctrl+w",
"command": "-editor.action.smartSelect.expand"
}
]
+34 -20
View File
@@ -9,24 +9,21 @@
"editor.renderWhitespace": "all",
"files.trimTrailingWhitespace": true,
"files.insertFinalNewline": true,
"files.watcherExclude":{
"**/.git/objects/**": true,
"**/.git/subtree-cache/**": true,
"**/build/**": true,
"**/.venv": true
},
"C_Cpp.formatting": "Disabled",
"C_Cpp.updateChannel": "Default",
"powermode.enabled": true,
"powermode.enableShake": false,
"powermode.enabled": false,
"powermode.enableExplosions": true,
"powermode.maxExplosions": 1,
"powermode.explosionSize": 10,
"powermode.explosionOffset": 0.5,
"powermode.explosionFrequency": 1,
"powermode.explosionOrder": "random",
"powermode.gifMode": "continue",
"powermode.explosionDuration": 415,
"powermode.backgroundMode": "image",
"powermode.customExplosions": ["data:image/gif;base64,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"],
"editor.rulers": [
100
],
"telemetry.enableTelemetry": false,
"telemetry.telemetryLevel": "off",
"explorer.confirmDragAndDrop": false,
"explorer.confirmDelete": false,
"window.titleBarStyle": "custom",
@@ -38,19 +35,36 @@
"suppressFileNotUnderSourceControlWarning": false,
"suppressGitVersionWarning": false,
"suppressLineUncommittedWarning": false,
"suppressNoRepositoryWarning": false,
"suppressResultsExplorerNotice": false,
"suppressShowKeyBindingsNotice": true
"suppressNoRepositoryWarning": false
},
"gitlens.views.fileHistory.enabled": true,
"gitlens.views.lineHistory.enabled": true,
"terminal.integrated.rendererType": "dom",
"workbench.colorTheme": "Monokai",
"editor.largeFileOptimizations": false,
"editor.suggestSelection": "first",
"vsintellicode.modify.editor.suggestSelection": "automaticallyOverrodeDefaultValue",
"C_Cpp.intelliSenseEngine": "Tag Parser",
"diffEditor.ignoreTrimWhitespace": false,
"python.languageServer": "Microsoft",
"gitlab.instanceUrl":"https://gitlab.corp.netatmo.com"
"diffEditor.ignoreTrimWhitespace": true,
"git.autorefresh": false,
"editor.fontFamily": "'Fira Code Retina', 'Droid Sans Mono' , 'monospace', 'Droid Sans Fallback'",
"editor.fontLigatures": true,
"editor.fontSize": 14,
"editor.lineHeight": 20,
"autoDocstring.docstringFormat": "sphinx",
"security.workspace.trust.untrustedFiles": "open",
"workbench.editorAssociations": {
"*.ipynb": "jupyter.notebook.ipynb"
},
"cmake.configureOnOpen": true,
"editor.guides.bracketPairs": true,
"devicetree.zephyr": "zephyr",
"powermode.shake.enabled": false,
"powermode.explosions.size": 10,
"powermode.explosions.frequency": 1,
"powermode.explosions.offset": 0.5,
"powermode.explosions.customExplosions": [
"data:image/gif;base64,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"
],
"powermode.explosions.backgroundMode": "image",
"powermode.explosions.gifMode": "continue",
"powermode.explosions.explosionOrder": "random",
"powermode.explosions.duration": 415
}
+4
View File
@@ -0,0 +1,4 @@
{
"Alt-/": "lua:comment.comment",
"CtrlUnderscore": "lua:comment.comment"
}
+1
View File
@@ -0,0 +1 @@
{}
+35 -12
View File
@@ -1,20 +1,43 @@
% compression
# Create a tar containing files
tar cf <name>.tar <files>
# Create a tar archive
tar -cvf <name>.tar <files>
# Extract the files from a tar
tar xf <tar_file>
# Create a tar archive (gz compression)
tar -cvzf <name>.tar.gz <files>
# Create a tar with Gzip compression
tar czf <name>.tar.gz <files>
# Create a tar archive (pigz compression)
tar -I pigz -cvf <name>.tar.gz <files>
# Compress file and appends .gz to its name
gzip <path>
# Create a tar archive (bzip2 compression)
tar -cvjf <name>.tar.bz2 <files>
# Decompress compressed file
# Create a tar archive (pbzip2 compression)
tar -I pbzip2 -cvf <name>.tar.bz2 <files>
# Extract a tar archive
tar -xf <tar_file>
# Extract a tar (gz compression)
tar -xzf <targz_file>
# Extract a tar (pigz compression)
tar -I pigz -xf <targz_file>
# Extract a tar (bzip2 compression)
tar -xjf <tarbz2_file>
# Extract a tar (pbzip2 compression)
tar -I pbzip2 -xf <tarbz2_file>
# Create a gz archive
gzip -9 -c <files> > <name>.gz
# Extract a gz archive
gzip -d <gz_file>
$ path: ls
$ tar_file: ls *.{tar,tar.*} 2>/dev/null
$ gz_file: ls *.gz
$ files: ls | awk -F: '{ print $1}'
$ tar_file: ls *.tar | awk -F: '{ print $1}'
$ targz_file: ls *.tar.gz | awk -F: '{ print $1}'
$ tarbz2_file: ls *.tar.bz2 | awk -F: '{ print $1}'
$ gz_file: ls *.gz | awk -F: '{ print $1}'
+39
View File
@@ -0,0 +1,39 @@
% docker-compose
# Build a compose YAML
sudo docker compose -f <file> build
# Up a compose YAML
sudo docker compose -f <file> up
# Up and daemonze a compose YAML
sudo docker compose -f <file> up -d
# Up and daemonze a compose YAML (force)
sudo docker compose -f <file> up -d --force-recreate
# Down a compose YAML
sudo docker compose -f <file> down
# Execute command in a compose YAML
sudo docker compose -f <file> exec <service> <command>
# Print logs of a compose YAML
sudo docker compose -f <file> logs --tail 100
# Print service logs of a compose YAML
sudo docker compose -f <file> logs --tail 100 <service>
# Print and follow logs of a compose YAML
sudo docker compose -f <file> logs --tail 100 -f
# Print and follow service logs of a compose YAML
sudo docker compose -f <file> logs --tail 100 -f <service>
# Remove volume of a compose YAML
sudo docker volume rm <dir>_<volume>
$ dir: basename $PWD
$ file: ls *.yaml | awk '{print $1}'
$ volume: sudo docker compose -f <file> config --volumes | awk '{print $1}'
$ service: sudo docker compose -f <file> config --services | awk '{print $1}'
+61
View File
@@ -0,0 +1,61 @@
% docker
# Create a volume
sudo docker volume create <name>
# Remove a volume
sudo docker volume rm <volume>
# List all volumes
sudo docker volume ls
$ volume: sudo docker volume ls --format "{{.Name}}" | sort | awk '{print $1}'
# Create new network
sudo docker network create <name>
# Remove network
sudo docker network rm <network>
# List all networks
sudo docker network ls
$ network: sudo docker network ls --format "{{.Name}}" | sort | awk '{print $1}'
# List the running containers
sudo docker ps
# Stop a running container through SIGTERM
sudo docker stop <container>
# Stop a running container through SIGKILL
sudo docker kill <container>
# Execute bash on a running container
sudo docker exec -it <container> bash
# Execute a command on a running container
sudo docker exec -it <container> sh -c '<command>'
# Print the last lines of a container's logs
sudo docker logs --tail 100 <container>
# Print the last lines of a container's logs and following its logs
sudo docker logs --tail 100 <container> -f
$ container: sudo docker container ls --format "{{.Names}}" | sort | awk '{print $1}'
# List all images
sudo docker image ls
# Remove an image
sudo docker image rm <image>
# Save an image into an archive
sudo docker image save <image> -o <name>
# Load an image from an archive
sudo docker image load -i <archive>
$ image: sudo docker image ls --format "{{.Repository}}:{{.Tag}}" | sort | awk '{print $1}'
$ archive: ls | awk '{print $1}'
+15
View File
@@ -0,0 +1,15 @@
% freqtrade
# Backtest a strategy on timerange
sudo docker-compose run --rm freqtrade backtesting --timerange=20200901-20201001 -s <strategy>
# Download data on timerange
sudo docker-compose run --rm freqtrade download-data --timerange=20200901-20201001
# Plot data on timerange
sudo docker-compose run --rm freqtrade plot-dataframe --timerange=20200901-20201001 -s <strategy>
# List strategies
sudo docker-compose run --rm freqtrade list-strategies
$ strategy: ls user_data/strategies | grep "\.py" | sed -e "s/\.py//g" | awk '{print $1}'
+96
View File
@@ -0,0 +1,96 @@
% git
# Initializes a git repository
git init
# Clone a git repository
git clone <repository> <clone_directory>
# Rebase upstream master into local/origin master
git fetch <remote_name>
git checkout master
git rebase <remote_name>/master
git fetch origin
git push -f origin master
# Merge upstream master into local/origin master
git fetch <remote_name>
git checkout master
git merge <remote_name>/master
git fetch origin
git push -f origin master
# Adds a remote for a git repository
git remote add <remote_name> <remote_url>
# Renames a remote for a git repository
git remote rename <old_remote_name> <new_remote_name>
# Remove a remote for a git repository
git remote remove <remote_name>
# Saves the changes to a file in a commit
git commit -m <message>
# Pushes committed changes to remote repository
git push --set-upstream <remote_name> <branch_name>
# Displays formatted log of commits for a repo
git log --all --decorate --oneline --graph
# Clean everything
git clean -fdx
# Add a new module
git submodule add <repository> <path>
# Update module
git submodule update --init
# Update module without init
git submodule update
# Pull all submodules
git submodule foreach git pull origin master
# Skip git hooks
git commit --no-verify
# Create new branch from current HEAD
git checkout -b <new_branch_name>
# Create and push tag
git tag <name>
git push origin <name>
# Delete and push tag
git tag -d <tag_name>
git push -d origin <tag_name>
# Create a patch from current full diff
git diff > <patch_name>.patch
# Create a patch from current file diff
git diff <diff_file> > <patch_name>.patch
# Create a patch from commit(s)
git format-patch <first_commit>..<last_commit>
# Show a diff patch
git apply --stat <patch_name>
# Check a diff patch
git apply --check <patch_name>
# Apply a diff patch
git apply <patch_name>
# Apply a commit patch
git am <patch_name>
# Variables
$ tag_name: git tag -l | awk '{print $1}'
$ diff_file: git diff --name-only | awk '{print $1}'
$ first_commit: git log -n 20 --oneline | fzf --preview 'git show --color=always {1}' | awk '{print $1}'
$ last_commit: git log -n 20 --oneline | fzf --preview 'git show --color=always {1}' | awk '{print $1}'
$ patch_name: ls *.patch | awk '{print $1}'
+42
View File
@@ -0,0 +1,42 @@
% gpg
# GPG version
gpg --version
# GPG generate key
gpg --gen-key
# List keys
gpg --list-keys
# Export public key
gpg --output <filename> --export <gpg_public_keys>
# Export public key as ASCII
gpg --output <filename> --export --armor <gpg_public_keys>
# Import public key
gpg --import <gpg_files>
# Encrypt document
gpg --output <filename> --encrypt --recipient <gpg_public_keys> <files>
# Decrypt document
gpg --output <filename> --decrypt <files>
# Make a signature
gpg --output <signature_file> --sign <files>
# Verify signature
gpg --verify <files>
# Clearsign documents
gpg --clearsign <filename>
# Detach signature
gpg --output <filename_sig> --detach-sig <filename>
$ files: ls * | awk '{print $1}'
$ gpg_files: ls *.gpg | awk '{print $1}'
$ gpg_public_keys: gpg --list-keys | grep uid | sed 's/.*<\(.*\)>.*/\1/' | awk '{print $1}'
+75
View File
@@ -0,0 +1,75 @@
% misc
# Update system
sudo apt update && sudo apt upgrade
# Clean APT
sudo apt autoclean && sudo apt autoremove
# Reinstall package
sudo apt reinstall ./<deb>
# List users
cat /etc/passwd | awk -F: '{ print $1}'
# User information
sudo id <user>
# Change user password
sudo passwd <user>
# Create user with home
sudo useradd -m <username>
# Create user without home
sudo useradd <username>
# Delete an user
sudo deluser <user>
# List all groups
cat /etc/group
# Add user to group
sudo usermod -a -G <group> <user>
# Remove user from a group
sudo deluser <user> <group>
# List port bindings
sudo lsof -i -P -n | grep LISTEN
# Show binding on a port
sudo lsof -i:<port>
# Get IP on interface
ip addr show dev <interface> | grep "inet " | sed "s/ *inet \([^ ]*\) .*/\1/" | awk -F: '{ print $1}'
# Get devices on interface
nmap -sP <ip>
# Compare 2 files (meld)
meld <(hexdump -C <file_1>) <(hexdump -C <file_2>)
# Compare 2 files (bcompare)
bcompare <file_1> <file_2>
# Replace expression in files (ack)
ack -rl '<expression>' | xargs sed -i 's#<expression>#<replace_expression>#g'
# Replace expression in files (rg)
rg -l '<expression>' | xargs sed -i 's#<expression>#<replace_expression>#g'
# Disable Bluetooth ERTM
sudo bash -c "echo Y > /sys/module/bluetooth/parameters/disable_ertm"
# Show disk usage
df -h
$ user: cat /etc/passwd | awk -F: '{ print $1}'
$ group: cat /etc/group | awk -F: '{ print $1}'
$ interface: ip link | grep "^[0-9]*:" | sed "s/[0-9]*: \(.*\):.*/\1/" | awk -F: '{ print $1}'
$ ip: ip addr show dev <interface> | grep "inet " | sed "s/ *inet \([^ ]*\) .*/\1/" | awk -F: '{ print $1}'
$ file_1: ls | awk -F: '{ print $1}'
$ file_2: ls | awk -F: '{ print $1}'
$ deb: ls *.deb | awk -F: '{ print $1}'
+10
View File
@@ -0,0 +1,10 @@
% mysql
# Create database
mysql -u <user> -p -e "create database <database> character set UTF8mb4 collate utf8mb4_bin"
# Export databse
mysqldump -u <user> -p -x -A <database> > <file>
# Import database
mysql -u <user> -p <database> <path>
+14
View File
@@ -1,18 +1,32 @@
% flasher
# Set server
flasher -setserver nv2 <server>
$ server: echo "netcomv2.inte.netatmo.net nv2-nlg.netatmo.net nv2-nmg.netatmo.net upp.netatmo.net" | tr " " "\n"
% jlink
# JLinkExe
JLinkExe -if SWD -speed 1000 -device <target>
# JLinkGDBServer
JLinkGDBServer -if SWD -device <target>
# Variables
$ target: echo "ATSAMR21E19A nRF52" | tr " " "\n"
% zigbee
# Sniffer Zigbee
<pyet>/zigbee/python_zigbee_interface.py -c <channel>
$ pyet: echo "$HOME/Netatmo/core/python-emb-tools/python/bin"
% mac
# Get MAC infos
curl 'https://www.macvendorlookup.com/oui.php?mac=<mac>' | jq
+4
View File
@@ -0,0 +1,4 @@
% nextcloud
# Execute occ command
sudo -u nextcloud php /var/www/nextcloud/occ <command>
+2 -2
View File
@@ -1,10 +1,10 @@
% nginx
# Enable site
ln -s /etc/nginx/sites-available/<ls_site> /etc/nginx/sites-enabled/<ls_site>
sudo ln -s /etc/nginx/sites-available/<ls_site> /etc/nginx/sites-enabled/<ls_site>
# Disable site
rm /etc/nginx/sites-enabled/<rm_site>
sudo rm /etc/nginx/sites-enabled/<rm_site>
$ ls_site: ls /etc/nginx/sites-available/ | awk '{print $1}'
$ rm_site: ls /etc/nginx/sites-enabled/ | awk '{print $1}'
+6 -6
View File
@@ -1,22 +1,22 @@
% syncapi
# SyncAPI Muller
<syncapi_path>/syncapiadmin.py --project muller -s <server> --endpoint <endpoint> -c <syncapi_path>/muller_<server>.swp --mac <gateway_mac>
<syncapi_path>/syncapiadmin.py --project muller -s <server> --endpoint <endpoint> --mac <gateway_mac>
# SyncAPI Legrand
<syncapi_path>/syncapiadmin.py --project legrand -s <server> --endpoint <endpoint> -c <syncapi_path>/legrand_<server>.swp --mac <gateway_mac>
<syncapi_path>/syncapiadmin.py --project legrand -s <server> --endpoint <endpoint> --mac <gateway_mac>
# Debug parser Legrand
<debug_path>/debug_parser.py --project legrand -s <server> -c <syncapi_path>/legrand_<server>.swp -r -pp -g <gateway_mac>
<debug_path>/debug_parser.py --project legrand -s <server> -r -pp -g <gateway_mac>
# Enable debug mode Legrand
<debug_path>/debug_config_setter.py --project legrand -s <server> -c <syncapi_path>/legrand_<server>.swp -g <gateway_mac> -t NLG -ke debug_enabled
<debug_path>/debug_config_setter.py --project legrand -s <server> -g <gateway_mac> -t NLG -ke debug_enabled
# Disable debug mode Legrand
<debug_path>/debug_config_setter.py --project legrand -s <server> -c <syncapi_path>/legrand_<server>.swp -g <gateway_mac> -t NLG -kd debug_enabled
<debug_path>/debug_config_setter.py --project legrand -s <server> -g <gateway_mac> -t NLG -kd debug_enabled
# Analyse diagnosis
<syncapi_path>/syncapiadmin.py --project legrand -s <server> --endpoint getdebuginfo -c <syncapi_path>/legrand_<server>.swp --mac <gateway_mac> | jq -r .body.diagnosis_content | <release_path>/decode_diagnosis.py
<syncapi_path>/syncapiadmin.py --project legrand -s <server> --endpoint getdebuginfo --mac <gateway_mac> | jq -r .body.diagnosis_content | <release_path>/decode_diagnosis.py
# Paths
$ syncapi_path: echo "$HOME/Netatmo/core/python-emb-tools/python/bin/syncapiadmin"
+2 -6
View File
@@ -1,19 +1,15 @@
[global_config]
window_state = maximise
scroll_tabbar = True
title_inactive_bg_color = "#000000"
inactive_color_offset = 1.0
enabled_plugins = TerminalShot, LaunchpadCodeURLHandler, APTURLHandler, LaunchpadBugURLHandler
suppress_multiple_term_dialog = True
title_use_system_font = False
title_font = Sans 11
[keybindings]
[profiles]
[[default]]
background_darkness = 0.6
background_darkness = 0.7
background_type = transparent
cursor_color = "#908c8c"
font = Monospace 11
font = Fira Code weight=453 11
foreground_color = "#ffffff"
scrollback_infinite = True
palette = "#000000:#aa0000:#00aa00:#f57900:#55ffff:#ff006e:#00aaaa:#aaaaaa:#555555:#ff5555:#55ff55:#ffff55:#55ffff:#ff006e:#00aaaa:#ffffff"