Я использую обоих регулярно. Я представление Emacs как "живой в" редакторе, тогда как я использую Vim для быстрых, одноразовых задач. Поверхностно, Emacs намного более чрезмерно увеличен в размере, чем Vim, и таким образом, действительно не вполне столь же удобно "Разжечь" как Vim, но я также нахожу что основные положения пользовательского интерфейса от одного до другой поддержки эта парадигма. Emacs намного более создается для держания Вас внутри, делая вещи хорошими и удобными, таким образом, Вы не должны уезжать, тогда как энергия является намного большим количеством "Unixy" и рассматривает себя как часть большего пояса инструмента.
Многие люди бегут из Emacs из-за его сильной зависимости от маркерных битов, но это - довольно глупая причина для меня. Действительная мощность, которую Emacs имеет по Vim, является настраиваемостью, и с питанием Гадюки и т.д., это действительно не проблема. Конечно, Сценарий Vim обеспечивает свой собственный уровень настройки, и если бы, скажем, Вашему любимому языку программирования не предоставили соответствующий маркер синтаксиса, то Вы могли бы, конечно, приготовить тот, но Emacs является в конечном счете LISP-компьютером самохостинга, и в конце можно сделать много, намного больше игры с ним. Просто нет таких инструментов как гну или org-режим в Vim, для именования некоторых. Короче говоря Emacs не является просто редактором, это - практически проклятая операционная система бога.
Для управления текстом я сказал бы, что они точно на одном уровне.
stat
от GNU coreutils может сделать это:
stat -c '%U' /path/of/file/or/directory
К сожалению, существует много версий stat
, и нет большой непротиворечивости в их синтаксисе. Например, на FreeBSD, это было бы
stat -f '%Su' /path/of/file/or/directory
Если мобильность является беспокойством, Вы - вероятно, более обеспеченное предложение Gilles использования объединения ls
и awk
. Это должно запустить два процесса вместо одного, но это имеет преимущество использования только стандартной POSIX функциональности:
ls -ld /path/of/file/or/directory | awk '{print $3}'
Парсинг вывода ls
редко хорошая идея, но получение первых нескольких полей является исключением, оно на самом деле работает над всеми “традиционными” нельдами (оно не работает над платформами, такими как некоторые реализации Windows, которые позволяют пробелы в именах пользователей).
ls -ld /path/to/directory | awk 'NR==1 {print $3}'
Другая опция состоит в том, чтобы использовать a stat
команда, но проблема с stat
от оболочки то, что существует несколько команд с другим синтаксисом, таким образом, stat
в сценарии оболочки является непортативным (даже через установки Linux).
Обратите внимание, что тестирование, является ли данный пользователь владельцем, является другим суждением.
if [ -n "$(find . -user "$username" -print -prune -o -prune)" ]; then
echo "The current directory is owned by $username."
fi
if [ -n "$(find . -user "$(id -u)" -print -prune -o -prune)" ]; then
echo "The current directory is owned by the current user."
fi
ls | awk
приблизьтесь, слишком к сожалению, как я отметил здесь. Я еще не предложил решение для, "конечный файл / dir является символьной ссылкой с другим именем", выходят, я упомянул в своем недавнем комментарии. спасибо
– beporter
15.07.2014, 20:16
find . -user "$username" -print -prune -o -prune
Вы могли просто сделать find . -maxdepth 0 -user "$username"
– Niklas Holm
09.12.2016, 14:18
Можно также сделать, это с GNU находит:
find $directoryname -maxdepth 0 -printf '%u\n'
Это не портативно за пределами системы GNU, но я был бы удивлен найти дистрибутив Linux, где она не работает.
find
не имеет -printf
.
– Gilles 'SO- stop being evil'
21.02.2011, 02:22
В чистом bash вы можете преобразовать вывод ls
в массив и проиндексировать его.
# (lrwxr-xr-x, 1, myuser, staff, 36, Oct, 21, 16:36, /path/to/file)
file_meta=($(ls -ld /path/to/file))
file_owner="${file_meta[2]}" # myuser
Это не так элегантно, как использование stat
, find
или awk
, но может сработать в крайнем случае.
stat
(по всему сайту стандарт) в/usr/local/bin
или где-нибудь в доме пользователя), и редко доступно на других нельдах. – Gilles 'SO- stop being evil' 21.02.2011, 01:18stat -c %U
имеет преимущество также работы с BusyBox, еслиstat
команда компилируется в. – Gilles 'SO- stop being evil' 21.02.2011, 02:23stat -c '%U' DIR
распечатаетUNKNOWN
, который является менее полезным или более соответствующим, в зависимости от того, как Вы смотрите на него. – basic6 14.05.2014, 11:59