pwd | сообщает полное имя текущей директории |
ls | показывает содержимое текущей директории |
cp <имя файла 1> <имя файла 2> | копирует файл 1 в файл 2 |
mv <имя файла 1> <имя файла 2> | переименовывает файл |
mv <имя файла> <имя поддиректории> | перемещает файл в поддиректорию |
rm <имя файла> | уничтожает файл |
mkdir <имя поддиректории> | создает поддиректорию |
cd <имя поддиректории> | переход в поддиректорию |
cd .. | выход из поддиректории (переход в родительскую директорию) |
more <имя файла> | просмотр содержимого файла (клавишами "пробел" и "Enter") |
man <команда> | выдает подробную информацию о команде |
Работая в UNIX, необходимо помнить о различии формата текстовых файлов
между UNIX и Windows. В Windows признаком конца строки служат два
байта с шестнадцатиричными кодами 0D и 0A, идущие друг за другом. В
UNIX эту роль выполняет один байт 0A. В результате программы UNIX воспринимают
символ 0D (так называемый "carriage return" "возврат каретки") как обычный
символ, что приводит к особенно неприятным последствиям в скриптах. К счастью,
редактор Far manager'а может сохранить ваш текстовый файл в любом формате,
для чего служит функция "сохранить как": <Shift+F2>.
Стандартные потоки
Каждое консольное приложение (то есть, попросту говоря, каждая
программа, с которой можно работать из командной строки) имеет
дело с тремя т.н. потоками: stdin,
stdout и stderr.
Поток stdin по-русски называется "стандартный поток ввода" и по умолчанию содержит то, что вы набираете на клавиатуре во время работы программы (например, в ответ на вопросы программы).
Потоки stdout и stderr это, соответственно,
стандартный поток вывода и стандартный поток ошибок, и по умолчанию
их содержание отображается в консольном окне. То есть, хотя это два
разных потока, различить их при обычной работе программы нельзя.
Однако можно перенаправить stdout на stdin другой
программы или в файл (см. следующий раздел),
при этом stderr будет продолжать выводиться на экран.
Перенаправление вывода
Символ > используется в интерпретаторах командной строки
bash и tcsh для перенаправления стандартного вывода (stdout) команды в файл.
Например, команда
ls > cur_dir.txtприведет к тому, что список файлов текущей директории окажется в файле cur_dir.txt При этом, если файл с таким именем уже существовал, то его старое содержимое исчезнет.
Чтобы дописать stdout команды в конец уже существующего файла, используется
сочетание символов
cat file2.txt >> file1.txtприведет к тому, что в файле file1.txt после его старого содержимого окажется еще и содержимое файла file2.txt (что делает команда cat, тем самым нетрудно догадаться).
Чтобы записать в файл stderr команды, в bash можно применить сочетание символов 2>, например:
entret -help 2> entret.help(entret, как и другие программы пакета EMBOSS, выдаёт свой help на stderr).
В tcsh сочетание 2> не действует, зато сочетание >& направляет в файл и stdout, и stderr.
Для направления stdout одной команды на вход (stdin) другой команды используется "pipe" (конвейер), задаваемый знаком | , например:
ls -l | moreпозволяет просмотреть программой more информацию о файлах в текущей директории.
К сожалению, в bash нет простого способа направить в конвейер stderr, равно как и добавить stderr в конец существующего файла. Если такое очень нужно, придется поменять интерпретатор, выполнив команду
tcshа затем использовать сочетания
пробел (а также табулятор и перенос строки); |
кавычки (" и '), обратная косая черта ( \ ) |
* ? [ ] { } |
> < | ; & |
$ ! ( ) ` ~ # |
Пробел и символ табуляции отделяют параметры друг от друга.
Кавычки и обратная косая черта
используются для передаче программам параметров, содержащих
спецсимволы (например, имен файлов с пробелами).
В одинарных кавычках все символы
(кроме, естественно, самой одинарной кавычки) воспринимаются буквально.
В двойных кавычках символы $ и ` (обратные кавычки) сохраняют
специальное значение (вызов содержания переменной и подстановка вывода
другой команды соответственно);кроме того, сочетание \$ воспринимается как (буквальный)
символ $, \" как символ ", а \` как символ ` (обратная кавычка). Все
остальные символы воспринимаются буквально.
Сочетание \ с любым символом воспринимается буквально.
Звездочка *, вопросительный знак ? и квадратные скобки [ ] используются для "масок" имен файлов. Например [0-9]* превращается bash-ем в список всех файлов текущей директории, чье название начинается с цифры.
Символы >, < и | предназначены для работы со стандартными потоками (см. выше).
Символ ! можно использовать для вызова команды из журнала команд.
Пользуясь символом ; (точка с запятой) можно исполнить одной строкой
последовательность из двух или более команд
этот символ разделяет строку на последовательно выполняемые команды.
Программа "grep"
Программа grep предназначена для вытаскивания из текстового файла
строк, содержащих некоторое слово. Например, если взять файл
some.needle, содержащий выдачу программы needle, и написать
grep Identity some.needleто на экране появится строка файла some.needle, содержащая информацию о проценте совпадений. Выдача идет в stdout, поэтому её легко перенаправить в файл или просмотреть программой more.
Важная особенность программы grep состоит в том, что если файл не указан, то grep берет данные для поиска строчек из stdin. Например, если из всей выдачи программы find_pair вам нужна только информация о нуклеотиде 234, можно написать такой конвейер:
find_pair 1xxx.pdb | grep 234и на экране появится все строки, содержащая набор символов "234" (предположительно такая строка будет одна и именно та, что нужна). Можно, разумеется, устраивать и цепочки grep'ов, перенаправляя вывод одного grep'а на вход другого.
Команда grep понимает некоторые спецсимволы, самые употребительные из которых: ^, $, . (точка), *, [ и ], а также \.
точка ставится вместо любого символа, например
grep t..p filenameвытащит из файла filename все строки, в которых встретились буквы t и p с двумя любыми символами между ними;
в квадратные скобки ставится набор символов, которые могут стоять на данном месте, например:
grep tr[iy]psin filenameвыдаст все строки из filename, содержащие слова tripsin или trypsin.
grep 'number [0-9]' filenameвыдаст все строки из filename, содержащие сочетания "number 1", "number 2" и т.д. Кавычки в примере стоят, чтобы bash не воспринял "number" и "[0-9]" как отдельные параметры.
шапочка ^ и доллар $ означают соответственно начало и конец строки. Например,
grep '^>' filenameвыдаст все строки из filename, начинающиеся с символа >
звёздочка * означает, что предыдущий символ может быть повторен сколько угодно раз. Например
grep 'number [0-9]* ' filenameвыдаст строки с сочетаниями "number 1087 ", "number 99 " и т.п.
наконец, \ используется для того, чтобы последующий символ воспринимался программой буквально, например
grep '\.ru' filenameнайдет строки, содержащие ".ru" (а не (любой символ)ru, как если бы \ перед точкой не стоял).
Многие спецсимволы grep являются также спецсимволами bash, поэтому (а также, например, для поиска слов, содержащих пробелы) первый параметр программы лучше всегда брать в одинарные кавычки.
Программа grep имеет две важные опции, а именно -v и -c.
Опция -v означает, что нужно выдать не строки, содержащие указанное
слово, а наоборот, строки его не содержащие. Опция -c означает,
что надо выдать лишь число таких строк, а не сами строки.
Online-учебники по UNIX