LINUX.ORG.RU

Избранные сообщения mamboo

Заделал пару функций.

 ,

Пока летел в самолете, наваял для bashrc парочку функций. Выложил все в github. https://github.com/mrAibo/bash/tree/main

В общем-то ничего особенного, за исключением пары функций из-за которых и выкладываю. Может кто-то оценит. Документацию составил ИИ. Тестируйте, если есть идеи, что добавить/улучшить - пишите. Будет время рассмотрю.

rcp (Remote Copy) Function

The rcp function is a versatile tool for copying files and directories, both locally and to/from remote systems. It supports both rsync and scp, offering various options for compression, moving files, and more.

Usage

rcp [OPTIONS] source destination

Key Features

  • Supports both local and remote file transfers
  • Option to use rsync (default) or scp
  • File compression during transfer
  • Move files instead of copying
  • Bandwidth limiting
  • Exclude patterns for selective file transfer
  • Verbose output option

Options

  • -z, --compress: Compress data during transfer
  • -m, --move: Move files (delete source after successful transfer)
  • -u, --user USERNAME: Specify remote username
  • -p, --port PORT: Specify SSH port
  • -i, --identity FILE: Use specific SSH identity file
  • -l, --limit RATE: Set bandwidth limit (KB/s, rsync only)
  • -e, --exclude FILE: Specify exclude file or pattern
  • -s, --use-scp: Force SCP instead of rsync
  • -v, --verbose: Enable verbose output
  • -h, --help: Show help message

Examples

  1. Basic copy:

    rcp /path/to/source user@remote:/path/to/destination
    
  2. Compressed transfer with verbose output:

    rcp --compress --verbose /path/to/source user@remote:/path/to/destination
    
  3. Move files using a specific SSH key and port:

    rcp -m -p 2222 -i ~/.ssh/my_key /path/to/source user@remote:/path/to/destination
    
  4. Use SCP with exclude patterns:

    rcp --use-scp --exclude '*.log' /path/to/source user@remote:/path/to/destination
    
  5. Limit bandwidth and use compression:

    rcp -z -l 1000 -e '**/*.tmp' /path/to/source user@remote:/path/to/destination
    

This function provides a flexible and powerful way to handle file transfers in various scenarios, combining the strengths of rsync and scp with additional features for improved usability.

ex (Extract and Compress) Function

The ex function is a versatile tool for extracting and compressing various types of archive files. It supports multiple formats and offers options for both extraction and compression operations.

Usage

ex [OPTIONS] file1 [file2 ...]

Key Features

  • Supports multiple archive formats (e.g., tar.gz, zip, 7z)
  • Can extract and compress files
  • Allows specifying a target directory for operations
  • Option to delete original files after successful operation
  • Supports excluding files/directories during compression
  • Verbose mode for detailed operation information

Options

  • -x, --extract: Extract mode (default)
  • -c, --compress FORMAT: Compress mode (specify format: tar.gz, tar.bz2, zip, 7z)
  • -v, --verbose: Enable verbose output
  • -t, --target DIR: Specify target directory for extraction or compression
  • -d, --delete: Delete original file(s) after operation
  • -e, --exclude PATTERN: Exclude files/directories matching the pattern or specified in a file
  • -h, --help: Show help message

Supported Formats

Extraction

  • .tar.bz2, .tar.gz, .bz2, .rar, .gz, .tar, .tbz2, .tgz, .zip, .Z, .7z, .xz, .exe, .tar.xz, .tar.zst

Compression

  • tar.gz, tar.bz2, zip, 7z

Examples

  1. Extract an archive:

    ex archive.tar.gz
    
  2. Compress files to a zip archive with verbose output:

    ex --compress zip --verbose --target /tmp file1 file2
    
  3. Extract files to a specific directory and delete the original archive:

    ex --extract --delete --target /path/to/extract archive.zip
    
  4. Compress directories to a tar.gz archive, excluding certain files:

    ex --compress tar.gz --exclude '*.log' --target /tmp dir1 dir2
    
  5. Compress using patterns from an exclude file:

    ex -c zip --exclude exclude.txt dir1 dir2
    

