Операции с файлами и каталогами linux: как выполнять правильно

Если вы гуру в Linux, в данной статье вы не найдете ничего нового, но если вы только начинаете разбираться, или если вы уже имеете некоторый опыт работы с Linux, но вам не довелось разобраться в принципах работы в терминале — эта статья покажет основные команды, необходимые при работе в нем и, я надеюсь, вы убедитесь, что в некоторых случаях в терминале более удобно работать, чем в графической оболочке.

Подробный обзор

Вариант первый: перенаправить вывод только в файл

Чтобы использовать перенаправление bash, вы запускаете команду, задаете оператор > или >> , а затем указываете путь к файлу, на который вы хотите перенаправить вывод.

  • > перенаправляет вывод команды в файл, заменяя существующее содержимое файла.
  • >> перенаправляет вывод команды в файл, добавляя вывод к существующему содержимому файла.

Технически это перенаправляет «stdout» – стандартный вывод, то есть экран, – в файл.

Вот простой пример. Команда ls выводит список файлов и папок в текущем каталоге. Так. Когда вы выполните следующую команду, ls выведет список файлов и папок в текущем каталоге. Но он не будет выводить их на экран – он сохранит их в указанном вами файле.

Вариант первый: перенаправить вывод только в файл

ls>/path/to/file

Вам не нужно указывать путь к существующему файлу. Укажите любой допустимый путь, и bash создаст файл в этом месте.

Если вы просмотрите содержимое файла, вы увидите вывод команды ls . Например, команда cat выводит содержимое файла на терминал:

cat/path/to/file

Помните, что оператор > заменяет существующее содержимое файла выводом команды. Если вы хотите сохранить вывод нескольких команд в одном файле, вместо этого вы должны использовать оператор >> . Например, следующая команда добавит системную информацию к указанному вами файлу:

uname -a >>/path/to/file

Если файл еще не существует, bash создаст его. В противном случае bash оставит существующее содержимое файла в покое и добавит вывод в конец файла.

Вариант первый: перенаправить вывод только в файл

Когда вы просмотрите содержимое файла, вы увидите, что результаты вашей второй команды были добавлены в конец файла:

Вы можете повторять этот процесс столько раз, сколько хотите, чтобы добавить вывод в конец файла.

Зачем нужен Терминал?

Есть три причины, которые делают Терминал незаменимым инструментом для исследователей, анализирующих большие массивы данных:

  • он позволяет программировать манипуляции с файлами и папками в операционной системе
  • Внутри него можно запускать другие программы и программировать их взаимодействие друг с другом
  • Через него осуществляется работа с серверами и суперкомпьютерами, позволяющими анализировать гигабайты данных в сотни раз быстрее, чем на персональном компьютере

Разберем каждый из этих аспектов подробнее.

Терминал, как манипулятор файлов и папкок

Большинству пользователей нет необходимости использовать Терминал благодаря графической оболочке их операционной системы. Однако, без него не обойтись, когда речь идет о манипуляциях с файлами и папками более сложными, чем: «скопировать документ из одной папки и вставить в другую». Я приведу простой пример, показывающий ограниченность использования графической оболочки операционной системы.

Допустим, мне нужно переименовать фотографию и добавить к текущему названию дату, когда эта фотография была сделана. Что может быть проще, скажите Вы: «открой свойства файла, скопируй дату создания файла, закрой окно «Свойства» и вставь дату в название файла». Так и есть, все довольно просто, вот только повторить это действие нужно для всех фотографий на моем компьютере (а их у меня более 25 тысяч). Очевидно, что если я буду делать это подобным образом, то это задание отнимет у меня несколько недель.

Читайте также:  Администратор Linux, разбор профессии: от скилов до зарплаты

Решение этой же задачи в Терминале займет не более получаса даже у начинающего пользователя. Фокус в том, что в Терминале пользователь может программировать действия, делегируя компьютеру рутинную работу. В разных типах эмуляторов терминала – разные языки программирования, но вероятно самым распространенным в наши дни является язык bash (о нем скоро будет отдельная статья).

Использование Терминала для создания скриптов

Другая важная особенность эмуляторов терминала – это возможность запуска в нем других программ, чтобы автоматизировать процессы в программах и обеспечить автономное взаимодействие между ними. Если входные и выходные данные этих программ оформить в виде файлов, то Терминал сможет запускать последовательно программы. Алгоритм будет напоминать цепочку из таких действий: запустить программу А, загрузить туда входные данные (файл А), экспортировать результаты анализа в файл B, закрыть программу A, запустить программу B, загрузить туда файл B, ну и так далее…

