lsblk -o серийный только 8 символов

Ответ Гвидо отлично работает для меня. Я написал небольшую компилируемую для Linux/Windows -программу Pascal, скомпилированную с помощью Lazarus/FPC, для собственного использования, которая запускает его команду wmctrl или эквивалентную команду Windows Powershell :

.
program CloseAll;
{Ferme toutes les fenêtres}
{$mode objfpc}{$H+}
uses
    Classes, SysUtils, Process, Crt;

var
  p: TProcess;
 // i: integer=0;
  {$R *.res}
begin
      p := TProcess.Create(nil);
    try
        p.ShowWindow := swoHIDE; // Cache la console
        {$ifdef windows}
        p.Executable := 'cmd.exe';
        p.Parameters.Add('powershell -command "(New-Object -comObject Shell.Application).Windows() | foreach-object {$_.quit()}; Get-Process | Where-Object {$_.MainWindowTitle -ne \"\"} | stop-process"');
        {$else}
        p.Executable := '/bin/bash';
        p.Parameters.Add('-c');
        //close all open windows gracefully without closing the Desktop environment
        p.Parameters.Add ('WIN_IDs=$(wmctrl -l | grep -vwE "Bureau$|xfce4-panel$" | cut -f1 -d' + #39 + ' ' + #39 + ')' +#10 + 'for i in $WIN_IDs; do wmctrl -ic "$i"; done');
        //p.Options := p.Options + [poWaitOnExit, poUsePipes];
        {$endif}
        p.Execute;
    finally
        p.Free
    end
end.

Я также заметил, что Диего прав насчет имени рабочего стола, и мой исполняемый файл для Linux будет работать только во французской среде xfce с рабочим столом под названием «Бюро». Мне не удалось найти имя рабочего стола в переменных окружения (, да и заморачиваться не стоило ).

0
15.01.2020, 18:39
1 ответ

При запуске в терминале, вывод на терминал, lsblkрегулирует вывод в соответствии с доступной шириной, при необходимости усекая столбцы. Это приводит, в частности, к сокращению серийных номеров.

Чтобы убедиться, что вы получаете полный вывод, вы можете перенаправить вывод в другую программу:

lsblk -o type,name,label,partlabel,size,model,serial,wwn,uuid | cat

или еще лучше, если вы хотите опубликовать -обработайте информацию, используйте машиночитаемый -формат — lsblk -Jвыведет JSON:

lsblk -o type,name,label,partlabel,size,model,serial,wwn,uuid -J
3
28.01.2020, 02:21

Теги

Похожие вопросы