Часто используемые unix команды

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

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

ls – список файлов и каталогов в текущей директории

ls -al – форматированный список со скрытыми каталогами и файлами

чтобы посмотреть список файлов и их дату модификации:

find . -printf "%T@ %Tc %p\n" | sort -n

  • %Tk: File's last modification time in the format specified by k.
  • @: seconds since Jan. 1, 1970, 00:00 GMT, with fractional part.
  • c: locale's date and time (Sat Nov 04 12:02:33 EST 1989).
  • %p: File's name.

cd /dir – перейти в директорию /dir

cd – сменить на домашний каталог, аналог: cd ~/

pwd – показать текущий каталог

mkdir dir – создать каталог dir

показать разницу файлов в указанных директория:

diff -r dir1 dir2 - покажет файлы существующие только в dir1 and и только существующие в dir2
diff -r dir1 dir2 | grep dir1 - покажет файлы существующие только в dir1
diff -r dir1 dir2 | grep dir1 | awk '{print $4}' > difference1.txt

echo > /dir/file - пресечь файл до нулевой длинны

rm file – удалить file

rm -r dir – удалить каталог dir

rm -f file – удалить форсированно file

rm -rf dir – удалить форсированно каталог dir *

cp file1 file2 – скопировать file1 в file2

cp -r dir1 dir2 – скопировать dir1 в dir2; создаст каталог dir2, если он не существует

примеры:

скопировать файл: cp -rp /dir/file /to/dir/

скопировать директорию dir целиком: cp -rp /dir /to/dir/

скопировать только содержимое директории dir: cp -rp /dir/ /to/dir/

mv file1 file2 – переименовать или переместить file1 в file2. если file2 существующий каталог – переместить file1 в каталог file2

ln -s file link – создать символическую ссылку link к файлу file

touch file – создать file

cat > file – направить стандартный ввод в file

more file – вывести содержимое file

head file – вывести первые 10 строк file

tail file – вывести последние 10 строк file (просмотр последних записей в лог-файл: tail -f /var/log/maillog)

tail -f file – вывести содержимое file по мере роста, начинает с последних 10 строк

sed - потоковый текстовый редактор

примеры:

простая замена: sed -e 's|это|на это|g' /в/файле.txt > /записать/в/файл.txt

замена с экранированем: /usr/bin/sed -e "s|old\['SYSTEM'\]|new|g" /input.txt > /output.txt

Несколько замен объединены в одном файле subst.sed: sed -f subst.sed inputFileName > outputFileName

содержание файла subst.sed приблизительно может быть таким:

s|это|на это|g

s|old\['SYSTEM'\]|new|g

s|GLOBALS\['SYSTEM'\]\['config'\]\['1'\]|GLOBALS\['SYSTEM'\]\['config'\]\['server_name'\]|g

В свою очередь для замены в множестве файлов советую использовать такой баш-скрипт:

# ************ Change Variables Here ***********
echo "*****************************************"
echo " Search and Replace in Files Version 1.1 "
echo "*****************************************"

        for file in $(find . -type f -name '*.php')
          do
           sed -f /usr/home/replace.txt $file > tempfile
           mv tempfile $file
           echo "Modified: " $file
        done

echo "*********** Yea! All Done! **************"

а запускать его так:
cd /usr/dir
/bin/bash /usr/dir/replace

find - утилита поиска файлов

примеры:

нахождение php-файлов в которые внесены изменения:

c расширением php в прошедшие 7 дней (от текущего дня): find /dir/ -type f -mtime -7 -name '*.php' -print

измененные файлы и директории за последние 10 секунд: find /dir/ -cmin +1 -cmin -10

измененные между 2500 и 2800 минутами тому назад: find -cmin +2500  -cmin -2800

c расширением php между 15 и 17 днями тому назад (от текущего дня): find /dir/ -type f -mtime +15 -mtime -17 -name '*.php' -print

найти и удалить все файлы в директории, кроме файла file.tgz: find /dir/ ! -name 'file.tgz' -delete

