habe vorhin versehentlich unter /user/bin die Datei '[' gelöscht ...
welchen Zweck erfüllt dieses bin file?
Code: Alles auswählen
'['
Code: Alles auswählen
'['
Code: Alles auswählen
if [ $a = $b ] ...
Code: Alles auswählen
if test $a = $b ...
Code: Alles auswählen
bash
Code: Alles auswählen
apt-get --reinstall install bash
Code: Alles auswählen
$ dpkg -S /usr/bin/\[
coreutils: /usr/bin/[
Code: Alles auswählen
# apt --reinstall install coreutils
Code: Alles auswählen
# apt-get --reinstall install coreutils
Code: Alles auswählen
$ apt-file search /usr/bin/[
coreutils: /usr/bin/[
$
Code: Alles auswählen
$ type [
[ is a shell builtin
$
Sehr cool, mit dem reinstall hat funktioniert, ich war mir nicht so sicher mit dem kopieren via scptobo hat geschrieben:17.11.2024 15:19:12Du kannst die coreutils neu installieren:Code: Alles auswählen
# apt-get --reinstall install coreutils
Welche Unterschiede haben sie denn?tobo hat geschrieben:17.11.2024 15:19:12Edit:
Die Unterschiede von [ zu test (beim Programm /usr/bin/{[,test}) lassen sich in der manpage nachlesen. Das sind 2 unabhängige Programme und die funktionieren unabhängig voneinander.
Bei Debian (eine aeltere Version) sind es tatsaechlich zwei verschiedene Programme:https://pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html hat geschrieben: In the second form of the utility, where the utility name used is [ rather than test, the application shall ensure that the closing square bracket is a separate argument. The test and [ utilities may be implemented as a single linked utility which examines the basename of the zeroth command line argument to determine whether to behave as the test or [ variant.
Code: Alles auswählen
:-Q cd /usr/bin/
:-Q ll \[ test
-rwxr-xr-x 1 root root 35248 2013-01-26 22:07 [*
-rwxr-xr-x 1 root root 31152 2013-01-26 22:07 test*
Code: Alles auswählen
:-/ cd /bin/
:-/ ll \[ test
-r-xr-xr-x 2 root wheel 12520 2024-06-12 14:17 [*
-r-xr-xr-x 2 root wheel 12520 2024-06-12 14:17 test*
Es gibt also eigentlich keinen Grund dazu.hat geschrieben: Since ‘test expr’ and ‘[ expr ]’ have the same meaning, only the former form is discussed below.
Code: Alles auswählen
#ifndef LBRACKET
# define LBRACKET 0
#endif
...
if (LBRACKET)
{
/* Recognize --help or --version, but only when invoked in the
"[" form, when the last argument is not "]". Use direct
parsing, rather than parse_long_options, to avoid accepting
abbreviations. POSIX allows "[ --help" and "[ --version" to
have the usual GNU behavior, but it requires "test --help"
and "test --version" to exit silently with status 0. */
...
Code: Alles auswählen
#define LBRACKET 1
#include "test.c"
Code: Alles auswählen
# This is for the '[' program. Automake transliterates '[' and '/' to '_'.
src___SOURCES = src/lbracket.c
Meillo hat geschrieben:17.11.2024 16:13:23Welche Unterschiede haben sie denn?tobo hat geschrieben:17.11.2024 15:19:12Edit:
Die Unterschiede von [ zu test (beim Programm /usr/bin/{[,test}) lassen sich in der manpage nachlesen. Das sind 2 unabhängige Programme und die funktionieren unabhängig voneinander.
Z.B.:man test (bookworm) hat geschrieben: NOTE: [ honors the --help and --version options, but test does not. test treats each of those as it treats any other nonempty STRING.
Code: Alles auswählen
$ /usr/bin/test --version
$ /usr/bin/[ --version
[ (GNU coreutils) 9.1
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Kevin Braunsdorf and Matthew Bradburn.
$
Code: Alles auswählen
$ ls -l /usr/bin/{[,test}
-rwxr-xr-x 1 root root 68496 2022-09-20 17:27 '/usr/bin/['
-rwxr-xr-x 1 root root 60304 2022-09-20 17:27 /usr/bin/test
$
Lustigerweise waere gerade das das beste Argument *gegen* eine Conditional Compilation.tobo hat geschrieben:17.11.2024 16:38:13Z.B.:man test (bookworm) hat geschrieben: NOTE: [ honors the --help and --version options, but test does not. test treats each of those as it treats any other nonempty STRING.Code: Alles auswählen
$ /usr/bin/test --version $ /usr/bin/[ --version [ (GNU coreutils) 9.1 Copyright (C) 2022 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by Kevin Braunsdorf and Matthew Bradburn. $