Pull to refresh

Нетипичный «ls» — Habr Edition

Abnormal programming*nixShells
image

Всем привет!

После вчерашнего поста о замене штатного ls другими штатными (или не очень) утилитами, я просто не мог пройти мимо комментов, особенно учитывая то что пост взлетел на вершины хит-парадов и за сутки его прочитало 18k, с хвостиком человек. Хабровчане подарили миру много новых способов избавиться от ls. Я их все (но это не точно) проверил, некоторые «причесал», что бы они соответствовали условиям задачи, и хочу поделиться с вами. Наслаждайтесь!

1. dir


Да, чОрт возьми. У меня она совершенно вылетела из головы. И хотя она совсем другая чем в DOS, Windows и даже в OS/2, свои функции выполняет исправно!
Про неё мне напомнили eumorozov и cru5ader

dir -aA ~

2. printf


Каюсь. zsh меня испортил и я считал, что print это такая утилита — лайт версия echo, а оказалось что это просто потроха самого zsh. Зато iig показал мастер-класс использования printf

printf "%s\n" ~/* ~/.*

3. echo


Да, это снова он… работающий через автоматический autocompletion. За такое благодарим SlavniyTeo

echo -e 'echo \t\ty\b\b\b\b\b\b\b' | bash -i
echo -e 'echo \t\ty\b\b\b\b\b\b\b' | sh -i

А вот пользователям zsh не повезло, хотя может быть если настроить?

3. vim


cru5ader напомнил, что в vim есть собственный файловый браузер, а так как vim есть везде (ну почти. На манджаро стоит обычный vi и с ним такой фокус не пройдёт) то почему бы этим не воспользоваться?

vim ~

4. rm


Да! Ваши глаза вас не обманывают. То что является основой знаменитого патча Бармина, которым пугают начинающих юниксоидов, мы будем использовать исключительно в мирных целях. Спасибо POPSuL

yes "n" | rm -i $HOME/* $HOME/.* 2>&1|grep -o "$HOME[^']*"

И Cheater

(echo y; yes n) | rm -ir ~ 2>&1 | sed -E -e "s/(rm:[^']+)|\?//g"

5. rsync


А собственно, почему-бы и не да? Благодарим за это 027

rsync --list-only ~/

6. grep


Грепом можно не только проверять e-mail на валидность, но и выгреПать файлы. kashtan404 и
KorDen32 показали что и это ему под силу (пофикшено на более правильный вариант).

grep -l '.*' ~/* ~/.* 2>/dev/null || grep -L '.*' ~/* ~/.* 2>/dev/null

7. file


Хотите понять что за файлы лежат в вашем хомяке? А может просто вывести их список? 027 и POPSuL доказали что и это ему под силу.

file ~/* ~/.*

8. stat


Статус файла или целой файловой системы? Не только! Способов нетрадиционного приготовления stat существует как минимум три. Одно даже от меня.

stat ~/* ~/.*|grep "/home"|awk '{print $2}'

Другое от polar_yogi

stat -c "%A %G:%U %s %x %n" * \.*

И третье от iig

stat *|awk '/File:/{print $2}'

9. head


Artyushov — голова! Показал как надо использовать head!

head -n 0 -v ~/* ~/.*|awk '{print $2}'

10. getfacl


Ключевая буква в названии этой утилиты — «f» и Zoro это доказал!

getfacl ~/* ~/.* | grep "# file" | awk '{print $3}'

11. git


Да, даже Git камрад tork заставил работать на хомяка!

git init ~/ ; curr=`pwd`; cd ~ ; git status; rm -rf .git; cd $curr ; curr=''

12. cat


Все любят котиков. Но самые крутые у пользователей BSD систем! К сожалению в линуксе котики не той породы. :-( Uzix похвастался своим cat-ом.

cat ~ |strings |xargs -IX sh -c 'test -e X && echo X'

13. lsattr


lsattr это не только ценный мех смотрелка аттрибутов файлов, но и смотрелка списка самих файлов. Neveil показал как это сделать.

lsattr ~/* ~/.* 2>&1 | grep -Po '/.*'

Эпилог


На чёртовой дюжине я пожалуй остановлюсь, но интересующиеся могут заглянуть в комменты оригинального поста и насладиться, так как «за бортом» остались однострочники на perl, ruby, python, php и даже С++.
Tags:grepsedawklsbashzsh
Hubs: Abnormal programming *nix Shells
Total votes 46: ↑39 and ↓7 +32
Views14.1K

Comments 53

Only those users with full accounts are able to leave comments. Log in, please.

Popular right now