Title: πŸ”€ tr/head/tail/watch β€” Commands Group: Text & Parsing Icon: πŸ”€ Order: 7 ## Table of Contents - [TR β€” Translate Characters](#-tr--translate-characters--tr--ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅-символов) - [HEAD β€” First Lines](#-head--first-lines--head--ΠΏΠ΅Ρ€Π²Ρ‹Π΅-строки) - [TAIL β€” Last Lines](#-tail--last-lines--tail--послСдниС-строки) - [WATCH β€” Monitor Commands](#-watch--monitor-commands--watch--ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³-ΠΊΠΎΠΌΠ°Π½Π΄) - [Real-World Examples](#-real-world-examples--ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹-ΠΈΠ·-ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ) --- # πŸ”„ TR β€” Translate Characters / TR β€” ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ символов ### Case Conversion / ΠšΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΡ рСгистра tr '[:lower:]' '[:upper:]' < file # To uppercase / Π’ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ рСгистр tr 'a-z' 'A-Z' < file # Alternative uppercase / ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ tr '[:upper:]' '[:lower:]' < file # To lowercase / Π’ Π½ΠΈΠΆΠ½ΠΈΠΉ рСгистр echo "Hello World" | tr 'A-Z' 'a-z' # Pipe to lowercase / Π§Π΅Ρ€Π΅Π· pipe Π² Π½ΠΈΠΆΠ½ΠΈΠΉ рСгистр ### Delete Characters / Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ символов tr -d '0-9' < file # Delete all digits / Π£Π΄Π°Π»ΠΈΡ‚ΡŒ всС Ρ†ΠΈΡ„Ρ€Ρ‹ tr -d '\n' < file # Remove newlines / Π£Π΄Π°Π»ΠΈΡ‚ΡŒ пСрСносы строк tr -d ' ' < file # Remove spaces / Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ tr -d '[:punct:]' < file # Remove punctuation / Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΡƒΠ½ΠΊΡ‚ΡƒΠ°Ρ†ΠΈΡŽ tr -d -c '[:alnum:]\n' < file # Keep only alphanumeric / ΠžΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±ΡƒΠΊΠ²Ρ‹ ΠΈ Ρ†ΠΈΡ„Ρ€Ρ‹ ### Squeeze Repeats / Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΎΠ² tr -s ' ' < file # Squeeze spaces / Π‘ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ tr -s '\n' < file # Squeeze blank lines / Π‘ΠΆΠ°Ρ‚ΡŒ пустыС строки tr -s '[:space:]' ' ' < file # All whitespace to single space / ВсС ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ Π² ΠΎΠ΄ΠΈΠ½ echo "hello world" | tr -s ' ' # Remove extra spaces / Π£Π΄Π°Π»ΠΈΡ‚ΡŒ лишниС ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ### Replace Characters / Π—Π°ΠΌΠ΅Π½Π° символов tr ' ' '_' < file # Spaces to underscores / ΠŸΡ€ΠΎΠ±Π΅Π»Ρ‹ Π² подчёркивания tr ':' ',' < /etc/passwd # Colon to comma / ДвоСточия Π² запятыС tr -c '[:alnum:]' '_' < file # Non-alphanumeric to underscores / НС Π±ΡƒΠΊΠ²Ρ‹/Ρ†ΠΈΡ„Ρ€Ρ‹ Π² подчёркивания echo "192.168.1.1" | tr '.' '-' # Dots to dashes / Π’ΠΎΡ‡ΠΊΠΈ Π² дСфисы ### Complement Sets / Π”ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ мноТСств tr -cd '[:digit:]' < file # Keep only digits / ΠžΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†ΠΈΡ„Ρ€Ρ‹ tr -cd '[:alpha:]\n' < file # Keep only letters / ΠžΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±ΡƒΠΊΠ²Ρ‹ --- # ⬆️ HEAD β€” First Lines / HEAD β€” ΠŸΠ΅Ρ€Π²Ρ‹Π΅ строки ### Basic Usage / Π‘Π°Π·ΠΎΠ²ΠΎΠ΅ использованиС head file # First 10 lines / ΠŸΠ΅Ρ€Π²Ρ‹Π΅ 10 строк head -n 20 file # First 20 lines / ΠŸΠ΅Ρ€Π²Ρ‹Π΅ 20 строк head -20 file # Short form / ΠšΠΎΡ€ΠΎΡ‚ΠΊΠ°Ρ Ρ„ΠΎΡ€ΠΌΠ° head -n -10 file # All except last 10 lines / ВсС ΠΊΡ€ΠΎΠΌΠ΅ послСдних 10 head -c 100 file # First 100 bytes / ΠŸΠ΅Ρ€Π²Ρ‹Π΅ 100 Π±Π°ΠΉΡ‚ ### Multiple Files / НСсколько Ρ„Π°ΠΉΠ»ΠΎΠ² head -n 5 file1 file2 # First 5 lines of each / ΠŸΠ΅Ρ€Π²Ρ‹Π΅ 5 строк ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ head -q -n 10 file1 file2 # Quiet (no headers) / Π‘Π΅Π· Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² head -v file1 file2 # Verbose (always headers) / Π‘ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ ### With Pipes / Π‘ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°ΠΌΠΈ ps aux | head -n 20 # First 20 processes / ΠŸΠ΅Ρ€Π²Ρ‹Π΅ 20 процСссов ls -lt | head -n 10 # 10 newest files / 10 Π½ΠΎΠ²Π΅ΠΉΡˆΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² history | head -n 50 # First 50 history entries / ΠŸΠ΅Ρ€Π²Ρ‹Π΅ 50 ΠΊΠΎΠΌΠ°Π½Π΄ истории --- # ⬇️ TAIL β€” Last Lines /TAIL β€” ΠŸΠΎΡΠ»Π΅Π΄Ρ‹Π΅ строки ### Basic Usage / Π‘Π°Π·ΠΎΠ²ΠΎΠ΅ использованиС tail file # Last 10 lines / ПослСдниС 10 строк tail -n 20 file # Last 20 lines / ПослСдниС 20 строк tail -20 file # Short form / ΠšΠΎΡ€ΠΎΡ‚ΠΊΠ°Ρ Ρ„ΠΎΡ€ΠΌΠ° tail -n +10 file # From line 10 to end / Π‘ 10-ΠΉ строки Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° tail -c 100 file # Last 100 bytes / ПослСдниС 100 Π±Π°ΠΉΡ‚ ### Follow Mode / Π Π΅ΠΆΠΈΠΌ слСТСния tail -f /var/log/syslog # Follow new lines / Π‘Π»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° Π½ΠΎΠ²Ρ‹ΠΌΠΈ строками tail -f /var/log/nginx/access.log # Follow web server log / Π‘Π»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° Π»ΠΎΠ³ΠΎΠΌ Π²Π΅Π±-сСрвСра tail -F file # Follow by name (retry) / Π‘Π»Π΅Π΄ΠΈΡ‚ΡŒ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ (с ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΎΠΌ) tail -f file1 file2 # Follow multiple files / Π‘Π»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° нСсколькими Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ tail -f --retry file # Retry if file doesn't exist / ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ Ссли Ρ„Π°ΠΉΠ» Π½Π΅ сущСствуСт ### Follow with PID / Π‘Π»Π΅ΠΆΠ΅Π½ΠΈΠ΅ с PID tail --pid=1234 -f file # Stop when PID dies / ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠ³Π΄Π° процСсс Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ tail -f --pid=$$ file # Follow until current shell exits / Π”ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ ### Advanced Tail / ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΉ tail tail -n 100 -f /var/log/app.log | grep ERROR # Follow and filter / Π‘Π»Π΅Π΄ΠΈΡ‚ΡŒ ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ tail -f file | awk '{print $1, $5}' # Follow and extract fields / Π‘Π»Π΅Π΄ΠΈΡ‚ΡŒ ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ поля tail -q -n 50 *.log # Quiet mode / Π’ΠΈΡ…ΠΈΠΉ Ρ€Π΅ΠΆΠΈΠΌ tail -s 5 -f file # Poll every 5s / ΠžΠΏΡ€ΠΎΡ ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 5 сСкунд --- # πŸ” WATCH β€” Monitor Commands / WATCH β€” ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΊΠΎΠΌΠ°Π½Π΄ ### Basic Monitoring / Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ watch 'ss -s' # Monitor socket stats / ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ статистики сокСтов watch -n 2 'ss -s' # Refresh every 2s / ΠžΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 2 сСкунды watch -n 5 'df -h' # Monitor disk space / ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ дискового пространства watch 'free -h' # Monitor memory / ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ памяти watch 'uptime' # Monitor load average / ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ### Highlight Differences / ΠŸΠΎΠ΄ΡΠ²Π΅Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ watch -d 'netstat -an | wc -l' # Highlight differences / ΠŸΠΎΠ΄ΡΠ²Π΅Ρ‚ΠΈΡ‚ΡŒ различия watch -d=cumulative 'ps aux | wc -l' # Cumulative differences / ΠΠ°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ различия watch -n 1 -d 'cat /proc/loadavg' # Monitor load with highlighting / ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ с подсвСткой ### Precise Timing / Π’ΠΎΡ‡Π½ΠΎΠ΅ врСмя watch -p 'date' # Precise timing / Π’ΠΎΡ‡Π½ΠΎΠ΅ врСмя watch -t 'ps aux | grep nginx' # No title / Π‘Π΅Π· Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° watch -n 0.1 'cat sensor.dat' # 100ms interval / Π˜Π½Ρ‚Π΅Ρ€Π²Π°Π» 100мс ### Exit on Change / Π’Ρ‹Ρ…ΠΎΠ΄ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ watch -g 'ls -l file' # Exit when output changes / Π’Ρ‹Ρ…ΠΎΠ΄ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° watch -g -n 1 'pgrep myapp' # Exit when process appears / Π’Ρ‹Ρ…ΠΎΠ΄ ΠΏΡ€ΠΈ появлСнии процСсса ### Complex Commands / Π‘Π»ΠΎΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ watch 'docker ps --format "table {{.Names}}\t{{.Status}}"' # Monitor containers / ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² watch 'kubectl get pods -o wide' # Monitor Kubernetes pods / ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΏΠΎΠ΄ΠΎΠ² Kubernetes watch -n 5 'tail -n 20 /var/log/app.log' # Watch latest log entries / Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ послСдниС записи Π»ΠΎΠ³Π° watch 'systemctl list-units --state=failed' # Monitor failed services / ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΡƒΠΏΠ°Π²ΡˆΠΈΡ… сСрвисов --- # 🌟 Real-World Examples / ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΠ· ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ ### Log Processing / ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π»ΠΎΠ³ΠΎΠ² tail -f /var/log/nginx/access.log | grep "POST" # Monitor POST requests / ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ POST запросов tail -f /var/log/app.log | grep -i error | head -n 50 # First 50 errors / ΠŸΠ΅Ρ€Π²Ρ‹Π΅ 50 ошибок tail -n 1000 /var/log/syslog | grep failure # Last 1000 lines with failures / ПослСдниС 1000 строк с ошибками tail -f /var/log/auth.log | grep "Failed password" # Monitor SSH failures / ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π½Π΅ΡƒΠ΄Π°Ρ‡ SSH ### System Monitoring / ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ систСмы watch -n 1 'ps aux --sort=-%mem | head -n 10' # Top memory consumers / Π’ΠΎΠΏ ΠΏΠΎ памяти watch -n 2 'docker stats --no-stream' # Monitor Docker resources / ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ рСсурсов Docker watch -d 'free -h' # Memory usage with changes / ИспользованиС памяти с измСнСниями watch -n 5 'systemctl status nginx' # Monitor service status / ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ статуса сСрвиса ### File Conversion / ΠšΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΡ Ρ„Π°ΠΉΠ»ΠΎΠ² cat file.txt | tr -d '\r' > unix.txt # Remove Windows line endings / Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Windows пСрСносы cat file.csv | tr ',' '\t' > file.tsv # CSV to TSV / CSV Π² TSV cat data.txt | tr '[:upper:]' '[:lower:]' | tr -s ' ' '\n' | sort | uniq -c # Word frequency / Частота слов cat access.log | tr ' ' '\n' | grep -E '^[0-9]{1,3}\.' | sort | uniq -c # Count IPs / ΠŸΠΎΠ΄ΡΡ‡Ρ‘Ρ‚ IP ### Deployment Monitoring / ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ развёртывания watch -n 1 'kubectl get pods | grep myapp' # Watch pod deployment / Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π° tail -f deploy.log & watch -n 2 'curl -s http://localhost:8080/health' # Monitor deployment + health / ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ развёртывания + Π·Π΄ΠΎΡ€ΠΎΠ²ΡŒΠ΅ watch -g 'curl -sf http://localhost:8080 >/dev/null' && echo "Service up!" # Wait for service / Π–Π΄Π°Ρ‚ΡŒ сСрвис ### Data Extraction / Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… head -n 1 data.csv && tail -n +2 data.csv | sort # Header + sorted data / Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ + отсортированныС Π΄Π°Π½Π½Ρ‹Π΅ tail -n +2 data.csv | head -n 100 # Skip header, first 100 rows / ΠŸΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 100 строк cat /var/log/app.log | tail -n 10000 | grep ERROR | head -n 50 # Last 10k lines, first 50 errors / ПослСдниС 10k строк, ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 50 ошибок ### Network Monitoring / ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ сСти watch -n 1 'netstat -an | grep ESTABLISHED | wc -l' # Active connections count / ΠŸΠΎΠ΄ΡΡ‡Ρ‘Ρ‚ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… соСдинСний watch -d 'ss -tn | tail -n +2 | wc -l' # TCP connection count / ΠŸΠΎΠ΄ΡΡ‡Ρ‘Ρ‚ TCP соСдинСний watch 'iptables -nvL | head -n 20' # Monitor firewall / ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Ρ„Π°ΠΉΡ€Π²ΠΎΠ»Π° ### Process Management / Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ процСссами watch -n 1 'ps aux | grep -v grep | grep myapp' # Monitor specific process / ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ процСсса tail -f --pid=$(pgrep nginx | head -1) /var/log/nginx/error.log # Follow until process dies / Π‘Π»Π΅Π΄ΠΈΡ‚ΡŒ Π΄ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ процСсса watch -g 'pgrep -x myservice' || echo "Service stopped!" # Alert on service stop / ΠžΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ остановкС сСрвиса ### Cleanup / ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° cat file.txt | tr -cd '[:print:]\n' # Remove non-printable chars / Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Π½Π΅ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌΡ‹Π΅ символы cat file.txt | tr -s '\n' | tail -n +2 # Remove leading blank lines / Π£Π΄Π°Π»ΠΈΡ‚ΡŒ пустыС строки Π² Π½Π°Ρ‡Π°Π»Π΅ echo "Hello World" | tr -s ' ' | tr ' ' '-' # Normalize and replace spaces / ΠΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ # πŸ’‘ Performance Tips / Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ # Use tail -f instead of watch for log files / Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ tail -f вмСсто watch для Π»ΠΎΠ³ΠΎΠ² # watch -p for better timing accuracy / watch -p для Π»ΡƒΡ‡ΡˆΠ΅ΠΉ точности Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ # tr -cd is faster than grep for character filtering / tr -cd быстрСС grep для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ символов