Щелкните по изображению, чтобы просмотреть увеличенную версию

1. tar

Создать новый tar-файл

$ tar cvf archive_name.tar dirname/

Извлечь tar-файл

$ tar xvf archive_name.tar

Просмотреть tar-файл

$ tar tvf archive_name.tar

2. grep

Найти строку в файле (без учёта регистра)

$ grep -i "the" demo_file

Вывести совпавшую строку вместе с тремя следующими за ней строками

$ grep -A 3 -i "example" demo_text

Рекурсивно искать файлы, содержащие указанную строку, в папке

$ grep -r "ramesh" *

3. find

Найти файлы с указанным именем файла (без учёта регистра)

$ find -iname "MyProgram.c"

Выполнить команду для найденных файлов

$ find -iname "MyProgram.c" -exec md5sum {} \;

Найти все пустые файлы в домашнем каталоге

$ find ~ -empty

4. ssh

Вход на удалённый хост

$ ssh -l jsmith remotehost.example.com

Отладка клиента ssh

$ ssh -v -l jsmith remotehost.example.com

Показать версию клиента ssh

$ ssh -V

5. sed

При копировании файлов из системы DOS в Unix/Linux каждая строка файла заканчивается на \r\n. sed может легко преобразовать его в файл формата Unix, в котором в конце строк используется \n

$ sed 's/.$//' filename

Перевернуть содержимое файла и вывести его

$ sed -n '1!G; h; p' filename

Добавить номера строк к непустым строкам

$ sed '/./=' thegeekstuff.txt | sed 'N; s/\n/ /'

6. awk

Удаление повторяющихся строк

$ awk '!($0 in array) { array[$0]; print}' temp

Вывести все строки в /etc/passwd, в которых uid и gid совпадают

$ awk -F ':' '$3=$4' /etc/passwd

Вывести указанные поля из файла

$ awk '{print $2,$5;}' employee.txt

7. vim

Открыть файл и перейти к строке 10

$ vim +10 filename.txt

Открыть файл и перейти к первой совпадающей строке

$ vim +/search-term filename.txt

Открыть файл в режиме только для чтения

$ vim -R /etc/passwd

8. diff

Игнорировать пробелы при сравнении

$ diff -w name_list.txt name_list_new.txt

9. sort

Сортировать содержимое файла по возрастанию

$ sort names.txt

Сортировать содержимое файла по убыванию

$ sort -r names.txt

Сортировать содержимое /etc/passwd по третьему полю

$ sort -t: -k 3n /etc/passwd | more

10. export

Вывести переменные среды, соответствующие строке oracle

$ export | grep ORCALE
declare -x ORACLE_BASE="/u01/app/oracle"
declare -x ORACLE_HOME="/u01/app/oracle/product/10.2.0"
declare -x ORACLE_SID="med"
declare -x ORACLE_TERM="xterm"

Установить глобальные переменные среды

$ export ORACLE_HOME=/u01/app/oracle/product/10.2.0

11. x

Копировать файлы изображений на внешний диск

$ ls *.jpg | xargs -n1 -i cp {} /external-hard-drive/directory

Сжать и упаковать все файлы jpd в системе

$ find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz

Скачать страницы, соответствующие всем URL, указанным в файле

$ cat url-list.txt | xargs wget –c

. ls

Отобразить размер файла в удобочитаемом формате (отображается как MB, GB, ...)

$ ls -lh
-rw-r----- 1 ramesh team-dev 8.9M Jun 12 15:27 arch-linux.txt.gz

Вывести список файлов в порядке возрастания по времени последнего изменения

$ ls -ltr

Отобразить тип файла после файла

$ ls -F

13. pwd

Вывести текущий рабочий каталог

14. cd

cd - переключается между двумя последними использованными каталогами

Использование shopt -s cdspell позволяет настроить автоматическое исправление орфографии для команды cd

15. gzip

Создать сжатый файл *.gz

$ gzip test.txt

Распаковать файл *.gz

$ gzip -d test.txt.gz

Показать коэффициент сжатия

$ gzip -l *.gz
     compressed        uncompressed  ratio uncompressed_name
          23709               97975  75.8% asp-patch-rpms.txt

16. bzip2

Создать сжатый файл *.bz2

$ bzip2 test.txt

Распаковать файл *.bz2

bzip2 -d test.txt.bz2

17. uzip

Распаковать файл *.zip

$ unzip test.zip

Просмотреть содержимое файла *.zip

$ unzip -l jasper.zip
Archive:  jasper.zip
Length     Date   Time    Name
--------    ----   ----    ----
40995  11-30-98 23:50   META-INF/MANIFEST.MF
32169  08-25-98 21:07   classes_
15964  08-25-98 21:07   classes_names
10542  08-25-98 21:07   classes_ncomp

