1. Команда ls

Это сокращение от list. С помощью команды ls можно не только просматривать файлы, содержащиеся в папке Linux, но и просматривать права доступа к файлам (включая права на каталоги, папки и файлы), информацию о каталогах и так далее.

Распространённые комбинации параметров:

ls -a 列出目录所有文件,包含以.开始的隐藏文件
ls -A 列出除.及..的其它文件
ls -r 反序排列
ls -t 以文件修改时间排序
ls -S 以文件大小排序
ls -h 以易读大小显示
ls -l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来

Примеры:

(1) Сортировка в обратном хронологическом порядке в удобочитаемом виде и отображение подробной информации о файлах

ls -lhrt

(2) Отображение подробной информации о файлах в обратном порядке по размеру

ls -lrS

(3) Вывести подробное содержимое всех каталогов в текущем каталоге, начинающихся с "t"

ls -l t*

(4) Вывести абсолютные пути файлов (не включая скрытые файлы)

ls | sed "s:^:`pwd`/:"

(5) Вывести абсолютные пути файлов (включая скрытые файлы)

find $pwd -maxdepth 1 | xargs ls -ld

2. Команда cd

Синтаксис команды cd (changeDirectory):

cd [目录名]

Описание: Переключить текущий каталог на dirName.

Примеры:

(1) Перейти в нужный каталог

cd /

(2) Перейти в каталог "home"

cd ~

(3) Перейти в предыдущий рабочий каталог

cd -

(4) Использовать аргумент предыдущей команды в качестве параметра cd.

cd !$

3. Команда pwd

Команда pwd используется для просмотра пути текущего рабочего каталога.

Примеры:

(1) Просмотреть текущий путь

pwd

(2) Просмотреть фактический путь символической ссылки

pwd -P

4. Команда mkdir

Команда mkdir используется для создания папок.

Доступные параметры:

  • -m: Установите права доступа для только что созданных каталогов; их также можно задать с помощью команды chmod;
  • -p: Может быть именем пути. В этом случае, если некоторые каталоги в пути ещё не существуют, после добавления этой опции система автоматически создаст эти несуществующие каталоги, то есть можно создать сразу несколько каталогов.

Примеры:

(1) Создайте папку с именем t в текущем рабочем каталоге

mkdir t

(2) Создайте каталог с путём test/t1/t в каталоге tmp; если он не существует, создайте его:

mkdir -p /tmp/test/t1/t

5. Команда rm

Удаление одного или нескольких файлов или каталогов в каталоге. Если не используется опция -r, rm не удаляет каталоги. Если вы удаляете файлы с помощью rm, их обычно всё ещё можно восстановить в исходное состояние.

rm [选项] 文件…

Примеры:

(1) Удалите любые файлы .log, запрашивая подтверждение по одному перед удалением:

rm -i *.log

(2) Удалите подкаталог test и все файлы в подкаталоге, не подтверждая по одному:

rm -rf test

(3) Удалите файлы, начинающиеся с -f

rm -- -f*

6. Команда rmdir

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

Примечание: Нельзя удалять непустые каталоги

Примеры:

(1) Если родительский подкаталог после удаления становится пустым каталогом, удалите и его:

rmdir -p parent/child/child11

7. команда mv

Перемещает файлы или изменяет имена файлов в зависимости от типа второго аргумента (если это каталог, файл перемещается; если это файл, файл переименовывается).

Если второй аргумент — каталог, первый аргумент может быть несколькими файлами или каталогами, разделёнными пробелами; тогда переместите несколько файлов, указанных в первом аргументе, в каталог, указанный во втором аргументе.

Примеры:

(1) Переименовать файл test.log в test1.txt

mv test.log test1.txt

(2) Переместить файлы log1.txt, log2.txt, log3.txt в каталог test3 в корне

mv llog1.txt log2.txt log3.txt /test3

(3) Переименовать file1 в file2; если file2 уже существует, запросить подтверждение перезаписи

mv -i log1.txt log2.txt

(4) Переместить все файлы из текущей папки в родительский каталог

mv * ../

8. команда cp

Копировать исходные файлы в целевой файл или копировать несколько исходных файлов в целевой каталог.

Примечание: При копировании в командной строке, если целевой файл уже существует, будет запрошено подтверждение перезаписи. Однако в shell-скриптах, если не добавлен параметр -i, запроса не будет; вместо этого будет выполнена прямая перезапись!

-i 提示
-r 复制目录及目录内所有项目
-a 复制的文件与原文件时间一样

Примеры:

(1) Скопировать a.txt в каталог test, сохранить исходное время файла, и если исходный файл существует, запросить подтверждение перезаписи.

