Основные unix команды, которые могут пригодиться в процессе работы.
Список команд
ls — Список файлов в текущей директории
pwd — Вывести путь к текущей директории
tee — Используюется для вывода данных на экран и в файл одновременно
cd [директория]— Сменить директорию
cp [что копировать][куда копировать] — Копировать файлы
mv [что перемещать][куда перемещать] — Переместить или переименовать файл
ln -s [на что сделать ссылку][имя ссылки] — Создать символическую ссылку
rm [файлы] — Удалить файлы
mkdir [директорию] — Создать новую директорию
rmdir [директорию] — Удалить пустую директорию
find -name «имя файла» — Найти файл с именем «имя файла» (ONLINE построитель FIND)
chmod [права доступа][файл] — Изменить права доступа файлов
tar — Предназначена для архивации груп файлов и каталогов
df — Список всех файловых систем по именам устройств, сообщает их размер, занятое и свободное пространство и точки монтирования
Обзор unix команд
vi filename — Вызов редактора vi для редактирования файла filename
Чтобы запустить редактор vi, используйте команду vi, а также имя файла в качестве параметра.
vi example_file.sh
Клавиши | Действие |
[i] | Для перехода в режим вставки нажмите клавишу [i]. Это позволит вносить изменения в файл. |
[Esc] | Нажатие клавиши [Esc] в любое время отключает режим вставки и включает нормальный режим. |
[w] | Записывает в файл изменения. Перейдите в нормальный режим, нажмите [Shift]-[:], [w] и в завершение нажмите [Enter]. |
[q] | Закрывает vi. Перейдите в нормальный режим, нажмите [Shift]-[:], [q] и в завершение нажмите [Enter]. |
В vi существует множество других операций. Для этого введите в командной строке man vi.
Вы можете также почитать vim tutorial, введя в командной строке vimtutor.
►
find — Команда поиска файлов, используемая в UNIX‐подобных операционных системах.
Пример. Найти все файлы, начиная с текущей директории, название которых начинается на my:
find . -name 'my*'
Ключ | Действие |
-name | искать по имени файла, при использовании подстановочных образцов параметр заключается в кавычки |
-type | тип искомого: f=файл, d=каталог, l=ссылка (link) |
-size | размер: указывается в 512-байтных блоках или байтах (признак байтов — символ «c» за числом) |
-mtime | время последнего изменения файла |
-newer | искать файлы созданные позже указанной даты |
-delete | удалять найденные файлы |
показывает на экране найденные файлы | |
-exec command {} \; | выполняет над найденным файлом указанную команду и подставляет вместо {} текущий файл. |
-ok | перед выполнением команды указанной в -exec, выдаёт запрос |
-prune | используется, когда вы хотите исключить из поиска определённые каталоги |
Примеры использования unix команд
ls | grep '\.sh' | sort | tee test1.log
Получает список содержимого текущей директории, который фильтруется, оставляя только строки содержащие «.sh», затем этот отфильтрованный список лексически сортируется и окончательный результат помещается в файл test1.log и выводиться на экран.
find . \( -name "my*" -o -name "qu*" \) -print
Найти все файлы, начиная с текущей директории, название которых начинается на my или qu. Обратите внимание, что по умолчанию все аргументы соединены с помощью логического и (опция «-a»). Если необходимо объединить несколько аргументов логическим или — используйте опцию «-o».
find /. -name 'test_run.env' 2>/dev/null
Найти файл test_run.env. Дополнительно исключаем ошибку доступа «Permission denied».
find / -mmin -1 -print
Вывести список файлов во всей файловой системе, изменённых в течение последней минуты.
find / -mtime +31 -print
Вывести список файлов во всей файловой системе, которые были изменены более 31 дня назад.
find . -name "oldfile.name" -exec cp newfile.name {} \;
Найти и заменить текст файла oldfile.name на текст файла newfile.name во всех подпапках.
tar cvf - -C $FILE_DIR --exclude '.svn' . | tar xvf - -C $COPY
Скопировать содержимое дирректории $FILE_DIR, кроме файлов «.svn», в новую дирректорию $COPY.
find $FILE_DIR -name "newfile.name" -exec cp {} $COPY \;
Находим файл «newfile.name» в дирректории $FILE_DIR и копируем его в дирректорию $COPY.
find . ! -name "test.log" -a -name "*.log"
Вывести все файлы в текущей дирректории с расширением «.log», кроме файла «test.log»
find $APPL_TOP -name "FORM_NAME.fmx" -exec strings -a {} \; | grep Header
Получить информацию о версии формы
find $JAVA_TOP/oracle/apps/ -name "NAME.class" -exec strings -a {} \; | grep '$Header'
Получить информацию о версии java класса
find $JAVA_TOP/oracle/apps/ -name "*VO.xml" -type f -exec grep -l "fnd_global" {} \;
Найти все файлы «*VO.xml» с текстом «fnd_global»
echo "test.txt"|awk -F . '{print $NF}' txt
или
fileName="test.txt" formatFile=`echo "$fileName" | awk -F . '{print $NF}'` echo $formatFile txt
Получить формат файла
basename /usr/bin/fsort.log fsort.log basename /usr/bin/fsort.log .log2 fsort.log basename /usr/bin/fsort.log .log fsort
Убирает имена каталогов и суффикс из имени файла. Если суффикс задан и идентичен концу имени, то он также удаляется из имени.
dirname /usr/bin/fsort.log /usr/bin dirname fsort.log .
Получить путь к файлу
sed -e 's/"RU"/"US"/g' file1 > file2
Изменить в файле file1 строку <"RU"> на строку <"US"> и поместить в новый файл file2
chmod a=rwx file_name
Все права для всех на файл — чтение, изменение, выполнение
to_process=`echo "$file" | grep ".java"`
Положить в переменную to_process значение $file, только если оно содержит подстроку «.java»
echo "Start install $(date +%d-%m-%Y" "%H:%M:%S)"
Вывести текущую дату и время
По мере появления, буду добавлять сюда новые unix команды (примеры использования).
Последние комментарии