18. shutdown

Выключить систему и немедленно отключить питание

$ shutdown -h now

Завершить работу через 10 минут

$ shutdown -h +10

Перезагрузка

$ shutdown -r now

Принудительно запустить проверку системы при перезагрузке

$ shutdown -Fr now

19. ftp

Использование команды ftp и команды sftp в основном аналогично: подключиться к FTP-серверу и скачать несколько файлов

$ ftp IP/hostname
ftp> mget *.html

Отобразить список файлов на удалённом хосте

ftp> mls *.html -
/ftptest/features.html
/ftptest/index.html
/ftptest/othertools.html
/ftptest/samplereport.html
/ftptest/usage.html

20. crontab

Просмотреть записи crontab пользователя

$ crontab -u john -l

Настроить запланированную задачу, которая выполняется каждые десять минут

*/10 * * * * /home/ramesh/check-disk-space

21. service

Команда service используется для запуска сценариев инициализации System V, которые обычно находятся в /etc/init.d. Эта команда может напрямую запускать скрипты в этой папке без указания пути

Просмотр состояния службы

$ service ssh status

Просмотреть состояние всех служб

$ service --status-all

Перезапуск службы

$ service ssh restart

22. ps

Команда ps используется для отображения информации о запущенных процессах. У команды ps много опций; здесь перечислены лишь некоторые из них

Просмотреть все текущие запущенные процессы

$ ps -ef | more

Отобразить текущие запущенные процессы в виде дерева. Опция H указывает на отображение иерархии процессов

$ ps -efH | more

23. free

Эта команда используется для отображения текущего использования памяти системы, включая используемую память, доступную память и память подкачки

По умолчанию free выводит использование памяти в bytes

$ free
             total       used       free     shared    buffers     cached
Mem:       3566408    1580220    1986188          0     203988     902960
-/+ buffers/cache:     473272    3093136
Swap:      4000176          0    4000176

Если вы хотите вывести использование памяти в других единицах, нужно добавить опцию: -g для GB, -m для MB, -k для KB, -b для bytes

$ free -g
             total       used       free     shared    buffers     cached
Mem:             3          1          1          0          0          0
-/+ buffers/cache:          0          2
Swap:            3          0          3

Если вы хотите просмотреть сводку по всей памяти, используйте опцию -t. Использование этой опции добавляет строку сводки в вывод

$ free -t
             total       used       free     shared    buffers     cached
Mem:       3566408    1592148    1974260          0     204260     912556
-/+ buffers/cache:     475332    3091076
Swap:      4000176          0    4000176
Total:     7566584    1592148    5974436

24. top

Команда top отображает процессы, которые в данный момент потребляют больше всего ресурсов в системе (по умолчанию сортировка по использованию CPU). Если вы хотите изменить способ сортировки, можно нажать O (заглавную O) в списке результатов, чтобы отобразить все столбцы, доступные для сортировки, а затем выбрать столбец, по которому хотите сортировать

Current Sort Field:  P  for window 1:Def
Select sort field via field letter, type any other key to return

  a: PID        = Process Id              v: nDRT       = Dirty Pages count
  d: UID        = User Id                 y: WCHAN      = Sleeping in Function
  e: USER       = User Name               z: Flags      = Task Flags
  ........

Если вы хотите отображать только процессы конкретного пользователя, можно использовать опцию -u

$ top -u oracle

25. df

Показать использование дискового пространства файловой системы. По умолчанию df -k выводит использование диска в байтах

$ df -k
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             29530400   3233104  24797232  12% /
/dev/sda2            120367992  50171596  64082060  44% /home

Использование опции -h отображает использование дискового пространства в более удобочитаемом формате

$ df -h
Filesystem                  Size   Used  Avail Capacity  iused      ifree %iused  Mounted on
/dev/disk0s2               232Gi   84Gi  148Gi    37% 21998562   38864868   36%   /
devfs                      187Ki  187Ki    0Bi   100%      648          0  100%   /dev
map -hosts                   0Bi    0Bi    0Bi   100%        0          0  100%   /net
map auto_home                0Bi    0Bi    0Bi   100%        0          0  100%   /home
/dev/disk0s4               466Gi   45Gi  421Gi    10%   112774  440997174    0%   /Volumes/BOOTCAMP
//app@izenesoft.cn/public  2.7Ti  1.3Ti  1.4Ti    48%        0 18446744073709551615    0%   /Volumes/public

Используйте опцию -T для отображения типа файловой системы