cp -ai a.txt test

(2) Создать ссылку (ярлык) для a.txt

cp -s a.txt link_a.txt

9. Команда cat

cat в основном имеет три основные функции:

1. Отобразить весь файл сразу:

cat filename

2. Создать файл с клавиатуры:

cat > filename

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

3. Объединить несколько файлов в один файл:

cat file1 file2 > file
  • -b Выводить номера строк для непустых строк
  • -n Выводить все номера строк

Примеры:

(1) Добавить номера строк к содержимому log2012.log и записать их в файл log2013.log

cat -n log2012.log log2013.log

(2) Добавить номера строк к содержимому log2012.log и log2013.log (пустые строки без номеров строк), затем добавить содержимое в конец log.log

cat -b log2012.log log2013.log log.log

(3) Использовать here document для создания нового файла

cat >log.txt <<EOF
>Hello
>World
>PWD=$(pwd)
>EOF
ls -l log.txt
cat log.txt
Hello
World
PWD=/opt/soft/test

(4) Обратный вывод

tac log.txt
PWD=/opt/soft/test
World
Hello

10. команда more

Её функция аналогична cat, но more отображает содержимое страница за страницей, что удобно для постраничного чтения. Самая базовая инструкция — нажать пробел для отображения следующей страницы и нажать клавишу b для возврата на одну страницу.

Параметры команды:

+n      从笫 n 行开始显示
-n       定义屏幕大小为n行
+/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示 
-c       从顶部清屏,然后显示
-d       提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能
-l        忽略Ctrl+l(换页)字符
-p       通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似
-s       把连续的多个空行显示为一行
-u       把文件内容中的下画线去掉

Общие команды управления:

Enter    向下 n 行,需要定义。默认为 1 行
Ctrl+F   向下滚动一屏
空格键  向下滚动一屏
Ctrl+B  返回上一屏
=       输出当前行的行号
:f     输出文件名和当前行的行号
V      调用vi编辑器
!命令   调用Shell,并执行命令
q       退出more

Примеры:

(1) Показать содержимое файла начиная с 3-й строки

more +3 text.txt

(2) При выводе подробной информации о каталогах файлов используйте конвейер, чтобы отображать по 5 строк за раз

ls -l | more -5

Нажмите пробел, чтобы отобразить следующие 5 строк.

11. команда less

less похожа на more, но с less можно свободно просматривать файлы, тогда как more может двигаться только вперёд и не может назад. Кроме того, less не загружает весь файл перед просмотром.

Общие параметры команды:

-i  忽略搜索时的大小写
-N  显示每行的行号
-o  <文件名> 将less 输出的内容在指定文件中保存起来
-s  显示连续空行为一行
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / или  ? 有关)
N:反向重复前一个搜索(与 / или  ? 有关)
-x <数字> 将“tab”键显示为规定的数字空格
b  向后翻一页
d  向后翻半页
h  显示帮助界面
Q  退出less 命令
u  向前滚动半页
y  向前滚动一行
空格键 滚动一行
回车键 滚动一页
[pagedown]: 向下翻动一页
[pageup]:   向上翻动一页

Примеры:

(1) Используйте ps для просмотра информации о процессах и отображайте её постранично через less

ps -aux | less -N

(2) Просмотр нескольких файлов

less 1.log 2.log

Можно использовать n для просмотра следующего и p для просмотра предыдущего.

12. команда head

head используется для вывода начала файла в стандартный вывод. По умолчанию команда head выводит первые 10 строк соответствующего файла.

Общие параметры:

-n<行数> 显示的行数(行数为复数表示从最后向前数)

Примеры:

(1) Вывести первые 20 строк файла 1.log

head 1.log -n 20

(2) Вывести первые 20 байт файла 1.log

head -c 20 log2014.log

(3) Вывести последние 10 строк файла t.log

head -n -10 t.log

13. команда tail

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

Общие параметры:

-f 循环读取(常用于查看递增的日志文件)
-n<行数> 显示行数(从后向前)

(1) Циклическое чтение постепенно увеличивающегося содержимого файла

ping 127.0.0.1 > ping.log &

Запустить в фоновом режиме: можно использовать jobs -l для просмотра или fg, чтобы перевести в передний план и запустить.

tail -f ping.log

(Просмотр логов)

14. команда which

Чтобы найти файл в Linux, когда вы не знаете, где он находится, можно использовать некоторые из следующих команд для поиска:

which     查看可执行文件的位置。
whereis 查看文件的位置。
locate  配合数据库查看文件位置。
find        实际搜寻硬盘查询文件名称。

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

