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

в 7:55, , рубрики: awk, bash, grep, ls, sed, zsh, ненормальное программирование, Оболочки

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

1. dir

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

dir -aA ~

2. printf

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

printf "%sn" ~/* ~/.*

3. echo

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

echo -e 'echo ttybbbbbbb' | bash -i
echo -e 'echo ttybbbbbbb' | 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 '.*' ~/* ~/.* | 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 и даже С++.

Автор: Вадим Прилуцкий

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js