$ df -T
Filesystem    Type   1K-blocks      Used Available Use% Mounted on
/dev/sda1     ext4    29530400   3233120  24797216  12% /
/dev/sda2     ext4   120367992  50171596  64082060  44% /home

26. kill

kill используется для завершения процесса. Обычно мы сначала используем ps -ef, чтобы найти процесс и получить его номер процесса, затем используем kill -9 номер процесса, чтобы завершить его. Вы также можете использовать killall, pkill или xkill для завершения процессов

$ ps -ef | grep vim
ramesh    7243  7222  9 22:43 pts/2    00:00:00 vim

$ kill -9 7243

27. rm

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

$ rm -i filename.txt

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

$ rm -i file*

Рекурсивно удалить все файлы в папке, а также удалить саму папку

$ rm -r example

28. cp

Скопировать file1 в file2, сохранив права доступа, владельца и метку времени файла

$ cp -p file1 file2

Скопировать file1 в file2. Если file2 существует, будет запрошено подтверждение на перезапись

$ cp -i file1 file2

29. mv

Переименование file1 в file2. Если file2 существует, появится запрос на перезапись

$ mv -i file1 file2

Обратите внимание: если используется опция -f, запрос отображаться не будет

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

$ mv -v file1 file2

30. cat

Можно просмотреть содержимое нескольких файлов сразу. Следующая команда сначала выводит содержимое file1, затем содержимое file2

$ cat file1 file2

Опция -n добавляет номера строк в начало каждой строки

$ cat -n /etc/logrotate.conf
/var/log/btmp {
missingok
3        monthly
4        create 0660 root utmp
5        rotate 1
6 }

31. mount

Чтобы смонтировать файловую систему, нужно сначала создать каталог, затем смонтировать файловую систему в этот каталог

# mkdir /u01

# mount /dev/sdb1 /u01

Это также можно добавить в fstab для автоматического монтирования, чтобы при каждой перезагрузке системы файловая система загружалась

/dev/sdb1 /u01 ext2 defaults 0 2

32. chmod

chmod используется для изменения прав доступа к файлам и каталогам

Предоставить владельцу и группе указанного файла все разрешения (включая чтение, запись и выполнение)

$ chmod ug+rwx file.txt

Удалить все разрешения группы указанного файла

$ chmod g-rwx file.txt

Изменить разрешения каталога и рекурсивно изменить разрешения всех файлов и подкаталогов в этом каталоге

$ chmod -R ug+rwx file.txt

33. chown

chown используется для изменения владельца и группы файла

Одновременно изменить владельца файла на oracle, а группу на db

$ chown oracle:dba dbora.sh

Используйте параметр -R для рекурсивного изменения каталога и файлов в нём

$ chown -R oracle:dba /home/oracle

34. passwd

passwd используется для изменения пароля в командной строке. При использовании этой команды сначала нужно ввести старый пароль, а затем ввести новый пароль

$ passwd

Суперпользователь может использовать эту команду для изменения паролей других пользователей. В этом случае не нужно вводить пароль пользователя

# passwd USERNAME

passwd также может удалить пароль пользователя. Эту команду может выполнять только пользователь root. После удаления пароля пользователь может войти в систему без ввода пароля

# passwd -d USERNAME

35. mkdir

Создайте каталог с именем temp в домашнем каталоге

$ mkdir ~/temp

Используйте параметр -p, чтобы создать все несуществующие каталоги вдоль пути

$ mkdir -p dir1/dir2/dir3/dir4/

36. ifconfig

ifconfig используется для просмотра и настройки сетевых интерфейсов системы Linux

Просмотр всех сетевых интерфейсов и их состояния

$ ifconfig -a

Используйте команды up и down для запуска или остановки интерфейса

$ ifconfig eth0 up
$ ifconfig eth0 down

37. uname

uname может отображать некоторые важные сведения о системе, такие как имя ядра, имя хоста, версия ядра, тип процессора и так далее

$ uname -a Linux john-laptop 2.6.32-24-generic #41-Ubuntu SMP Thu Aug 19 01:12:52 UTC 2010 i686 GNU/Linux

38. whereis

Когда вы не знаете расположение команды, можно использовать команду whereis. В следующем примере whereis используется для поиска расположения ls

$ whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

Когда вы хотите найти местоположение исполняемой программы, но программы нет в каталогах по умолчанию whereis, можно использовать параметр -B и указать каталог в качестве аргумента этого параметра. Следующая команда ищет команду lsmk в каталоге /tmp

$ whereis -u -B /tmp -f lsmk
lsmk: /tmp/lsmk

39. whatis

whatis выводит описательную информацию о команде

$ whatis ls
ls        (1)  - list directory contents

$ whatis ifconfig
ifconfig (8)         - configure a network interface

