HD и передозировка могут заменить друг друга?

Если Вы понимаете, что собираетесь хотеть снова использовать вывод перед ударом, Входят, можно сохранить его в переменной: добавить tmp=$( в начале строки и ) в конце. (Это удаляет любую пустую строку в конце вывода команды и на самом деле удаляет любую заключительную новую строку; это редко имеет значение.)

tmp=$(python -c …)
echo "$tmp"
cd "$tmp"

Если Ваша оболочка является ksh или zsh, вот полезная функция, которую можно использовать для создания этого более автоматическим. (Это не справка в ударе, потому что это требует, чтобы последняя команда в конвейере была выполнена в родительской оболочке, которая только имеет место в ksh (не pdksh) и zsh.)

keep () {
  local line IFS=$'\n'
  kept=
  while read -r line; do
    printf '%s\n' "$line"
    kept=$kept$line$IFS
  done
}
alias keep=k

Использование это этот путь:

python -c … |k
cd $kept
11
24.07.2011, 17:49
2 ответа

hd синоним для hexdump -C на FreeBSD и на некоторых дистрибутивах Linux. hexdump со дней BSD; od с рассвета времени. Только od стандартизирован POSIX. Единственное объяснение UNIX обсуждает почему od был выбран в предпочтении к hd или xd.

Эти команды делают очень похожие вещи: отобразите текстовое представление двоичного файла, с помощью восьмеричной, десятичной или шестнадцатеричной нотации. Между двумя нет никакого принципиального различия.

У них есть много опций управлять выходным форматом, и некоторые форматы могут только быть достигнуты с одним или другой командой. В частности, для наблюдения взгляда того, что находится в двоичном файле мне нравится hdвыходной формат, со столбцом на правильных печатаемых символах показа буквально; od не может сделать этого.

$ od /bin/sh | head -n 2                # od default: octal, 2-byte words
0000000 042577 043114 000402 000001 000000 000000 000000 000000
0000020 000002 000076 000001 000000 170020 000101 000000 000000

$ od -Ax -t x1 /bin/sh | head -n 2      # od showing bytes in hexadecimal
000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
000010 02 00 3e 00 01 00 00 00 10 f0 41 00 00 00 00 00

$ hd /bin/sh | head -n 2                # hd default output: nice
00000000  7f 45 4c 46 02 01 01 00  00 00 00 00 00 00 00 00  |.ELF............|
00000010  02 00 3e 00 01 00 00 00  10 f0 41 00 00 00 00 00  |..>.......A.....|
19
27.01.2020, 19:57
  • 1
    Спасибо! В восьмеричном выводе передозировкой, цифра означает три бита? Так, например, 042577 18 битов т.е. 9/4 байта? –  StackExchange for All 24.07.2011, 17:42
  • 2
    @Tim, Да, восьмеричный, означает, что каждая цифра соответствует 3 битамшестнадцатеричный, 4 битам). 042577 на самом деле представляет 16 битов (2 байта); первая цифра в блоке в этом формате всегда будет 0 или 1. восьмеричный (042577) = шестнадцатеричный (7f45) = десятичное число (32581). –  Gilles 'SO- stop being evil' 24.07.2011, 18:04
  • 3
    Спасибо! я читал из других источников, которые восьмеричные числа запускают с еще 0. Что означает то, когда это запускается с 1? –  StackExchange for All 24.07.2011, 18:28
  • 4
    @Tim На многих языках программирования, 123 число, представленное в основе 10 (десятичное число), тогда как 0123 средства, что число представлено в основе 8 (восьмеричный), т.е. 0123 83. 0x123 был бы в основе 16 (шестнадцатеричные), т.е. 291. Это не связано с od выходной формат. предположение –  Gilles 'SO- stop being evil' 24.07.2011, 18:46

На самом деле OD может отображать как Hex / Oct / Dec, так и печатные символы:

$ od -Ax -tx1z /bin/sh | head -n2
000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00  >.ELF............<
000010 03 00 3e 00 01 00 00 00 32 4e 00 00 00 00 00 00  >..>.....2N......<

Основное отличие, я думаю, является только историческим. Также некоторые версии HD могут выводить цвет.

5
27.01.2020, 19:57

Теги

Похожие вопросы