LINUX.ORG.RU

GNU Coreutils 8.25

 ,


0

1

20 января была представлена новая версия GNU Coreutils — набора базовых утилит для работы с файлами, текстом и командной оболочкой (cp, mv, chown, ls, dd, echo, cat и т. д.). Новая версия включает 169 коммитов от 12 людей.

В новой версии:

  • В дополнение к команде base64 была добавлена команда base32;
  • Новые функции:
    • comm, cut, head, numfmt, paste и tail теперь имеют опцию "-z" ("--zero-terminated"), добавляющую в конец записи нулевой символ (NUL);
    • dd с опцией "--human-readable" преобразует информацию о размере в читаемый формат, например: «3441325000 bytes (3.4 GB, 3.2 GiB) copied»;
    • в утилиты md5sum, sha1sum, sha224sum, sha256sum, sha384sum и sha512sum добавлена опция "--ignore-missing", исключающая проверку несуществующих файлов;
    • printf теперь поддерживает спецификатор формата '%q', выводящий аргумент в формате, пригодном для большинства оболочек, показывающих непечатные символы в виде «$'...'»;
  • Исправления и улучшения:
    • mv больше не вызывает потери данных при удалении исходного каталога, указанного в параметрах несколько раз, если этот каталог является пунктом назначения;
    • утилиты, влияющие на директории (chmod, cp, rm и т. д.), теперь лучше работают с XFS;
    • stat -f --format=%T теперь выводит тип ФС для новых псевдо-ФС «bpf_fs», «btrfs_test», «nsfs», «overlayfs» и «tracefs», а также для «acfs»;
    • все утилиты выводят аргументы, полученные от пользователя, в сообщениях об ошибках;
  • Изменения:
    • join, sort и uniq с опцией "--zero-terminated" воспринимают '\n' как разделитель полей;
    • ls теперь экранирует имена файлов, что подходит для использования их в командной оболочке и при выводе в терминал.

>>> Подробности

★★★★★

Проверено: leave ()

mv больше не вызвает

непечатные символы в виде «$'...'»;
непечатные

В новости очень мало инлайнов, неудобно читать.

DeadEye ★★★★★ ()
Последнее исправление: DeadEye (всего исправлений: 1)

Кто-нибудь еще не понимает, зачем coreutils обновлять? Такие программы надо было написать 1 раз и потом только подгонять под изменчивый мир, мне кажется.

unt1tled ★★★★ ()
Ответ на: комментарий от unt1tled

зачем ... обновлять?

потом только подгонять

Ты уж определись.

anonymous ()
Ответ на: комментарий от sudopacman

Ты только что заявил, что Столлман писал бажный софт?! Ловите его!

unt1tled ★★★★ ()

ls теперь экранирует имена файлов, что подходит для использования их в командной оболочке и при выводе в терминал.

Вот даже не знаю хорошо это или плохо. Склоняюсь что плохо. При необходимости имя всегда можно было обернуть в кавычки, а тут придётся удалять слеши.

WARNING ★★★ ()

dd с опцией "--human-readable" преобразует информацию о размере в читаемый формат, например: «3441325000 bytes (3.4 GB, 3.2 GiB) copied»;

Давно пора. Из-за того, что раньше этого не было, пришлось отказаться когда-то от dd в пользу ddrescue.

romeo250501 ★★ ()

Менять синтаксис ls???

mittorn ★★★★★ ()
Ответ на: комментарий от WARNING

Я вот тоже в сомнениях. Если бы так было с самого начала, то может и нужно. А так, столько лет уже справляемся без этого, какой-то сомнительный профит.

anc ★★★★ ()
Ответ на: комментарий от WARNING

Ну ха-ха, любители писать в стиле

ls -la | grep filename| awk '{print $8}'
наконец то будут наказаны.

Хотя реально странное изменение, например по мне вывод ls должен в первую очередь быть удобно читаем.

Liquorice ()

ls теперь экранирует имена файлов, что подходит для использования их в командной оболочке и при выводе в терминал.