40. locate

Команда locate может отображать путь к указанному файлу (или группе файлов). Она использует базу данных, созданную updatedb

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

$ locate crontab
/etc/anacrontab
/etc/crontab
/usr/bin/crontab
/usr/share/doc/cron/examples/crontab2english.pl.gz
/usr/share/man/man1/crontab.1.gz
/usr/share/man/man5/anacrontab.5.gz
/usr/share/man/man5/crontab.5.gz
/usr/share/vim/vim72/syntax/crontab.vim

41. man

Отображает страницу man для команды

$ man crontab

Некоторые команды могут иметь несколько страниц man; каждая страница man соответствует одному типу команды

$ man SECTION-NUMBER commandname

Страницы man обычно можно разделить на 8 типов команд

  1. Команды пользователя
  2. Системные вызовы
  3. Функции библиотеки C
  4. Устройства и сетевые интерфейсы
  5. Форматы файлов
  6. Игры и скринсейверы
  7. Окружение, таблицы и макросы
  8. Команды системного администратора и команды, работающие в фоне
  9. Например, когда мы выполняем whatis crontab, можно увидеть, что у crontab есть два типа команд — 1 и 5. Поэтому мы можем использовать следующую команду, чтобы просмотреть man-страницу для типа команды 5

    $ whatis crontab
    crontab (1)          - maintain crontab files for individual users (V3)
    crontab (5)          - tables for driving cron
    
    $ man 5 crontab

    42. tail

    Команда tail по умолчанию отображает последние 10 строк текста в файле

    $ tail filename.txt

    С помощью опции -n можно указать количество отображаемых строк

    $ tail -n N filename.txt

    Также можно использовать опцию -f для просмотра в реальном времени. После выполнения этой команды она будет ждать. Если в конец файла добавляются новые строки, она продолжит выводить новые строки. Эта опция очень полезна при просмотре логов. Завершить команду можно нажатием CTRL-C.

    $ tail -f log-file

    43. less

    Эта команда может отображать содержимое файла, не загружая весь файл, что очень полезно при просмотре больших лог-файлов.

    $ less huge-log-file.log

    Когда вы открываете файл командой less, следующие две клавиши очень помогут; они используются для прокрутки вперёд и назад.

    CTRL+F – forward one window
    CTRL+B – backward one window

    44. su

    su命令用于切换用户账号,超级用户使用这个命令可以切换到任何其他用户而不用输入密码
    $ su - USERNAME

    Выполните команду с другим именем пользователя. В приведенном ниже примере пользователь john выполняет команду ls, используя имя пользователя raj, а затем после выполнения возвращается к учетной записи john.

    [john@dev-server]$ su - raj -c 'ls'
    
    [john@dev-server]$

    Войдите под указанным пользователем и используйте указанную программу оболочки вместо используемой по умолчанию.

    $ su -s 'SHELLNAME' USERNAME

    45. mysql

    MySQL, возможно, самая широко используемая база данных в Linux. Даже если вы не установили MySQL на свой сервер, вы все равно можете использовать клиент MySQL для подключения к удаленному серверу MySQL.

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

    $ mysql -u root -p -h 192.168.1.2

    Подключитесь к локальной базе данных.

    $ mysql -u root -p

    Вы также можете ввести пароль базы данных в командной строке. Просто добавьте пароль как аргумент после -p. Его можно записать сразу после p без пробела.

    46. yum

    Установите Apache с помощью yum.

    $ yum install httpd

    Обновите Apache.

    $ yum update httpd

    Удалите Apache.

    $ yum remove httpd

    47. rpm

    Установите Apache с помощью rpm.

    # rpm -ivh httpd-2.2.3-22.0.1.el5.i386.rpm

    Обновите Apache.

    # rpm -uvh httpd-2.2.3-22.0.1.el5.i386.rpm

    Удалите Apache.

    # rpm -ev httpd

    48. ping

    Пропингуйте удаленный хост, отправив только 5 пакетов данных.

    $ ping -c 5 gmail.com

    49. date

    Установите системную дату.

    # date -s "01/31/2010 23:59:53"

    После изменения системного времени необходимо синхронизировать аппаратное время и системное время.

    # hwclock –systohc
    
    # hwclock --systohc –utc

    50. wget

    Используйте wget для загрузки программ, музыки и видео из интернета.

    $ wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.1.tar.gz

    Скачайте файл и сохраните его с указанным именем файла.

    $ wget -O taglist.zip http://www.vim.org/scripts/download_script.php?src_id=7701

    Перевод: https://zhuanlan.zhihu.com/p/28674639

    Оригинал: http://www.thegeekstuff.com/2010/11/50-linux-commands/