найти и удалить все файлы в директории, кроме файлов file1.txt и file2.txt: find /dir/ -type f ! -name 'file1.txt' ! -name 'file2.txt' -delete

узнать количество файлов в директории: find /dir/ -type f | wc -l

найти и удалить директории в глубине уровня 3, относительно указанной find /dir/name/path/ -mindepth 3 -maxdepth 3 -type d | xargs rm -rf

Управление процессами

ps – вывести ваши текущие активные процессы (примеры: ps ax uf | more или ps ax -u | more)

top – показать все запущенные процессы

kill pid – убить процесс с id pid (kill -s 9 SID - чтобы наверняка)

killall proc – убить все процессы с именем proc *

bg – список остановленных и фоновых задач; продолжить выполнение остановленной задачи в фоне

fg – выносит на передний план последние задачи

fg n – вынести задачу n на передний план

kill -STOP 7727 – поставить на паузу процесс 7727. The eyes will stop moving when they are paused.

kill -CONT 7727 – снять с паузы процесс 7727

Права доступа на файлы

chmod octal file – сменить права file на octal, раздельно для пользователя, группы и для всех добавлением:

  • 4 – чтение (r)
  • 2 – запись (w)
  • 1 – исполнение (x)

Примеры:

chmod 777 – чтение, запись, исполнение для всех
chmod 755 – rwx для владельца, rx для группы и остальных.

посмотреть octal файла можно так: stat -c "%a" /path/file

примеры:

изменяем владельца и группу для директории: chown R yapro:www /usr/home/dir

изменяем владельца и группу всем дочерним директориям и файлам: chown -v -R yapro:www /usr/home/dir/

изменение прав доступа к файлам и папкам, рекурсивно: chmod -R 775 /home/dir/

использование вместе с командой поиска:

выставляем права директориям: find /home/dir/ -type d -exec chmod 775 {} \;

выставляем права php-файлам: find /home/dir/ -type f -name '*.php' -exec chmod 644 {} \;

Дополнительные опции: man chmod.

SSH

ssh user@host – подключится к host как user

ssh -p port user@host – подключится к host на порт port как user

ssh-copy-id user@host – добавить ваш ключ на host для user чтобы включить логин без пароля и по ключам

Поиск

locate file – найти все файлы с именем file

grep pattern files – искать pattern в files

grep -r pattern dir – искать рекурсивно pattern в dir
например найти в текущей директории и вывести пути к файлам: grep -r -l mytext ./*

command | grep pattern – искать pattern в выводе command

примеры:

grep -rl 'text' /dir/ -- рекурсивный поиск строки во всех файлах директории

grep -rl --include="*.php" "my text" /dir/ -- поиск только по файлам с расширением .php

grep -rl 'text' /path/ | grep -v '\.svn' -- поиск строки в файлах, расширение которых не заканчивается на .svn 

grep pattern file.txt --поиск pattern в файле file.txt, с выводом полностью совпавшей строкой
grep -o pattern file.txt  --поиск pattern в файле file.txt и вывод только совпавшего куска строки
grep -i pattern file.txt  --игнорирование регистра при поиске
grep -bn pattern file.txt   --показать строку (-n) и столбец (-b), где был найден pattern
grep -v pattern file.txt   --инверсия поиска (найдет все строки, которые не совпадают с шаблоном pattern)
grep -A 3 pattern file.txt   --вывод дополнительных трех строк, после совпавшей
grep -B 3 pattern file.txt   --вывод дополнительных трех строк, перед совпавшей
grep -C 3 pattern file.txt  --вывод три дополнительные строки перед и после совпавшей
grep -r pattern $HOME  --рекурсивный поиск по директории $HOME и всем вложенным
grep -c pattern file.txt  --подсчет совпадений
grep -L pattern *.txt  --вывести список txt-файлов, которые не содержат pattern
grep -l pattern *.txt  --вывести список txt-файлов, которые содержат pattern
grep -w pattern file.txt  --совпадение только с полным словом pattern
grep -f patterns.txt file.txt --поиск по нескольким pattern из файла patterns.txt, шаблоны разделяются новой строкой
grep -I pattern file.txt  --игнорирование бинарных файлов
grep -v -f file2 file1 > file3  --вывод строк, которые есть в file1 и нет в file2
grep -in -e 'python' `find -type f`  --рекурсивный поиск файлов, содержащих слово python с выводом номера строки и совпадений
grep -inc -e 'test' `find -type f` | grep -v :0  --рекурсивный поиск файлов, содержащих слово python с выводом количества совпадений
grep . *.py  --вывод содержимого всех py-файлов, предваряя каждую строку именем файла
grep "Http404" apps/**/*.py  --рекурсивный поиск упоминаний Http404 в директории apps в py-файлах
tail -n12345 /var/log/apache2/other_vhosts_access.log | grep -v " 200 " | grep -v " 304 " - посмотреть неудачные ответы на запросы (посмотрите так же др. классные примеры по работе с логами apache)

