воскресенье, 24 февраля 2013 г.

Наиболее используемые мной команды Linux. Часть 1

Добрый день.

Сегодня захотелось оставить заметку, о наиболее используемых мной команд Linux.
С кратким описанием и примером использования.
Примеры использования будут продемонстрированы на Ubuntu Server 12.10.

1. bc - интерактивный интерпретатор Си-подобного языка, позволяет выполнять вычисления с произвольной заданной точностью. Часто используется как калькулятор в командной строке.
$  bc 
и вычислим небольшой пример:
Чтобы выйти вводим quit и жмем Enter.
$ bc -h - вызывает справку по bc
$ man bc

2. cal - календарь. Если ввести cal без аргументов, то он выведет календарь на месяц. Если ввести только 1 параметр, то выведет календарь на год, который вы указали. Если ввести два параметра (месяц и год) то выведет только на заданный месяц.
$ cal 1 1970 #Начало "эпохи"
$ man cal

3. clear - Очистить окно терминала, так же можно воспользоваться комбинацией клавишь Ctrl+L.
$ man clear

4. date - выводе времени и даты.
$ date
$ man date

5. cat - объединяет файлы и выводит их на стандартный поток вывода. Так же часто используется для вывода содержимого файла.
Предположим, что у меня есть 3 файла: file1, file2, file3 с содержимым File1, File2, File3 соответственно.
$ cat file1 file2 file3 > file
или
$ cat file* > file
$ cat file

Второй пример: создадим еще 1 файл file4 с содержимым File4.
$ echo "File4" > file4
$ cat file >> file4
$ cat file4 

Про символы ">",">>" - будет описано чуть ниже, называется это - перенаправление вводы/вывода.
$ man cat

6. df - отчет об использовании дискового пространства.
Что бы вывод был в мегабайтах (более приятные цифры, чем в байтах) воспользуемся параметром -m.
$ df -m
Так как Ubuntu Server стоит на виртуальной машине, то и диск всего 8гб.
$ man df

7. mkdir - создать каталог. Если не указать специальные параметры, то каталог создается в зависимости от заданного вами/системой umask (обычно установлен 002), т.е. с полными правами для пользователя создавшего каталог, для группы этого пользователя и только на чтение и исполнение для всех остальных (исполнение = просмотр содержимого каталога).
$mkdir test
Что бы проверить создался ли каталог, воспользуемся командой ls:
$ ls -l 
$ man mkdir

8. echo - показывает текстовую строку.
$ echo "Hello World"
Так же с помощью перенаправления ввода/вывода ее часто используют для ввода информации в файл или вывода сообщения на экран/файл.
$ man echo

9. ls - выводит содержимое каталога. Очень полезная утилита.
Вот несколько примеров ее использования:
$ ls
$ ls -l # показывает информацию о файлах/папках (тип, права доступа, пользователя, дата и время модификации и имя).
$ ls -a #вывод всех, даже скрытых файлов в (в линуксе скрытые файлы начинаются с точки).

Так же можно группировать параметры, более подробно в:
$ man ls

10. rmdir - удалить пустой каталог.
$ rmdir test
$ man rmdir

11. du - оценка места на диске, занимаемого файлом/папкой.
$ du test/

$ man du

12. dmesg - выводит сообщения ядра при начальной загрузке Linux или настраивает их буфер. Очень полезная утилита, для анализа, что пошло не так во время загрузки.
$ dmesg
тут очень большой вывод, вот его кусочек:
$ man dmesg

13. wget - это открыто распространяемая утилита для загрузки файлов из интернета. Она поддерживает протоколы HTTP, HTTPS и FTP, загрузку с серверов прокси по протоколу HTTP.
Простейший пример использования:
$ wget http://cs323719.userapi.com/v323719803/571e/_ubBg5RrPg0.jpg 
Здесь мы скачали картинку с vk.com. Эта картинка будет показана, когда будем рассматривать команду tar.
$ man wget

14. file - выводит тип информации в файле.
Например:
$ file file1
$ file -ubBg5RrPg0.jpg #Выведем информацию о картинке, которую мы скачали, когда рассматривали wget.

15. free - показывает количество занятой и свободной памяти в системе. По умолчанию в байтах, что бы вывести в мегабайтах воспользуемся параметром -m.
$ free -m

