Pull to refresh

Comments 44

Сорри, при первой попытке опубликовать, забыл выбрать тип публикации, что это «перевод», а не «топик».
VBart, еще раз огромное спасибо за перевод! Надеюсь вашего энтузиазма хватит как минимум на перевод всех 4х статей.
Куда я денусь, раз публика так жаждет. =)
А переводы: Bash by Example, Awk by Example, Sed by Example и прочей доки с funtoo.org будут?
Будут. А на счет прочих, не уверен. Не думаю, что многим интересен Funtoo Filesystem Guide
Вот уж чего, а документации по sed,awk и bash итак вроде не мало :)
документации хватает, но вся она разрознена и большинство статей, которые мне попадались были либо слишком «сухими», либо походили на «how to» по какой-либо команде. Здесь же информация достаточно понятно излагается и хорошо структурирована. А автору перевода спасибо не за «еще один перевод документации по linux», а за перевод действительно качественного туториала, качественным образом и за большую работу. Согласитесь, человеку есть что делать, помимо перевода документации.
Не могу точно сказать. Эту часть собирался доделать еще вчера, но не успел. Мучаюсь тут от жары в Москве, а еще и работу надо работать. Скорее всего будет в понедельник.
Спасибо! Жду продолжения!
Очень интересно и понятно, я сразу всё в консоли проверяю!
UFO just landed and posted this here
Изыди отсюда, не заливай жиром экран. =)
Самый скучный и некчемный троль, из здесь обитающих.
Ну с инодами очень перемудрено… )) Я думаю, что большинство нихрена не поймет из описания. Если говорить об инодах, то нужно рассматривать их вместе с хардлинками и симлинками, понятиями файла и директории, вероятно тогда будет чуть более понятно о чем речь. А еще иноды вроде переводятся как «индексные узлы» :)
Про хард и сим линки как раз в следующем отрывке будет. inode — настолько устоявшийся термин, что уже даже почти никто не помнит, что значит i вначале.
lkml.indiana.edu/hypermail/linux/kernel/0207.2/1182.html
Вот кстати да, что на один и тот же инод ссылается 8 разных — понял, а почему, зачем…
Я думаю вам бы не понравилось, если бы вместо этого у вас данные хранились в 8 экземплярах. =)
Не, ну я подсознательно понимаю, что это скорее просто команда типа «один уровень вверх», но, как говорится, «хотелось бы уточнить». (:
Подсознательно надо понимать, что пути в файловой системе — суть второстепенная, это лишь ссылки на иноды с соответствующими номерами. И не один из этих 8 путей не является «главным», все равноправны. Задача ядра просмотрев список ссылок, найти искомую и получить из нее номер инода, а дальше уже вся работа происходит с инодом, без привязки на путь (сама ссылка уже может быть даже удалена или изменена).
спасибо, пока вродь это всё знаю, интересно дальше :)
Про перенаправление потоков дальше будет? А то тут вскользь упомянулось, да и в одном варианте и направлении. Думаю, новичкам тоже будет полезно.
Да, будет. Про это рассказано ближе к концу второй части. А я еще только половину первой перевел.
Интересно, нет ли готовых или очень простых решений, чтобы в выводе ls -l размеры были указаны в байтах с разделителем (каждые три цифры)? Очень неудобно смотреть в (human readable) режиме -h, а именно одним взглядом определить файлы отличающиеся на несколько порядков (кб/мб/гб), одной буквы для этого мало.
На скорую руку:
[vbart@desktop Backups]$ ls -l | awk '{ printf "%'"'"'15d %s\n", $5, $9}'
              0 
          4,096 250Gb
     14,501,677 db_full_20100428-2229.sql
      2,980,776 db_full_20100428-2229.sql.bz2
     14,846,677 db_full.sql
      3,081,879 db_full.sql.bz2
          4,096 from160Gb
         37,617 gsm.data.dump.sql
          4,096 gsm_oldsite
          4,096 mother
          4,096 oldFrom500Gb
[vbart@desktop Backups]$
Сложновато я кавычку экранировал. Можно чуть проще:
ls -l | awk '{printf "%'\''15d %s\n", $5, $9}'
собственно что то похожее я и думал (и делал но так как усилий тратилось мало, до рабочего результата не дошло) только если пойти чуть дальше — например выделять. и… (а то у вас файл с 0 размером без имени появился в выводе) то лучше уж свою утилиту написать или еще более правильно — добавить функционал в coreutils. Я надеялся на волшебную опцию ;)