The ex function simplifies the process of working with archives by providing a unified interface for both extraction and compression tasks. It supports a wide range of formats and offers flexibility through various options, making it a powerful tool for file archiving and extraction operations.

duu (Enhanced Disk Usage) Function

The duu function is an enhanced version of the standard du (disk usage) command. It provides a colorful, easy-to-read summary of disk usage for directories and files.

Usage

duu [directory]

If no directory is specified, it will analyze the current directory.

Key Features

  • Color-coded output for easy reading
  • Sorts results by size in descending order
  • Displays sizes in human-readable format (K, M, G, T)
  • Shows percentage and graphical representation of disk usage
  • Summarizes total disk usage at the end

Output Format

The function displays the following information:

  1. Size: The amount of disk space used
  2. Unit: The unit of measurement (K, M, G, T)
  3. Usage: A graphical bar representing the percentage of usage
  4. Path: The file or directory path

Color Coding

  • Green: Kilobytes (K)
  • Yellow: Megabytes (M)
  • Cyan: Gigabytes (G)
  • Magenta: Terabytes (T)
  • Blue: Default color for other units

Example Output

  Disk Usage Summary  
Size       Unit   Usage    Path
---------- ------ --------- --------------------
   1.23    G      █████░░░░ /home/user/Documents
   856.45  M      ████░░░░░ /home/user/Downloads
   234.56  M      ██░░░░░░░ /home/user/Pictures
   45.67   M      █░░░░░░░░ /home/user/.config
----------------------------------------
Total:     2.34   G     

Benefits

  1. Visual Representation: The bar chart provides an immediate visual cue about the relative sizes of directories.
  2. Color-Coding: Different colors for different size units make it easy to quickly identify large consumers of disk space.
  3. Sorted Output: Results are sorted by size, placing the largest items at the top.
  4. Human-Readable: Sizes are converted to the most appropriate unit (K, M, G, T) for easy understanding.
  5. Total Summary: Provides a total at the end, giving an overview of the analyzed directory’s total size.

Use Cases

  • Quickly identify large files or directories consuming disk space
  • Analyze disk usage patterns in a visually appealing manner
  • Get a summarized view of disk usage in a specific directory

The duu function enhances the standard disk usage analysis by providing a more user-friendly and informative output, making it easier to understand and manage disk space usage.

CrownRU
()

Древнее зло, излом API/ABI в glibc связанный с errno

 , , ,

Есть очень древняя программа без исходников, скомпилированная под Linux ориентировочно в 2000-2003 годах. Вероятно компилировалась на RHL 7.3 Valhalla (не путать с RHEL 7, тогда ещё вообще RHEL’ов не было), возможно даже каким-то GCC 2.95:

prism.original: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.2.5, not stripped, too many notes (256)

Нужно запустить её на современной Ubuntu LTS.

При запуске ругается так:

prism: symbol lookup error: prism: undefined symbol: errno, version GLIBC_2.0

Погуглил, и нашёл что GNU’тые когда-то там на рубеже веков сломали API/ABI и этот errno похоже что завернули в какие-то убермакросы и выкинули.

Извернулся, взял HEX-редактор и заменил несуществующий символ errno на существующий srand:

https://0x0.st/Xy00.png

После такого наглого вмешательства программа запустилась и всё отлично работает, но напрягает такой выхлоп в консоль:

