Ну вот незадача, в одном из них зашифрованное послание с Омикрон-Персей 8, а в другом послание из /dev/random. А сейчас, внимание, вопрос: как быстро различить эти файлы не имея расширения?
может всё-же ман осилишь? ls делает stat(2) для каждого файла, получая
struct stat {
dev_t st_dev; /* ID of device containing file */
ino_t st_ino; /* inode number */
mode_t st_mode; /* protection */
nlink_t st_nlink; /* number of hard links */
uid_t st_uid; /* user ID of owner */
gid_t st_gid; /* group ID of owner */
dev_t st_rdev; /* device ID (if special file) */
off_t st_size; /* total size, in bytes */
blksize_t st_blksize; /* blocksize for file system I/O */
blkcnt_t st_blocks; /* number of 512B blocks allocated */
time_t st_atime; /* time of last access */
time_t st_mtime; /* time of last modification */
time_t st_ctime; /* time of last status change */
};
из-за st_mode field оно может каталог от девайса отличить, но не более того. Остальное красит по расширению(точнее по имени, например в слаке *.EXE красит зелёным).
В первом посте я ошибочно сказал что ls светит по типу файла. Потом опомнился и исправился. В чем, собственно, проблема? А том что я изначально оплошался?
Deleted ()
Последнее исправление: Copycat
(всего
исправлений: 1)
В первом посте я ошибочно сказал что ls светит по типу файла. Потом опомнился и исправился. В чем, собственно, проблема? А том что я изначально оплошался?
на самом деле, светится и так и так. Сначала проверяется тип файла, потом имя. Но используя метод тыка, ты дважды сделал неверный вывод. И ман так и не раскрыл.
Думаю одна картинка все же нагляднее чем простыня текста.
мне неинтересно смотреть на твоё ШГ. Мне своё роднее. Кроме того, кто-то может и соврать, а кто-то неправильно что-то сделать. Для проверки надо попробовать самому, а это сложно - скопипастить не получится.
Повторюсь: если хочешь _показать_ мне какой-то гуй - делай скрин, но вот кидать текст в виде картинки, да ещё на форум, в котором картинки не показываются - идиотизм. Задумайся пожалуйста.
на самом деле, светится и так и так. Сначала проверяется тип файла, потом имя. Но используя метод тыка, ты дважды сделал неверный вывод. И ман так и не раскрыл.
Честно скажу - раскрывал. Ман и ls и dircolors. Читал вскользь, но тем не менее не нашел ничего что объясняло бы принцип работы подсветки.
Для проверки надо попробовать самому, а это сложно - скопипастить не получится.
Казалось что проверил. Перед своей писаниной удалил у рандомного файла расширение и ls все-равно его подсветил. Надо было, конечно, читнуть доки, каюсь.
Повторюсь: если хочешь _показать_ мне какой-то гуй - делай скрин, но вот кидать текст в виде картинки, да ещё на форум, в котором картинки не показываются - идиотизм. Задумайся пожалуйста.
Так это ведь скрин и был. Скрин консоли в которой мой ls после удаления расширения файла перестал подсвечивать его. Скинул из принципа что будет быстрее взглянуть на скрин чем читать сумбурное описание словами.
Впрочем да, наверное я не прав.
Казалось что проверил. Перед своей писаниной удалил у рандомного файла расширение и ls все-равно его подсветил. Надо было, конечно, читнуть доки, каюсь.
на самом деле, в Linux есть понятие «тип файла», это то самое поле st_mode, о котором я выше писал.
там определены сл. биты:
The following flags are defined for the st_mode field:
S_IFMT 0170000 bit mask for the file type bit fields
S_IFSOCK 0140000 socket
S_IFLNK 0120000 symbolic link
S_IFREG 0100000 regular file
S_IFBLK 0060000 block device
S_IFDIR 0040000 directory
S_IFCHR 0020000 character device
S_IFIFO 0010000 FIFO
S_ISUID 0004000 set UID bit
S_ISGID 0002000 set-group-ID bit (see below)
S_ISVTX 0001000 sticky bit (see below)
S_IRWXU 00700 mask for file owner permissions
S_IRUSR 00400 owner has read permission
S_IWUSR 00200 owner has write permission
S_IXUSR 00100 owner has execute permission
S_IRWXG 00070 mask for group permissions
S_IRGRP 00040 group has read permission
S_IWGRP 00020 group has write permission
S_IXGRP 00010 group has execute permission
S_IRWXO 00007 mask for permissions for others (not in group)
S_IROTH 00004 others have read permission
S_IWOTH 00002 others have write permission
S_IXOTH 00001 others have execute permission
т.е. права, и тип. Например 0040000 значит - каталог. Оно синеньким подсвечивается, даже PORNO.JPG. Приоритет типа выше, чем имени. Логика исполняемых сложнее - он подсвечивается если юзер вызвавший ls может исполнять(имеет право), и если это не каталог(и не сокет какой-то), или его имя подходит под шаблон типа *.EXE(от дистра зависит).