Комментарии 9
Есть утилита, которую многие используют и не знают, что это утилита
/usr/bin/[
:)
/usr/bin/[
:)
А многие думают, что используют, а на самом деле — нет, поскольку shell «не доводит до греха» (обращения к ФС) и справляется сама, будучи достаточно продвинутой для этого :)
Это bash так делает, а вот минималистичные вариации все же используют test, который [
да и bash в пайпе вызывает сам себя выполняя builtins. (обращаясь в ФС )
кажется так.
PS. Сейчас пишу проект в школе 21 про шелл и буду благодарен если кто поправит.
кажется так.
PS. Сейчас пишу проект в школе 21 про шелл и буду благодарен если кто поправит.
да и bash в пайпе вызывает сам себя выполняя builtins. (обращаясь в ФС )
Что-то я не вижу запуска дочернего процесса в случае встроенного test.
:) > strace -e trace=%process bash -c "[ 1 -eq 1 ]"
execve("/bin/bash", ["bash", "-c", "[ 1 -eq 1 ]"], 0x7ffdeeebf7f0 /* 72 vars */) = 0
arch_prctl(ARCH_SET_FS, 0x7f28dab7e740) = 0
exit_group(0) = ?
+++ exited with 0 +++
:) > strace -e trace=%process bash -c "[[ 1 -eq 1 ]]"
execve("/bin/bash", ["bash", "-c", "[[ 1 -eq 1 ]]"], 0x7fff57679a80 /* 72 vars */) = 0
arch_prctl(ARCH_SET_FS, 0x7f89dfc60740) = 0
exit_group(0) = ?
+++ exited with 0 +++
:) > strace -e trace=%process bash -c "/usr/bin/test 1 -eq 1"
execve("/bin/bash", ["bash", "-c", "/usr/bin/test 1 -eq 1"], 0x7ffeeb49ed40 /* 72 vars */) = 0
arch_prctl(ARCH_SET_FS, 0x7f9f5d72d740) = 0
execve("/usr/bin/test", ["/usr/bin/test", "1", "-eq", "1"], 0x55caa9954ab0 /* 72 vars */) = 0
arch_prctl(ARCH_SET_FS, 0x7fd2b445a540) = 0
exit_group(0) = ?
+++ exited with 0 +++
:( > bash --version
bash --version
GNU bash, version 4.4.20(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://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.
:) > lsb_release -a
lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.4 LTS
Release: 18.04
Codename: bionic
Посмеялся, когда увидел, что за «энтузиаст» поддерживает форк typo на Go.
А я недавно, пытаясь переделать для тещи plain text таблицу (нужно было изменить ширины рядов), на SO наткнулся на пример использования утилиты column. Удобная штука, и много разных параметров имеет…
Пример:
(но все равно пришлось делать при помощи awk!)
Пример:
echo -e "a b c\n12 4312234 4341324\nllaoo asdf fdaasd" | column -t
a b c
12 4312234 4341324
llaoo asdf fdaasd
(но все равно пришлось делать при помощи awk!)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Обсуждение: стандартные UNIX-утилиты, которые мало кто использовал и использует сейчас