Таким образом, миллионы файлов могут быть проанализированы автоматически и в быстрые сроки. Эта особенность делает Терминал незаменимым инструментом среди биоинформатиков, генетиков и эволюционных биологов, работающих с геномами организмов, которые в оцифрованном виде представляют из себя множество текстовых файлов оформленных в разных форматах.

Управления суперкомпьютерами и серверами через Терминал

Терминал является не только окном в операционную систему персонального компьютера, но также и в операционную систему сервера или суперкомпьютера, который может находиться в тысячах километров от Вашего текущего месторасположения. Через эмулятор терминала на суперкомпьютер можно подавать алгоритмы (bash-скрипты), выполнение которых на Вашем компьютере могло бы занять неделю. Благодаря своей мощности суперкомпьютер проведет расчёты за считанные часы. Подобный подход позволяет проводить анализ больших массивов данных в кратчайшие сроки.

Как правило, на суперкомпьютерах и серверах стоят версии операционной системы Linux. Так как различий между эмуляторами терминала на Линуксе и на Маке практически нет, в дальнейших статьях я буду писать только об эмуляторах терминала, работающих на языке программирования bash (например, программа Terminal).

Терминал Linux. Создание, удаление, копирование, перемещение, переименование файлов и директорий

C навигацией разобрались, теперь научимся создавать, удалять, копировать, перемещать файлы и директории (каталоги) в терминале Linux.

Комментирование приветствуется.

Терминал Linux. Создание, удаление, копирование, перемещение, переименование файлов и директорий

Создание файлов и директорий в терминале Linux

Текстовый файл в терминале Linux можно создать тремя способами.

1. С помощью команды touch:

Вводим команду touch, затем путь и название нового файла.

Терминал Linux. Создание, удаление, копирование, перемещение, переименование файлов и директорий

touch /путь/к/файлу/название_файла

Например, создадим текстовый файл в текущей директории с именем :

2. С помощью перенаправления стандартного потока вывода любой команды

Терминал Linux. Создание, удаление, копирование, перемещение, переименование файлов и директорий
  • О перенаправлении стандартных потоках вывода в файл более подробно будет рассказано в одной из следующих статей о терминале Linux.
  • Создать файл можно также перенаправлением вывода любой команды в файл.
  • В общем виде команда будет следующей:

какая_нибудь_команда > /путь/к/файлу/наименование_файла

  1. То есть, команда с выводом, затем галочка вправо >, означающая перенаправление вывода команды в файл и путь к файлу.
  2. Например, перенаправим вывод справки команды ls в файл, который будет создан (а если такой файл есть, то он будет полностью перезаписан):
  3. Но это мы создали не пустой файл, а если хотим создать пустой, то воспользуемся командой echo c переданной ей пустой строкой (две одинарных ковычки) и перенаправим это в файл:

3. С помощью любого текстового редактора, консольного или с графическим интерфейсом

Терминал Linux. Создание, удаление, копирование, перемещение, переименование файлов и директорий
  • Передаем команду запуска любого текстового редактора и путь к файлу.
  • Самый простой консольный текстовый редактор это nano:
  • Или с помощью текстового редактора с графическим интерфейсом, который установлен в Gnome по умолчанию:
  • Про манипуляции с текстом более подробно в одной из следующих статей о терминале Linux.

Создание директорий (каталогов) в терминале Linux

  1. Создание каталогов выполняется командой «mkdir» (от англ. make directory):
  2. Создать директорию с именем «dir1»:
  3. Создать две директории одновременно:
  4. Создать дерево директорий:

Удаление файлов и директорий в терминале Linux

Терминал Linux. Создание, удаление, копирование, перемещение, переименование файлов и директорий

Для удаления директорий используется команда «rmdir» (от англ. remove directory):

Удаляются директории аналогично, как и создаются. Такие же команды.

Удаление файлов в терминале Linux

Терминал Linux. Создание, удаление, копирование, перемещение, переименование файлов и директорий

Для удаления файлов используется команда «rm» (от англ. remove).

  • Работает очень просто, пишете команду rm и путь к файлу, который хотите удалить:
  • Удалить файл с именем «file1»:
Читайте также:  Как добавить меню приложений в стиле Windows в GNOME и KDE Plasma