Как-то так теперь будет?

name\ with\ spaces.ext

Radjah ★★ ()
Ответ на: комментарий от Liquorice

Хотя реально странное изменение, например по мне вывод ls должен в первую очередь быть удобно читаем.

$ cd /tmp && mkdir tst123 && cd tst123 && mkdir -p 'dir1' 'dir 2' 'dir 3 dir' && ls
dir1  dir 2  dir 3 dir

нууу...

anTaRes ★★★★ ()

comm,cut,head,numfmt,paste,tail now have the -z,--zero-terminated option, and tac --separator accepts an empty argument, to work with NUL delimited items.

лучше б ты не переводил.

dbzix ()
Ответ на: комментарий от Radjah

Нет, так:

'Simba'\''s._Описание_видеоигр_для_Sony_PlayStation_#6_(СПб_1999).djvu.txt'
'test test'

saahriktu ★★★ ()

mv больше не вызвает потери данных при удалении исходного каталога, указанного в параметрах несколько раз, если этот каталог является пунктом назначения;

Поясни.

pacify ★★★★★ ()

Я думал coreutils как Библия, один раз написана и не подлежит изменению. Удивлен.

xomenx ()
Ответ на: комментарий от saahriktu

Какая странная человекочитаемость.

anonymous ()
Ответ на: комментарий от xomenx

coreutils как Библия

Библия, один раз написана и не подлежит изменению

Молодец, смог умудрится одним постом дважды выставить себя школьником.

anonymous ()

"-z" ("--zero-terminated"), добавляющую в конец записи нулевой символ (NUL);

Больше костылей хороших и разных!

Begemoth ★★★★★ ()
Ответ на: комментарий от xomenx

Я думал coreutils как Библия, один раз написана и не подлежит изменению. Удивлен.

«Публичная» Библия переписывалась много раз.

Поэтому и coreutils немного дополняют и исправляют.

EuGeneus ★★ ()

Удивлён вашему удивлению об обновлении. Ничего не сломали же, но сделали ещё гибче.

das_tier ★★★ ()

leave, присмотрись таки к первому посту в треде.

DeadEye ★★★★★ ()

GNU Coreutils

Ненужно, есть busybox.

anonymous ()
Ответ на: комментарий от anonymous

Однопоточное урезанное в фичах убожество.

anonymous ()
Ответ на: комментарий от anonymous

Ага. Убрал прописав в ~/.bashrc

alias ls="ls --quoting-style=literal"
А для полноценного экранирования у меня есть свой велосипед на Си:
#include <stdio.h>

char bcharz[] = " !@$^&*|=()[]\\:;\"\'<>,?{}";

int main(){
        char c, bci;
        while((c = getchar()) != EOF){
                for(bci=0; bci < 24 ; bci++) if (bcharz[bci] == c) putchar ('\\');
                putchar(c);
        }
}

saahriktu ★★★ ()

ну вот, пора собирать lfs.

eR ★★★★★ ()

" 169 коммитов от людей" - это какой язык ?

lenin386 ★★ ()
Ответ на: комментарий от anonymous
 ~ % touch /tmp/ололо
 ~ % busybox ls /tmp/ололо
/tmp/?????
anonymous ()

С dd хорошо, а короткого ключа нет?

А вот с ls нехорошо, по умолчанию он тоже экранировать будет?

false ★★★★ ()
Последнее исправление: false (всего исправлений: 1)
Ответ на: комментарий от false

А вот с ls нехорошо, по умолчанию он тоже экранировать будет?

Да, но это отключается (см. выше).

saahriktu ★★★ ()
Ответ на: комментарий от EuGeneus

«Публичная» Библия переписывалась много раз.

Сколько же раз переписывалась Бибилия и кем?

goingUp ★★★★★ ()
Ответ на: комментарий от saahriktu

Это конечно хорошо, жаль дефолт сломали

false ★★★★ ()

ls теперь экранирует имена файлов, что подходит для использования их в командной оболочке и при выводе в терминал.