16. hostname - выдает или устанавливает имя компьютера. Если вызвать эту команду без параметров, то она просто выведет имя компьютера. Если же задать параметр, то будет установлено новое имя компьютера.
$ hostname
$ sudo hostname ubuntu-server-1
$ hostname
$ man hostname

17. head - вывести первые строки файла. По умолчанию выводит первые 10 строк.
Например создадим файл со списком всех файлов/папок в корневом каталоге:
$ ls -l / > ls.txt
Удостоверимся, что в файле то, что нам необходимо:
$ cat ls.txt 
Приведу кусочек вывода:
$ head ls.txt
Видим, что вывелись только первые 10 строк.
$ man head

18. tail - вывести последние строки файла. По умолчанию так же 10 строк.
$ tail ls.txt
 У этой утилиты есть очень полезный параметр, который позволяет смотреть содержимое постоянно обновляющихся файлов, например логов.
$ tail -f file
Эта команда выведет 10 последних строк файла и по мере поступления новых записей в журнал, будут выводиться новые записи. Что бы завершить программу можно воспользоваться комбинацией клавиш: Ctrl+C.
$ man tail

19. cd - изменить рабочий каталог.
$ cd /home/wimbo # где wimbo имя пользователя.
$ man cd

20. pwd  - выводит имя текущего каталога.
Продолжим пример из рассмотрения команды cd.
$ pwd
$ man pwd

21. more/less - программы для удобного постраничного просмотра информации. Если команда или файл, вывод которых вы хотите просмотреть слишком большие, эти две команды помогут вам удобно просмотреть их содержимое.
$ cat file | less
$ cat file | more
Вывод содержимого файла file перенаправляется на вход программам less/more и вы можете прокручивать содержимое файла для его просмотра.
Единственное отличие less от more в том, что less позволяет прокручивать текст вперед и назад с помощью стрелок вверх и вниз, а more только с помощью клавиш Пробел и [B] вперед и назад.
$ man less
$ man more

22. sleep - задержка на указанное время. Команда чаще применяется в скриптах, чем в непосредственной работе в командной строке.
Понимает префиксы: s - секунд, m - минут, h - часов, d - дней.
 $ sleep 5s
И через 5 секунд команда завершится и появится приглашение на ввод следующей команды.
$ man sleep

23. sort - сортирует строки текстовых файлов. По умолчанию в алфавитном порядке. Сначала он объединяет все файлы и потом сортирует все строки полученного файла.
Пример:
$ cat file4 file2 file3 file1
$ sort file4 file2 file3 file1
Очень полезная и интересная утилита, имеет много полезных параметров.

24. uniq - выводит или пропускает повторяющиеся строки.Для начала нужно отсортировать строки, для выполнения этой команды. Вот пара примеров:
Вывести сколько раз каждая строка повторяется в файле:
Создадим файл uniq.txt:
$ cat file4 file2 file3 file1 file4 file3 > uniq.txt
$ sort uniq.txt | uniq -c

Другой пример:
Вывести только уникальные строки файла uniq.txt:
$ sort uniq.txt | uniq -u
$ man uniq

25. uname - сообщает информацию о данном компьютере и операционной системе. Если запускать без параметров, то команда выводит название ядра операционной системы:
$ uname
Чтобы вывести полную информацию, воспользуемся параметром:
$ uname -a

26. wc - печатает число байт, слов и строк в файле.
$ wc uniq.txt
Первый столбец - число строк;
Второй столбец - число слов;
Третий столбец - число символов;
Четвертый столбец - название файла.

27. whatis - показывает описание справочных страниц.
$ whatis wc

28. whoami - выводит имя пользователя под которым вы работаете в данный момент.
$ whoami

29. last - выводит список пользователей, зарегистрировавшихся в системе последними.
$ last
Есть несколько полезных параметров.

30. which - показывает полный путь к командам.
$ which grep

31. touch - изменяет временные штампы файла. Если файл указанный в параметре не существует  то он создается - очень часто используют именно этот способ создания новых файлов.
Например:
Изменим время модификации для файла file4 на 1 января 1970 года, 00:00.
Для начала проверим, какая дата установлена сейчас:
$ ls -l file4
$ touch -t 197001010000 file4
Формат задания даты [[ВВ]ГГ]ММДДччмм[.CC]
$ ls -l file4
man touch 