Но команда «rm» позволяет удалять не только файлы, но и директории (каталоги) вместе с их содержимым.

  1. Удалить директорию с именем «dir1» и рекурсивно всё её содержимое:
  2. Удалить две директории и рекурсивно их содержимое:
  3. Также можно добавить параметр -f, который означает, что при удалении не будет запрашиваться подтверждение на удаление. Команды будут выглядеть так:
Терминал Linux. Создание, удаление, копирование, перемещение, переименование файлов и директорий

Перемещение и переименование файлов и директорий в терминале Linux

Для перемещения и переименовывания файлов и директорий (каталогов) используется команда «mv» (от англ. move).

Всё очень просто. Чтобы переименовать файл, выполняем команду:

mv название_файла новое_название

Терминал Linux. Создание, удаление, копирование, перемещение, переименование файлов и директорий
  • Чтобы переместить файл:

Копирование файлов и директорий в терминале Linux

Для копирования используется команда «cp» (от англ. copy).

  1. Скопировать файл file1 и назвать его file2:
  2. Копировать директорию dir1 в директорию dir2:
  3. Копировать файл с именем file1 в директорию c именем dir1:
Терминал Linux. Создание, удаление, копирование, перемещение, переименование файлов и директорий

Справка о командах

  • У каждой команды присутствует множество параметров, чтобы узнать их, просто наберите команду и параметр —help:
  • Например:

КОПИРОВАНИЕ СОДЕРЖИМОГО ФАЙЛОВ В LINUX

Вы можете копировать не только сами файлы, они управлять их содержимым. Например, склеить несколько файлов в один или разрезать файл на несколько частей. Утилита cat используется для вывода содержимого файла, в комбинации с операторами перенаправления вывода Bash вы можете выполнять копирование содержимого файла linux в другой файл. Например:

 cat файл1 > файл2

Если файл был не пустым, он будет перезаписан. Или мы можем склеить два отдельных файла в один:

 cat файл1 файл2 > файл3

Сделать Ubuntu Boot to GUI

Чтобы отменить изменения и заставить Ubuntu загружаться в среду рабочего стола с графическим интерфейсом пользователя, отредактируйте /etc/default/grubфайл еще раз и удалите слово «текст» из кавычек GRUB_CMLDLINE_LINUX_DEFAULT, как показано на рисунке ниже.

Ubuntu Boot to GUI – Grub по умолчанию

Сохранить (Ctrl X, а затем «Y» в редакторе нано) и выйти. После перезагрузки вы должны напрямую связаться с графическим менеджером входа.

Таким образом, некоторые преимущества загрузки Linux в командную строку – это большая безопасность и меньшее использование аппаратных ресурсов. Поэтому, если вы запускаете домашний сервер Ubuntu, я настоятельно рекомендую вам сделать так, чтобы Ubuntu загружался в терминальную среду по умолчанию и запускал графический интерфейс по требованию. Если у вас есть другие мысли, пожалуйста, оставьте комментарий. Наслаждайтесь!

Источник записи:

Автозавершение ввода по нажатию клавиши Табуляции

Помимо знания команд, эффективности работы с командной строкой способствует функция автозавершения ввода, которая активируется по нажатию клавиши Tab. Использовать ее очень просто — набираете часть команды и нажимаете Tab, после чего будет подставлена недостающая часть команды. Данная функция работает как для обьектов файловой системы, так и для пакетов программ, служб и так далее. Например, если написать sudo apt-get i и нажать клавишу Tab, то в результате вы получите sudo apt-get install. Автозавершение ввода очень помогает в случае, если вы только приблизительно помните имя пакета программы, который нужно установить. Набрав первые несколько букв имени пакета и нажав Tab дважды, вы сможете увидеть все варианты и выбрать среди них тот, что нужен.

Back to top

Команды для операций с файлами

