- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
#!/bin/bash
MYDIR="/home/"
DIRS=`ls -l $MYDIR | egrep '^d' | awk '{print $9}'`
for DIR in $DIRS
do
echo ${DIR}
chown -R $DIR:$DIR $MYDIR/$DIR
done
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−119
#!/bin/bash
MYDIR="/home/"
DIRS=`ls -l $MYDIR | egrep '^d' | awk '{print $9}'`
for DIR in $DIRS
do
echo ${DIR}
chown -R $DIR:$DIR $MYDIR/$DIR
done
Vindicar 12.08.2013 19:28 # 0
bormand 12.08.2013 20:55 # 0
Как одноразовый скрипт для решения подобной проблемы, написанный второпях за пару минут, имхо, не говно.
Dummy00001 12.08.2013 21:03 # +2
find /home/ -type d -maxdepth 1
да или даже:
for DIR in /home/*/
очевидно что писал не админ, а программист - потому что перенапрограммировал много лишнего.
bormand 12.08.2013 21:10 # 0
Dummy00001 12.08.2013 21:21 # +1
на спех я бы делал нечто типа и по шагам:
1. find /home/ -type d -maxdepth 1 (или ls -1d /home/*/)
2. find /home/ -type d -maxdepth 1 | sed 's!^/home/!!'
3. find /home/ -type d -maxdepth 1 | sed 's!^/home/!!' | sed 's!.*!chown -R &:& /home/&!'
4. find /home/ -type d -maxdepth 1 | sed 's!^/home/!!' | sed 's!.*!chown -R &:& /home/&!' | sh -x
на 3ем шаге видны комманды которые выполнятся будут. 4й шаг финальный и не обратимый :)
ЗЫ да, я серьезно подсел на кодо-генерацию с последующим пайпингом в шелл.
bormand 12.08.2013 21:25 # 0
Ну да, для отладки удобно, видно какие команды будут исполняться.
> {} и ;
Ну не знаю, уже как-то привык их юзать: Хотя да, если бы тут надо было что-то помимо тупой подстановки - уже не прокатит.
P.S. Уже не прокатило. Тут же полные пути передаются, а не имена директорий ;)
bormand 12.08.2013 21:36 # +1
P.S. Кстати, maxdepth и mindepth надо писать до -type d, иначе кидает ворнинг, хотя и работает ;(
govnomonad 13.08.2013 03:57 # 0
а я стал пользоваться, т.к. у меня встречались пробелы
можно было переопределить разделитель в баше на $'\n', но для меня было проще осилить -exec
deep 12.08.2013 21:12 # 0
Чот мне кажется что так работать не будет, во всяком случае не везде.
А вот первый вариант ближе к правде - у find'а есть -exec из которого можно дернуть chmod
Dummy00001 12.08.2013 21:22 # +1
myaut 12.08.2013 22:40 # 0
:E
wvxvw 13.08.2013 14:19 # 0
C-x d ~ RET t O <имя пользователя> RET
wvxvw 13.08.2013 14:22 # 0
C-x d ~ M-BACKSPACE t C-u O -R <имя пользователя>
bormand 13.08.2013 18:27 # +2
wvxvw 13.08.2013 18:37 # 0
Чем же плохо? 12 нажатий клавиш, половина из которых нажимается одновременно, чем 23 нажатия клавиш в "chown -R user:user user"?
bormand 13.08.2013 18:59 # 0
Т.е. одна эта команда поправит владельца всех юзеров? Или только одного, имя которого в ней указано? ;)
> половина из которых нажимается одновременно
Тем и плохо. Тексты я набираю довольно быстро (200-400 cpm). Да и запоминаются они легко. А эти комбы от емакса по сложности запоминания сходны с приемами из файтингов. Их можно только задрочить, юзая изо дня в день. Причем всяко, если их долго не юзать, они забудутся.
bormand 13.08.2013 19:03 # 0
А если мне кинули C-x d ~ M-BACKSPACE t C-u O -R <имя пользователя>, то что я должен делать? Смотреть описание каждого хоткея? Так они же еще и многоуровневые... В емаксе можно куданить вбить комбу и сразу посмотреть ее описание?
bormand 13.08.2013 19:08 # 0
P.P.S. Я ничего не имею против хоткеев, которые используются повседневно - копирование\вставка\сохранение\компиляци я и т.п. Я только против навешивания всего подряд на них.
wvxvw 13.08.2013 19:44 # 0
Зависит от привычки / как кому удобнее. Т.как я бы скорее всего делал макросом, то сделал бы так, кому-то может было бы удобнее сделать это отдельной функцией / записью в регистры и т.п.
> то что я должен делать? Смотреть описание каждого хоткея?
Для человека, который пользуется Эмаксом в повседневной жизни эти хоткеи - как для других, наверное, Ctrl X / Ctrl V... Мне не нужно было бы смотреть их описания. Но если я не знаю описаний - всегда есть C-h k или C-h b. Просто человек, который пользуется Эмаксом, как правило, помнит в несколько десятков раз больше хоткеев, чем пользователи других текстовых редакторов (ну, кроме Vi(m)).
Это оправывается скоростью, так что никто не жалуется :) Это соотностистя как техника скорочтения и обычное чтение с работой с чем-нибудь типа Эклипса / МСВС.
wvxvw 13.08.2013 19:52 # 0
А даже с точки зрения записи - она абсолютно однозначная, с минимумом избыточности (единственное, что приходит в голову, это S-x эквивалентно X.) Но эта избыточность очевидна человеку которых хоть раз пользовался клваиатурой :) Тут нету каких-то разночтений в том, в каком порядке нажимать клавиши, или какие именно клавиши имеются в виду.
wvxvw 14.08.2013 03:12 # 0
Чтобы было понятнее сколько времени это занимает.
wvxvw 13.08.2013 18:42 # 0
C-x d ~ M-BACKSPACE RET t ! chown *:* RET
Dummy00001 13.08.2013 23:16 # 0
так вот чем емаксные шорткаты объясняются!?!