Почему README.md появился как исполняемый файл?

«убить» значение Ctrl + C очень старое, я думаю, даже старше, чем Unix. Википедия прослеживает его до TOPS-10, который датирует его концом 1960-х годов. В статье объясняется, почему Ctrl + C был разумным выбором: в ASCII , который был опубликован в 1963 году, соответствующий символ - ETX, end- текста . Отсутствие символа, означающего «стоп» ¹, символ, означающий «этот сегмент ввода завершен», был разумным выбором для обозначения «остановить текущую обработку».

«Копировать» значение Ctrl + C исходит от Xerox PARC, изобретателей копипаста в его современной форме (и большинства других фундаментальных принципов). графических пользовательских интерфейсов). Я не знаю точно, когда это было, но, должно быть, это был конец 1970-х годов. В этой ветке на User Experience Stack Exchange обсуждается выбор привязки клавиш; C для копирования имеет большой смысл.

У PARC не было особых причин отклонить Ctrl + C для копирования на основе существующего значения в терминалах TOPS-10 и Unix. Тогда операционные системы и приложения были более разнообразными, и гораздо меньше людей использовали компьютеры; не было ни возможности, ни призывов к единому стандарту привязки клавиш для всех приложений. Другие варианты использования Ctrl + C в популярных приложениях включают перелистывание страницы вниз в WordStar ² и зависящие от режима команды в Emacs.Все они были разработаны независимо для приложений с часто разными требованиями, работающих в разных средах.

Вы можете настроить привязку клавиш терминала с помощью команды stty . Привязки терминала активны, когда терминал находится в режиме обработки³. Например, команда stty intr ^ G устанавливает символ, который отправляет сигнал SIGINT, на Ctrl + G вместо Ctrl + ] C . Символ ^ G - это BEL в ASCII; при отправке на терминал означает «позвонить в звонок». Это символ, который Emacs использует для «прерывания текущей операции» (объяснение: приложение отправляет BEL пользователю через терминал, чтобы прервать пользователя; пользователь отправляет BEL приложению через терминал, чтобы прервать приложение). При отправке на терминал он не имеет стандартного значения.

Большинство оболочек предоставляют функции редактирования строк, поэтому они устанавливают терминал в необработанный режим. То же самое и с приложениями с полноэкранным текстовым режимом. Возможно, вам потребуется настроить эти приложения для распознавания Ctrl + G вместо Ctrl + C , а некоторые могут иметь ненастраиваемую клавишу привязки. Таким образом, изменение символа прерывания может быть или не может быть практически выполнимым в зависимости от того, какие приложения вы используете.

Другой подход может заключаться в настройке вашего терминала для изменения последовательности байтов, которую он отправляет для сочетания клавиш Ctrl + C , или заставить его ничего не отправлять и вместо этого выполнять операцию копирования.Вы также можете выбрать другую комбинацию клавиш для отправки Ctrl + C (если у вас клавиатура компьютера, отличного от портативного, вы можете использовать удаленную Пауза / Разрыв клавиши ). Не все терминалы можно настроить таким образом.

¹ Ctrl-S (XOFF) означает остановку, но она адресована терминалу, а не приложению.
² Рядом с Ctrl + X для следующей строки, с Ctrl + E и Ctrl + R для предыдущей строки и перехода на страницу вверх; эти клавиши были выбраны из-за их размещения на клавиатуре QWERTY.
³ Nitpick: готовый режим - это набор настроек терминала, включая интерпретацию нескольких символов, включая тот, который отправляет сигнал прерывания.

0
15.06.2018, 20:46
1 ответ

Porque la 'ejecutabilidad' de un archivo es una propiedad de la entrada del archivo en los sistemas UNIX, no del tipo de archivo como lo es en Windows.

En resumen, lsenumerará un archivo como ejecutable si alguno de los propietarios, el grupo o todos tienen permisos de ejecución para el archivo. No importa cuál sea el tipo de archivo, solo cuáles son los permisos. Este comportamiento brinda dos beneficios significativos:

  1. No tiene que hacer nada especial para manejar nuevos formatos ejecutables.Esto es particularmente útil para los lenguajes de secuencias de comandos, donde simplemente puede incrustar el intérprete con una línea #!en la parte superior del archivo. El kernel no tiene que saber que los archivos .pyson ​​ejecutables, porque los permisos así lo indican. Esto también, cuando se combina con el soporte binfmt_miscen Linux, hace posible hacer cosas realmente interesantes, como tratar los programas de la consola de Windows como binarios nativos si tiene Wine instalado.
  2. Le permite decir que ciertos archivos que técnicamente son código de máquina no pueden o no deben ejecutarse. Esto también se usa principalmente con lenguajes de secuencias de comandos, donde no es inusual tener bibliotecas que son indistinguibles en términos de formato de archivo de ejecutables. Entonces, usando el ejemplo de Python anterior, le permite decir que las personas no deberían poder ejecutar módulos arbitrarios desde la biblioteca estándar de Python directamente, aunque tengan una extensión .py.

Sin embargo, todo esto se desmorona si está atascado tratando con sistemas de archivos que no admiten permisos POSIX, como FAT (o NTFS si no tiene asignaciones de usuario -configuradas )]. Si el sistema de archivos no almacena permisos POSIX, entonces el sistema operativo tiene que simularlos. En Linux, el valor predeterminado es tener permisos de lectura, escritura y ejecución establecidos para todos, de modo que los usuarios puedan hacer lo que quieran con los archivos. Sin esto, no podría ejecutar scripts o archivos binarios desde una unidad flash USB, porque el kernel no le permite modificar los permisos en dichos sistemas de archivos por archivo -.

En su caso particular, gitalmacena los atributos que ve en los archivos cuando se confirman, y probablemente ocurrió la confirmación original del archivo README.md (o una de las confirmaciones posteriores )en un sistema Windows, donde estas cosas se manejan de manera muy diferente y, por lo tanto, gitsolo almacena los permisos como acceso completo para todos, de manera similar a cómo Linux maneja los sistemas de archivos sin soporte de permisos.

4
28.01.2020, 02:23

Теги

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