Какво е и как се работи с .bashrc

🚀 Какво е и как се работи с .bashrc
Персонализирайте своя терминал и автоматизирайте ежедневните задачи
📋 Съдържание
🤔 Какво е .bashrc?
.bashrc е конфигурационен файл, който се изпълнява всеки път когато отворите нов терминал (bash shell). Той ви позволява да:
- Създавате персонализирани команди (алиаси)
- Дефинирате собствени функции
- Настройвате променливи на средата
- Персонализирате подканата (prompt)
- Автоматизирате повтарящи се задачи
Файлът се намира в home директорията:
~/.bashrcПонякога може да не съществува – в такъв случай просто го създайте.
🐳 Употреба на Docker алиасите:
# Основни Docker команди dps # показва работещи контейнери в таблица dpa # показва всички контейнери dst container1 # стартира контейнер dsp container1 # спира контейнер # Логове и мониторинг dlf container1 # следи логовете в реално време dlogs container1 # показва последните 100 реда от логовете dlogt container1 # показва логовете от последния час # Работа с контейнери dex container1 bash # влиза в контейнер с bash dsh # влиза в първия работещ контейнер denter myapp # влиза в контейнер по име (функция) # Почистване drm container1 # премахва контейнер drma # премахва всички контейнери docker_cleanup # пълно почистване на системата
# === Файлови операции ===
# Бърз backup на файл
backup() {
cp "$1" "$1.backup.$(date +%Y%m%d_%H%M%S)"
echo "Backup създаден: $1.backup.$(date +%Y%m%d_%H%M%S)"
}
# Размер на директория
dirsize() {
du -sh "$1" 2>/dev/null || du -sh .
}
# Почистване на празни директории
cleanup() {
find . -type d -empty -delete
echo "Празните директории са изтрити"
}⚡ Основни операции
Отваряне на файла за редактиране:
# С nano редактор nano ~/.bashrc # С vim редактор vim ~/.bashrc # С VS Code code ~/.bashrc
Презареждане на конфигурацията:
# След промени в .bashrc файла source ~/.bashrc # Или с къса форма . ~/.bashrc
🔗 Алиаси (Aliases)
Алиасите са кратки имена за дълги команди. Спестяват време и намаляват грешките.
# === Основни алиаси === alias ll='ls -alF' alias la='ls -A' alias l='ls -CF' # === Навигация === alias ..='cd ..' alias ...='cd ../..' alias ....='cd ../../..' # === Git команди === alias gs='git status' alias ga='git add' alias gc='git commit' alias gp='git push' alias gl='git log --oneline' # === Системни команди === alias df='df -h' alias du='du -h' alias free='free -h' alias ps='ps aux' # === Цветни команди === alias grep='grep --color=auto' alias fgrep='fgrep --color=auto' alias egrep='egrep --color=auto'
# === Docker команди ===
alias dps='docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Image}}\t{{.Ports}}"'
alias dpa='docker ps -a'
alias dst='docker start'
alias dsp='docker stop'
alias drm='docker rm'
alias drma='docker rm $(docker ps -aq)' # премахва всички контейнери
alias dex='docker exec -it' # docker exec -it bash
alias dsh='docker exec -it $(docker ps -q | head -n1) bash' # shell в първия работещ контейнер
alias dlf='docker logs -f'
alias dlogs='docker logs --tail=100 -f'
alias dlogt='docker logs --since=1h -f' # последния 1 час # === Мрежови команди === alias ping='ping -c 5' alias fastping='ping -c 100 -s.2' alias ports='netstat -tulanp' alias myip='curl -s checkip.dyndns.org | grep -oE "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"'
⚙️ Функции
Функциите са по-мощни от алиасите – могат да приемат параметри и да съдържат сложна логика.
# === Системни функции ===
# Бърза архивация
mktar() {
tar -czf "${1}.tar.gz" "$1"
}
# Извличане на архиви
extract() {
if [ -f "$1" ]; then
case "$1" in
*.tar.bz2) tar xjf "$1" ;;
*.tar.gz) tar xzf "$1" ;;
*.bz2) bunzip2 "$1" ;;
*.rar) unrar x "$1" ;;
*.gz) gunzip "$1" ;;
*.tar) tar xf "$1" ;;
*.tbz2) tar xjf "$1" ;;
*.tgz) tar xzf "$1" ;;
*.zip) unzip "$1" ;;
*.Z) uncompress "$1" ;;
*.7z) 7z x "$1" ;;
*) echo "Не мога да извлека '$1'" ;;
esac
else
echo "'$1' не е валиден файл"
fi
}
# Създаване и влизане в директория
mkcd() {
mkdir -p "$1" && cd "$1"
}
# Търсене на файлове
findfile() {
find . -name "*$1*" -type f
}
# Търсене в съдържанието на файлове
findtext() {
grep -r "$1" .
}# === Docker функции ===
# Спиране на всички контейнери
docker_stop_all() {
echo "🛑 Спиране на всички Docker контейнери..."
docker stop $(docker ps -q)
echo "✅ Всички контейнери са спрени"
}
# Почистване на Docker системата
docker_cleanup() {
echo "🧹 Почистване на Docker системата..."
docker system prune -af
docker volume prune -f
echo "✅ Docker системата е почистена"
}
# Бързо влизане в контейнер по име
denter() {
if [ -z "$1" ]; then
echo "❗ Употреба: denter "
return 1
fi
docker exec -it "$1" bash
}
# Показване на ресурсите използвани от контейнери
docker_stats() {
docker stats --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.MemPerc}}\t{{.NetIO}}\t{{.BlockIO}}"
} 🐳 Docker алиаси и функции
За тези, които работят с Docker контейнери, тези алиаси ще ви спестят много време и писане:
🖥️ Практически пример – Proxmox Backup
Ето как да добавите функцията за автоматично сваляне на Proxmox backup файлове:
# === Proxmox Backup Functions ===
backup_ct() {
local ct_id="$1"
local server_ip="10.110.110.68"
local remote_path="/backup512/dump"
local local_path="/mnt/d/backup_proxmox"
if [ -z "$ct_id" ]; then
echo "❗ Употреба: backup_ct "
return 1
fi
echo "🔍 Търсене на най-нов архив за контейнер $ct_id..."
local latest=$(ssh root@$server_ip "ls -t $remote_path/vzdump-lxc-${ct_id}-*.tar.zst 2>/dev/null | head -1")
if [ -z "$latest" ]; then
echo "❌ Архив не е намерен за контейнер $ct_id"
return 1
fi
local filename=$(basename "$latest")
echo "📦 Копиране на $filename"
if rsync -avz --progress root@$server_ip:"$latest" "$local_path/"; then
echo "✅ Успешно копиране завършено!"
else
echo "❌ Грешка при копирането"
return 1
fi
}
# === Shortcuts ===
alias backup114='backup_ct 114'
alias backup_wp='backup_ct 200'
alias list_backups='ls -lah /mnt/d/backup_proxmox/'
alias backup_space='df -h /mnt/d/backup_proxmox' •
backup_ct 114 – сваля backup за контейнер 114•
backup114 – бърз път за контейнер 114•
backup_wp – бърз път за WordPress контейнер•
list_backups – показва всички локални backup файловеСтъпки за добавяне:
# 1. Отворете .bashrc файла nano ~/.bashrc # 2. Добавете функциите в края на файла # (копирайте кода от горе) # 3. Презаредете конфигурацията source ~/.bashrc # 4. Тествайте функцията backup_ct 114
🎯 Полезни съвети
🎨 Персонализиране на подканата (PS1):
# Цветна prompt с Git статус
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\[\033[32m\]\u@\h\[\033[00m\]:\[\033[34m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\]\$ "📊 Системна информация при старт:
# Показва системна информация при отваряне на терминал
if [ -f /proc/version ]; then
echo "🖥️ Система: $(uname -sr)"
echo "⏰ Време: $(date)"
echo "💾 Памет: $(free -h | awk '/^Mem:/ {print $3 "/" $2}')"
echo "💿 Диск: $(df -h / | awk 'NR==2 {print $3 "/" $2 " (" $5 ")"}')"
echo "────────────────────────────────────────"
fi🔐 Безопасност – SSH ключове:
# Функция за генериране на SSH ключ
generate_ssh_key() {
local email="$1"
if [ -z "$email" ]; then
echo "❗ Употреба: generate_ssh_key [email protected]"
return 1
fi
ssh-keygen -t ed25519 -C "$email"
echo "✅ SSH ключ генериран! Публичният ключ:"
cat ~/.ssh/id_ed25519.pub
}
# Алиас за копиране на SSH ключ
alias copy_ssh_key='cat ~/.ssh/id_ed25519.pub | xclip -selection clipboard'• Правете backup на .bashrc преди големи промени
• Използвайте коментари за организация на кода
• Тествайте новите функции преди да ги добавите
• Споделяйте полезни функции с колегите си
🔄 Backup и възстановяване:
# Backup на .bashrc cp ~/.bashrc ~/.bashrc.backup.$(date +%Y%m%d_%H%M%S) # Възстановяване от backup cp ~/.bashrc.backup.20250728_143000 ~/.bashrc source ~/.bashrc
🎉 Заключение
Файлът .bashrc е мощен инструмент за персонализиране и автоматизиране на работата ви в терминала. Започнете с прости алиаси и постепенно добавяйте по-сложни функции според нуждите си.
Помнете: Добрата организация и документиране на кода прави поддръжката много по-лесна!
Няколко бързи начина да видите всички ваши алиаси:
🚀 Бързи команди за показване на алиаси
1. Показване на всички алиаси:
alias2. Търсене на конкретен алиас:
alias | grep docker # само Docker алиасите
alias | grep backup # само backup алиасите3. Форматирано показване с цветове:
alias | sort | column -t📋 Създаване на функция за по-красиво показване
Добавете тази функция в .bashrc:
# === Показване на алиаси ===
show_aliases() {
local category="$1"
if [ -z "$category" ]; then
echo "🔗 Всички алиаси:"
alias | sort | sed 's/alias //' | column -t -s'=' | nl
else
echo "🔍 Алиаси за '$category':"
alias | grep -i "$category" | sort | sed 's/alias //' | column -t -s'=' | nl
fi
}
# Алиаси за бързо показване
alias aliases='show_aliases'
alias docker_aliases='show_aliases docker'
alias backup_aliases='show_aliases backup'
alias git_aliases='show_aliases git'🎯 Използване:
aliases # показва всички алиаси
docker_aliases # само Docker алиасите
backup_aliases # само backup алиасите
show_aliases git # само Git алиасите📊 Още по-advanced функция:
list_my_stuff() {
echo "════════════════════════════════════════"
echo "🔗 АЛИАСИ ($(alias | wc -l) броя):"
echo "════════════════════════════════════════"
alias | sort | sed 's/alias //' | nl
echo ""
echo "════════════════════════════════════════"
echo "⚙️ ФУНКЦИИ:"
echo "════════════════════════════════════════"
declare -F | cut -d' ' -f3 | grep -v '^_' | nl
}
alias myconfig='list_my_stuff'Резултат:
aliases– красиво форматирани алиасиmyconfig– показва и алиаси, и функцииdocker_aliases– само Docker алиасите
Много по-бързо от отварянето на .bashrc файла! 🎉
Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу:
Donate ☕️ Дарете с PayPalDonate 💳 Дарете с Revolut