Общие параметры:

-n  指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。

Примеры:

(1) Проверить, существует ли команда ls и какая именно выполняется

which ls

(2) Проверить команду which

which which

(3) Проверить команду cd

which cd(显示不存在,因为 cd 是内建命令,而 which 查找显示是 PATH 中的命令)

Проверить текущую конфигурацию PATH:

echo $PATH

Или использовать env для просмотра всех переменных среды и их соответствующих значений

15. команда whereis

Команда whereis может использоваться только для поиска имён программ, и она ищет только бинарные файлы (опция -b), файлы документации man (опция -m) и файлы исходного кода (опция -s). Если опция не указана, возвращается вся информация. И whereis, и locate выполняют поиск на основе встроенной базы данных системы, поэтому они очень эффективны, тогда как find обходит жёсткий диск для поиска файлов.

Общие параметры:

-b   定位可执行文件。
-m   定位帮助文件。
-s   定位源代码文件。
-u   搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。

Примеры:

(1) Найти файлы, связанные с программой locate

whereis locate

(2) Найти файлы исходного кода locate

whereis -s locate

(3) Найдите файл справки для lcoate

whereis -m locate

16. команда locate

locate быстро находит файлы, выполняя поиск по встроенной системной базе данных документов. База данных обновляется программой updatedb, которая периодически запускается демоном cron. По умолчанию команда locate выполняет поиск по базе данных быстрее, чем поиск по всем данным жесткого диска, но недостаток в том, что недавно созданные или только что переименованные файлы могут не находиться. По умолчанию updatedb запускается один раз в день; вы можете изменить crontab, чтобы обновить настройки (etc/crontab).

Команда locate похожа на команду find; она может использовать сопоставление с регулярными выражениями, такое как * и ?.

Общие параметры:

-l num(要显示的行数)
-f   将特定的档案系统排除在外,如将proc排除在外
-r   使用正则运算式做为寻找条件

Примеры:

(1) Найдите все файлы, связанные с pwd (имена файлов, содержащие pwd)

locate pwd

(2) Найдите в каталоге etc все файлы, начинающиеся с sh

locate /etc/sh

(3) Найдите файлы, заканчивающиеся на reason, в каталоге /var

locate -r '^/var.*reason$'(其中.表示一个字符,*表示任务多个;.*表示任意多个字符)

17. команда find

Используется для поиска файлов в дереве файлов и выполнения соответствующей обработки.

Формат команды:

find pathname -options [-print -exec -ok ...]

Параметры команды:

pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' {  } \;,注意{   }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

Параметры команды:

-name 按照文件名查找文件
-perm 按文件权限查找文件
-user 按文件属主查找文件
-group  按照文件所属的组来查找文件。
-type  查找某一类型的文件,诸如:
   b - 块设备文件
   d - 目录
   c - 字符设备文件
   l - 符号链接文件
   p - 管道文件
   f - 普通文件

-size n :[c] 查找文件长度为n块文件,带有c时表文件字节大小
-amin n   查找系统中最后N分钟访问的文件
-atime n  查找系统中最后n*24小时访问的文件
-cmin n   查找系统中最后N分钟被改变文件状态的文件
-ctime n  查找系统中最后n*24小时被改变文件状态的文件
-mmin n   查找系统中最后N分钟被改变文件数据的文件
-mtime n  查找系统中最后n*24小时被改变文件数据的文件
(用减号-来限定更改时间在距今n日以内的文件,而用加号+来限定更改时间在距今n日以前的文件。 )
-maxdepth n 最大查找目录深度
-prune 选项来指出需要忽略的目录。在使用-prune选项时要当心,因为如果你同时使用了-depth选项,那么-prune选项就会被find命令忽略
-newer 如果希望查找更改时间比某个文件新但比另一个文件旧的所有文件,可以使用-newer选项

Примеры:

(1) Найдите файлы, измененные за последние 48 часов

find -atime -2

(2) Найдите файлы, заканчивающиеся на .log, в текущем каталоге..Обозначает текущий каталог.

find ./ -name '*.log'

(3) Найти файлы с правами доступа 777 в каталоге /opt

find /opt -perm 777

(4) Найти файлы размером больше 1K

find -size +1000c

Найти файлы размером ровно 1000 символов

find -size 1000c 

После опции -exec указывается команда, а её завершение обозначается символом ;. Поэтому точка с запятой после этой команды обязательна. Учитывая, что точка с запятой может иметь разное значение в разных системах, перед ней добавляется обратная косая черта. Фигурные скобки {} обозначают имена файлов, найденных предыдущей командой find.

Примеры:

