А вы это знаете?
Автор : X-Stranger
А вы это знаете?
Надеюсь, что предлагаемые ниже полезности помогут при изучении Linux.
Потеряли файл на огромном диске. Сколько времени, Вы думаете, у Вас займет его поиск? 10 минут? 20? Для Linux эта операция займет всего несколько секунд:
$ locate file
где file -- часть имени файла, которую вы помните.
Дело в том, что Linux ведет базу данных по всем файлам и команда locate просто обращается к этой базе. Правда, для своей работы база требует постоянного обновления, которое происходит раз в сутки, по умолчанию где-то часа в 4 утра.
Возможно, вас удивляет, что означают все эти разные файлы, расположенные тут и там. Linux и здесь не оставляет вас один на один с неизвестным.
Попробуйте следующую команду, которая идет с любым Linux:
$ file unknown_file.ufx
Правильно, вам будет выдано подробное объяснение, что это за файл. Уже вошли в азарт? Зачем десять раз набирать одно и тоже! Команда
$ file *
покажет вам, что все эти файлы означают.
До сих пор не поймете, откуда они взялись у вас в системе? Тогда Linux RedHat (и некоторые другие дистрибутивы Linux) вам охотно помогут.
Предположим, что вы забрались в каталог /usr/bin и хотите знать, откуда у вас программа dig и из какой она категории. Запускать ее вы опасаетесь (и правильно, мало ли что может делать незнакомая программа; особенно суперпользователю не рекомендуется запускать что попало).
Попробуйте вот что:
$ rpm -qf /usr/bin/dig
Теперь вы знаете, что эта программа их пакета bind-utils-4.9.7-1.
Но из какой она все-таки оперы? Давайте посмотрим подробнее:
$ rpm -qfi /usr/bin/dig
Name : bind-utils Distribution: Manhattan Version : 4.9.7 Vendor: Red Hat Software Release : 1 Build Date: Tue Jun 30 23:58:38 1998Install date: Sun Aug 9 21:08:26 1998 Build Host: porky.redhat.com Group : Networking/Utilities Source RPM: bind-4.9.7-1.src.rpm Size : 319594 Packager : Red Hat Software URL : http://www.isc.org/bind.html Summary : DNS utils - host, dig, dnsquery, nslookup Description : Collection of utilities for querying name servers and looking up hosts. These tools let you determine the IP addresses for given host names, and find information about registered domains and network addresses.
Вот так! Этот пакет утилит для сети.
А что еще входит в этот пакет и где оно находится?
$ rpm -qfl /usr/bin/dig
/usr/bin/addr /usr/bin/dig /usr/bin/dnsquery /usr/bin/host /usr/bin/nslookup /usr/lib/nslookup.help /usr/man/man1/dig.1 /usr/man/man1/dnsquery.1 /usr/man/man1/host.1 /usr/man/man5/resolver.5 /usr/man/man8/nslookup.8
Вот-вот. Теперь, если вас эта программа заинтересовала, можно прочитать документацию:
$ man dig
В принципе, можно было и сразу так сделать. Но по пути мы узнали много нового, не правда ли?
Ах, вы прочитали документацию и сочли, что те 319594 байт, которые эта программа занимает, лишние? Что-что? Деинсталлятор? Зачем так сложно! В RedHat Linux ОДИН инсталлятор/деинсталлятор на всех!
Попробуйте (уже как суперпользователь!):
# rpm -e --test bind-utils
Если вам действительно нужно убрать этот пакет, то сделайте приведенную выше команду без ключа --test.
Кстати, ставить программы в RedHat Linux также легко. Вы берете rpm-файл и говорите:
# rpm -ihv myfile-3.14-15.rpm
Вжииик! И программа у вас стоит, изучайте документацию!
А умеете ли вы быстро набирать названия файлов? Сколько времени вам потребуется, чтобы набрать имя уже существующего файла?
This_Is_VeRy_long_file_name_7523854_q.txt
Подождите! В оболочке bash все это название можно набрать за доли секунды (скажем, для использования в программе cat):
$ cat This
А потом нажмите клавишу табуляции:
$ cat This_Is_VeRy_long_file_name_7523854_q.txt
Вот так!
А хотите упрощенно вызывать нужную вам программу? (Предположим, что название команды начинается с at, а само имя длинное). Нет проблем:
$ a
и табуляцию. Не сработало? Значит таких команд несколько. Попробуйте второй раз табуляцию. Ну вот:
at atktopbm atobm atq atrm attraction
Оказывается, нужна третья буква:
$ att
и табуляция дает полное имя команды:
attraction
А вы еще спрашиваете, зачем нужен режим командной строки! Никакой графический интерфейс не позволит вам в долю секунды узнать и вызвать нужную вам программу (причем, программу, которую вы лишь смутно представляете себе по названию).
На экран что-то вывелось и вы не успели прочитать? Для MS DOS это фатально. В Linux можно увидеть пару-тройку уплывших экранов: клавиши SHIFT-PageUp/PageDown вам помогут!
Вы хотите запустить сразу несколько программ? Нет проблем! В Linux можно сделать до 64 виртуальных консолей. Ну а в X Window вы сможете загрузить еще больше терминалов. (И, кстати, не одни вы, а все, кто работает с вами вместе на одной машине.
Переключаться между терминалами очень просто: Alt-F1...12 обслуживают первые 12, а в остальные можно попасть с помощью Alt-влево/вправо.
Сильно сокращает работу на клавиатуре и следующий прием. Предположим, вы часто выполняете некоторую длинную команду, предположим:
# uucico -r1 -d9 -Sremotesys
Если вы уверены, что совсем недавно вызывали эту команду и вам он опять нужна, можно просто набрать:
# !uuc
Все остальное машина домыслит.
Вообще же говоря, стоит внимательно работать с этой возможностью.
Если Вы неуверены, лучше сначала попробовать "понарошку":
# # !uuc
# uucico -r1 -d9 -Sremotesys
Ага! Теперь можно и то, что нужно.
# !uuc
Совсем немного потренировавшись и освоив этот прием, вы будете очень быстро давать команды машине.
Многие спрашивают, почему в Linux, а точнее, в X Window System, нельзя на ходу менять разрешение экрана и глубину цвета.
Первый вопрос в X решается очень быстро: Ctrl-Alt-серый плюс и Ctrl-Alt-серый минус последовательно проведут вас через несколько разных разрешений, на которые способен ваш компьютер.
С глубиной цвета сложнее. Менять ее "на лету" нельзя, но если очень хочется, то можно завести два сервера для X Window!
$ startx -- :0 $ startx -- :1
и по Ctrl-Alt-F7/F8 между ними переходить!
Кстати, в отличие от некоторых других оконных систем, X Window позволяет разбить ваше рабочее поле на несколько частей, сравнимых по размеру с размером экрана. Обычно, в оконных менеджерах по умолчанию настроено 4-6 таких экранов.
Так что вашим окнам не обязательно толпиться на маленьком экранчике...
Установка новой программы (из архива tar.gz): Итак, поиски позади - вы обладатель нужной вам программы app. Обычно программы для Unix распространяются в виде архивов tar.gz (то есть, сначала применяется "архиватор" tar, а затем работает "компрессор" gzip). Если вы - не администратор системы, лучше попросить администратора поставить "нужную всем и так необходимую программу". Иначе установка может не быть завершена до конца (см. ниже)
Прежде всего, выберите (или создайте) пустую директорию, в которой распакованное содержимое архива не будет никому мешать. Предположим, что это директория /home/user/src/newapp.
Скопируйте архив в эту директорию (на всякий случай копию пока не стирайте):
cp app.tar.gz /home/user/src/newapp
Теперь можно заняться распаковкой:
gzip -d app.tar.gz
tar -xf app.tar.gz
Перед нами - распакованное содержимое. Если вы используете mc, предыдущий шаг мог выглядеть просто как нажатие Enter на имени архива. Наша следующая задача - узнать, как установить данную программу.
Прежде всего, посмотрите файлы с названиями README и INSTALL. В них должны быть указания по установке (часто на английском, но пусть это вас пока не смущает)
Если вы получили исходные тексты программы, то вам ее нужно сначала откомпилировать. (Исходные тексты обычно имеют буквы src в названии архива, а бинарная поставка для Linux как правило содержит буквы ELF, тоже в названии архива.)
Если у вас исходные тексты:
если вы ничего не поняли в английском тексте, поищите следующие файлы: configure или Makefile. Они должны называться именно так, а не, скажем, Makefile.in. Если вы видите файл configure, а он должен быть исполняемым фалом, смело попробуйте ввести команду:
$./configure
Полагаю, что слово "error", окруженное звездочками вы не получили, а это значит, что сработала автоконфигурация и вы можете приступить к следующему этапу. Этот этап состоит в указании команды
$make
К сожалению, иногда нужно еще что-то указывать, кроме make. Посмотрите, нет ли в README или INSTALL указаний на этот счет. Частые случаи:
$make all
$make app, где app -- имя программы
Предыдущий шаг (make) должен также закончиться без ошибок. (Вы уже знаете, что ошибка по-английски -- error, А если она особенно нехорошая, то и fatal error). В вашем каталоге должны появиться исполняемые файлы. Теперь вам нужно стать суперпользователем, чтобы установить программу для работы в системе. Заметим, что если у вас нет пароля суперпользователя (это говорит о том, что вы -- не администратор данной системы), то вам следует обратиться к администратору и попросить поставить данную программу. В некоторых случаях вы сможете использовать программу в том виде, в котором она есть, но все-таки лучше установить ее по-хорошему.
Итак, вы даете команду su, вводите пароль суперпользователя и говорите:
make install
(Заметьте, что приглашение теперь не $, а &doubledagger;) Если инсталляция прошла без ошибок -- попытайтесь вызвать программу по ее имени. Обычно программы устанавливаются в каталог /usr/local/bin.
Если у вас бинарные исполняемые файлы:
если в директории есть файл makefile, можно попробовать:
make install
Иначе можно попробовать переписать программу в каталог /usr/local/bin и наслаждаться. Конечно, вам могут потребоваться привилегии суперпользователя.
Если что-то из вышеперечисленного не получилось, другого пути, как внимательно прочитать документацию, просто нет. Впрочем, лучше читать документацию до того, как вы что-то ставите, а не после.
В RedHat Linux и SuSe Linux программы поставляются в так называемых пакетах rpm (package) и их установка происходит по-другому, более просто. Если же у вас система Linux Debian, то там есть свой стандарт пакетов: deb.