prism: Symbol `srand' has different size in shared object, consider re-linking

Как сделать по красоте и избавиться от этого предупреждения?

Сам файл программы: https://0x0.st/Xy0d.zip/prism.zip

EXL
()

Приложения и утилиты, которые стоит попробовать

 , ,

Приложения и утилиты, которые стоит попробовать

Многие пользователи Linux с большим стажем даже не подозревают о существовании этих замечательных инструментов, которые способны облегчить им жизнь…

( читать дальше... )

rtxtxtrx
()

Используем socks для доступа к ChatGPT и ускорения YouTube

 ,

Используем socks для доступа к ChatGPT и ускорения YouTube

Эта статья не содержит описания способов обхода блокировок для доступа к противоправому контенту. Socks-прокси нужны исключительно для того чтобы смотреть YouTube и просить ChatGPT писать за тебя домашние задания!!! У первого какие-то проблемы со скоростью последнее время, говорят, что из-за отключения кеширующих серверов, а второй сам заблокировал жителей из России, Беларуси и Китая…

( читать дальше... )

rtxtxtrx
()

Как в x11 забиндить Delete на Shift + BackSpace (или на Ctrl+H) глобально

 , ,

Кнопка Delete расположена в стороне от основных клавиш - приходится отрывать руки «фыва олдж», что бы её нажать. Хочется её перебиндить Delete на что-нибудь более доступное, например на Shift+Backspace или на Ctrl+H.

В man 7 xkeyboard-config решения не нашёл. Клавиатура не программируемая (не QMK/VIA).

Есть идеи?

Harliff
()

Проблемы с уровнем яркости на Honor Magicbook 14 GLO-G561

 

Установил Ubuntu 22.04.3 LTS на указанный ноут. Сразу при запуске все хорошо - яркость регулируется и с кнопок, и из менюшки. Через некоторое время (минут 10) яркость сама по себе доводится до максимума или до минимума, после чего перестает работать одна или обе кнопки настройки яркости, при этом регулировка из менюшки работает. Иногда это событие повторяется. Один раз было, что яркость сама повысилась до максимума и менялась через менюшку, но сразу же восстанавливалась до максимума, будто была зажата кнопка, но прошло само через пару секунд (впоследствии кнопки так и не заработали). Кто знает, подскажите пожалуйста, в чем может быть дело.

krigga
()

Ассемблирование DSDT.dsl

 ,

Здравствуйте. Решил поправить свой dsdt напопробовать включить S3 вместо новомодного s2idle. Однако при повторной компиляции, даже непоправленного dsdt.dsl выдает 41 error. Беглый гуглеж говорит, что это проблемы синтаксиса acpi более старой версии.

https://pastebin.com/b6RDZU6E

https://pastebin.com/GtqXsD7S

Как поправить ошибки или ассемблировать под более старую версию acpi?

Jeronimo
()

Разобрался и чуть доработал скрипт прошивки HDMI EDID

 , , ,

Краткое содержание: допилил и форкнул утилиту прошивки edid в edid-checked-writer чтоб прошить сквозной HDMI-эмулятор монитора.

Предистория: имеется 1440p монитор Samsung S27A850D, в котором есть DP и DVI-dual-link. Но нет HDMI (видимо к моменту выхода монитора HDMI не умел в 1440p).

Хотелка: чтоб был способ его по-простому подключить к любому hdmi-источнику и работал бы в 1440p.

Изначально был взят просто пассивный провод-переходник HDMI->DVI-single-link, но с ним не достигалось нужное разрешение, так как монитор в своём EDID не выдавал совместимости с HDMI, в результате чего источник сигнала понимал что используется переходник и не выдаёт битрейта HDMI для 1440p. Однако по предварительным тестам с этим переходником + программным подсовыванием EDID от HDMI-1440p-монитора https://github.com/linuxhw/EDID/blob/master/Digital/Samsung/SAM0E0C/38CD24A55A35 стало ясно что сам монитор более высокий битрейт поддерживает. Оставалось только научить его выдавать этот EDID по кабелю.

Была взята утилита edid-rw, сделал бэкап существующего EDID, дал команду на запись нового - утилита молча вышла с кодом 0 ничего не написав. Оказалось что, во-первых, утилита не проверяет успешность записи, а во-вторых что EEPROM внутри монитора в режиме только чтения (а физически находится под большой впаянной пластиной, когда-то разбирал его ранее).

Поэтому вместо выпаивания и прошивки был выбран более простой и повторяемый путь. Куплен «адаптер HDMI для KVM» - отличается от обычного эмулятора монитора тем, что имеет и выход на который идёт сквозное прохождение сигнала. Маленький металлический с надписями Source и Sink. Добавлен на конец провода-переходника, и внутри этого адаптера оказался уже вполне прошиваемый EEPROM, который всегда представляется источнику сигнала вместо того что передаёт моник.

По этому поводу доработал прошивальщик EDID проверкой на успешность записи и внятным отображением этого резульатата, потестил в разных сценариях и выложил форк на который ссылка вначале. Автор оригинального скрипта edid-rw ещё 4 года назад написал что «не заинтересован в развитии, форкайте если хотите»

Теперь окирпичить монитор из-под линукса стало чуть-чуть удобнее! (или можно случайно окирпичить оперативку, если указать при прошивке не ту шину и прошить EEPROM памяти; я добавил одну проверку призванную это предотвратить, но она ненадёжная; в оригинале вообще не было)

GPFault
()

Узнать мин. версию необходимого smb протокола для работы с Samba server

 

Как с клиента узнать версию необходимого smb протокола для работы с Samba server ?

mirek
()

AMD и suspend

 , , ,

Не ожидал, что на AMD это такая проблема.

Ryzen 7x при echo mem > /sys/power/state зависает.
На Arch вики и Gentoo ходил, пробовал выключать все опции /proc/acpi/wakeup, менял в биосе варианты ACPI…

Не помогло. Под Windows спит. Под linux виснет или сразу включается.

Есть победившие недуг?
С Intel такого не наблюдалось.

пробовал ядра от 5.15 до 6.9

sudo dmesg |grep fai
[    0.222269] thermal_sys: Registered thermal governor 'fair_share'
[    0.239876] ACPI: _OSC evaluation for CPUs failed, trying _PDC
[    2.587188] ACPI: \_TZ_.TZ10: _PSL evaluation failure
[    2.863613] hub 8-0:1.0: config failed, hub doesn't have any ports! (err -19)
Eulenspiegel
()

Перенос флатпак на другой раздел

 ,

Добрый день. Подскажите, пожалуйста, такую вещь. У меня установлен Линукс Минт и по-умолчанию пакеты флатпак ставятся на раздел ~/.var/app (сами приложения) + основная масса летит в раздел /var/lib/flatpak/runtime и /var/lib/flatpak/app в корне и занимает там порядка 11Гб. Раздел я создавал небольшой под систему и отсюда вопрос: можно ли переместить или установку флатпаковского барахла целиком куда-нибудь в /home/user/ (отдельно смонтирован), или раздел /var на другой диск? Я достаточно нубас в системе, поэтому «для чайников», если можно)

Krapkert
()

Насчет пайки, электрики, инженерии

 , ,

Доброго вечера суток! Товарищи, у меня такой возможно не очень опытный вопрос. Ситуация такая: Недавно появилось большое желание и мотивация начать заниматься электроникой. В плане паять, создавать свои схемы и устройства для компьютера или как они называются точно не знаю, такие как Raspberry Pi 4, Proxmark 3, APImote, E-Mate X итд. Возможно вы меня посчитаете как какого нибудь парня пересмотревшего фильмов, но я очень очень давно хочу этим заняться, но не пойму с чего начать. Итак мои вопросы: С чего мне начать свой путь в этой сфере? Какие книги, курсы можете посоветовать? Какое оборудование надо? Какие языки программирования для этого всего нужны? И что вообще как? Буду до безумия благодарен за точный и серьезный ответ. Спасибо за внимание!

Перемещено Dimez из general

yyrroo
()

Шпаргалка и расширенная раскладка для ввода символов с клавиатуры

 , расширенная раскладка клавиатуры,

За 5 минут не нагуглилось. Нашёл onboard, но это не то. Я набиваю тексты, в которых есть особые значки. Некоторое подмножество юникода. Я хочу, чтобы мне было удобно их набивать. Что это означает?

Это означает, что я нажимаю некую глобальную (в рамках оконного менеджера) горячую кнопку. Ну, скажем, AltGr, и отпускаю её. После этого на экране появляется изображение клавиатуры. Далее я нажимаю и/или удерживаю другую кнопку, допустим, Shift, Ctrl, Caps, F1-F7 и т.п. У меня меняется на клавиатуре раскладка (при удержании одних кнопок и при нажатии других) и сразу отображается. Далее я нажимаю, допустим, на кнопку «а» на своей физической клавиатуре и соответствующий символ вводится туда, где находится текущий текстовый ввод. Далее я нажимаю Esc и клавиатура исчезает, ну или сразу исчезает после ввода одной буквы.

Есть такое? У меня LXDE.

den73
()

IDE на основе VIM для python, perl, c++, bash

 , ,

Искал расширение / набор скриптов для VIM чтобы использовать его как IDE для python ( perl, c++, bash, понятно, что для каждого языка будет свой набор ). Их оказалось так много – всех не перепробуешь.

а. какое бы вы посоветовали? В первую очередь интересует питон.

б. как сравнивать, может где-то есть рейтинги, которые я не нашёл?

Всем большое человеческое аригато! Буду приручать неовим с nvchad на малинке.

Для переболевших ковидом:

  1. Ставим неовим apt install neovim

https://github.com/neovim/neovim/wiki/Installing-Neovim

  1. git clone https://github.com/NvChad/NvChad ~/.config/nvim --depth 1 загружаем конфиги nvchad https://nvchad.com/docs/quickstart/install
jia
()

Как идиоматичнее написать эту функцию на лиспе

 ,

Продолжаю щупать скобочки, решил попробовать Common Lisp. Написал простенький tcp сервер, сделал на сокетах (usocket). Выглядит страшненько, но не знаю как написать «правильнее», поэтому решил поинтересоваться у гуру:

(defun create-server (port)
  (let ((socket (usocket:socket-listen "127.0.0.1" port :reuse-address t)))
    (unwind-protect
         (loop
           (let ((connection (usocket:socket-accept socket :element-type 'character)))
             (progn
               (usocket:wait-for-input connection :timeout 10)
               (let ((input-data (read-line (usocket:socket-stream connection))))
                 (when (eq input-data nil) (return))
                 (format t "Server input is: ~a~%"  input-data))
               (format (usocket:socket-stream connection) "Pong~%")
               (force-output (usocket:socket-stream connection))
               (usocket:socket-close connection))))
      (progn
        (format t "Closing socket.~%")
        (usocket:socket-close socket)))))

Первое, что мне кажется не очень правильным это три вложенных let. Вроде поправил на:

(defun create-server (port)
  (let ((socket (usocket:socket-listen "127.0.0.1" port :reuse-address t)))
    (unwind-protect
         (loop
           (let* ((connection (usocket:socket-accept socket :element-type 'character))
                  (stream (usocket:socket-stream connection))
                  (input-data (read-line stream nil)))
             (progn
               (usocket:wait-for-input connection :timeout 10)
               (when (eq input-data :eof) (return))
               (format t "Server input is: ~a~%" input-data)
               (format stream "Pong~%")
               (force-output stream)
               (usocket:socket-close connection))))
      (progn
        (format t "Closing socket.~%")
        (usocket:socket-close socket)))))

Но теперь задержка между отправкой с клиента «Ping» и получением «Pong» стала заметна, возможно проблема в том, что я делаю что-то неправильное с stream и читаю/пишу туда раньше времени. Код клиента

(defun create-client (port)
  (let* ((socket (usocket:socket-connect "127.0.0.1" port)))
    (unwind-protect
         (progn
           (format (usocket:socket-stream socket) "Ping~%") 
           (force-output (usocket:socket-stream socket))
           (usocket:wait-for-input socket :timeout 10)
           (format t "Input is: ~a~%" (read-line (usocket:socket-stream socket))))
      (usocket:socket-close socket))))

Во-вторых, сервер не отрабатывает условие отключения со стороны клиента (пока хочу сделать, чтобы сервер завершал свою работу при отключении клиента). В документации написано:

Reading from a stream which has been closed at the remote end signals an END-OF-FILE condition, meaning that reading from the stream and detecting that condition is the way to do it.

Понимаю только то, что проблема, где-то тут: (when (eq input-data :eof) (return)) – или опять же таки где в моей работе со стримами.

Почему не использую usocket:socket-server? Отвечаю: я так понял, что туда нельзя передать сокет, чтобы ответить что-то клиенту, а же хочу не только читать что мне прислали.

Помогите маленькому лисперу понять что не так. Знаю, что @monk хорошо разбирается в лиспах, из недавнего треда выяснил, что @lovesan в них тоже много понимает и @den73 тоже.

snake266
()

Копирование на флешку тормозит в одном месте.

 ,

Добрый день. Fedora 38 Gnome. При копировании на флешку разных файлов, навжно что, тормозит в одном месте примерно на 20%. 1 день на линуксе, флешка рабочая. Сделал восстановление файловой системы и форматировал не помогло.

kazierweb
()

Как живут после изменений с VPN?

 , , , ,

Недавно столкнулся с проблемой блокировки провайдером VPN.
Решил. Надолго? Надёжно? Не знаю, пока работает.

Сразу возникли вопросы по ПО: как теперь с лицухами?
Те же IDE? Там для любого чиха надо на сервера компании за обновлением инструментария.

Раньше как - «мы не работаем с Россией», хоба! И мы стали индусами или европейцами. Теперь вроде стать индусом непросто.

Как вы выходите из положения? Или пока не аукнулось?

Тут ещё есть интересные ссылки:
https://vc.ru/legal/865273
https://vc.ru/services/864522

Neuromagus
()

Laptop win + linux (без бюджета)

 

Привет лор. Всю жизнь сидел на винде, угораздило 5 лет назад пересесть на маки. Сейчас MacBook pro 16, больше не хочу Макос и мак - бесит буквально все кроме того что классно фильмы и в инете полазить. Собираюсь юзать связку win + linux. Вопрос по выбору ноута. В игры не играю, нужно запускать IDE, виртуалки, AI/ML чуть-чуть (поэтому видеокарта дискретная нужна). Комп берется как единственный дом-работа-поездки. Бюджет условно любой до 3000-4000$. Что бы вы посоветовали? Смотрю на Lenovo X1, Dell XPS, Asus Rog.

tovarishto
()

Как ввести пароль sudo в vi/vim не выходя из него

 , , ,

Простите, может я мало искал, но как ввести пароль sudo в vi/vim не выходя из него.

Раздражает когда забываешь писать sudo и после больших изменений нельзя сохранять результат. Приходится копировать изменения в другой файл…

SaintAnd
()

Жизнь с ноутбуком, на котором жизни быть не должно

 , , , ,

Добрый вечер, ЛОРчане. Первый раз делюсь чем-то подобным. Встречайте - рабочее место основанное на MacBook Air с M2. На фоне можно видеть iMac 5K 2017 на 27" (базовая версия + потом докидывал до 64 гБ ОЗУ), однако сейчас он у меня не в почёте, ибо слабоват относительно ноута (всего-то 5 лет прошло). Видал аймак всякое за свою жизнь (гентушечку с 10 тБ свопа по юзб например :) ), но сейчас не об этом.

Это мой второй макбук на чипе от Apple, первый был залит ряженкой (кривые руки) и сейчас работает в качестве сервера (в линукс перезагрузить возможности нет (залипание клавиш), приходится выживать под макосью). Пользовался Asahi в качестве второй системы ещё до альфа релиза, так что уже «подружился» с линуксом на арме.

( читать дальше... )

По рабочему месту:

  • ЦАП - FiiO K5 Pro ESS
  • Наушники - Beyerdynamic DT 990 Pro (на 250 Ом)
  • Колонки - стереопара HomePod mini (слева от Марисы один из них)
  • Фумо: Мариса, Койши и Сырно
  • Мышь: MX Anywhere 3 (абсолютно не пользуюсь, если надо поуправлять аймаком - можно использовать клаву+трекпад от макбука по беспроводу)
ivabus
()