LINUX.ORG.RU
ФорумTalks

The UNIX Haters Handbook

 ,


0

1
gregon@walle:~/rm test$ ls
dir1  -r  test1  test2
gregon@walle:~/rm test$ rm *
gregon@walle:~/rm test$ ls
-r
gregon@walle:~/rm test$

Вывод: книга рекомендована к прочтению. Поможет меньше наступать на грабли, стремительно прилетающие из-за горизонта.


Ответ на: комментарий от quiet_readonly

Администратор Windows Server 2008? Какая честь.

Gregon
() автор топика
Ответ на: комментарий от stevejobs

Мыло? Бегло пробежал ман глазами, @ не увидел. Зато там есть про то, как удалять файлы названные -file.

Gregon
() автор топика
Ответ на: комментарий от quiet_readonly

хуже пользователей XBOX

У вас серьезное искажение в восприятии окружающего мира!

trex6 ★★★★★
()

А в powershell такой проблемы нет, объекты типа «файл» ну никак не могут считаться опциями и экранировать ничего не надо.

x3al ★★★★★
()
➜  new  l
итого 0
-rw-r--r-- 1 egik users 0 апр  5 02:37 -r
-rw-r--r-- 1 egik users 0 апр  5 02:37 dir
-rw-r--r-- 1 egik users 0 апр  5 02:37 file1
-rw-r--r-- 1 egik users 0 апр  5 02:37 file2
➜  new  rm -- *
zsh: sure you want to delete all the files in /home/egik/new [yn]? y
➜  new  l
итого 0
➜  new 

умвр, и нет тут ни каких граблей.

dhampire ★★★
()

Баш та еще гадость, конечно.

mono ★★★★★
()

Проблемы реализации конкретного шелла, при условии наличия выбора, это конечно же повод люто высирать кирпичи и утверждать что UNIX - говно, да-да-да...

facepalm.mkv.tar.gz (10 GiB)

Pinkbyte ★★★★★
()
Ответ на: комментарий от unsigned

Правильный пример с zsh уже привели, нет? Кстати в баше тоже работает при правильном вызове.

Pinkbyte ★★★★★
()

Для тех, кто сейчас начнет возражать на тему того, что rm должен всё разрулить сам. '-' - это служебный символ для опций, поэтому такое поведение оправданно. Ибо нефиг

Pinkbyte ★★★★★
()

А еще можно х*й дверью прищемить.
Проверил - в busybox та же фигня.

devl547 ★★★★★
()
Ответ на: комментарий от Pinkbyte

Это не зависит от шелла, это зависит от формы вызова. И правильный вариант ни фига не очевиден, так что ТС прав (ты, кстати, приписал ему то, чего он не говорил).

unsigned ★★★★
()
[kp@localhost test]$ mkdir ./-f
[kp@localhost test]$ :>-r
[kp@localhost test]$ ls
-f  -r
[kp@localhost test]$ rm -rf -- ./*
[kp@localhost test]$ ls
[kp@localhost test]$ 

Ненависть не обоснована.

kp
()
Ответ на: комментарий от kp
[kp@localhost test]$ mkdir ./-f
[kp@localhost test]$ :>-r
[kp@localhost test]$ ls
-f  -r
[kp@localhost test]$ rm -rf ./*
[kp@localhost test]$ ls
[kp@localhost test]$ 

Совершенно не обоснована.

kp
()

а если ты начнёшь переходить дорогу на красный свет и тебя собьёт машина - виноват конечно же будет водитель?

jcd ★★★★★
()
Ответ на: комментарий от Pinkbyte

Ты хочешь сказать, что перед каждым глоббингом нужно ставить --? Проблема в глоббинге шеллом и невменяемых правилах ескейпинга, которые слишком долго соблюдать на практике.

x3al ★★★★★
()
Ответ на: комментарий от x3al

Достаточно просто не забывать о мелочах.

[kp@localhost test]$ :>a
[kp@localhost test]$ :>b
[kp@localhost test]$ :>-r
[kp@localhost test]$ ls
a  b  -r
[kp@localhost test]$ rm ./*
[kp@localhost test]$ ls
[kp@localhost test]$ 

kp
()
Ответ на: комментарий от Pinkbyte

Шелл всё правильно делает — он передаёт имена файлов как аргументы, не более.
Просто или не стоит называть файлы подобно «-foo», или нужно использовать ./* вместо *.

quantum-troll ★★★★★
()
Ответ на: комментарий от Pinkbyte

Вариант с глоббингом куда менее очевиден. Ты всегда знал об этих граблях? =)

надо читать маны

Никто и не спорит. Речь о том, что сабжевая книга - неплохое дополнение к манам (хотя бы некоторые главы).

unsigned ★★★★
()
Ответ на: комментарий от unsigned

Речь о том, что сабжевая книга - неплохое дополнение к манам (хотя бы некоторые главы)

Так я ж не спорю. Просто сюда это было вброшено в стиле «посмотрите какое говно» :-)

Pinkbyte ★★★★★
()

Да ладно вам. Нечего браться за шелл не зная, что приглашение (командная строка) представляет из себя командный интерпретатор.

Если пользователь хочет чувствовать себя хакиром - будь добр ознакомиться хотя бы с его основами: перенаправлением вывода, спец символами и их экранированием, и конкретно в данном случае передачей параметров после "--".

Чистой воды вброс.

Для всех остальных (или нормальных) пользователей существуют файловые менеджеры вместо coreutils.

Spoofing ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.