Първото нещо, което веднага ни идва на ум е да видим какво има в системата, след като веднъж сме се идентифицирали в нея и притежаваме определни права. Тук е моментът да се запознаем с командата ls(1). Това е една от основните команди на Linux. Това, което тя прави е да покаже списък (list -- ls, връзката е ясна) от файлове. Когато изпълняваме ls(1) без параметри по подразбиране се показва списъка с файловете от текущата директория. Нека опитаме:
manchev@shodan:~$ls manchev@shodan:~$
Малко неочаквано, но разбираемо. Като нов потребител на системата в моята директория все още няма никакви файлове. Все пак, за да проверим дали ls(1) върши изобщо нещо, нека я изпълним с параметър "/".
manchev@shodan:~$ls / bin cdrom etc home lib mnt proc root-n tmp var boot dev floppy initrd lost+found opt root sbin usr
Така нещата изглеждат по-нормални. Това което накарахме ls(1) да ни покаже е основната директория на нашата система. Основната директория е пределно позната концепция от множество операционни системи. Тя е коренът, от който дървовидно се разраства цялата файлова система на Debian.
Видяхме, че можем да предаваме като параметър на ls(1) коя част от файловата струткура искаме да разгледаме. Можем например да опитме да видим директориите на регистрираните в системата потребители. Всеки акаунт на потребител който добавяме към системата автоматично получава и собствена директория в нея, където той може да държи файловете си. Тези директории по подразбиране се създават в /home. Да погледнем:
manchev@shodan:~$ls /home manchev manchev@shodan:~$
Тук виждаме само една единствена директория -- моята собствена. Това е така, понеже в момента аз съм единствения регистриран ползвател на моя Debian.
Ако все пак сте любопитни, къде е директорията на потребителя root, в който се превърнахме за да изключим системата, отговорът е, че root има собствена директория извън home, която е разположена в основната директория. Можете да я видите под името root на изхода от изпълнението на командата ls / по-горе.
Нека все пак отбележим, че не всички акаунти имат свои директории в home. Има различни служебни потребители, за които няма смисъл да се създават такива. Например mail, чиито права се използват от частта по обслужване на пощенската система.
Освен простото изписване на имената, ls(1) може да показва още много допълнителна информация. Командата е изключително мощна и богата на параметри, както междувпрочем и повечето команди на Debian.
Нека вземем за пример параметъра "-F". Да изпълним:
manchev@shodan:~$ls -F / bin/ cdrom/ etc/ home/ lib/ mnt/ proc/ root-n* tmp/ var/ boot/ dev/ floppy/ initrd/ lost+found opt/ root/ sbin/ usr/
Сега получаваме повече информация за отделните файлове в основната директория. Параметърът "-F" кара ls(1) да постави допълнителен идентификатор до всеки запис, който ни показва какъв е неговия тип. Знакът "/" е указател за директория, "*" показва че записът е изпълним файл, "@" обозначава символни линкове (FIXME: За symlinks/hard links да се каже) , "=" се прикрепя към сокети и "|" за FIFO (FIXME: За FIFO да се каже).
Има още няколко основни параметъра, които е добре да разгледаме. Един много важен и често използван параметър на ls(е) "-l", който кара командата да изведе списъка в по-разширен формат. Да опитаме:
manchev@shodan:~$ls -l / total 100 drwxr-xr-x 2 root root 4096 Aug 17 18:19 bin drwxr-xr-x 2 root root 4096 Aug 19 08:53 boot drwxr-xr-x 2 root root 4096 Aug 17 17:37 cdrom drwxr-xr-x 9 root root 24576 Aug 19 18:25 dev drwxr-xr-x 49 root root 4096 Aug 19 19:38 etc drwxr-xr-x 2 root root 4096 Aug 17 17:37 floppy drwxrwsr-x 3 root staff 4096 Aug 19 19:38 home drwxr-xr-x 2 root root 4096 Aug 17 17:37 initrd drwxr-xr-x 5 root root 4096 Aug 17 22:14 lib drwx------ 2 root root 16384 Aug 17 16:32 lost+found drwxr-xr-x 2 root root 4096 Feb 8 2002 mnt drwxr-xr-x 2 root root 4096 Aug 17 17:37 opt dr-xr-xr-x 34 root root 0 Aug 19 18:25 proc drwxr-xr-x 9 root root 4096 Aug 19 20:12 root -rwxr-xr-x 1 root root 0 Aug 18 19:18 root-n drwxr-xr-x 2 root root 4096 Aug 17 18:19 sbin drwxrwxrwt 5 root root 4096 Aug 19 20:11 tmp drwxr-xr-x 12 root root 4096 Aug 18 00:07 usr drwxr-xr-x 13 root root 4096 Aug 17 17:37 var
Изходът от изпълнението започва с реда "total <блокове>". Стойността на тези блокове показва размера на дисковото пространство, което заемат файловете в директорията. По подразбиране един блок се равнява на 1024 байта, но тази стойност може да се променя с подхящи параметри на ls(1).
По-нататък за всеки отделен запис се извежда информация както следва: права, брой на твърдите връзки на файла или ако е директория -- броя на твърдите връзки на файловете в нея, име на притежателя на файла, име на групата, размер и времето на последна модификация. Смисълът на тези данни ще разгледаме по-късно, когато видим употребата на различните команди по раздаване на права, смяна на собственост на файлове и т.н.
Последното, което ще споменем за ls(1) e параметъра "-h". Той предоставя същата информация но във вид, който е удобен за четене от потребителя. Разбира се, чудесно е да знаем размера на всеки файл до байт, но е къде по-лесно за възприемане, ако той се конвертира автоматично до KB, MB или GB (в зависимост от размера си), защото така е по-удобен за възприемане.
Като последен пример за ls(1), нека изпълним командата с два параметъра -- "-l" и "-h". Ето как изглежда изхода от изпълнението:
manchev@shodan:~$ls -l -h total 100K drwxr-xr-x 2 root root 4.0K Aug 17 18:19 bin drwxr-xr-x 2 root root 4.0K Aug 19 08:53 boot drwxr-xr-x 2 root root 4.0K Aug 17 17:37 cdrom drwxr-xr-x 9 root root 24K Aug 19 18:25 dev drwxr-xr-x 49 root root 4.0K Aug 19 19:38 etc drwxr-xr-x 2 root root 4.0K Aug 17 17:37 floppy drwxrwsr-x 3 root staff 4.0K Aug 19 19:38 home drwxr-xr-x 2 root root 4.0K Aug 17 17:37 initrd drwxr-xr-x 5 root root 4.0K Aug 17 22:14 lib drwx------ 2 root root 16K Aug 17 16:32 lost+found drwxr-xr-x 2 root root 4.0K Feb 8 2002 mnt drwxr-xr-x 2 root root 4.0K Aug 17 17:37 opt dr-xr-xr-x 34 root root 0 Aug 19 18:25 proc drwxr-xr-x 9 root root 4.0K Aug 19 20:12 root -rwxr-xr-x 1 root root 0 Aug 18 19:18 root-n drwxr-xr-x 2 root root 4.0K Aug 17 18:19 sbin drwxrwxrwt 5 root root 4.0K Aug 19 20:11 tmp drwxr-xr-x 12 root root 4.0K Aug 18 00:07 usr drwxr-xr-x 13 root root 4.0K Aug 17 17:37 var
Нека обърнем внимание на още един факт. В ls(1), както и в повечето Debian команди може да комбинирате параметри и да ги подавате заедно към командата, за която се отнасят. Например, вместо "ls -l -h" можехме да напишем "ls -lh".
Командата ls(е) много мощен инструмент. Тя може да извежда различна информация в множество различни формати. Да сортира, да филтрира, да навлиза и показва съдържанието на директории, да поддържа контролни знаци. Изобщо -- каквото ви дойде наум. Това е валидно за почти всички команди на Debian -- изключително богатство от функции, достъпни чрез определени параметри и гъвкаво управление на изпълнението.
Разбира се, ние не можем да опишем всички параметри и възможности на всяка команда, която разглеждаме. Това, което можем да покажем обаче е как да получите помощ за всяка една от тях. Това е следващата тема, която ще разгледаме.
Преди това, нека споменем и още една команда, с аналогични функции на ls(1). Това е командата dir(1). Когато говорим за системата за помощ на Debian ще разберете как да получите повече информация за нея (ако разбира се ви интересува). Така или иначе, ls(1) и dir(1) вършат едно и също, въпреки че имат някои разлики. По-голямата част от потребителите на Debian, които познавам се придържат твърдо към ls(1). Както и аз самият. Моят личен е избор е продиктуван от две неща :