Чому ця команда працює?


0

хтось показав мені цю команду, щоб отримати терміни придатності certs:

echo | openssl s_client -connect <server>:7002 2>/dev/null| openssl x509 -noout -dates

вихід:

notBefore=Sep  8 08:00:30 2015 GMT
notAfter=Sep  7 08:00:30 2016 GMT

так це працює, але я запитав, навіщо вам потрібне відлуння | перед цим причиною здається, що ти просто не повторюєш нічого. Він сказав, що причиною, якщо ви не поставите відлуння | перед командою, то вона дає вам вихід, але ви не отримаєте швидке повернення, воно просто висить, і це дійсно так, але я хотів би зрозуміти, ЧОМУ ..

Відповіді:


3

Тому що в Linux echo<ENTER>буде повторюватися новий рядок.

у Windows це буде echo. (відлуння / теж працює, а деякі інші речі працюють)

це буде як натискання клавіші Enter, коли ви отримуєте підказку.

різні речі можуть вийти з підказки. Відлуння деяких символів, і тоді, коли більше немає даних, тоді запит виходить. Передаючи вхід до нього, він приймає цей вклад, а не запитувати введення з клавіатури і чекати, наприклад, ctrl-z у Windows. (ctrl-d на початку рядка в Linux буде робити це теж, я просто перевірив його, і це згадується тут https://unix.stackexchange.com/questions/16333/how-to-signal-the-end -of-stdin-введення )

Як правило, коли ви отримуєте підказку, іноді лунає будь-який символ може працювати, наприклад, якщо ви це зробите, dir /pі ви отримаєте підказку "Натисніть будь-яку клавішу для продовження". Потім спробуйте, echo a| dir /pі він покаже список і натисне клавішу для вас.

Але дивіться, хоч із такою командою, якщо вона працює лише для ENTER, або якщо вона працює для інших клавіш, і інша річ, яку можна шукати, це якщо вона шукає закінчення введення. Наприклад, https://stackoverflow.com/questions/33814493/why-cant-this-c-sharp-program-be-piped-to-like-the-more-command-and-what-c

Тож у Windows, якщо ви набираєте більше, ви отримуєте підказку. якщо ви введете деякі символи, він бачить це як введений, і він виводить його, як це робиться більше, але він не виходить. Якщо ви повторюєте навіть один символ більше, наприклад, echo a|moreвін виходить, і це тому, що це підказка, яка вийде / перестане намагатися читати stdin, коли більше символів не потрібно вводити.

Крім того, якщо ви хочете побачити, що знайшло відлуння, ви можете використовувати xxd, наприклад, у windows, echo a | xxd -p, і ви побачите, що він надіслав "a" та пробіл. Ви б побачили, що також якщо ви ухилите echo a> aa, то dir aa побачить, що це два байти. Ви можете отримати xxd від cygwin або vim7, і звичайно для Linux.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.