32. chmod - изменяет права доступа к файлу. Есть несколько способов задания прав.
Тут надо сделать небольшое отступление и сказать о правах доступа к файлам:
Файлы могут быть доступны на чтение (r), запись (w) и исполнение (x), также у файла есть права на доступ для пользователя создавшего его, для группы пользователя создавшего его и для всех остальных.
В выводе команды ls -l это первый столбец, без первого символа, который означает тип файла.
Пример 1:
Отобразим права доступа для файла file3:
$ ls -l file3 | awk '{print $1,$9}' 
Тут встречается незнакомая нам команда awk (надеюсь я найду время для отдельной статьи по awk), суть в том, что мы выводим для file3 только поле с правами доступа и имя файла.
Первый символ - признак файла, если стоит прочерк "-",то это обычный файл.
Следующие три символа - обозначаю права для владельца файла, в данный момент для владельца файла назначены права на чтение и запись, так же как и для группы пользователя.
А для всех остальных пользователей назначены права только на чтение.

Что бы изменить права, например разрешить абсолютно всем пользователям чтение запись и исполнение:
$ chmod ugo+rwx file3
$ ls -l file3 | awk '{print $1,$9}'
Где u - пользователь, создавший файл;
g - группа пользователя, создавшего файл;
o - все остальные пользователи.


33. chown - изменить пользователя и/или группу файлов.
Посмотрим пользователя и групп для файла file2:
$ ls -l file2 | awk '{print $3,$4,$9}'
$ sudo chown test:test file2
Заранее создав пользователя test.
$ ls -l file2 | awk '{print $3,$4,$9}'


34. cp - копирование файлов и каталогов. 
$ cp file1 file51
Скопирует содержимое file1 в file51.
$ cat fie1 file51
и увидим одинаковое содержимое файлов.
Так же можно воспользоваться утилитой diff которая сравнивает два файла.
$ diff file1 file51 
Если эта команда ничего не вывела, то файлы идентичны.

35. mv - перемещает (переименовывает) файлы. 
Посмотрим какие файлы у нас есть:
$ ls
теперь переименуем файл file:
$ mv file newfile
и снова посмотрим, какие файлы у нас есть:
$ ls
И видим, что file уже нет, зато появился newfile.

36. rm - удаляет файлы или каталоги.
Удалим все файлы, имя которых начинается с file:
Список всех наших файлов:
$ ls
$ rm file*
$ ls
Чтобы удалить папку нужно задать параметр -r или -R, для того, что бы рекурсивно удалить содержимое каталога.
$ rm -r test/
$ ls

ВАЖНО! Команда rm очень опасная, следует использовать ее очень аккуратно, так как команда rm -rf /* может удалить абсолютно все ваши файлы в системе.

37. find - утилита поиска файлов. Очень мощная команда, нужно подробно изучить справочную страницу.
Например найдем все файлы в системе, которые заканчиваются на .log:
$ sudo find / -name *.log
А список всех файлов можно получить еще проще:
$ sudo find / > allfiles.txt

38. locate - поиск файлов по имени. Она ищет файлы по имени выбирая из базы. Но сначала нам нужно обновить эту базу другой утилитой updatedb
$ updatedb
$ locate *.log


39. bzip2 - утилита для сжатия данных, реализация алгоритма Барроуза - Уилера. Файлы сжатые этим архиватором имеют расширение .bz2
Сожмем наш файл newfile:
$ bzip2 newfile
$ ls
Чтобы разархивировать:
$ bunzip2 newfile.bz2
$ ls

40. gzip - также утилита архивирования, но с помощью алгоритма Лемпеля-Зива. Файлы сжатые этим архиватором имеют расширение .gz.
Опять таки сожмем наш файл newfile:
$ gzip newfile
$ ls
$ gunzip newfile.gz
$ ls

41. tar - очень крутая программка надстройка над gzip и bzip2. 

Например создадим архив bar.tar из файла newfile:
$ tar -cf bar.tar newfile
$ ls 
$ rm newfile
$ ls
$ tar -xf bar.tar 
$ ls

Так же эта утилита часто используется для разархивирования исходных кодов программ, распространяемых в формате tar.gz.
$ tar xfz *.tar.gz
Очень много полезных параметров, читаем ман.





Комментариев нет:

Отправить комментарий