command-line interface is overrated
Aug. 8th, 2003 11:26 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
вот, потребовалось рекурсивно отсортировать файлы по времени создания. ну, я же знаю, что CLI is more powerful... минут пятнадцать убил, рассматривая и пробуя разные ключи ls. потом меня осенило, как это легко и просто делается в гуях.
(no subject)
Date: 2003-08-08 10:55 pm (UTC)Ответ на твою сложную задачу:
ls -t `find . -type f`
Эта команда выведет тебе список файлов в текущем каталоге и всех его подкаталогах, поместив самый свежий из них в начало списка. Дальше можешь поиграть ключами ls по вкусу. Не rocket science, да? :)
(no subject)
Date: 2003-08-09 12:07 pm (UTC)во-первых, твой "ответ" вообще не работает:
C:\>ls -t `find . -type f`
ls: invalid option -- y
Try `ls --help' for more information.
во-вторых, -t - это modification time, а мне надо - время создания.
в-третьих, это что - такая нетривиальная задача, что одной утилитой не сделать? я так полагаю, что следующим предложением будет на перле написать? :-)
(no subject)
Date: 2003-08-09 12:22 pm (UTC)Во-первых, мой ответ работает на:
gw: /samsung/home/evolver $ uname -a
FreeBSD evolvah.dyndns.org 4.7-STABLE FreeBSD 4.7-STABLE #1: Tue Dec 10 14:38:42 CST 2002 root@dallas.evolver.spb.ru:/usr/obj/usr/src/sys/EVOLVER-4 i386
gw: /samsung/home/evolver $ bash --version
bash --version
GNU bash, version 2.04.0(1)-release (i386--freebsd4.2)
Copyright 1999 Free Software Foundation, Inc.
Я не стал бы постить свой ответ, не проверив.
Во-вторых, если ты внимательно изучишь "man stat", то никакого "времени создания" система не хранит. Про винду тебе самому должно быть виднее.
В-третьих, "do one thing, do it well" и "KISS principle" являются основой идеологии юниксовых утилит. Ты ее еще не понял, отсюда и не способность подумать в направлении, позволяющем решить задачу.
Ничего удивительного, короче.
(no subject)
Date: 2003-08-09 12:57 pm (UTC)2. какое мне дело, как оно работает на каких-то юниксах? мне-то надо на виндах. а ты даже не догадался спросить, про какую ос идёт речь, несмотря на многочисленные хинты, заложенные в вопросе.
3. про винду мне, разумеется, виднее. время создания, разумеется, хранит.
4. как выяснилось, даже one thing сделать well не получается.
5. насчёт того, что я чего-то там не понял - это ваши мечты.
(no subject)
Date: 2003-08-09 01:00 pm (UTC)(no subject)
Date: 2003-08-09 01:34 pm (UTC)(no subject)
Date: 2003-08-09 05:41 pm (UTC)(no subject)
Date: 2003-08-09 09:59 pm (UTC)разумеется, нет. мне нужно отсортировать по времени создания, а не по времени модификации.
(no subject)
Date: 2003-08-09 10:13 pm (UTC)(no subject)
Date: 2003-08-09 10:24 pm (UTC)(no subject)
Date: 2003-08-09 01:04 pm (UTC):-)
(no subject)
Date: 2003-08-09 01:21 pm (UTC)(no subject)
Date: 2003-08-09 02:30 am (UTC)(no subject)
Date: 2003-08-09 11:58 am (UTC)(no subject)
Date: 2003-08-09 01:42 pm (UTC)(никогда не видела у файла дату создания. даже не знала, что оно существует)
(no subject)
Date: 2003-08-09 02:01 pm (UTC)(no subject)
Date: 2003-08-09 02:28 pm (UTC)(no subject)
Date: 2003-08-09 05:31 am (UTC)(no subject)
Date: 2003-08-09 12:12 pm (UTC)и потом, вот тут крутость learning curve успешно продемонстрировали :-)
(no subject)
Date: 2003-08-09 12:27 pm (UTC)[109_mode]
виндузятники меня обычно поражают своей незатейливостью. они пытаются обругать утилиту, не изучив man по ней.
[/109_mode]
(no subject)
Date: 2003-08-09 12:57 pm (UTC)(no subject)
Date: 2003-08-09 01:01 pm (UTC)(no subject)
Date: 2003-08-09 12:29 pm (UTC)вот в этом
$ bash -version
GNU bash, version 2.05b.0(1)-release (i686-pc-cygwin)
Copyright (C) 2002 Free Software Foundation, Inc.
все работает. И find нужен настоящий, например
$ find -version
GNU find version 4.1.7
Ну и читать man-ы
гуй всегда победит
Date: 2003-08-09 12:50 pm (UTC)кроме того, зачем мне учиться, как утилиты работают на юниксе, если я все свои задачи решаю под виндами? просто казалось, что в данном конкретном случае CLI подошёл бы лучше. ан хрен, всё равно гуй победил.
I STARTED AT ZERO
Date: 2003-08-09 12:56 pm (UTC)(оглядываясь) а остальные участники дискуссии вроде умеют и так ;-)
половину ключей arj помню
Это примерно также относится к умению пользоваться CLI, как запоминание всех функций из
(оглядываясь) а остальные участники дискуссии вроде умеют и так ;-)
<i>половину ключей arj помню</i>
Это примерно также относится к умению пользоваться CLI, как запоминание всех функций из <stdio.h> - к программированию
Re: I STARTED AT ZERO
Date: 2003-08-09 12:58 pm (UTC)Re: I STARTED AT ZERO
Date: 2003-08-09 01:37 pm (UTC)Re: I STARTED AT ZERO
Date: 2003-08-09 01:40 pm (UTC)Кстати, а все ключи rar ты не помнишь, случайно?
Re: I STARTED AT ZERO
Date: 2003-08-09 02:00 pm (UTC)где работает, на юниксе? мне не надо на юниксе, тем более, что там даже creation time нет (это правда, что ли?)
Re: I STARTED AT ZERO
Date: 2003-08-09 02:38 pm (UTC)$ touch a
msh@MSH ~
$ touch b
msh@MSH ~
$ ls -t `find . -type f`
./b ./a ./.bash_history
msh@MSH ~
$ uname
CYGWIN_NT-5.0
Re: I STARTED AT ZERO
Date: 2003-08-09 09:56 pm (UTC)Re: I STARTED AT ZERO
Date: 2003-08-10 02:43 am (UTC)Нет на Unix creation time, поэтому в каждом порте ls ошеломленные новыми небывалыми возможностями Windows программисты делали по разному
Например, у MKS Tools -t сортирует именно по creation time. А у Cygnus (и это даже сказано в ls --help) надо делать ls --time=ctime
Re: I STARTED AT ZERO
Date: 2003-08-10 08:29 am (UTC)-----
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuSUX nor --sort.
-a, --all do not hide entries starting with .
-A, --almost-all do not list implied . and ..
-b, --escape print octal escapes for nongraphic characters
-B, --ignore-backups do not list implied entries ending with ~
-c sort by change time; with -l: show ctime
-C list entries by columns
--color[=WHEN] control whether color is used to distinguish file
types. WHEN may be `never', `always', or `auto'
-d, --directory list directory entries instead of contents
-D, --dired generate output designed for Emacs' dired mode
-f do not sort, enable -aU, disable -lst
-F, --classify append a character for typing each entry
--format=WORD across -x, commas -m, horizontal -x, long -l,
single-column -1, verbose -l, vertical -C
--full-time list both full date and full time
-g (ignored)
-G, --no-group inhibit display of group information
-i, --inode print index number of each file
-I, --ignore=PATTERN do not list implied entries matching shell PATTERN
-k, --kilobytes use 1024 blocks, not 512 despite POSIXLY_CORRECT
-l use a long listing format
-L, --dereference list entries pointed to by symbolic links
-m fill width with a comma separated list of entries
-n, --numeric-uid-gid list numeric UIDs and GIDs instead of names
-N, --literal print raw entry names (don't treat e.g. control
characters specially)
-o use long listing format without group info
-p append a character for typing each entry
-q, --hide-control-chars print ? instead of non graphic characters
-Q, --quote-name enclose entry names in double quotes
-r, --reverse reverse order while sorting
-R, --recursive list subdirectories recursively
-s, --size print size of each file, in blocks
-S sort by file size
--sort=WORD ctime -c, extension -X, none -U, size -S,
status -c, time -t, atime -u, access -u, use -u
--time=WORD show time as WORD instead of modification time:
atime, access, use, ctime or status
-t sort by modification time; with -l: show mtime
-T, --tabsize=COLS assume tab stops at each COLS instead of 8
-u sort by last access time; with -l: show atime
-U do not sort; list entries in directory order
-w, --width=COLS assume screen width instead of current value
-x list entries by lines instead of by columns
-X sort alphabetically by entry extension
-1 list one file per line
--help display this help and exit
--version output version information and exit
By default, color is not used to distinguish types of files. That is
equivalent to using --color=none. Using the --color option without the
optional WHEN argument is equivalent to using --color=always. With
--color=auto, color codes are output only if standard output is connected
to a terminal (tty).
Report bugs to fileutils-bugs@gnu.ai.mit.edu
----
скажи мне теперь, как из этого хелпа извлечь результат. closest thing I came up with is
ls -lGRSc --time=c
но она сортирует внутри каждого фолдера отдельно и выводит group information, несмотря на -G. отдельным вопросом стоит, почему надо писать
-Sc --time=c, а --sort=с написать нельзя и как это следует из --help.
Re: I STARTED AT ZERO
Date: 2003-08-10 10:39 am (UTC)(терпеливо) Think out of the box. Задача решается в два, а не в одно действие. Но о такой возможности ты даже не подумал, раз 15 минут пытался решить ее с помощью одного только ls, который в одиночку этого сделать не может. Разве что в пределах одного каталога.
Хотя что-то мне подсказывает, что в гуе ты проделал тоже самое: рекурсивно построил список всех файлов, а потом его отсортировал. Это именно то, что делает предложенная мной строка. То, что ты не смог выразить это в терминах CLI - так это просто твое незнание, а не плохая функциональность CLI.
С другой стороны на имеющемся у тебя наборе костылей из UnixUtils и cmd.exe это не реализовать. Но кривость данного конкретного setup-а не является достаточным аргументом, чтобы делать выводы о нефункциональности CLI в общем случае. По этому поводу даже пословица про зеркало есть.
(no subject)
Date: 2003-08-11 06:54 am (UTC)2. то, что даже такой продвинутый пользователь, как я, не смог сделать это в CLI за 15 минут, а сделал в GUI за 10 секунд - говорит только о предельной маргинальности CLI. иными словами - CLI is dead.
3. и опять нет (с), это безусловно можно сделать с помощью UnixUtils. если бы этого нельзя было сделать, CLI бы сосало не просто, как оно делает сейчас, а неимоверно.
только я не настолько затронут данной темой, чтобы ещё тратить своё время сверх уже затраченного, чтобы найти очередную бессмысленную комбинацию буковок. тем более, что это не я тут пытаюсь доказать, что CLI не сосёт.
(no subject)
Date: 2003-08-13 12:53 pm (UTC)ps. слава богу, что я до этого не дошёл! я почему-то сразу решил, что dir не справится, и принялся ls изучать. а так я бы ещё больше времени убил. :-)
(no subject)
Date: 2003-08-13 12:52 pm (UTC)Всего лишь 4-буквенная комбинация из трех различных букв, между прочим.
Выводы:
1. Think out of the box
2. Be big enough to admit
(no subject)
Date: 2003-08-13 02:06 pm (UTC)да, вот ещё (чтобы сэкономить roundtrip) - любой, кроме самых упёртых, давно бы мог понять, что меня не интересует строчка, которая у тебя на компьютере работает - меня интересует строчка, которая у меня на компьютере будет работать.
если бы у нас в саппорте кто-нибудь клиенту сказал "меня не ебёт, у меня на машине всё работает" - его бы сразу уволили нахрен. а в остальном, конечно, я слил.
(no subject)
Date: 2003-08-13 02:08 pm (UTC)Ну и, до кучи, на вашем?
(no subject)
Date: 2003-08-13 02:14 pm (UTC)на моём - сделать в эксплорере search *.* начиная с требуемого места, сделать видимой колонку 'Creation Time' и жмакнуть по ней со всей силы мышкой.
(no subject)
Date: 2003-08-14 06:29 am (UTC)я как-то живу без resource kit и support tools. впрочем, я системным программированием не занимаюсь.