Что такое клавиша ^ @

Краткий ответ: Добавьте права доступа для чтения к файлу в папке tftpboot

Подробный ответ:

У меня была та же проблема.

Некоторые файлы были доступны, поэтому tftp определенно работал.

Мне пришлось добавить доступ для чтения к файлам, которые вызывали проблему, и он был исправлен

-121--134045-

Всякий раз, когда вы не понимаете команды, прочитайте ее руководство. В этом случае, man wc покажет вам, что

DESCRIPTION
   Print newline, word, and byte counts for each FILE, and a total line if
   more than one FILE is specified. [...] A  word  is a non-zero-length
   sequence of characters delimited by white space.

Так, три числа являются i) количество строк; ii) количество слов; и iii) количество байтов. Поэтому, если я запущу его в этом каталоге:

$ ls -l
total 0
-rw-r--r-- 1 terdon terdon 0 Oct 19 14:29 file1
-rw-r--r-- 1 terdon terdon 0 Oct 19 14:29 file2
-rw-r--r-- 1 terdon terdon 0 Oct 19 14:29 file3

Он вернет:

$ ls -l | wc
    4      29     152

Это потому, что, как вы можете видеть выше, есть 4 строки вывода, которые содержат 29 «слова» (слово определяется пробелом) и всего 152 байт (обратите внимание, что это включает в себя новую строку (\n )

Для более простого примера попробуйте:

$ echo "foo" | wc  
    1    1     4

Команда echo «foo» фактически печатает foo\n (\n - символ новой строки), так что это одна строка, одно слово и 4 байта.

Следует помнить, что третье поле - это количество байтов, а не символов. Это особенно важно для языков, где символы могут быть сделаны из нескольких байтов, как при использовании UTF-8 (имеет тенденцию быть нормой в настоящее время).

$ echo fée | wc
    1    1    5

В UTF-8 символ «e» состоит из двух байтов. Для получения количества символов можно использовать параметр -m ( m для многобайтовых символов ).

$ echo fée | wc -m
4

-121--198500-

Оказалось, что сервер использовал файловую систему типа «cifs» (предположительно, Common Internet File System, иначе CIFS ). Это было обнаружено при выполнении команды df -T .

CIFS, по-видимому, проявляет нетрадиционное поведение в отношении разрешений.

Выполнение тех же команд на компьютере с файловой системой ext4 и недавней версией Coreutils дало результат

$ mv 1 2
mv: replace ‘2’, overriding mode 0444 (r--r--r--)?

, как и ожидалось.

-2
08.06.2018, 15:29
2 ответа

Ese es el carácter 0, ctrl -@. P.ej. Ctrl -A es el carácter 1, Ctrl -M el carácter 13 o nueva línea.

2
28.01.2020, 05:14

^@no es una clave, es la representación de un carácter de control. En ese caso el caracter NUL, el que tiene valor de byte 0.

Si n es el valor de byte de X, entonces el valor de byte de ^Xserá n ^ 0x40.

Puede indicar el valor en bytes de Xcon:

printf X | od -An -tu1

o (para caracteres de un solo byte):

printf '%d\n' "'X"

Así que aquí:

$ printf '%s\n' "'@"
64
$ echo "$((64 ^ 0x40))"
0

Para^?:

$ printf '%s\n' "'?"
63
$ echo "$((63 ^ 0x40))"
127

(ese es el carácter DEL ).

Según el terminal, puede ingresar presionando Ctrl+Espacio o Ctrl+@ . En mi teclado del Reino Unido en xterm en Debian, lo obtengo en Ctrl+2(shift 2 is "en un teclado del Reino Unido, pero @ en un teclado de EE. UU. ).

Los terminales y emuladores de terminal ignoran el carácter NUL. Es un carácter de relleno que en los viejos tiempos lo habrían usado las aplicaciones para dejar que el terminal tuviera tiempo entre otros dos caracteres de control cuando no había control de flujo.

Vería que ^@en una terminal en aplicaciones como vimque lo eligen como la representación visual de un NUL. Por lo general, también lo vería como el eco de un carácter NUL que ingresa en la entrada. Ya sea por el propio controlador de terminal cuando la disciplina de línea de terminal está en modo icanony el parámetro echoctlestá habilitado (generalmente activado de forma predeterminada, consulte stty -a), o por editores de línea en aplicaciones (como readlineutilizado porbash).

5
28.01.2020, 05:14

Теги

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