(5) Найти в текущем каталоге файлы, время изменения которых больше 10 дней, и удалить их (без предупреждения)

find . -type f -mtime +10 -exec rm -f {} \;

(6) Найти в текущем каталоге все файлы, имена которых заканчиваются на .log и время изменения которых больше 5 дней, и удалить их, но с запросом подтверждения перед удалением. Нажмите y, чтобы удалить файл, нажмите n, чтобы пропустить.

find . -name '*.log' mtime +5 -ok -exec rm {} \;

(7) Найти в текущем каталоге файлы, имена которых начинаются с passwd и содержимое которых содержит символы "pkg"

find . -f -name 'passwd*' -exec grep "pkg" {} \;

(8) Использовать опцию exec для выполнения команды cp

find . -name '*.log' -exec cp {} test3 \;

-xargs: Команда find передаёт совпавшие файлы команде xargs, и команда xargs принимает за раз только часть файлов, а не все сразу, в отличие от опции -exec. Таким образом, она может сначала обработать первую партию файлов, затем следующую партию и так далее.

Примеры:

(9) Найти каждый обычный файл в текущем каталоге, затем использовать xargs для определения типа файла

find . -type f -print | xargs file

(10) Найти все обычные файлы в текущем каталоге, которые заканчиваются на js и содержат символы 'editor'

find . -type f -name "*.js" -exec grep -lF 'ueditor' {} \;
find -type f -name '*.js' | xargs grep -lF 'editor'

(11) Использовать xargs для выполнения команды mv

find . -name "*.log" | xargs -i mv {} test4

(12) Используйте команду grep для поиска слова hostnames во всех обычных файлах в текущем каталоге и отметьте строки, в которых оно встречается:

find . -name \*(转义) -type f -print | xargs grep -n 'hostnames'

(13) Найдите в текущем каталоге файлы, которые начинаются со строчной буквы и заканчиваются цифрой от 4 до 9, за которой следует .log:

find . -name '[a-z]*[4-9].log' -print

(14) Найдите в каталоге test, но не в подкаталоге test4

find test -path 'test/test4' -prune -o -print

(15) Пример 1: Найти файлы, время изменения которых новее, чем log2012.log, но старее, чем log2017.log

find -newer log2012.log ! -newer log2017.log

Использование опции depth:

Опция depth позволяет команде find при резервном копировании файловой системы на ленту сначала выполнить резервное копирование всех файлов, а затем файлов в подкаталогах.

Пример: Команда find начинает с корневого каталога файловой системы и ищет файл с именем CON.FILE. Сначала она найдёт все файлы, а затем войдёт в подкаталоги для поиска.

find / -name "CON.FILE" -depth -print

18. Команда chmod

Используется для изменения прав доступа к файлам или каталогам в системе Linux. Она применяется для управления правами доступа к файлам или каталогам. Эта команда имеет два режима использования. Один — символьный режим, который содержит буквы и выражения с операторами; другой — числовой режим, который содержит числа.

Каждый файл или каталог имеет три группы прав доступа, каждая из которых представлена тремя битами: права на чтение, запись и выполнение владельца файла; права на чтение, запись и выполнение пользователей из той же группы, что и владелец; и права на чтение, запись и выполнение других пользователей в системе. Вы можете использовать ls -l test.txt, чтобы просмотреть их.

Возьмём файл log2012.log в качестве примера:

-rw-r--r-- 1 root root 296K 11-13 06:03 log2012.log

Первый столбец содержит всего 10 позиций, и первый символ задаёт тип файла. В общем смысле каталог — это тоже файл. Если первый символ — дефис, это указывает на файл, не являющийся каталогом. Если это d, это указывает на каталог. Со второго по десятый символ расположены 9 символов, сгруппированных по три, представляющих права трёх групп пользователей на файл или каталог. В символах прав дефис обозначает отсутствие прав, r — чтение, w — запись, x — выполнение.

Общие параметры:

-c 当发生改变时,报告处理信息
-R 处理指定目录以及其子目录下所有文件

Область действия прав:

u :目录或者文件的当前的用户
g :目录或者文件的当前的群组
o :除了目录或者文件的当前用户或群组之外的用户或者群组
a :所有的用户及群组

Коды прав:

r :读权限,用数字4表示
w :写权限,用数字2表示
x :执行权限,用数字1表示
- :删除权限,用数字0表示
s :特殊权限

Примеры:

(1) Добавить всем пользователям право на выполнение для файла t.log

chmod a+x t.log

(2) Удалить все исходные права, затем предоставить владельцу право на чтение и вывести информацию об обработке

chmod u=r t.log -c