p.s. gentoo — не работает %'15d в printf и не ругается (точнее вывод без разделителя групп но выравнивает до 15 символов), в man 3 printf
' For decimal conversion (i, d, u, f, F, g, G) the output is to be grouped with thousands' grouping characters if the locale
information indicates any. Note that many versions of gcc(1) cannot parse this option and will issue a warning. SUSv2
does not include %'F.
Ну я тоже сперва хотел посоветовать написать скрипт-обертку или чуть подправить ls в coreutils, но вы поставили условие «готовых или очень простых». =) Если бы волшебная опция была, вы бы ее скорее всего уже вычитали в мане.
Есть еще такое замечание:
'
A single quote or apostrophe character is a POSIX extension to ISO C. It indicates that the integer part of a floating point value, or the entire part of an integer decimal value, should have a thousands-separator character in it. This only works in locales that support such characters.

Отсюда: www.gnu.org/manual/gawk/html_node/Format-Modifiers.html

У вас локаль какая стоит? В арче на десктопе и генту на ноуте — выводит с разделителем. В генту на сервере — без, как у вас видимо. =)
Собственно в мане тоже про это указано, но можно и не обратить внимания: if the locale
information indicates any
ls -l | LC_ALL=en_US.UTF-8 awk '{printf "%'\''15d %s\n", $5, $9}'

универсальный рабочий вариант =)
Честно говоря, я не очень понял с инодами.

$ ls -di /usr/local
134385 /usr/local

$ ls -di /usr/local/bin
260981 /usr/local/bin

У меня у этих директорий разные иноды. Однако на /usr/local ссылается 10 инодов:
drwxr-xr-x 10 root root 4096 2010-03-18 03:46 /usr/local

Но как посмотреть какие именно? Из статьи следуют, что вложенные каталоги, ссылаются на родительские… но судя по моему выводу команды ls это не так… чего-то вообще бред. Разъяснит кто? :)
Вы потеряли ".."
[vbart@desktop ~]$ ls -di /usr/local
654837 /usr/local
[vbart@desktop ~]$ ls -di /usr/local/bin/..
654837 /usr/local/bin/..
[vbart@desktop ~]$

Из статьи не следует, что вложенные каталоги ссылаются на родительские. А следует, что каталоги с именами ".." ссылаются на родительские для каталога в котором находятся, а каталоги с именами "." ссылаются на собственный родительский.

[vbart@desktop ~]$ ls -di /usr/local/.
654837 /usr/local/.
[vbart@desktop ~]$ ls -di /usr/local/bin/../.
654837 /usr/local/bin/../.
А… а отсюда, соответственно, следует, что количество ссылок = колличество вложенных каталогов. Огромное спасибо за разъяснение! Может быть стоит включить это в текст перевода, как примечание от автора? :)

Как-то не думал раньше, что… и. это отдельные каталоги. Думал, что это комманды системы.
количество ссылок = колличество вложенных каталогов

Нет. Правильно тогда уж было бы: «количество ссылок ≥ колличество вложенных каталогов + 2»

Почему +2
Помимо каталогов… внутри вложенных, на инод с директории также ссылается сама директория и директория "." внутри нее.

Создадим пустой каталог и проверим:
[vbart@desktop ~]$ mkdir test
[vbart@desktop ~]$ ls -di test
41038 test
[vbart@desktop ~]$ ls -dl test
drwxr-xr-x 2 vbart vbart 4096 Jul 17 00:28 test

В данном случае на инод с номером 41038 ведут две ссылки: test и test/.

Почему ≥
Потому, что помимо создаваемых автоматически, пользователи или программы могут создавать еще дополнительные ссылки. Об этом пойдет речь в следующем фрагменте перевода.
Хотя на счет "≥" я наверное все же не прав в отношении каталогов. В Linux есть ограничение, нельзя создать жесткую ссылку на каталог. А вот на файл можно.
Как-то не думал раньше, что… и. это отдельные каталоги.

Тут самое главное, собственно, надо понимать, что сам каталог один, и привязан он не к пути, а к иноду с номером таким-то, а все остальное, просто ссылки на него в файловой системе.
Добавил Funtoo.org в закладки, буду ждать переводов.
(а мог бы вопсользоваться ~ — прим. пер.):

Хорошие переводчики тоже очепятываются =)
Спасибо. Поправил. =)
Это у вас алиас прописан.
Sign up to leave a comment.

Articles