В оригинале «ls now quotes file names unambiguously and appropriate for use in a shell, when outputting to a terminal.» Что примерно означает «теперь ls заключает в кавычки (а именно символ ') имена для удобного использования в терминале».

Для экранирования используется слово escape.

user@host ~ $ ls --version
ls (GNU coreutils) 8.25
user@host ~ $ touch rsatest\"fdsa
user@host ~ $ ls -l
total 0
-rw-r--r-- 1 user user 0 Jan 21 21:05 'rsatest"fdsa'

Но один символ ' выносит отдельно:

user@host ~ $ ls -l
total 0
-rw-r--r-- 1 user user 0 Jan 21 21:05 'rsatest"fdsa'
-rw-r--r-- 1 user user 0 Jan 21 21:13 'sdf'\''dfs'

feanor ★★ ()
Последнее исправление: feanor (всего исправлений: 1)

sudopacman

Всё время читаю как sudopacan, переименуйся! Судопацан, ёпт.

anonymous ()
Ответ на: комментарий от Begemoth

"-z" ("--zero-terminated"), добавляющую в конец записи нулевой символ (NUL);

Больше костылей хороших и разных!
Begemoth

Ты ... никогда ... не видел ... find'a?!?!?!? Ой! (С)(R)(Tm)

anonymous ()
Ответ на: комментарий от das_tier

Удивлён вашему удивлению об обновлении. Ничего не сломали же, но сделали ещё гибче.
das_tier

дура ты лошадь! Если эта хрень в ls по-дефолту а не опцией, песец всем котятам налабанным на этом грешном шарике за поcледние лет сорок 8~~-(

anonymous ()
Ответ на: комментарий от anonymous

в ls по-дефолту а не опцией

По дефолту, но отключается (см. выше).

saahriktu ★★★ ()
Ответ на: комментарий от saahriktu

Кстати, вот патч, если кому надо:

> cat coreutils_8.25_ls_literal.patch
--- ls_orig.c   2016-01-14 15:16:23.000000000 +0300
+++ ls.c        2016-01-22 01:08:01.174295814 +0300
@@ -1567,13 +1567,13 @@
     case LS_MULTI_COL:
       /* This is for the 'dir' program.  */
       format = many_per_line;
-      set_quoting_style (NULL, escape_quoting_style);
+      set_quoting_style (NULL, literal_quoting_style);
       break;

     case LS_LONG_FORMAT:
       /* This is for the 'vdir' program.  */
       format = long_format;
-      set_quoting_style (NULL, escape_quoting_style);
+      set_quoting_style (NULL, literal_quoting_style);
       break;

     case LS_LS:
@@ -1581,7 +1581,7 @@
       if (isatty (STDOUT_FILENO))
         {
           format = many_per_line;
-          set_quoting_style (NULL, shell_escape_quoting_style);
+          set_quoting_style (NULL, literal_quoting_style);
           /* See description of qmark_funny_chars, above.  */
           qmark_funny_chars = true;
         }

saahriktu ★★★ ()
Ответ на: комментарий от anonymous

Видел, у него тоже такой костыль есть, ну и что? Костыльной сущности это не меняет.

Begemoth ★★★★★ ()
Ответ на: комментарий от anonymous

Тебе же написали - при выводе в терминал. Хотя это один хрен убого.

kirk_johnson ()

dd с опцией "--human-readable" преобразует информацию о размере в читаемый формат

Я джвенадцать лет ждал!

Pythagoras ★★ ()
Ответ на: комментарий от anonymous

Можно пример? А то одни предположения. Всё же далеко не дураки Coreutils пишут, и не допустят поломки legacy-кода.

das_tier ★★★ ()

ls теперь экранирует имена файлов, что подходит для использования их в командной оболочке и при выводе в терминал.

Они охренели так совместимость ломать? Половина самописных скриптов, где своя реализация экранирования, сломается тут же на месте.

Cheater ()
Ответ на: комментарий от Begemoth

Этот «костыль» был в UNIX ещё до того, как ты на свет появился, стыдоба.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.