Учебная страница курса биоинформатики,
год поступления 2013
Как это сделать в linux
Приглашение командной строки
Как понять, что передо мной - командная строка bash для ввода команд?
Для пользователя loven-doo на kodomo приглашение командной строки выглядит так:
loven-doo@kodomo:~/term2/block1/pr1$
Здесь ~/term2/block1/pr1 - имя текущей (она же называется рабочей) директории
В ниже приглашение командной строки обозначается так:
...$
После него, и только после него, введенный вами текст попадает на вход bash - интерпретатору командной строки.
Что случилось, если нет приглашения командной строки для ввода текста?
Это значит, что вы общаетесь с другой, вызванной вами ранее и не завершившейся, программой.
Как прервать выполнение другой программы и получить приглашение командной строки?
В большинстве случаев достаточно нажать клавиши
Ctrl+c
Выполнение программы принудительно завершается; появляется приглашение командной строки.
Некоторые программы редактирования текстов понимают q (от quit, выйти), но не понимают Ctrl+c.
Директории
Какие специальные обозначения директорий понимает linux?
Обозначение |
Директория |
Пример команды |
Результат |
/ |
корневая директория сервера, в нашем случае kodomo |
ls / |
получить список файлов и поддиректорий корневой директории kodomo |
~ |
корневая директория пользователя |
ls ~ |
получить список файлов и поддиректорий своей корневой директории - той, что видите как H: в Windows |
. |
текущая директория |
find . -name 'M*' |
В текущей директории найти все файлы, начинающиеся с M |
.. |
родительская директория по отношению к текущей |
cd .. |
перейти в родительскую директорию |
Как пользователю loven-doo из текущей директорией ~/term2 посмотреть содержимое директории /term1/block1/pr3 пользователя darkvampirewolf?
Вариант 1 - указать полный путь. Не забудьте: полный путь начинается с корневой директории /
...$ ls /home/students/y13/darkvampirewolf/term1/block1/pr3
Вариант 2 - подняться на две директории выше и спуститься к нужной
...$ ls ../../darkvampirewolf/term1/block1/pr3
Как узнать полный путь к текущей директории?
...$ pwd
Как создать поддиректорию 'credit' текущей директории?
...$ mkdir credit
Как удалить поддиректорию 'temp' текущей директории?
...$ rmdir temp (от remove, удалить)
До этого все файлы из temp должны быть удалены
Как перейти в поддиректорию 'credit` текущей директории?
...$ cd credit
Директория credit становится текущей.
Файлы
Как создать пустой файл с именем new_file?
...$ > new_file
Создается файл new_file и в него перенаправляется выходной поток, который пустой
Как создать новый файл new_file с одной строкой текста "Date: Fab. 10, 2014"?
...$echo "Date: Fab. 10, 2014" > new_file
Как создать новый файл new_file с несколькими строками текста?
...$cat - > new_file
cat (от concatenate, объединить) позволяет объединить несколько файлов в один.
"-" обозначает входной поток. Поэтому предлагается ввести текст, Enter - для перехода на новую строку. Завершение ввода текста - Ctrl+d
Как ДОПИСАТЬ строку "The END" в конец файла new_file?
...$echo "The END" >> new_file
Более сложный вариант с использованием cat
...$cat new_file - > temp
Содержимое файла new_file соединяется с текстом из входного потока (ввод текста, Ctrl+d) и перенаправляется в файл с именем temp
...$mv temp new_file
Переименовать temp в new_file
Замечание. Немножко подумав, вы сообразите, как вписать текст в начало файла
* Как просмотреть содержимое текстового файла new_file?
...$less new_file
Навигация - клавиша пробела и стрелки вниз и вверх.
Выход q
Более примитивный просмотрщик - more, выход Ctrl+c
* Как удалить файл new_file?
...$rm new_file
Будьте осторожны: команда rm не спрашивает три раза, действительно ли вы хотите удалить этот файл! Она доверяет вам и тут же файл удаляет безвозвратно.
bash скипт
- В простейшем варианте bash скрипт это текстовый файл, каждая строчка которого - команда. Эти команды исполняются одна за одной (как Jmol скрипты).
Первая строка должна содержать текст #!/bin/bash
- Принято, чтобы файл с bash скриптом имел расширение .sh
- Кириллицу не использовать!
- Пример - файл my_1st_bash_script.sh:
echo My script started! pwd > temp echo File temp created. It contains the path to working directory. ls >> temp echo File temp updated with the list of files in working directory. echo Bye-bye
- Файл ДОЛЖЕН БЫТЬ СОХРАНЕН как UNIX!!! (т.е. кодировка конца строки - одним байтом)
Перед запуском файл должен быть сделан исполняемым (для всех, чтобы преподаватель мог его сразу запустить для проверки) с помощью chmod
- Для запуска надо обязательно указать директорию! Например, так:
...$./my_1st_bash_script.sh
- Язык bash скриптов - полноценный язык программирования. На нем пишут сложные программы.
Маски файлов
- Некоторым программам на вход можно подать много файлов одновременно
- Например,
...$cp file1.txt file2.txt file3.txt tmp/
- копирует три файла в поддиректорию tmp
- Или
...$grep 'gene' file1.txt file2.txt file3.txt
- выводит строчки, содержащие слово gene, из перечисленных файлов
- Вместо перечисления многих файлов можно их описать маской. Например, так:
...$grep 'gene' file*.txt
- выводит строчки, содержащие текст gene, из всех файлов, в которых * заменена любым числом любых символов
Чтобы увидеть список файлов, выделяемых маской, полезно исполнить команду echo. Например,
...$echo file*.txt
- Читайте о масках файлов в др. документах.