(3) Назначить владельцу файла права на чтение, запись и выполнение (7); назначить группе файла права на чтение и выполнение (5); назначить остальным пользователям право на выполнение (1)

chmod 751 t.log -c(或者:chmod u=rwx,g=rx,o=x t.log -c)

(4) Добавить право на чтение всем файлам в каталоге test и его подкаталогах

chmod u+r,g+r,o+r -R text/ -c
19. Команда tar

Используется для сжатия и распаковки файлов. Сам tar не имеет функций сжатия; он выполняет только упаковку. Сжатие и распаковка выполняются путём вызова других функций.

Поясним два понятия: упаковка и сжатие. Упаковка означает объединение большого количества файлов или каталогов в один общий файл; сжатие означает превращение большого файла в маленький с помощью некоторого алгоритма сжатия.

Общие параметры:

-c 建立新的压缩文件
-f 指定压缩文件
-r 添加文件到已经压缩文件包中
-u 添加改了和现有的文件到压缩包中
-x 从压缩包中抽取文件
-t 显示压缩文件中的内容
-z 支持gzip压缩
-j 支持bzip2压缩
-Z 支持compress解压文件
-v 显示操作过程

О сжатии gzip и bzip2:

gzip 实例:压缩 gzip fileName .tar.gz 和.tgz  解压:gunzip filename.gz или  gzip -d filename.gz
          对应:tar zcvf filename.tar.gz     tar zxvf filename.tar.gz

bz2实例:压缩 bzip2 -z filename .tar.bz2 解压:bunzip filename.bz2或bzip -d filename.bz2
       对应:tar jcvf filename.tar.gz         解压:tar jxvf filename.tar.bz2

Примеры:

(1) Упаковать все файлы в архив tar

tar -cvf log.tar 1.log,2.log 或tar -cvf log.*

(2) Упаковать все файлы и каталоги в /etc в указанный каталог и сжать с помощью gz

tar -zcvf /tmp/etc.tar.gz /etc

(3) Просмотреть содержимое только что упакованного файла (нужно добавить z, так как он сжат с помощью gzip)

tar -ztvf /tmp/etc.tar.gz

(4) Сжать и упаковать /home, /etc, но не /home/dmtsai

tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

20. команда chown

chown изменяет владельца указанного файла на указанного пользователя или группу. Пользователь может быть именем пользователя или ID пользователя; группа может быть именем группы или ID группы; файлы — это разделённый пробелами список файлов, права которых нужно изменить, поддерживаются подстановочные знаки.

-c 显示更改的部分的信息
-R 处理指定目录及子目录

Примеры:

(1) Изменить владельца и группу и отобразить информацию об изменении

chown -c mail:mail log2012.log

(2) Изменить группу файла

chown -c :mail t.log

(3) Изменить владельца и группу папки и её подкаталогов на mail

chown -cR mail: test/

21. команда df

Отображает использование дискового пространства. Получает информацию о том, сколько места использовано на жёстком диске и сколько места осталось. Если имя файла не указано, будет отображено доступное пространство всех текущих смонтированных файловых систем. По умолчанию дисковое пространство отображается в единицах 1KB, если только не задана переменная окружения POSIXLY_CORRECT, и в этом случае оно будет отображаться в единицах 512 bytes:

-a 全部文件系统列表
-h 以方便阅读的方式显示信息
-i 显示inode信息
-k 区块为1024字节
-l 只显示本地磁盘
-T 列出文件系统类型

Примеры:

(1) Показать использование диска

df -l

(2) Перечислить все файловые системы и их типы в удобочитаемом виде

df -haT

22. Команда du

Команда du также проверяет использование диска, но, в отличие от команды df, команда du в Linux используется для просмотра дискового пространства, занимаемого файлами и каталогами:

Формат команды:

du [选项] [文件]

Общие параметры:

-a 显示目录中所有文件大小
-k 以KB为单位显示文件大小
-m 以MB为单位显示文件大小
-g 以GB为单位显示文件大小
-h 以易读方式显示文件大小
-s 仅显示总计
-c或--total  除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和

Примеры:

(1) Отобразить размер папки и вложенных папок в удобочитаемом виде

du -h scf/

(2) Отобразить размер всех файлов в папке в удобочитаемом виде

du -ah scf/

(3) Отобразить дисковое пространство, занимаемое каждым из нескольких файлов или каталогов, а также вычислить их общий размер

du -hc test/ scf/

(4) Вывести пространство, используемое каждым подкаталогом в текущем каталоге

du -hc --max-depth=1 scf/

23. Команда ln

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

Категории ссылок: символические ссылки и жёсткие ссылки.

