Комментарии 62
А у меня true --help и true --version не работают, хоть и в мане есть :(
Жаль, что «man true» не может ответить на все вопросы жизни
Жаль, что «man true» не может ответить на все вопросы жизни
man false:
false — do nothing, unsuccessfully
false — do nothing, unsuccessfully
0.1 Alpha version
0.2 Beta version
0.5 Added empty string
0.8 Added empty string
1.0 Final version with core v.1
1.1 Bug fix, added an empty string
Future:
2.0.Beta. Rewrite the core. Added two empty lines
0.2 Beta version
0.5 Added empty string
0.8 Added empty string
1.0 Final version with core v.1
1.1 Bug fix, added an empty string
Future:
2.0.Beta. Rewrite the core. Added two empty lines
А тем временем версия уже 8.16! Целых 7 мажорных обновлений было)
(Проверял на Arch Linux если что)
(Проверял на Arch Linux если что)
А я сижу залипаю и поверил вам, так же не подумав и полез искать обновления для неё.
Вдруг и правда ТАКАЯ дыра в системе.
Ну лан, зато всё остальное обновил)
Вдруг и правда ТАКАЯ дыра в системе.
Ну лан, зато всё остальное обновил)
Нет, чтобы назвать их «8.05» и «8.16».
А потом удивляемся школьникам младших классов на торрент-трекерах, доказывающих, что их рейтинг «0.11» уж всяко больше «0.9».
А потом удивляемся школьникам младших классов на торрент-трекерах, доказывающих, что их рейтинг «0.11» уж всяко больше «0.9».
# /bin/true --version
true (GNU coreutils) 8.16
Упакован Gentoo (8.16 (p1))
Copyright (C) 2012 Free Software Foundation, Inc.
Лицензия GPLv3+: GNU GPL версии 3 или новее <http://gnu.org/licenses/gpl.html>
Это свободное ПО: вы можете продавать и распространять его.
Нет НИКАКИХ ГАРАНТИЙ до степени, разрешённой законом.
Автор программы -- Jim Meyering.
Обновите Arch! Сейчас актуальна 8.17 =)
coreutils регулярно обновляются… Чтоб федоровцам жизнь мёдом не казалась ,)
На Ubuntu 12.04 у меня версия 8.13 =(
Дайте ссылку на репозиторий, я хоть из исходников скомпилю и поставлю :)
Дайте ссылку на репозиторий, я хоть из исходников скомпилю и поставлю :)
а вот история развития и эволюции GNUтой true вплоть до января 2012:
git.savannah.gnu.org/gitweb/?p=coreutils.git;a=history;f=src/true.c;h=b37ac543c983ae8e536c1478536af625bf2602f9;hb=v8.17
git.savannah.gnu.org/gitweb/?p=coreutils.git;a=history;f=src/true.c;h=b37ac543c983ae8e536c1478536af625bf2602f9;hb=v8.17
Получается, что когда кто-нибудь начинает писать новый скрипт, он просто меняет true AT&T?
Все, кто шутил по поводу копирайта на "
int i;
" в прошлых топиках — просто лузеры в сравнении с AT&T.> Возможно, они добавили эти опции, чтобы нельзя было сказать, что они просто украли код у AT&T
Наверно причина всё-таки в том, чтобы удовлетворить GNU-стилю опций для консольных команд (длинные опции начинаются с двух минусов, однобуквенные — с одной, обязательно наличие --help и --version).
Если же в этой фразе была шутка автора поста, то она тонка и зачетна. ;)
Наверно причина всё-таки в том, чтобы удовлетворить GNU-стилю опций для консольных команд (длинные опции начинаются с двух минусов, однобуквенные — с одной, обязательно наличие --help и --version).
Если же в этой фразе была шутка автора поста, то она тонка и зачетна. ;)
Также улыбнуло следующее при /bin/true --help
Report true bugs to bug-coreutils@gnu.org
где скачать последнюю версию для Windows?
4.7Gb весом, с таблэткой
Если надо именно скачать, и именно последнюю версию, то:
sourceware.org/pub/cygwin/release/coreutils/coreutils-8.10-1.tar.bz2
В архиве в папке /usr/bin
Она не заработает без установленного cygwin либо без cygwin1.dll, скопированного в её папку.
Она поддерживаться будет долго. Есть ещё один вариант.
sourceware.org/pub/cygwin/release/coreutils/coreutils-8.10-1.tar.bz2
В архиве в папке /usr/bin
Она не заработает без установленного cygwin либо без cygwin1.dll, скопированного в её папку.
Она поддерживаться будет долго. Есть ещё один вариант.
Есть ещё вариант, но он объявлен как deprecated в windows 8.
Скачать www.microsoft.com/en-us/download/details.aspx?id=2391
распаковать (это SFX-ZIP архив, открывается архиваторами), в BaseUtils/bin лежит искомый файл.
Скачать www.microsoft.com/en-us/download/details.aspx?id=2391
распаковать (это SFX-ZIP архив, открывается архиваторами), в BaseUtils/bin лежит искомый файл.
Думаю Вам подойдет такой вариант, самый свежий ;) Сохранить как true.bat
@echo off
rem Copyright (c) 1984 AT&T
rem All Rights Reserved
rem THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T
rem The copyright notice above does not evidence any
rem actual or intended publication of such source code.
rem ident "@(#)cmd/true.sh 50.1"
Это самое наглое нарушение копирайта AT&T — портировать их детище на Windows)))
В вашем варианте есть undefined behavior, что есть потенциальная уязвимость. Пропатчил:
@echo off
rem Copyright (c) 1984 AT&T
rem All Rights Reserved
rem THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T
rem The copyright notice above does not evidence any
rem actual or intended publication of such source code.
rem
rem Authors: DmZ@habrahabr.ru, amc@habrahabr.ru
rem Report bugs to: habrahabr.ru/post/144058/#comment_4832831
SET ERRORLEVEL=0
rem ident "@(#)cmd/true.sh 50.1"
С false ситуация ещё интересней. Как следует из названия, программа false всегда возвращает false и используется обычно для подавления успешного возврата и приостановки.
Так вот, если программу false удалить, попытка её вызова будет приводить всё к той же неудаче и остановке! Получается, у AT&T есть копирайт и на отсутствие программы как таковой?
make sandwich && false && rm -rf / # make научился делать сэндвичи, зачем удаляться?
Так вот, если программу false удалить, попытка её вызова будет приводить всё к той же неудаче и остановке! Получается, у AT&T есть копирайт и на отсутствие программы как таковой?
А может просто их билд-сервер помечает комментариями с копирайтом все скрипты?
/usr/bin/clear из Solaris:
Думаю за мной уже выехали.
#ident "@(#)clear.sh 1.8 96/10/14 SMI" /* SVr4.0 1.3 */
# Copyright (c) 1987, 1988 Microsoft Corporation
# All Rights Reserved
# This Module contains Proprietary Information of Microsoft
# Corporation and should be treated as Confidential.
# clear the screen with terminfo.
# if an argument is given, print the clear string for that tty type
/usr/bin/tput ${1:+-T$1} clear 2> /dev/null
exit
Думаю за мной уже выехали.
Выше дали ссылку на историю развития GNU true, и должен признать, что это весьма увлекательное чтиво:
Рождение
Развитие до полноценного приложения энтерпрайз-уровня (сообщайте о багах!)
Обрастание стандартной шапкой GPL и упоминание конкретного автора
Программа была недостаточно общей — теперь есть false версия
Включение в общий багрепортинг
Локализация подоспела
Security update (найдена уязвимость!)
Там ещё десятки коммитов, но в основном просто версия в тексте меняется.
Рождение
--- /dev/null
+++ b/src/true.c
@@ -0,0 +1,5 @@
+int
+main ()
+{
+ exit (0);
+}
Развитие до полноценного приложения энтерпрайз-уровня (сообщайте о багах!)
+#include <config.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include "system.h"
+#include "version-etc.h"
+
+#define PROGRAM_NAME "true"
+#define AUTHORS "no one"
...
+Usage: %s\n\
+ or: %s OPTION\n\
+Exit with a status code indicating success.\n\
+These option names may not be abbreviated.
+\n\
+ --help display this help and exit\n\
+ --version output version information and exit\n\
+")
+ , program_name, program_name);
+ puts (_("\nReport bugs to <bug-sh-utils@gnu.org>."));
+ exit (status);
+}
...
Обрастание стандартной шапкой GPL и упоминание конкретного автора
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
...
-#define AUTHORS "no one"
+#define AUTHORS "Jim Meyering"
Программа была недостаточно общей — теперь есть false версия
-#define PROGRAM_NAME "true"
+/* Act like "true" by default; false.c overrides this. */
+#ifndef EXIT_STATUS
+# define EXIT_STATUS EXIT_SUCCESS
+#endif
+
+#if EXIT_STATUS == EXIT_SUCCESS
+# define PROGRAM_NAME "true"
+#else
+# define PROGRAM_NAME "false"
+#endif
...
- exit (EXIT_SUCCESS);
+ exit (EXIT_STATUS);
Включение в общий багрепортинг
- printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ emit_bug_reporting_address ();
Локализация подоспела
- ? "Exit with a status code indicating success."
- : "Exit with a status code indicating failure."));
+ ? N_("Exit with a status code indicating success.")
+ : N_("Exit with a status code indicating failure.")));
Security update (найдена уязвимость!)
* src/true.c (main): There is no reason to examine argv[0],
call atexit, etc., in the usual case in which we're about to exit.
This has the side effect of making it so that these programs
no longer segfault when subjected to execve abuse.
Before this change, these commands would make "true" segfault:
printf '%s\n' '#include <unistd.h>' 'int main(int c, char**v)' \
'{ execve (v[1], 0, 0); }' > k.c && gcc k.c && ./a.out $PWD/true
Now it succeeds. Reported by Tetsuo Handa and Bart Van Assche
via Ondřej Vašík in http://bugzilla.redhat.com/537684.
--- a/src/true.c
+++ b/src/true.c
@@ -54,18 +54,18 @@
int
main (int argc, char **argv)
{
- initialize_main (&argc, &argv);
- set_program_name (argv[0]);
- setlocale (LC_ALL, "");
- bindtextdomain (PACKAGE, LOCALEDIR);
- textdomain (PACKAGE);
-
- atexit (close_stdout);
-
/* Recognize --help or --version only if it's the only command-line
argument. */
if (argc == 2)
{
+ initialize_main (&argc, &argv);
+ set_program_name (argv[0]);
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
Там ещё десятки коммитов, но в основном просто версия в тексте меняется.
Интересно, сколько ресурсов потребляет такая команда при запуске? Уж не подвесит ли систему?)))
Маразм крепчал :)
Не забывайте что Oracle закопирайтила Hello world на джаве docs.oracle.com/javase/tutorial/getStarted/application/examples/HelloWorldApp.java
Ради интереса посмотрел на своем маке:
Это бинарный файл, в котором встречаются следующие строки:
то есть тут тоже не обошлось без копирайта на столь полезную программу =)
mate /usr/bin/true
Это бинарный файл, в котором встречаются следующие строки:
Apple Inc.
Apple Certification Authority
Apple Code Signing Certification Authority
Apple Root
то есть тут тоже не обошлось без копирайта на столь полезную программу =)
это цифровая подпись.
Корни другие:
TRUE(1) BSD General Commands Manual TRUE(1)
NAME
true -- Return true value.
SYNOPSIS
true
DESCRIPTION
The true utility always returns with exit code zero.
SEE ALSO
csh(1), sh(1), false(1)
STANDARDS
The true utility conforms to IEEE Std 1003.2-1992 (``POSIX.2'').
BSD June 27, 1991 BSD
(END)
www.gnu.org/software/hello/ даже с документацией и рассылкой.
В андроиде true бинарный, по его размеру я бы не сказал, что это 6 строк кода
> Кто-нибудь в курсе, почему они игнорируют такое вопиющее нарушение?
Думаю, ждут, чтобы собрать побольше случаев использования и махом предъявить Вам счет на кр-у-у-гленькую сумму.
Будем надеяться, что в Вашем случае тоже попадется судья, умеющие программировать :)
Думаю, ждут, чтобы собрать побольше случаев использования и махом предъявить Вам счет на кр-у-у-гленькую сумму.
Будем надеяться, что в Вашем случае тоже попадется судья, умеющие программировать :)
true (GNU coreutils) 8.13
Copyright © 2011 Free Software Foundation, Inc.
Лицензия GPLv3+: GNU GPL версии 3 или новее <gnu.org/licenses/gpl.html>
Ubuntu 12.04 =)
Copyright © 2011 Free Software Foundation, Inc.
Лицензия GPLv3+: GNU GPL версии 3 или новее <gnu.org/licenses/gpl.html>
Ubuntu 12.04 =)
Автор на самом деле либо извращенно иронизирует и можно это расценивать как пятничный стёб либо он полный лох (я про автора, не переводчика).
1) --help и --version — это стандарт GNUшных утилит.
2) Компания Sun (и любая другая) не имела права менять копирайт в чужом коде. Изменение копирайта в заимствованном файле есть нарушение закона. А шебанг скорее всего появился по какой-то причине, например команда на солярке без него не запускалась.
3) История появления. Смотрим последнюю строку, которая имеет некий шаблонный вид (та, что с #indent начинается).
Теперь смотрим в сырцы java, например в файл com/sun/javadoc/Doc.java (у меня версия под рукой 1.6.29). Там видим такую строку * @(#)Doc.java 1.15 02/09/29
Похоже? И я знаю почему — это битый SCCS кейворд. Если вы посмотрите в другие сырцы, там будет написано %W% %E% — это нормальные SCCS кейворды, которые и должны раскрываться в имя файла, дату и версию итд. Но сейчас джава уже не живет под SCCS, поэтому мы видим нераскрытые макросы в большинстве исходников.
Вывод — пустой файл хранился под версионкой в SCCS и туда автоматом добавили кейворды как и во все остальные файлы.
1) --help и --version — это стандарт GNUшных утилит.
2) Компания Sun (и любая другая) не имела права менять копирайт в чужом коде. Изменение копирайта в заимствованном файле есть нарушение закона. А шебанг скорее всего появился по какой-то причине, например команда на солярке без него не запускалась.
3) История появления. Смотрим последнюю строку, которая имеет некий шаблонный вид (та, что с #indent начинается).
Теперь смотрим в сырцы java, например в файл com/sun/javadoc/Doc.java (у меня версия под рукой 1.6.29). Там видим такую строку * @(#)Doc.java 1.15 02/09/29
Похоже? И я знаю почему — это битый SCCS кейворд. Если вы посмотрите в другие сырцы, там будет написано %W% %E% — это нормальные SCCS кейворды, которые и должны раскрываться в имя файла, дату и версию итд. Но сейчас джава уже не живет под SCCS, поэтому мы видим нераскрытые макросы в большинстве исходников.
Вывод — пустой файл хранился под версионкой в SCCS и туда автоматом добавили кейворды как и во все остальные файлы.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Копирайт на команду /bin/true