Команда Что делает
nano редактирование файла в редакторе nano
cp копирует файл1 в файл2
scp [email protected]:/path/to/ [email protected]:/path/to/other/ копировать файл с одного сервера на другой
scp [email protected]: /local/folder скачать файл с сервера на текущий компьютер в папку foder
scp [email protected]:~/ загрузить файл с текущего компьютера на сервер
rm удаляет файл (-v будет писать о том, что делает)
mv перемещает файл1 в файл2. Эта же команда используется и для переименования файла.
touch создание пустого файла
chmod задание прав доступа
chown пользователь файл смена владельца файла
grep вырезает нужные вам строки из текстовых файлов, которые содержат указанный пользователем текст. Например, grep «Include» /etc/apache2/ — покажет все строки из файла , содержащие слово Include.
grep -i -R «слово» найти «слово» во всех файлах и каталогах, включая вложенные. -i — капитализация букв не важна, -R — означает «рекурсивно».
tail вывод последних строк файлов
cat вывести все текстовое содержимое файла на экран или объединить содержимое нескольких файлов и вывести его на экран (выводит все подряд, а не страницу за страницей)
less просмотреть файл страница за страницей (пробел — следующая страница, b — предыдущая страница, v — редактировать, j или ↵ — ввести следующую линию)
Команда Что делает
nano имя файла редактирование файла в редакторе nano
cp файл1 файл2 копирует файл1 в файл2
scp [email protected]:/path/to/ файл [email protected]:/path/to/other/ каталог копировать файл с одного сервера на другой
scp [email protected]: /local/folder скачать файл с сервера на текущий компьютер в папку foder
scp [email protected]:~/ загрузить файл с текущего компьютера на сервер
rm файл удаляет файл (-v будет писать о том, что делает)
mv файл1 файл2 перемещает файл1 в файл2. Эта же команда используется и для переименования файла.
touch файл создание пустого файла
chmod задание прав доступа
chown пользователь файл смена владельца файла
grep вырезает нужные вам строки из текстовых файлов, которые содержат указанный пользователем текст. Например, grep «Include» /etc/apache2/ — покажет все строки из файла , содержащие слово Include.
grep -i -R «слово» каталог найти «слово» во всех файлах и каталогах, включая вложенные. -i — капитализация букв не важна, -R — означает «рекурсивно».
tail вывод последних строк файлов
cat файл вывести все текстовое содержимое файла на экран или объединить содержимое нескольких файлов и вывести его на экран (выводит все подряд, а не страницу за страницей)
less файл просмотреть файл страница за страницей (пробел — следующая страница, b — предыдущая страница, v — редактировать, j или ↵ — ввести следующую линию)

Работа с файлами

Следующие команды потребуются вам при работе с файлами разного типа и объёма:

  • cat — для относительно коротких файлов: cat ;
  • less — считывает текст не полностью, а небольшими фрагментами: less /etc/;
  • more — для длинных файлов;
  • tail -f — используется для просмотра растущего файла в окне интерактивного запуска кода.

Что вы можете сделать с двоичными файлами? На самом деле, вариантов не очень много:

Если вам требуется сравнить текстовые файлы друг с другом, введите следующие команды:

  • comm — отсортированные файлы будут строка за строкой;
  • diff — позволяет построчно выявить различия. Эта команда используется наиболее часто в силу богатого набора опций.

Файловые команды

cd /home — перейти в директорию ‘/home’cd .. — перейти в директорию уровнем вышеcd ../.. — перейти в директорию двумя уровнями вышеcd — перейти в домашнюю директориюcd

user — перейти в домашнюю директорию пользователя usercd — — перейти в директорию, в которой находились до перехода в текущую директориюpwd — показать текущюю директориюls — отобразить содержимое текущей директорииls -F — отобразить содержимое текущей директории с добавлением к именам символов, храктеризующих типls -l — показать детализированое представление файлов и директорий в текущей директорииls -a — показать скрытые файлы и директории в текущей директорииls *[0-9]* — показать файлы и директории содержащие в имени цифрыtree — показать дерево файлов и директорий, начиная от корня (/)mkdir dir1 — создать директорию с именем ‘dir1’mkdir dir1 dir2 — создать две директории одновременноmkdir -p /tmp/dir1/dir2 — создать дерево директорийrm -f file1 — удалить файл с именем ‘file1’rmdir dir1 — удалить директорию с именем ‘dir1’rm -rf dir1 — удалить директорию с именем ‘dir1’ и рекурсивно всё её содержимоеrm -rf dir1 dir2 — удалить две директории и рекурсивно их содержимоеmv dir1 new_dir — переименовать или переместить файл или директориюcp file1 file2 — сопировать файл file1 в файл file2cp dir/* . — копировать все файлы директории dir в текущую директориюcp -a /tmp/dir1 . — копировать директорию dir1 со всем содержимым в текущую директориюcp -a dir1 dir2 — копировать директорию dir1 в директорию dir2