Символическая ссылка:

  • 1. Символическая ссылка существует в виде пути. Похожа на ярлыки в операционной системе Windows.
  • 2. Символические ссылки могут пересекать файловые системы; жёсткие ссылки — нет.
  • 3. Символическая ссылка может указывать на несуществующее имя файла.
  • 4. Символические ссылки могут ссылаться на каталоги.

Жёсткая ссылка:

  • 1. Жёсткая ссылка существует в виде копии файла, но не занимает фактического пространства.
  • 2. Создание жёстких ссылок на каталоги не допускается.
  • 3. Жёсткие ссылки можно создавать только в пределах одной файловой системы.

Примечания:

  • Во-первых: команда ln поддерживает синхронизацию всех связанных файлов; то есть, какой бы из них вы ни изменили, остальные файлы претерпят те же изменения.
  • Во-вторых: ссылки ln делятся на символические и жёсткие. Символическая ссылка — это "ln -s source_file target_file"; она лишь создаёт зеркало файла в выбранном вами месте и не занимает дискового пространства. Жёсткая ссылка — это "ln source_file target_file" без параметра -s; она создаёт файл в выбранном месте того же размера, что и исходный файл. Будь то символическая или жёсткая, файлы остаются синхронизированными.
  • В-третьих: команда ln используется для создания ссылок на файлы или каталоги. Если одновременно указаны два или более файлов или каталогов и конечный пункт назначения является существующим каталогом, все ранее указанные файлы или каталоги будут скопированы в этот каталог. Если одновременно указано несколько файлов или каталогов, но конечный пункт назначения не является существующим каталогом, появится сообщение об ошибке.

Общие параметры:

-b 删除,覆盖以前建立的链接
-s 软链接(符号链接)
-v 显示详细处理过程

Примеры:

(1) Создать символическую ссылку для файла и отобразить информацию об операции.

ln -sv source.log link.log

(2) Создать жёсткую ссылку для файла и отобразить информацию об операции.

ln -v source.log link1.log

(3) Создать символическую ссылку для каталога.

ln -sv /opt/soft/test/test3 /opt/soft/test/test5

24. команда date

Отобразить или установить системную дату и время.

Параметры команды:

-d<字符串>  显示字符串所指的日期与时间。字符串前后必须加上双引号。
-s<字符串>  根据字符串来设置日期与时间。字符串前后必须加上双引号。
-u  显示GMT.
%H 小时(00-23)
%I 小时(00-12)
%M 分钟(以00-59来表示)
%s 总秒数。起算时间为1970-01-01 00:00:00 UTC.
%S 秒(以本地的惯用法来表示)
%a 星期的缩写。
%A 星期的完整名称。
%d 日期(以01-31来表示).
%D 日期(含年月日).
%m 月份(以01-12来表示).
%y 年份(以00-99来表示).
%Y 年份(以四位数来表示).

Примеры:

(1) Отобразить следующий день.

date +%Y%m%d --date="+1 day"  //显示下一天的日期

(2) Использование параметра -d.

date -d "nov 22"  今年的 11 月 22 日是星期三
date -d '2 weeks' 2周后的日期
date -d 'next monday' (下周一的日期)
date -d next-day +%Y%m%d(明天的日期)或者:date -d tomorrow +%Y%m%d
date -d last-day +%Y%m%d(昨天的日期) 或者:date -d yesterday +%Y%m%d
date -d last-month +%Y%m(上个月是几月)
date -d next-month +%Y%m(下个月是几月)

25. Команда cal

Может отображать для пользователя григорианский календарь. Если указан только один параметр, он обозначает год (1-9999); если параметров два, они обозначают месяц и год.

Общие параметры:

-3 显示前一月,当前月,后一月三个月的日历
-m 显示星期一为第一列
-j 显示在当前年第几天
-y [year]显示当前年[year]份的日历

Примеры:

(1) Отобразить дату для указанного года и месяца.

cal 9 2012

(2) Отобразить календарь для каждого месяца 2013 года.

cal -y 2013

(3) Установить понедельник в качестве первого столбца, отобразить предыдущий, текущий и следующие три месяца.

cal -3m

26. Команда grep

Мощная команда поиска текста. grep (Global Regular Expression Print) — это глобальный поиск по регулярному выражению.

grep работает так: он ищет шаблон строки в одном или нескольких файлах. Если шаблон содержит пробелы, его нужно заключить в кавычки. Все строки после шаблона рассматриваются как имена файлов. Результаты поиска отправляются в стандартный вывод и не влияют на содержимое исходных файлов.

Формат команды:

grep [option] pattern file|dir

