Это должно сделать то, о чем вы просите
unzip -: foo.zip
На странице руководства
-: [все, кроме Acorn, VM / CMS, MVS, Tandem] позволяет извлекать архив участников в места за пределами текущего '' извлечения корневая папка ». По соображениям безопасности при распаковке обычно удаляются компоненты пути '' parent dir '' ('' ../ '') из имен извлеченного файла . Эта функция безопасности (новая в версии 5.50) предотвращает случайную запись файлов при распаковке в "конфиденциальные" области за пределами заголовка дерева активной папки извлечения. Параметр -: позволяет unzip вернуться к прежнему, более либеральному поведению, чтобы разрешить точное извлечение (более старых) архивов, в которых использовались компоненты '' ../'' . для создания нескольких деревьев каталогов на уровне текущей папки извлечения. Эта опция не включает явную запись в корневой каталог ('' / ''). Чтобы добиться этого, необходимо установить для целевой папки извлечения значение root (например, -d /). Однако, когда указан параметр -:, все еще возможно неявная запись в корневой каталог, указав достаточное количество компонентов пути '' ../ '' в zip {{1} } архив. Используйте эту опцию с особой осторожностью.
Es un delimitador alternativo para el comando sed
sustituto (s
). Por lo general, se usa la barra inclinada, como en s/pattern/replacement/
, pero sed
permite usar casi cualquier carácter.
La razón principal para usar otro delimitador que no sea /
en la expresión de sustitución sed
es cuando la expresión actuará sobre caracteres literales /
.
Por ejemplo, para sustituir la ruta /some/path/here
por /other/path/now
, se puede hacer
s/\/some\/path\/here/\/other\/path\/now/
Esto sufre de lo que generalmente se conoce como "síndrome del palillo inclinado" , lo que significa que es difícil de leer y mantener adecuadamente.
En cambio,se nos permite usar otro delimitador de expresión:
s#/some/path/here#/other/path/now#
Usar ~
es solo otro ejemplo de un delimitador de expresión de sustitución válido.
Tu expresión
s~ ~~g
es lo mismo que
s/ //g
y eliminará todos los espacios de la entrada. En este caso, no es necesario usar otro delimitador que no sea /
ya que ni el patrón ni el reemplazo contienen /
.
Otra forma de hacer lo mismo es
tr -d ' ' <infile >outfile
Es un delimitador de sustitución. El delimitador más utilizado es una barra diagonal /
. Pero sed
puede usar cualquier carácter como delimitador -, automáticamente usará el carácter que sigue a s
como delimitador:
sed 's@ @@g'
sed 's+ ++g'
sed 's\ \\g'
sed 's* **g'
También es posible usar el espacio como delimitador:
echo "foo" | sed 's foo bar g'
Otros delimitadores que no sean /
se usan con mayor frecuencia cuando tiene muchas barras en su comando en la sintaxis que se vuelve confusa. Considere este caso en el que queremos convertir varios espacios en un solo carácter de espacio :en lugar de
echo " a b c " | sed 's/\s\{1,\}/ /g'
puedes ejecutar
echo " a b c " | sed 's~\s\{1,\}~ ~g'
que es más claro.