Системная информация

date – вывести текущую дату и время ( синтаксис: yy]mm]dd]HH]MM[.ss] )

пример установки времени на сервере (секунды вводить не обязательно):

date 1230100509.45 # в Linux и Solaris; или
date 0912301005.45 # в FreeBSD

cal – вывести календарь на текущий месяц

uptime – показать текущий аптайм

w – показать пользователей онлайн

whoami – имя, под которым вы залогинены

finger user – показать информацию о user

ОС

uname -a – показать информацию о ядре

cat /proc/version - более подробно

file /sbin/init - узнать разрядность ОС (или так: getconf LONG_BIT)

cat /etc/issue - реальное имя OC или на чем базируется данная OC

cat /proc/cpuinfo – информация ЦПУ

cat /proc/meminfo – информация о памяти

df – показать инф. о использовании дисков

du – вывести “вес” текущей директории

примеры:

вес указанной директории: du -shc /dir
вес директории указанной директории : du -shc /dir/*

размеры всех всех дочерних директории и файлов: du -hc /dir
размеры всех директории (включая скрытые) в текущей директории: du -sch .[!.]* * |sort -h

free – использование памяти и swap

whereis app – возможное расположение программы app

which app – какая app будет запущена по умолчанию

Архивация

tar cf file.tar dir – создать tar-архив с именем file.tar содержащий files

tar xf file.tar – распаковать file.tar

tar czf file.tar.gz dir – создать архив tar с сжатием Gzip

tar czf ~/архив.tar.gz /путь/к/архивируемому/каталогу/

/bin/tar -czf archive.tar.gz dir dir2/image.gif - запаковать сразу из двух мест

tar xzf file.tar.gz – распаковать tar с Gzip

tar cjf file.tar.bz2 – создать архив tar с сжатием Bzip2

tar xjf file.tar.bz2 – распаковать tar с Bzip2

gzip file – сжать file и переименовать в file.gz

gzip -d file.gz – разжать file.gz в file

примеры:

распаковываем zip-архив: unzip /home/file.zip -d /home/to/dir

создание tar-архива: tar -cz  -f "file.tgz" "/home/dir/"

распаковка tar-архива: tar -xz --directory="/usr/home/dir/" -f "file.tgz"

Жесткий диск

измерить скорость жесткого диска: dd if=/dev/zero of=testfile bs=64k count=16k conv=fdatasync

Сеть

ping host – пропинговать host и вывести результат

whois domain – получить информацию whois для domain

dig domain – получить DNS информацию domain

dig -x host – реверсивно искать host

netstat - показать содержимое различных структур данных, связанных с сетью, например проверим открытый порт 9123 и какая программа его открыла:

netstat -natp | grep 9123
tcp        0      0 0.0.0.0:9123            0.0.0.0:*               LISTEN      2622/java

telnet - богатая утилита, но обычно я ей проверяю открыт ли порт, например: 

telnet 127.0.0.1 9123
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.

Как видите, подключение установлено, а чтобы выйти (прервать подключение) нажмите одновременно две клавиши Ctrl + ] затем введите quit и нажмите клавишу Enter.  

например:

netstat -an | less

или посмотрим открытые порты:

sudo lsof -i
sudo netstat -lptu
sudo netstat -tulpn

wget file – скачать file

wget -c file – продолжить остановленную закачку

примеры:

скачивание файла с фтп-сервера: ftp http://site.ru/file.tgz

скачивание файла по http: wget http://site.ru/file.tgz

Почта

отправить содержимое файла на почту:

cat /dir/file | mail -s "my config" user@site.ru

отправить приатаченный файл на почту:

mail -a /dir/file -s "my config" user@site.ru

и программа mail даст возможность ввести сообщение, написали - нажимайте Ctrl+D и письмо отправится.

MySQL

mysqlcheck -u root -pPWD DB_NAME TABLE_NAME -r - починить таблицу

mysqlcheck -u root -pPWD DB_NAME TABLE_NAME -o - оптимизировать таблицу

Клавиатурные сочетания

Ctrl+C – завершить текущую команду

Ctrl+Z – остановить текущую команду, продолжть с fg на переднем плане или bg в фоне

Ctrl+D – разлогиниться, тоже самое, что и exit

Ctrl+W – удалить одно слово в текущей строке

Ctrl+U – удалить строку

!! – повторить последнюю команду

exit – разлогиниться

man command – показать мануал для утилиты по имени command

Полный список UNIX-команд можно найти на Википедии

p.s. чтобы работать с командами было веселей (удобней), советую разукрасить консоль:

$ nano ~/.bashrc

добавьте:

PS1='\[\033[01;31m\]\u\[\033[01;33m\]@\[\033[01;36m\]\h \[\033[01;33m\]\w \[\033[01;35m\]\$ \[\033[00m\]'

иногда, вместо файла .bashrc используется файл .bash_profile

Оцени публикацию:
  • 14,61
Оценили человек: 14
Теги : unix find and replace, разукрасить, раскрасить

Похожие статьи:


Комментарии посетителей:
  • Весьма полезно, спасибо ) Особенно про sed.
    14 августа 2011, 07:20 коммент полезен : 0 # Oebs
  • Здорово!!! Первый раз вижу, чтобы все было настолько просто и понятно, с примерами.
    15 марта 2013, 09:44 коммент полезен : 0 # Vkolotov
  • Один из самых хороших справочников - http://www.linux.org.ru/wiki/en/%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D1%8B
    18 сентября 2013, 10:41 коммент полезен : 0 # Да (гость)
  • подсчитать кол-во файлов в директории: find /dir -type f | wc -l
    показать разницу файлов в указанных директория:
    diff -r dir1 dir2 | grep dir1 | awk '{print $4}' > difference1.txt
    diff -r dir1 dir2 shows which files are only in dir1 and those only in dir2
    diff -r dir1 dir2 | grep dir1 shows which files are only in dir1
    Finally use awk to print only filename.
    26 сентября 2015, 18:45 коммент полезен : +1 # sunshine
Предложения и пожелания:
Ваше имя:
Ваш E-mail:
Сколько будет Οдин + Τри
Главная
X

Новые заметки:

Про что мы забываем когда делаем оценку задачи по времени

Список вопросов для собеседования разработчика по телефону

Symfony2 авторизация без Doctrine2 для чайника

Phpstorm7 LiveEdit

Жесткий хабр или не хабр, тогда кто?

Яндекс.Деньги мошенничество

Как узнать какие страницы в поиске яндекса или это секрет

Последние комменты:

Yapro CMS:

Здравствуйте, Гость | Войти | Регистрация | Карта сайта | RSS ленты | Ошибка в тексте? Выделите её мышкой и нажмите: Ctrl + Enter

youtube.com/watch?v=7hFivbgIEqk

При полном или частичном использовании материалов данного сайта, ссылка на сайт "yapro.ru" обязательна как на источник информации.
Автоматический импорт материалов и информации с сайта запрещен.
Copyrights © 2007 - 2018 YaPro.Ru

Главная » Веб-мастеру » Unix »