На этой странице собраны упражнения по основным командам для манипуляции с файлами и директориями из командной строки Linux. Каждая из этих команд выполняет одно простое действие, но в дальнейшем может быть использована для составления более сложных цепочек команд.
Перед тем как начать — первый простой вопрос:
Как получить справку по команде ssh? ответ
man ssh
Основные команды для работы с файлами
Как посмотреть текущую рабочую директорию? ответ
pwd
Как сменить рабочую директорию? ответ
cd
например, cd /var/www/
Как перейти в родительскую директорию? ответ
cd ..
Как вернуться в домашнюю директорию? ответ
cd — вызов команды без аргументов приводит к переходу в директорию, указанную в переменной окружения $HOME.
Как вывести список файлов в директории? ответ
ls — вывести список файлов в текущей директории
ls /var/log/ — вывести список файлов в директории /var/log/
ls -l — вывести подробный список файлов
Как посмотреть вермя последнего изменения/доступа к файлу /tmp/test.txt? ответ
ls -l /tmp/test.txt — посмотреть время последнего изменения файла
ls -lu /tmp/test.txt — посмотреть время последнего доступа к файлу
stat /tmp/test.txt — показывает 3 временные метки:
- Access — время последнего доступа к файлу (любое открытие файла для чтения: просмотр, поиск по файлу и т.п.)
- Modify — время последнего изменения файла
- Change — время изменения статуса файла (прав доступа, владельца, изменение файла).
Как создать новую директорию test? ответ
mkdir test
Как создать пустой файл? ответ
Существует множество способов создать пустой файл. Вот некоторые из них:
- cp empty.txt empty1.txt — скопировать любой другой пустой файл
- touch empty.txt — «потрогать» несуществующий файл
- :> empty.txt — перенаправить в файл вывод команды, которая ничего не делает
- vi empty.txt, затем сразу :wq — открыть файл и сохранить его пустым
Как создать файл /tmp/2mb.txt размером 2Mb? ответ
dd if=/dev/zero of=2mb.txt bs=1M count=2
если в предыдущей команде задать bs=1MB, то файл будет размером 2_000_000 байт.
в данном примере файл будет заполнен нулевыми байтами (0x00).
Как узнать тип файла? ответ
file
например
$ file empty.txt
empty.txt: empty
$ file /usr/bin/perl
/usr/bin/perl: symbolic link to `perl5.16.3'
$ file /usr/bin/perl5.16.3
/usr/bin/perl5.16.3: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, stripped
$ file index.html
index.html: HTML document, UTF-8 Unicode text, with very long lines
Как переименовать файл? ответ
mv имя_файла новое_имя_файла
Как удалить файл/директорию? ответ
rm имя_файла — удалить файл
rmdir имя_директории или rm -r имя_директории — удалить директорию
shred -uv имя_файла — удаление файла для параноиков (без опции -u просто перезаписывает содержимое файла мусором)
Как создать символическую/жесткую ссылку на файл/директорию? ответ
ln -s имя_файла имя_ссылки — создаём символическую ссылку на файл
ln -s имя_директории имя_ссылки — создаём символическую ссылку на директорию
ln имя_файла имя_жесткой_ссылки — создаём жесткую ссылку на файл
в обычных условиях создать жесткую ссылку на директорию невозможно
Как посмотреть размер файла? ответ
ls -l имя_файла — размер файла в байтах
ls -lh имя_файла — размер файла в более привычном формате
Как как узнать размер директории? ответ
du -s имя_директории — размер места в килобайтах (блоках по 1024 байт), которое директория со всем своим содержимым занимает на диске
du -sh имя_директории — в более привычном формате
Как узнать сколько свободного места осталось на разделе диска? ответ
при помощи команды df место_монтирования_раздела или просто df
df -h выведет размеры не в килобайтах, а в более удобном формате.
df -ih выведет информацию о количестве использованных и свободных инодов
Работа с текстовыми файлами
Как сравнить два текстовых файла? ответ
diff файл_1 файл_2 или diff -a файл_1 файл_2
Как посчитать количество строк в текстовом файле? ответ
wc -l имя_файла
или awk ‘END {print NR}’ имя_файла
а можно открыть файл в текстовом редакторе vi имя_файла и посмотреть кол-во строк CTRL+G
Как вывести на экран отсортированные строки текстового файла? ответ
sort имя_файла
Как удалить дубли строк из файла? ответ
sort -u имя_файла
или sort имя_файла | uniq
Как дописать содержимое одного текстового файла в конец второго? ответ
cat файл_1 >> файл_2
Как разбить текстовый файл на несколько по 100 строк в каждом? ответ
split -l 100 имя_файла 100-
в результате работы этой команды в директории появятся файлы 100-aa, 100-ab… содержащие по 100 строк из исходного файла. Если исходный файл содержал число строк не кратное 100, то в последнем файле будет меньше ста строк.
Как вывести на экран первые 30 строк файла? ответ
head -n30 имя_файла
Как вывести на экран последние 30 строк файла? ответ
tail -n30 имя_файла
Как посмотреть содержимое текстового файла? ответ
cat имя_файла — вывести файл на экран целиком
more имя_файла — выводить файл на экран постранично (пробел — перейти к следующей странице, enter — на строку вниз)
less имя_файла — выводить файл на экран с возможностью перемещаться по нему вверх и вниз
vi имя_файла или nano имя_файла или emacs имя_файла — открыть файл в любимом текстовом редакторе
Как вывести на экран строки текстового файла /tmp/file.txt начинающиеся со слова ‘START’? ответ
sed -n ‘/%$@~*!G4;:%#`START/ p’ имя_файла
grep ‘%$@~*!G4;:%#`START’ имя_файла
Как вывести на экран содержимое текстового файла без однострочных комментариев (строка комментария начинается с символа #)? ответ
sed -n ‘/%$@~*!G4;:%#`[%$@~*!G4;:%#`#]/ p’ имя_файла
grep -v ‘%$@~*!G4;:%#`#’ имя_файла
Как среди нескольких файлов в директории найти те, которые содержат слово ‘test’? ответ
grep ‘test’ * — поиск во всех файлах в текущей директории
grep ‘test’ файл_1 файл_2 файл_3 — поиск только в указанных файлах