Общие параметры:

-A n --after-context显示匹配字符后n行
-B n --before-context显示匹配字符前n行
-C n --context 显示匹配字符前后n行
-c --count 计算符合样式的列数
-i 忽略大小写
-l 只列出文件内容符合指定的样式的文件名称
-f 从文件中读取关键词
-n 显示匹配内容的所在文件中行数
-R 递归查找文件夹

Правила регулярных выражений grep:

^  #锚定行的开始 如:'^grep'匹配所有以grep开头的行。 
$  #锚定行的结束 如:'grep$'匹配所有以grep结尾的行。 
.  #匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p.  
*  #匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。
.*   #一起用代表任意字符。  
[]   #匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep. 
[^]  #匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。  
\(..\)  #标记匹配字符,如'\(love\)',love被标记为1.   
\<      #锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。
\>      #锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。
x\{m\}  #重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。 
x\{m,\}  #重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。  
x\{m,n\}  #重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。  
\w    #匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p.  
\W    #\w的反置形式,匹配一个或多个非单词字符,如点号句号等。  
\b    #单词锁定符,如: '\bgrep\b'只匹配grep.

Примеры:

(1) Найти указанный процесс.

ps -ef | grep svn

(2) Найти количество указанных процессов.

ps -ef | grep svn -c

(3) Прочитать ключевые слова из файла.

cat test1.txt | grep -f key.log

(4) Рекурсивно искать в папке строки, начинающиеся с grep, и выводить только файлы.

grep -lR '^grep' /tmp

(5) Найти строки, которые не начинаются с x.

grep '^[^x]' test.txt

(6) Отобразить строки содержимого, содержащие символы "ed" или "at".

grep -E 'ed|at' test.txt

27. команда wc

wc (количество слов) используется для подсчёта количества байтов, слов и строк в указанных файлах и вывода статистических результатов.

Формат команды:

wc [option] file..

Параметры команды:

-c 统计字节数
-l 统计行数
-m 统计字符数
-w 统计词数,一个字被定义为由空白、跳格或换行字符分隔的字符串

Примеры:

(1) Найти количество строк, слов, байтов и имя файла.

wc text.txt

Результат:

7     8     70     test.txt

(2) Подсчитать количество строк в выходном результате.

cat test.txt | wc -l

28. команда ps

ps (состояние процессов) используется для просмотра состояния текущих запущенных процессов в виде однократного просмотра. Если нужны динамические непрерывные результаты, используйте top.

В Linux процессы имеют 5 состояний:

  • 1. Running (выполняется или ожидает в очереди на выполнение)
  • 2. Прерываемый (спящий, заблокированный, ожидающий выполнения условия или получения сигнала)
  • 3. Непрерываемый (не пробуждается и не выполняется при получении сигнала; процесс должен ждать, пока не произойдёт прерывание)
  • 4. Зомби (процесс завершился, но дескриптор процесса всё ещё существует, пока родительский процесс не вызовет системный вызов wait4(), чтобы освободить его)
  • 5. Остановлен (процесс прекращает выполнение после получения сигналов SIGSTOP, SIGSTP, SIGTIN или SIGTOU)

утилита ps определяет 5 кодов состояний процессов:

D 不可中断 uninterruptible sleep (usually IO)
R 运行 runnable (on run queue)
S 中断 sleeping
T 停止 traced or stopped
Z 僵死 a defunct (”zombie”) process

Параметры команды:

-A 显示所有进程
a 显示所有进程
-a 显示同一终端下所有进程
c 显示进程真实名称
e 显示环境变量
f 显示进程间的关系
r 显示当前终端运行的进程
-aux 显示所有包含其它使用的进程

Примеры:

(1) Показать все текущие переменные окружения процессов и межпроцессные связи.

ps -ef

(2) Показать все текущие процессы.

ps -A

(3) Объединить с grep для поиска процесса.

ps -aux | grep apache

(4) Найти номера PID, связанные со службами cron и syslog.

ps aux | grep '(cron|syslog)'

29. команда top

Отображает информацию о процессах, выполняющихся в системе в данный момент, включая идентификатор процесса, использование памяти, использование CPU и т. д.

Общие параметры:

-c 显示完整的进程命令
-s 保密模式
-p <进程号> 指定进程显示
-n <次数>循环显示次数

Примеры:

(1)

