通常来讲,计算机硬件是由运算器、控制器、存储器、输入/输出设备等共同组成的,而让各种硬件设备各司其职且又能协同运行的东西就是系统内核。Linux系统的内核负责完成对硬件资源的分配、调度等管理任务。由此可见,系统内核对计算机的正常运行来讲是太重要了,因此一般不建议直接去编辑内核中的参数,而是让用户通过基于系统调用接口开发出的程序或服务来管理计算机,以满足日常工作的需要。
Shell就是根据这些系统调用接口实现的一个命令行工具。Shell(也称为终端或壳)充当的是人与内核(硬件)之间的翻译官,用户把一些命令“告诉”终端,它就会调用相应的程序服务去完成某些工作。现在包括红帽系统在内的许多主流Linux系统默认使用的终端是Bash(Bourne-Again SHell)解释器。主流Linux系统选择Bash解释器作为命令行终端主要有以下4项优势。
要想准确、高效地完成各种任务,仅依赖于命令本身是不够的,还应该根据实际情况来灵活调整各种命令的参数。常见执行Linux命令的格式是这样的:
命令名称 [命令参数] [命令对象]
注意: 命令名称、命令参数、命令对象之间请用空格键分隔。
命令对象一般是指要处理的文件、目录、用户等资源,而命令参数可以用长格式(完整的选项名称),也可以用短格式(单个字母的缩写),两者分别用 –(双横线) 与 - (单横线)作为前缀。
命令格式 | 示例 |
---|---|
长格式 | man --help |
短格式 | man -h |
man命令是Linux系统中查看命令帮助信息的命令,对于学习Linux系统来说是一个非常实用的命令。
打开终端,键入以下命令:
man man
敲击回车,会弹出以下内容
在man命令帮助信息的界面中,所包含的常用操作按键及其用途如下表所示:
按键 | 用处 |
---|---|
空格键 | 向下翻一页 |
Page down | 向下翻一页 |
Page up | 向上翻一页 |
home | 直接前往首页 |
end | 直接前往尾页 |
/ | 从上至下搜索某个关键词,如“/linux” |
? | 从下至上搜索某个关键词,如“?linux” |
n | 定位到下一个搜索到的关键词 |
N | 定位到上一个搜索到的关键词 |
q | 退出帮助文档 |
man命令的帮助信息的结构如下表所示:
结构名称 | 代表意义 |
---|---|
NAME | 命令的名称 |
SYNOPSIS | 参数的大致使用方法 |
DESCRIPTION | 介绍说明 |
EXAMPLES | 演示(附带简单说明) |
OVERVIEW | 概述 |
DEFAULTS | 默认的功能 |
OPTIONS | 具体的可用选项(带介绍) |
ENVIRONMENT | 环境变量 |
FILES | 用到的文件 |
SEE ALSO | 相关的资料 |
HISTORY | 维护历史与联系方式 |
echo命令用于在终端输出字符串或变量提取后的值,格式为“echo [字符串 | $变量]”。
命令示例:
[root@localhost ~]# echo hello,world #输出hello,world
hello,world
[root@localhost ~]# echo $SHELL #输出系统变量SHELL
/bin/bash
date命令用于显示及设置系统的时间或日期,格式为“date [选项] [+指定的格式]”。
date命令参数及作用:
参数 | 作用 |
---|---|
%t | 跳格[Tab键] |
%H | 小时(00~23) |
%I | 小时(00~12) |
%M | 分钟(00~59) |
%S | 秒(00~59) |
%j | 今年中的第几天 |
命令示例:
[root@localhost ~]# date #系统默认格式
Mon Aug 24 16:11:23 CST 2017
[root@localhost~]# date "+%Y-%m-%d %H:%M:%S" #年-月-日 小时:分钟:秒
2017-08-24 16:29:12
[root@localhost~]# date -s "20170901 8:30:00" #设置系统时间
Fri Sep 1 08:30:00 CST 2017
[root@localhost~]# date #再次查看,时间已更改
Fri Sep 1 08:30:01 CST 2017
[root@localhost~]# date "+%j" #今年中的第几天
244
reboot命令用于重启系统,其格式为reboot。
由于重启计算机这种操作会涉及硬件资源的管理权限,因此默认只能使用root管理员来重启,其命令如下:
[root@localhost~]# reboot
poweroff命令用于关闭系统,其格式为poweroff。
该命令与reboot命令相同,都会涉及硬件资源的管理权限,因此默认只有root管理员才可以关闭电脑,其命令如下:
[root@localhost~]# poweroff
wget命令用于在终端中下载网络文件,格式为“wget [参数] 下载地址”。
wget命令参数及作用:
参数 | 作用 |
---|---|
-b | 后台下载模式 |
-P | 下载到指定目录 |
-t | 最大尝试次数 |
-c | 断点续传 |
-p | 下载页面内所有资源,包括图片、视频等 |
-r | 递归下载 |
命令示例:
[root@localhost~]# #利用wget下载一份Linux学习书籍
[root@localhost~]# wget https://www.linuxprobe.com/docs/LinuxProbe.pdf
--2017-08-24 19:30:12 -- https://www.linuxprobe.com/docs/LinuxProbe.pdf
Resolving www.linuxprobe.com (www.linuxprobe.com)... 220.181.105.185
Connecting to www.linuxprobe.com (www.linuxprobe.com)|220.181.105.185|:80...connected.
HTTP request sent, awaiting response... 200 OK
Length: 45948568 (44M) [application/pdf]
Saving to: ‘LinuxProbe.pdf’
100%[===========================================>] 45,948,568 32.9MB/s in 1.3s
2017-08-24 19:30:14 (32.9 MB/s) - ‘LinuxProbe.pdf’ saved [45948568/45948568]
ps命令用于查看系统中的进程状态,格式为“ps [参数]”。
ps命令参数及作用:
参数 | 作用 |
---|---|
-a | 显示所有进程(包括其他用户的进程) |
-u | 用户以及其他详细信息 |
-x | 显示没有控制终端的进程 |
在Linux系统中,有5种常见的进程状态,分别为运行、中断、不可中断、僵死与停止,其各自含义如下所示。
R(运行):进程正在运行或在运行队列中等待。
S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该 状态。
D(不可中断):进程不响应系统异步信号,即便用kill命令也不能将其中断。
Z(僵死):进程已经终止,但进程描述符依然存在, 直到父进程调用wait4()系统函数后将进程释放。
T(停止):进程收到停止信号后停止运行。
当执行ps aux命令后通常会看到如下表所示的进程状态,且表中只是列举了部分输出值,而且正常的输出值中不包括中文注释。
USER | PID | %CPU | %MEM | VSZ | RSS | TTY | STAT | START | TIME | COMMAND |
---|---|---|---|---|---|---|---|---|---|---|
进程的所有者 | 进程ID号 | 运算器占用率 | 内存占用率 | 虚拟内存使用量(单位是KB) | 占用的固定内存量(单位是KB) | 所在终端 | 进程状态 | 被启动的时间 | 实际使用CPU的时间 | 命令名称与参数 |
root | 1 | 0.0 | 0.4 | 53684 | 7628 | ? | Ss | 07:22 | 0:02 | /usr/lib/systemd/systemd |
root | 2 | 0.0 | 0.0 | 0 | 0 | ? | S | 07:22 | 0:00 | [kthreadd] |
root | 3 | 0.0 | 0.0 | 0 | 0 | ? | S | 07:22 | 0:00 | [ksoftirqd/0] |
root | 5 | 0.0 | 0.0 | 0 | 0 | ? | S< | 07:22 | 0:00 | [kworker/0:0H] |
root | 7 | 0.0 | 0.0 | 0 | 0 | ? | S | 07:22 | 0:00 | [migration/0] |
top命令用于动态地监视进程活动与系统负载等信息,其格式为top。
top命令相当强大,能够动态地查看系统运维状态,完全将它看作Linux中的“强化版的Windows任务管理器”。
在上图中,top命令执行结果的前5行为系统整体的统计信息,其所代表的含义如下。
第1行:系统时间、运行时间、登录终端数、系统负载(三个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低)。
第2行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。
第3行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。其中数据均为CPU数据并以百分比格式显示,例如“97.1 id”意味着有97.1%的CPU处理器资源处于空闲。
第4行:物理内存总量、内存使用量、内存空闲量、作为内核缓存的内存量。
第5行:虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、已被提前加载的内存量。
pidof命令用于查询某个指定服务进程的PID值,格式为“pidof [参数] [服务名称]”。
每个进程的进程号码值(PID)是唯一的,因此可以通过PID来区分不同的进程。
命令示例:
[root@localhost~]# pidof sshd #查询本机上sshd服务程序的PID
2156
kill命令用于终止某个指定PID的服务进程,格式为“kill [参数] [进程PID]”。
命令示例:
[root@localhost ~]# kill 2156 #强制停止sshd服务
killall命令用于终止某个指定名称的服务所对应的全部进程,格式为:“killall [参数] [服务名称]”。
通常来讲,复杂软件的服务程序会有多个进程协同为用户提供服务,如果逐个去结束这些进程会比较麻烦,此时可以使用killall命令来批量结束某个服务程序带有的全部进程。
命令示例:
[root@localhost~]# pidof httpd #查询httpd服务对应的所有PID
13581 13580 13579 13578 13577 13576
[root@localhost~]# killall httpd #批量结束服务
[root@localhost~]# pidof httpd
[root@localhost~]#
如果我们在系统终端中执行一个命令后想立即停止它,可以同时按下Ctrl + C组合键,这样将立即终止该命令的进程。或者,如果有些命令在执行时不断地在屏幕上输出信息,影响到后续命令的输入,则可以在执行命令时在末尾添加上一个&符号,这样命令将进入系统后台来执行。
ifconfig命令用于获取网卡配置与网络状态等信息,格式为“ifconfig [网络设备] [参数]”。
使用ifconfig命令来查看本机当前的网卡配置与网络状态等信息时,其实主要查看的就是网卡名称、inet参数后面的IP地址、ether参数后面的网卡物理地址(又称为MAC地址),以及RX、TX的接收数据包与发送数据包的个数及累计流量
命令示例:
[root@localhost~]# ifconfig
eno16777728: #网卡名称
flags=4163 mtu 1500
inet 192.168.10.10 #IP地址
netmask 255.255.255.0 broadcast 192.168.10.255
inet6 fe80::20c:29ff:fec4:a409 prefixlen 64 scopeid 0x20
ether 00:0c:29:c4:a4:09 #网卡物理地址,即MAC
txqueuelen 1000 (Ethernet)
RX packets 36 bytes 3176 (3.1 KiB) #接收数据包信息
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 38 bytes 4757 (4.6 KiB) #发送数据包信息
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
uname命令用于查看系统内核与系统版本等信息,格式为“uname [-a]”。
在使用uname命令时,一般会固定搭配上-a参数来完整地查看当前系统的详细信息。
命令示例:
[root@localhost~]# uname -a
Linux #内核名称
localhost.localhost #主机名
3.10.0-123.el7.x86_64 #内核发行版本
#1 SMP #节点名
Mon May 5 11:16:57 EDT 2017 #系统时间
x86_64 #硬件名称
x86_64 #硬件平台
x86_64 #处理器类型
GNU/Linux #操作系统名称
如果要查看当前系统版本的详细信息,则需要查看redhat-release文件,其命令以及相应的结果如下:
[root@localhost~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.0 (Maipo)
uptime用于查看系统的负载信息,格式为uptime。
uptime命令显示当前系统时间、系统已运行时间、启用终端数量以及平均负载值等信息。平均负载值指的是系统在最近1分钟、5分钟、15分钟内的压力情况。
命令示例:
[root@localhost~]# uptime
22:49:55 up 10 min, 2 users, load average: 0.01, 0.19, 0.18
free用于显示当前系统中内存的使用量信息,格式为“free [-h]”。
[root@localhost~]# free -h #以用户友好的单位显示数据
内存总量 | 已用量 | 可用量 | 进程共享的内存量 | 磁盘缓存的内存量 | 缓存的内存量 | |
---|---|---|---|---|---|---|
total | used | free | shared | buffers | cached | |
Mem: | 1.8G | 1.3G | 542M | 9.8M | 1.6M | 413M |
-/+ buffers/cache: | 869M | 957M | ||||
Swap: | 2.0G | 0B | 2.0G |
who用于查看当前登入主机的用户终端信息,格式为“who [参数]”。
[root@localhost~]# who
who命令执行后输出信息如下表所示:
登陆的用户名 | 终端设备 | 登陆到系统的时间 |
---|---|---|
root | :0 | 2017-08-24 17:52 (:0) |
root | pts/0 | 2017-08-24 17:52 (:0) |
last命令用于查看所有系统的登录记录,格式为“last [参数]”。
命令示例:
[root@localhost ~]# last
root pts/0 :0 Mon Aug 24 17:52 still logged in
root :0 :0 Mon Aug 24 17:52 still logged in
(unknown :0 :0 Mon Aug 24 17:50 - 17:52 (00:02)
reboot system boot 3.10.0-123.el7.x Tue Aug 25 01:49 - 18:17 (-7:-32)
root pts/0 :0 Mon Aug 24 15:40 - 08:54 (7+17:14)
root pts/0 :0 Fri Jul 10 10:49 - 15:37 (45+04:47)
………………省略部分登录信息………………
history命令用于显示历史执行过的命令,格式为“history [-c]”。
系统默认记录用户执行过的1000条命令,可自定义 /etc/profile 文件中的HISTSIZE变量值,改变记录的命令条数。
命令示例:
[root@localhost~]# history
1 tar xzvf VMwareTools-9.9.0-2304977.tar.gz
2 cd vmware-tools-distrib/
3 ls
4 cd /home
5 ls
6 tar xzvf VMwareTools-9.9.0-2304977.tar.gz
7 cd vmware-tools-distrib/
8 ls
9 ./vmware-install.pl -d
10 reboot
11 history
[root@localhost~]# !3 #调用之前执行过的命令
anaconda-ks.cfg Documents initial-setup-ks.cfg Pictures Templates
Desktop Downloads Music Public Videos
[root@localhost~]# history -c #清除命令历史记录
[root@localhost~]# history
[root@localhost~]#
工作目录指的是用户当前在系统中所处的位置。
pwd命令用于显示用户当前所处的工作目录,格式为“pwd [选项]”。
命令示例:
[root@localhost etc]# pwd
/etc
cd命令用于切换工作路径,格式为“cd [目录名称]”。
命令示例:
[root@localhost ~]# cd /etc #从用户家目录切换到/etc目录
[root@localhost etc]# cd /bin #切换到/bin目录
[root@localhost bin]# cd - #快速切换到上一次的工作目录
/etc
[root@localhost etc]# cd ~ #快速切换到用户家目录
[root@localhost ~]# #
ls命令用于显示目录中的文件信息,格式为“ls [选项] [文件] ”。
使用ls命令的“-a”参数看到全部文件(包括隐藏文件),使用“-l”参数可以查看文件的属性、大小等详细信息。将这两个参数整合之后,再执行ls命令即可查看当前目录中的所有文件并输出这些文件的属性信息:
命令示例:
[root@localhost /]# ls -al
total 80
dr-xr-xr-x. 21 root root 4096 Apr 23 08:48 .
dr-xr-xr-x. 21 root root 4096 Apr 23 08:48 ..
-rw-r--r-- 1 root root 0 Oct 8 2019 .autorelabel
lrwxrwxrwx. 1 root root 7 Oct 8 2019 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 Mar 23 13:25 boot
drwxr-xr-x 19 root root 2960 Apr 16 16:55 dev
drwxr-xr-x. 93 root root 4096 Apr 25 09:49 etc
drwxr-xr-x. 3 root root 4096 Nov 13 18:10 home
lrwxrwxrwx. 1 root root 7 Oct 8 2019 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Oct 8 2019 lib64 -> usr/lib64
drwx------. 2 root root 16384 Oct 8 2019 lost+found
drwxr-xr-x. 2 root root 4096 Apr 11 2018 media
drwxr-xr-x. 2 root root 4096 Apr 11 2018 mnt
drwxr-xr-x 2 777 zya 4096 Apr 9 19:01 nfsfile
drwxr-xr-x. 2 root root 4096 Apr 11 2018 opt
dr-xr-xr-x 93 root root 0 Apr 16 16:55 proc
drwxr-xr-x 5 zya zya 4096 Mar 29 16:26 Pyramid
dr-xr-x---. 9 root zya 4096 May 4 16:01 root
drwxr-xr-x 29 root root 860 May 1 16:08 run
lrwxrwxrwx. 1 root root 8 Oct 8 2019 sbin -> usr/sbin
drwxr-xr-x 2 root zya 4096 Apr 23 08:48 smb
drwxr-xr-x. 2 root root 4096 Apr 11 2018 srv
dr-xr-xr-x 13 root root 0 Apr 17 00:55 sys
drwxrwxrwt. 9 root root 4096 May 4 03:24 tmp
drwxr-xr-x. 13 root root 4096 Oct 8 2019 usr
drwxr-xr-x. 21 root root 4096 Dec 2 16:45 var
如果想要查看目录属性信息,则需要额外添加一个-d参数。例如,可使用如下命令查看/etc目录的权限与属性信息:
[root@localhost ~]# ls -ld /etc
drwxr-xr-x. 132 root root 8192 Jul 10 10:48 /etc
cat命令用于查看纯文本文件(内容较少的),格式为“cat [选项] [文件]”。
命令示例:
[root@localhost ~]# cat -n initial-setup-ks.cfg # -n 参数 开启显示行号
1 #version=RHEL7
2 # X Window System configuration information
3 xconfig --startxonboot
4
5 # License agreement
6 eula --agreed
7 # System authorization information
8 auth --enableshadow --passalgo=sha512
9 # Use CDROM installation media
10 cdrom
11 # Run the Setup Agent on first boot
12 firstboot --enable
13 # Keyboard layouts
14 keyboard --vckeymap=us --xlayouts='us'
15 # System language
16 lang en_US.UTF-8
………………省略部分输出信息………………
more命令用于查看纯文本文件(内容较多的),格式为“more [选项]文件”。
more命令会在最下面使用百分比的形式来提示已经阅读了多少内容,还可以使用空格键或回车键向下翻页。
命令示例:
[root@localhost ~]# more initial-setup-ks.cfg
#version=RHEL7
# X Window System configuration information
xconfig --startxonboot
# License agreement
eula --agreed
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom
# Run the Setup Agent on first boot
firstboot --enable
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8
ignoredisk --only-use=sda
# Network information
network --bootproto=dhcp --device=eno16777728 --onboot=off --ipv6=auto
network --bootproto=dhcp --hostname=linuxprobe.com
--More--(43%)
head命令用于查看纯文本文档的前N行,格式为“head [选项] [文件]”。
命令示例:
[root@localhost ~]# head -n 20 initial-setup-ks.cfg # -n 20 显示文件的前20行
#version=RHEL7
# X Window System configuration information
xconfig --startxonboot
# License agreement
eula --agreed
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom
# Run the Setup Agent on first boot
firstboot --enable
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8
ignoredisk --only-use=sda
# Network information
network --bootproto=dhcp --device=eno16777728 --onboot=off --ipv6=auto
[root@localhost ~]#
tail命令用于查看纯文本文档的后N行或持续刷新内容,格式为“tail [选项] [文件]”。
命令示例:
[root@localhost ~]# tail -n 5 /var/log/messages #显示文件最后5行
Aug 1 01:05:31 localhost systemd: Started LSB: Bring up/down networking.
Aug 1 01:08:56 localhost dbus-daemon: dbus[1124]: [system] Activating service name='com.redhat.SubscriptionManager' (using servicehelper)
Aug 1 01:08:56 localhost dbus[1124]: [system] Activating service name='com.redhat.SubscriptionManager' (using servicehelper)
Aug 1 01:08:57 localhost dbus-daemon: dbus[1124]: [system] Successfully activated service 'com.redhat.SubscriptionManager'
Aug 1 01:08:57 localhost dbus[1124]: [system] Successfully activated service 'com.redhat.SubscriptionManager'
[root@localhost ~]# tail -f /var/log/messages #持续刷新文件
May 4 07:56:38 localhost gnome-session: Window manager warning: Log level 16: STACK_OP_ADD: window 0x1e00001 already in stack
May 4 07:56:38 localhost gnome-session: Window manager warning: Log level 16: STACK_OP_ADD: window 0x1e00001 already in stack
May 4 07:56:38 localhost vmusr[12982]: [ warning] [Gtk] gtk_disable_setlocale() must be called before gtk_init()
May 4 07:56:50 localhost systemd-logind: Removed session c1.
Aug 1 01:05:31 localhost systemd: Time has been changed
Aug 1 01:05:31 localhost systemd: Started LSB: Bring up/down networking.
Aug 1 01:08:56 localhost dbus-daemon: dbus[1124]: [system] Activating service name='com.redhat.SubscriptionManager' (using servicehelper)
Aug 1 01:08:56 localhost dbus[1124]: [system] Activating service name='com.redhat.SubscriptionManager' (using servicehelper)
Aug 1 01:08:57 localhost dbus-daemon: dbus[1124]: [system] Successfully activated service 'com.redhat.SubscriptionManager'
Aug 1 01:08:57 localhost dbus[1124]: [system] Successfully activated service 'com.redhat.SubscriptionManager'
tr命令用于替换文本文件中的字符,格式为“tr [原始字符] [目标字符]”。
命令示例:
[root@localhost ~]# echo "hello,world" > a.txt #创建文本文件
[root@localhost ~]# cat a.txt #查看文件内容
hello,world
[root@localhost ~]# cat a.txt | tr [a-z] [A-Z] #使用tr命令替换字符
HELLO,WORLD
wc命令用于统计指定文本的行数、字数、字节数,格式为“wc [参数] 文本”。
wc命令参数及作用:
参数 | 作用 |
---|---|
-l | 只显示行数 |
-w | 只显示单词数 |
-c | 只显示字节数 |
命令示例:
[root@localhost ~]# wc -l /etc/passwd #统计系统中有多少个用户
38 /etc/passwd
stat命令用于查看文件的具体存储信息和时间等信息,格式为“stat 文件名称”。
命令stat anaconda-ks.cfg会显示出文件的三种时间状态:Access、Modify、Change。
命令示例:
[root@localhost ~]# stat anaconda-ks.cfg
File: ‘anaconda-ks.cfg’
Size: 1213 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 68912908 Links: 1
Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:admin_home_t:s0
Access: 2017-07-14 01:46:18.721255659 -0400 #最后一次访问文件内容时间
Modify: 2017-05-04 15:44:36.916027026 -0400 #最后一次修改文件内容时间
Change: 2017-05-04 15:44:36.916027026 -0400 #最后一次修改文件属性时间
Birth: -
cut命令用于按“列”提取文本字符,格式为“cut [参数] 文本”。
命令示例:
[root@localhost ~]# head -n 2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@localhost ~]# cut -d: -f1 /etc/passwd #-d 设置分隔符
root #-f 设置目标列
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
diff命令用于比较多个文本文件的差异,格式为“diff [参数] 文件”。
–brief参数来确认两个文件是否不同;-c参数来详细比较出多个文件的差异之处。
命令示例:
[root@localhost ~]# cat diff_A.txt
Welcome to linuxprobe.com
Red Hat certified
Free Linux Lessons
Professional guidance
Linux Course
[root@localhost~]# cat diff_B.txt
Welcome tooo linuxprobe.com
Red Hat certified
Free Linux LeSSonS
.....
Professional guidance
Linux Course
[root@localhost ~]# diff --brief diff_A.txt diff_B.txt #比较是否相同
Files diff_A.txt and diff_B.txt differ
[root@localhost~]# diff -c diff_A.txt diff_B.txt #列出差异信息
*** diff_A.txt 2017-08-30 18:07:45.230864626 +0800
--- diff_B.txt 2017-08-30 18:08:52.203860389 +0800
***************
*** 1,5 ****
! Welcome to linuxprobe.com
Red Hat certified
! Free Linux Lessons
Professional guidance
Linux Course
--- 1,7 ----
! Welcome tooo linuxprobe.com
!
Red Hat certified
! Free Linux LeSSonS
! .....
Professional guidance
Linux Course
touch命令用于创建空白文件或设置文件的时间,格式为“touch [选项] [文件]”。
touch命令参数及作用:
参数 | 作用 |
---|---|
-a | 仅修改“读取时间”(atime) |
-m | 仅修改“修改时间”(mtime) |
-d | 同时修改atime与mtime |
命令示例:
[root@localhost ~]# ls -l anaconda-ks.cfg #查看文件的时间信息
-rw-------. 1 root root 1213 May 4 15:44 anaconda-ks.cfg
[root@localhost ~]# echo "Visit the LinuxProbe.com to learn linux skills" >> anaconda-ks.cfg #更改文件内容
[root@localhost ~]# ls -l anaconda-ks.cfg #查看文件的时间信息
-rw-------. 1 root root 1260 Aug 2 01:26 anaconda-ks.cfg
[root@localhost ~]# #更改文件的atime和mtime
[root@localhost ~]# touch -d "2017-05-04 15:44" anaconda-ks.cfg
[root@localhost ~]# ls -l anaconda-ks.cfg #查看文件的时间信息
-rw-------. 1 root root 1260 May 4 15:44 anaconda-ks.cfg
mkdir命令用于创建空白的目录,格式为“mkdir [选项] 目录”。
结合-p参数来递归创建出具有嵌套叠层关系的文件目录。
命令示例:
[root@localhost~]# mkdir linuxprobe
[root@localhost~]# cd linuxprobe
[root@localhost linuxprobe]# mkdir -p a/b/c/d/e #递归创建目录
[root@localhost linuxprobe]# cd a
[root@localhost a]# cd b
[root@localhost b]#
cp命令用于复制文件或目录,格式为“cp [选项] 源文件 目标文件”。
在Linux系统中,复制操作具体分为3种情况:
cp命令参数及作用:
参数 | 作用 |
---|---|
-p | 保留原始文件的属性 |
-d | 若对象为“链接文件”,则保留该“链接文件”的属性 |
-r | 递归持续复制(用于目录) |
-i | 若目标文件存在则询问是否覆盖 |
-a | 相当于-pdr(p、d、r为上述参数) |
命令示例:
[root@localhost ~]# touch install.log #创建空白文件
[root@localhost ~]# cp install.log x.log #复制文件
[root@localhost ~]# ls #查看复制结果
install.log x.log
mv命令用于剪切文件或文件重命名,格式为“mv [选项] 源文件 [目标路径|目标文件名]”。
命令示例:
[root@localhost ~]# mv x.log linux.log #同目录下,等同于重命名
[root@localhost ~]# ls
install.log linux.log
rm命令用于删除文件或目录,格式为“rm [选项] 文件”。
命令示例:
[root@localhost ~]# rm install.log #默认会询问是否删该改文件
rm: remove regular empty file ‘install.log’? y
[root@localhost ~]# rm -f linux.log #加-f 参数强制删除
[root@localhost ~]# ls
[root@localhost ~]# mkdir dirone
[root@localhost ~]# ls
dirone
[root@localhost ~]# rm -r dirone #删除目录需添加-r 参数
rm: remove directory ‘dirone’? y
[root@localhost ~]# ls
[root@localhost ~]#
dd命令用于按照指定大小和个数的数据块来复制文件或转换文件,格式为“dd [参数]”。
dd命令参数及作用:
参数 | 作用 |
---|---|
if | 输入的文件名称 |
of | 输出的文件名称 |
bs | 设置每个“块”的大小 |
count | 设置要复制“块”的个数 |
命令示例:
#用dd命令从/dev/zero设备文件中取出一个大小为560MB的数据块,将其保存为560_file
[root@localhost ~]# dd if=/dev/zero of=560_file count=1 bs=560M
1+0 records in
1+0 records out
587202560 bytes (587 MB) copied, 27.1755 s, 21.6 MB/s
file命令用于查看文件的类型,格式为“file 文件名”。
在Linux系统中,由于文本、目录、设备等所有这些一切都统称为文件,且文件的后缀名并无任何实际意义,仅为方便管理人员识别,所以就需要使用file命令来查看文件类型了。
[root@localhost ~]# file anaconda-ks.cfg
anaconda-ks.cfg: ASCII text
[root@localhost ~]# file /dev/sda
/dev/sda: block special
tar命令用于对文件进行打包压缩或解压,格式为“tar [选项] [文件]”。
tar命令参数及作用:
参数 | 作用 |
---|---|
-c | 创建压缩文件 |
-x | 解开压缩文件 |
-t | 查看压缩包内有哪些文件 |
-z | 用Gzip压缩或解压 |
-j | 用bzip2压缩或解压 |
-v | 显示压缩或解压的过程 |
-f | 目标文件名 |
-p | 保留原始的权限与属性 |
-P | 使用绝对路径来压缩 |
-C | 指定解压到的目录 |
常用命令组合:
命令 | 作用 |
---|---|
tar -czvf 压缩包名称.tar.gz 要打包的目录 | 把指定的文件进行打包压缩 |
tar -xzvf 压缩包名称.tar.gz | 解压压缩包 |
命令示例:
[root@localhost ~]# tar czvf etc.tar.gz /etc
tar: Removing leading `/' from member names
/etc/
/etc/fstab
/etc/crypttab
/etc/mtab
/etc/fonts/
/etc/fonts/conf.d/
/etc/fonts/conf.d/65-0-madan.conf
/etc/fonts/conf.d/59-liberation-sans.conf
/etc/fonts/conf.d/90-ttf-arphic-uming-embolden.conf
/etc/fonts/conf.d/59-liberation-mono.conf
/etc/fonts/conf.d/66-sil-nuosu.conf
………………省略部分压缩过程信息………………
[root@localhost ~]# mkdir /root/etc #创建解压缩目标目录,-C 解压到该目录
[root@localhost ~]# tar xzvf etc.tar.gz -C /root/etc
etc/
etc/fstab
etc/crypttab
etc/mtab
etc/fonts/
etc/fonts/conf.d/
etc/fonts/conf.d/65-0-madan.conf
etc/fonts/conf.d/59-liberation-sans.conf
etc/fonts/conf.d/90-ttf-arphic-uming-embolden.conf
etc/fonts/conf.d/59-liberation-mono.conf
etc/fonts/conf.d/66-sil-nuosu.conf
etc/fonts/conf.d/65-1-vlgothic-gothic.conf
etc/fonts/conf.d/65-0-lohit-bengali.conf
etc/fonts/conf.d/20-unhint-small-dejavu-sans.conf
………………省略部分解压过程信息………………
grep命令用于在文本中执行关键词搜索,并显示匹配的结果,格式为“grep [选项] [文件]”。grep命令的参数及其作用:
参数 | 作用 |
---|---|
-b | 将可执行文件(binary)当作文本文件(text)来搜索 |
-c | 仅显示找到的行数 |
-i | 忽略大小写 |
-n | 显示行号 |
-v | 反向选择——仅列出没有“关键词”的行。 |
在Linux系统中,/etc/passwd文件是保存着所有的用户信息,而一旦用户的登录终端被设置成 /sbin/nologin,则不再允许该用户登录系统,因此可以使用grep命令来查找出当前系统中不允许登录系统的所有用户信息:
命令示例:
[root@localhost ~]# grep /sbin/nologin /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
………………省略部分输出过程信息………………
find命令用于按照指定条件来查找文件,格式为“find [查找路径] 寻找条件 操作”。
find命令参数及作用:
参数 | 作用 |
---|---|
-name | 匹配名称 |
-perm | 匹配权限(mode为完全匹配,-mode为包含即可) |
-user | 匹配所有者 |
-group | 匹配所有组 |
-mtime -n +n | 匹配修改内容的时间(-n指n天以内,+n指n天以前) |
-atime -n +n | 匹配访问文件的时间(-n指n天以内,+n指n天以前) |
-ctime -n +n | 匹配修改文件权限的时间(-n指n天以内,+n指n天以前) |
-nouser | 匹配无所有者的文件 |
-nogroup | 匹配无所有组的文件 |
-newer f1 !f2 | 匹配比文件f1新但比f2旧的文件 |
–type b/d/c/p/l/f | 匹配文件类型(后面的字幕字母依次表示块设备、目录、字符设备、管道、链接文件、文本文件) |
-size | 匹配文件的大小(+50KB为查找超过50KB的文件,而-50KB为查找小于50KB的文件) |
-prune | 忽略某个目录 |
-exec …… {}\; | 后面可跟用于进一步处理搜索结果的命令 |
命令示例:
#获取/etc目录下所有以host开头的文件
[root@localhost ~]# find /etc -name "host*" -print
/etc/avahi/hosts
/etc/host.conf
/etc/hosts
/etc/hosts.allow
/etc/hosts.deny
/etc/selinux/targeted/modules/active/modules/hostname.pp
/etc/hostname
# 在整个系统中搜索包括SUID权限的所有文件
[root@localhost ~]# find / -perm -4000 -print
/usr/bin/fusermount
/usr/bin/su
/usr/bin/umount
/usr/bin/passwd
/usr/sbin/userhelper
/usr/sbin/usernetctl
………………省略部分输出信息………………
# 在整个文件系统中找出所有归属于linuxprobe用户的文件并复制到/root/findresults目录。
[root@localhost ~]# find / -user linuxprobe -exec cp -a {} /root/findresults/ \;