Se llama comando compuesto y la sintaxis es
{ compound-list; }
(este es un ejemplo de un comando compuesto, otras cosas como for
bucles, etc. también son comandos compuestos)
Por ejemplo:
{
echo 'hello'
echo 'world'
}
El ;
solo es necesario si no hay una nueva línea antes del final}
:
{ echo 'hello'; echo 'world'; }
Los comandos en la construcción {...; }
se ejecutan en el entorno actual , al igual que para una función.
Más información sobre esto está disponible en la descripción del estándar POSIX de comandos compuestos .
No hay razón (o posibilidad )de nombrar estas secciones ya que nombrar una sección así es más o menos equivalente a crear una función de shell de todos modos. Además, nombrar un comando compuesto solo sería necesario si se va a consultar más adelante, que es para lo que se usan las funciones.
Obviamente se pueden utilizar comentarios:
# my hello world thing
{
echo 'hello'; echo 'world'
}
De manera similar, se puede tener una subcapa con
(
echo 'hello'
echo 'world'
)
Esto se ejecuta en un entorno secundario del shell actual, y los cambios en las variables, etc. no se reflejarán en el shell actual.
La sintaxis general es
( compound-list )
Aquí, no hay necesidad de un final ;
antes de )
.
Como curiosidad, las funciones de shell pueden usar (...)
en lugar de {...;}
para ejecutar su código en un entorno local:
helloworld () (
echo 'hello'
echo 'world'
)
Esto puede ser útil para saber si se está escribiendo una función en un lenguaje sh
que no admite variables locales(local
o typeset
enbash
)y que no necesita modificar el entorno del script.
Файлы, начинающиеся с точки (dotfiles), предназначены для использования приложением, и обычно они определяют конфигурацию приложения; они не предназначены для использования конечным пользователем, которому даже не нужно знать о них.
Таким образом, цель dotfiles на самом деле не в том, чтобы «навести порядок» и уж тем более не в том, чтобы «не допустить, чтобы новые пользователи все испортили» (для этого и нужны разрешения; обратите внимание, что dotfiles можно легко увидеть через ls -a
), а просто для организации файлов и сокращения беспорядка путем отделения системных файлов (точечные файлы) от данных, созданных пользователем.
Причина, по которой не существует другой системы для сокрытия файлов, заключается в том, что она считалась избыточной, поскольку точечные файлы уже доказали свое назначение. Обратите внимание, что в Linux, в отличие от MS Windows, нет «скрытого» атрибута для файлов, хотя есть много других (наберите man chattr
, чтобы их увидеть).
Если вы хотите запретить пользователям доступ к файлам, а не просто скрывать от них файлы, есть и другие механизмы: разрешения (chmod), ACL, вплоть до контроля доступа SELinux.
Настоящее решение убрать файл с пути — это поместить его в другой каталог.
Файлы, имена которых начинаются с точки, по умолчанию скрыты в некоторых программах в соответствии с древней традицией Unix. Он начался с команды ls
и был имитирован многими, но не всеми файловыми менеджерами.
Предлагается скрывать файлы, имена которых перечислены в файле с именем .hidden
, который создан в Gnome. Он не имеет очень широкой поддержки. Вы можете попробовать использовать его, но не ожидайте, что все программное обеспечение, которое используют ваши пользователи, скроет их. Если пользователи видят файлы в одном программном обеспечении, но не видят его в другом, это может привести к обратным результатам: они могут удалить файлы, которые видят в программе А, но не в программе Б, думая, что если программа Б не показывает файлы, значит, что-то не так. неправильно с ними, и они, вероятно, не должны быть там. По этой причине, хотя я сообщаю вам, что эта функция существует, я рекомендую не использовать ее.
Еще раз, если вы не хотите, чтобы пользователи испортили некоторые файлы, поместите их в другой каталог. И, если применимо, не давайте им разрешения возиться с этими файлами.