top - 14:06:23 up 70 days, 16:44,  2 users,  load average: 1.25, 1.32, 1.35
Tasks: 206 total,   1 running, 205 sleeping,   0 stopped,   0 zombie
Cpu(s):  5.9%us,  3.4%sy,  0.0%ni, 90.4%id,  0.0%wa,  0.0%hi,  0.2%si,  0.0%st
Mem:  32949016k total, 14411180k used, 18537836k free,   169884k buffers
Swap: 32764556k total,        0k used, 32764556k free,  3612636k cached
PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND  
28894 root      22   0 1501m 405m  10m S 52.2  1.3   2534:16 java  

Первые пять строк — это область общей статистической информации текущей системы.

Первая строка: информация об очереди задач, совпадает с результатом выполнения команды uptime. Конкретные описания параметров приведены ниже:

14:06:23 — текущее системное время

up 70 days, 16:44 — система работает уже 70 дней, 16 часов и 44 минуты (и за это время она не перезагружалась!).

2 users — в данный момент в систему вошли 2 пользователя.

load average: 1.15, 1.42, 1.44 — три числа после load average — это показатели нагрузки за 1 минуту, 5 минут и 15 минут соответственно.

Данные load average проверяют количество активных процессов каждые 5 секунд, затем вычисляют значение с помощью определённого алгоритма. Если это число, разделённое на количество логических CPU, превышает 5, это означает, что система перегружена.

Вторая строка: Tasks — задачи (процессы). Конкретная информация приведена ниже:

В системе в настоящее время всего 206 процессов, из которых 1 выполняется, 205 спят, 0 находятся в остановленном состоянии и 0 находятся в состоянии зомби.

Третья строка: информация о состоянии CPU. Конкретные описания атрибутов приведены ниже:

5.9%us — 用户空间占用CPU的百分比。
3.4% sy — 内核空间占用CPU的百分比。
0.0% ni — 改变过优先级的进程占用CPU的百分比
90.4% id — 空闲CPU百分比
0.0% wa — IO等待占用CPU的百分比
0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比
0.2% si — 软中断(Software Interrupts)占用CPU的百分比

Примечание:Здесь концепция коэффициента использования CPU отличается от Windows. Вам нужно понимать соответствующие знания о пользовательском пространстве и пространстве ядра Linux!

Четвёртая строка: состояние памяти. Конкретная информация приведена ниже:

32949016k total — 物理内存总量(32GB)
14411180k used — 使用中的内存总量(14GB)
18537836k free — 空闲内存总量(18GB)
169884k buffers — 缓存的内存量 (169M)

Пятая строка: информация о разделе подкачки. Конкретная информация приведена ниже:

32764556k total — 交换区总量(32GB)
0k used — 使用的交换区总量(0K)
32764556k free — 空闲交换区总量(32GB)
3612636k cached — 缓冲的交换区总量(3.6GB)

Шестая строка: пустая строка.

Седьмая строка и ниже: мониторинг состояния каждого процесса (задачи). Описание информации в столбце Project приведено ниже:

PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)

Интерактивные команды top

h 显示top交互命令帮助信息
c 切换显示命令名称和完整命令行
m 以内存使用率排序
P 根据CPU使用百分比大小进行排序
T 根据时间/累计时间进行排序
W 将当前设置写入~/.toprc文件中
o或者O 改变显示项目的顺序

30. команда kill

Отправляет указанный сигнал соответствующему процессу. Если тип сигнала не указан, будет отправлен SIGTERM (15) для завершения указанного процесса. Если программу всё ещё не удаётся завершить, используйте параметр "-KILL", который отправляет сигнал SIGKILL (9), чтобы принудительно завершить процесс. Для просмотра номера процесса используйте команду ps или команду jobs. Пользователь root может воздействовать на процессы любого пользователя; пользователи без прав root могут воздействовать только на свои процессы.

Общие параметры:

-l  信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称
-a  当处理当前进程时,不限制命令名和进程号的对应关系
-p  指定kill 命令只打印相关进程的进程号,而不发送任何信号
-s  指定发送信号
-u  指定用户

Примеры:

(1) Сначала с помощью ps найдите процесс pro1, затем с помощью kill завершите его.

kill -9 $(ps -ef | grep pro1)

31. команда free

Отображает использование системной памяти, включая физическую память, swap-память и буферную память ядра.

Параметры команды:

-b 以Byte显示内存使用情况
-k 以kb为单位显示内存使用情况
-m 以mb为单位显示内存使用情况
-g 以gb为单位显示内存使用情况
-s<间隔秒数> 持续显示内存
-t 显示内存使用总合

Примеры:

(1) Отобразить использование памяти.

free
free -k
free -m

(2) Отобразить информацию об использовании памяти в суммарном виде.

free -t

(3) Периодически запрашивать использование памяти.

free -s 10

Исходный URL: https://www.cnblogs.com/gaojun/p/3359355.html