Можно сказать, являетесь ли Вы в использовании оболочки входа в систему shopt
:
dennis@lightning:~$ shopt login_shell
login_shell off
Что касается преимуществ: войдите в систему оболочки обычно делают немного больше инициализации (такой как установка переменных среды и cd'ing в $HOME), которые не необходимы для других оболочек. С другой стороны, по умолчанию любая оболочка, запущенная от gui, не является оболочкой входа в систему, таким образом, большинство людей настраивает свою оболочку initscripts (~/.bashrc
и т.д.), чтобы сделать всю инициализацию и для оболочек входа в систему и для невхода в систему.
Командная строка find сделана из разных видов опций, которые объединены в выражения.
Опция find
-delete
является действием.
Это значит, что он выполняется для каждого файла, который пока что совпадает.
Как первый вариант после путей, все файлы совпадают... ой!
Это опасно - но на man-странице, по крайней мере, есть большое предупреждение :
Из man find
:
ACTIONS
-delete
Delete files; true if removal succeeded. If the removal failed, an
error message is issued. If -delete fails, find's exit status will
be nonzero (when it eventually exits). Use of -delete automatically
turns on the -depth option.
Warnings: Don't forget that the find command line is evaluated as an
expression, so putting -delete first will make find try to delete
everything below the starting points you specified. When testing a
find command line that you later intend to use with -delete, you
should explicitly specify -depth in order to avoid later surprises.
Because -delete implies -depth, you cannot usefully use -prune and
-delete together.
From further up in man find
:
EXPRESSIONS
The expression is made up of options (which affect overall operation rather
than the processing of a specific file, and always return true), tests
(which return a true or false value), and actions (which have side effects
and return a true or false value), all separated by operators. -and is
assumed where the operator is omitted.
If the expression contains no actions other than -prune, -print is per‐
formed on all files for which the expression is true.
On trying out what a find
command will do:
Чтобы посмотреть, что удалит такая команда, как
find . -name '*ar' -delete
, можно сначала заменить действие -удалить
на более безобидное действие - например, -fls
или -печать
:
find . -name '*ar' -print
Это напечатает, на какие файлы повлияет данное действие.
В данном примере -print можно пропустить. В этом случае никакого действия не происходит, поэтому самое очевидное добавляется неявно: -print
. (См. второй абзац раздела "ВЫРАЖЕНИЯ", цитируемого выше)
В найти
аргументы порядок вещей, много.
Аргументами могут быть опции, тесты и действия. Обычно сначала нужно использовать опции, затем тесты, затем действия.
Иногда find
даже предупреждает о возможном неправильном порядке (например, когда после других аргументов используется -maxdepth
), а в других кажется, что это не так.
Что find . -удаляет - имя '*ar'
делает так:
Вероятно, вы захотите:
find -name '*ar' -delete
Для каждого файла посмотрите, совпадает ли он с '*ar'
, и только если он удовлетворяет условию, он удалит файл.
Извините, если вы узнали слишком поздно.