Что означает `c` в `crw-rw-rw-` в правах доступа к файлам в Linux?

Это zsh, мужчина, а неfish.

В zsh, как и в каждом Bourne -, подобном оболочке (, а также csh), одинарные кавычки являются сильными, в них нет экранирования (, кроме как с помощью rcquotesварианты, как , подсказанные @JdeBP , где zshэмулирует rcкавычки¹ ). У вас не может быть одинарной кавычки внутри одной строки -в кавычках, вам нужно сначала закрыть строку с одинарными кавычками и ввести буквальную одинарную кавычку, используя другой механизм цитирования (, например \или "):

.

alias shopt='echo "You'\''re looking for setopt. This is Z shell, man, not Bash."'

Или:

alias shopt='echo "You'"'"'re looking for setopt. This is Z shell, man, not Bash."'

Хотя можно было бы и так:

alias shopt="echo \"You're looking for setopt. This is Z shell, man, not Bash.\""

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

Или:

alias shopt=$'echo "You\'re looking for setopt. This is Z shell, man, not Bash."'

($'...'— это еще один вид кавычек из ksh93, где 'можно экранировать с помощью\').

(и кстати, вы также можете использовать стандартный set -oвместо setoptв zsh. bashпо историческим причинам имеет два набора опций, один из которых вы устанавливаете с помощью set -oдругой с помощью shopt; zshкак и большинство других оболочек, имеет только один набор параметров ).


¹ В rc, оболочке Plan9, также доступна версия для unix -, одинарные кавычки являются единственным механизмом цитирования(обратная косая черта и двойные кавычки там обычные символы ), единственный способ ввести буквальную одинарную кавычку -с ''внутри одинарных кавычек, поэтому с zsh -o rcquotes,ты мог бы сделать:

alias shopt='echo "You''re looking for setopt. This is Z shell, man, not Bash."'

2
19.02.2020, 21:38
2 ответа

В данном случае это «символьно-ориентированное устройство» (b означает блочно-ориентированное устройство )... Вот почему /dev/null в вашем примере так эффективен при перенаправлении, например, с

command 2> /dev/null

На самом деле это не разрешение, а «знак определения»

1
28.04.2021, 23:22

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

.
  • Символьные устройства (c ), которые представляют собой устройства, которые передают данные в символах, также известных как байты или биты, такие как мыши, динамик и т. д.

  • Блочные устройства (b ), которые представляют собой устройства, которые передают данные в блоках данных, таких как USB, жесткие диски и т. д.

Эти типы файлов обычно можно найти в каталоге /dev, где хранятся файлы устройств, просто введите ls -lah , и вы увидите различные типы.

Если вы работаете с приличным дистрибутивом Linux, эту информацию (плюс больше, чем вам может понадобиться ), можно получить с помощью команды:

info ls

, который содержит этот небольшой фрагмент:


The file type is one of the following characters:
    -  regular file
    b  block special file
    c  character special file
    C  high performance ("contiguous data") file
    d  directory
    D  door (Solaris 2.5 and up)
    l  symbolic link
    M  off-line ("migrated") file (Cray DMF)
    n  network special file (HP-UX)
    p  FIFO (named pipe)
    P  port (Solaris 10 and up)
    s  socket
    ?  some other file type
14
28.04.2021, 23:22

Теги

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