Linux: полезные команды
23.03.2009Работа с файлами и папками.
Посмотреть список файлов в текщем каталоге:
ls
Перейти в домашний каталог:
cd
Показать все файлы, имеющие в названии foo:
ls *foo*
Выведет:
foobar
foo
footer
ufoo
ufoo.txt
Показать все файлы, состоящие из трех любых символов:
ls ???
Выведет:
cat
foo
bar
f.c
Показать все файлы, включая подкаталоги:
ls -R
ls -R1 - выведет каждый файл с новой строки, а не по столбцам
Показать все файлы, включая подкаталоги, выводя при этом полный путь:
find . -print
Выведет:
./foo
./foo/bar
./foo/cats
./foo/cats/persian
Переименовать файл:
mv старое_имя новое_имя
Переименовать все файлы в папке, включая подкаталоги, заменяя в имени слово foo на слово bar:
for i in `find . -iname '*foo*' -print`; do mv -f "$i" `echo "$i" | sed 's/foo/bar/'`; done
Прочитать файл:
cat file
more file - выведет файл и, если он не поместился на экране, организует прокрутку
Вывести список файлов с прокруткой, если он не помещается на экране:
ls | more
Склеить файл file1 с file2 и записать в file3:
cat file1 file2 > file3
Склеить все файлы в папке в один большой файл:
cat * > bigfile
Удалить все файлы в текущей папке:
rm -fr * (очень осторожно с этой командой! Известны случаи безвозвратного удаления ВСЕХ файлов с компьютера из-за ошибки, допущенной при наборе)
rm -fr foo - удаляет все содержимое папки foo
Чтобы программа спрашивала разрешения на удаление каждого файла - нужно поставить опцию i вместо f: rm -ir *
f в данном случае подавляет всевозможные сообщения об ошибках и предупреждения.
Создать пустой файл:
touch empty_file
Кусочный вывод файлов:
head -n 5 file - выводит первые 5 строк файла
tail -n 15 file - выводит последние 15 строк файла (удобно для чтения логов)
head -n 5 file | tail -n 1 - прочитать только пятую строку из файла
Размер папки на диске вместе с содержимым:
du -h - выведет размер текущей рабочей папки
du -h folder - выведет размер папки folder
Сколько осталось места на диске:
df
Пакетная обработка картинок (сжатие, изменение размера и т. д.).
Отконвертировать все графические файлы в папке с расширением jpg в файлы типа png, предварительно сжав их до размера 80 пикселей:
for i in *.jpg; do convert $i -scale 80 ${i%.jpg}.png; done
Разъяснение
for это цикл и консольный интерпретатор умеет их понимать. Формат цикла: for var in `команда`; do ... ; done
for i in *.jpg означает «пройтись по всем файлам в каталоге с маской *.jpg»
далее идет команда convert (из пакета imagemagick), которая умеет всё что угодно по части изображений — очень мощный консольный графический редактор, хоть и не шибко быстрый. В данном случае ему даётся команда сохранить старый файл jpg под новым, png, и уменьшить его до 80 пикселей. Конструкция ${i%.jpg).png меняет расширение у файла, который хранится в переменной i с jpg на png. После выполнения всех подстановок команда примет вид: convert img.jpg -scale 80 img.png
Сжать все картинки/фотографии в папке до определенного размера (например, 1024 пикселей):
Этот пример аналогичен предыдущему. Нужно для каждого файла в папке выполнить команду convert img.jpg -scale 1024 img_small.jpg. Нужно добавить постфикс к названию картинки, иначе скрипт затрёт все оригинальные файлы не спросив на это разрешения! Если Вы хотите сжимать не jpg, а, скажем, png, нужно соответственно везде в команде заменить jpg на png.
for i in *.jpg; do convert $i -scale 1024 ${i%.jpg}_small.jpg; done
Работа с процессами и контроль за оперативной памятью.
Вывести количество свободной оперативной памяти на компьютере:
free
Результатом вывода будет что-то похожее на
total used free shared buffers cached
Mem: 1026836 1010108 16728 0 13656 612576
-/+ buffers/cache: 383876 642960
Swap: 1100412 95120 1005292
Здесь: total — памяти всего на машине, used — памяти использовано, free — памяти свободно, buffers — размер буферов, cached — размер кэша. Всё в байтах.Как правило, начинающие пользователи пугаются, увидев, что линукс съел практически всю оперативную память компьютера. Действительно, использовано памяти 1010108, а свободно 16728 (16 Мб). Всего памяти 1 Гб. Что самое парадоксальное, это правда, действительно вся оперативная память занята. С одной стороны страшно, но с другой — очень даже полезно. Ведь линукс — достаточно нетребовательная система, поэтому она всю свободную оперативную память она определяет под буферы и кэш (см два последних столбика). Кэш и буферы хранят не очень ценную информацию, но здорово ускоряют работу системы. Как правило в кэше сидят часто вызываемые программы и они будут запускаться мгновенно. Буфер копит в оперативной памяти данные, которые будут записаны на жёсткий диск, благодаря чему ОС не так часто его дёргает. В итоге мы видим, что под кэш и буферы отведено более 600 Мб памяти, а вторая строчка показывает, что на самом деле программами занято только 380 Мб. Самая нижняя сточка показывает размер файла подкачки и насколько он используется. Тем, кому кажется, что 380 мб — это много, скажу, что на машине работает торрент, мозилла, визуальный редактор, где я пишу эту статью, блокнот, файл-менеджер, консоль, аудиоплеер, сервер (PHP + MySql), аська, скайп.
© RPG
Назад