Как использовать cd на другом смонтированном жестком диске?

Да, однако файл терминала не является обычным файлом.

Если вы перечислите расширенные свойства терминального файла, вы увидите:

$ ls /dev/tty1 -lah
crw--w---- 1 root tty 4, 0 Apr  6 13:07 /dev/tty1

обратите внимание, что первый символ в разделе разрешений — это буква «c», это указывает на то, что файл является символьным специальным устройством. Напротив, обычный файл будет иметь там «-», каталог «d», специальное блочное устройство «b», символическую ссылку «l» и сокет домена unix «s».

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

Символьное специальное устройство — это объект ядра, который взаимодействует с пользовательским пространством путем чтения и записи потоков символов. , к ним можно получить доступ, выполнив системные вызовы read() и write() .

Например, на моей машине с помощью Ctrl+Alt+F1 (то есть /dev/tty1 на моей машине, а не tty0) я мог считывать все, что набирается, на виртуальную консоль с помощью программы, использующей read() системный вызов типа cat:

  1. В графическом эмуляторе sudo cat /dev/tty1
  2. Переключиться на эмулятор виртуальной консоли с помощью Ctrl+Alt+F1
  3. Тип что-нибудь в эмулятор виртуальной консоли
  4. Вернитесь к графическому интерфейсу с помощью Ctrl+Alt+F7
  5. В графическом эмуляторе я увижу все, что набрал в эмуляторе виртуальной консоли, как результат cat

Наоборот, я мог бы также отображать символы в виртуальной консоли, используя программу, которая использует системный вызов write(), например tee:

  1. В графическом эмуляторе echo "привет мир" | sudo tee /dev/tty1
  2. Переключитесь на эмулятор виртуальной консоли с помощью Ctrl+Alt+F1
  3. В эмуляторе виртуальной консоли я увижу «hello world»

Большинство обычных текстовых редакторов откажутся открывать -обычные специальные файлы, потому что они запрограммированы на проверку типа файла и отказываются редактировать нестандартные файлы. Это сделано для предотвращения "случайностей", потому что нет большого смысла редактировать специальные устройства в обычных текстовых редакторах. Кроме того, большинство обычных текстовых редакторов на самом деле не просто вызывают write() для существующего файла, а вместо этого записывают в новый файл и переименовывают() файл подкачки. заменить старый файл.Даже если у вас есть текстовый редактор, который поддерживает запись на месте, они обычно пытаются сначала обрезать файл, что, конечно, не поддерживается в устройстве со специальными символами.

0
07.10.2016, 09:21
0 ответов

Теги

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