章节简述:
本章节讲述系统内核、Bash解释器的关系与作用,教给读者如何正确的执行Linux命令以及常见排错方法。
经验丰富的运维人员可以恰当的组合命令与参数,使Linux字符命令更加的灵活且相对减少消耗系统资源。
已经收录了上百个最常用的Linux命令,其中有数十个命令被放到了后面的章节,到时候咱们再随用随学~
2.1 强大好用的SHELL
计算机硬件是由运算器、控制器、存储器、输入/输出设备等设备组成的,而能够让机箱内各种设备各司其职东西就叫做——系统内核。内核负责驱动硬件、管理活动和分配/管理硬件资源,如此说来系统内核对计算机来讲可真的是太重要了,所以它不能直接让用户操作。
因为用户不能直接控制硬件也不能直接操作内核,于是便需要基于“系统调用接口”开发出的程序/服务来满足用户日常工作了。
首先承认在红帽RHEL7中有些诸如逻辑卷管理器(LVM)的图形化工具非常好用,也减少了运维人员操作出错的几率,值得称赞,但一直以来Linux运维人员更多的倾向于用命令写脚本程序,因为图形化的工具不灵活而且相比来说更加消耗系统资源。
其实很多图形工具也是调用脚本来工作的,但功能却被“阉割”了,更缺乏了灵活性,所以有些运维人员甚至都不会给Linux系统安装图形界面,需要工作了直接远程连接过去,不得不说这样做真的挺高效的。
"Shell"——也可称为“壳”,充当的是人与内核(硬件)的翻译官,用户将一些命令“告诉”Shell,它就会调用相应的程序服务执行工作啦,很厉害吧~~现在包括红帽系统在内的许多热门Linux系统主流默认字符Shell是Bash(Bourne-Again SHell)。
读者要明白bash作为大多数linux系统的默认字符解释器,必须必须必须得学好!Bash的优势:
1.默认保存历史命令(可用上下键翻看)
2.命令仅需输入前几位就可以用tab键补全(RHEL7更牛的是参数补全)
3.强大的批处理脚本
4.实用的环境变量
2.2 执行命令与查看帮助
既然有了如此好用的“翻译官”,那么接下来就有必要好好学习下如何更高效的和它沟通了~
要想准确的、高效的完成工作,不能够光靠命令本身,还应该根据实际情况来组合各种命令选择和命令参数:
命令名称 [命令参数] [命令对象]
注意:命令名称、命令参数、命令对象之间请用空格键分隔。
长格式如:man --help
短格式如:man -h
代码 | 代表内容 |
1 | 普通的命令 |
2 | 内核调用的函数与工具 |
3 | 常见的函数与函数库 |
4 | 设备文件的说明 |
5 | 配置文件 |
6 | 游戏 |
7 | 惯例与协议 |
8 | 管理员可用的命令 |
9 | 内核相关的文件 |
结构名称 | 代表意义 |
NAME | 命令的名称 |
SYNOPSYS | 参数的大致使用方法 |
DESCRIPTION | 介绍说明 |
EXAMPLES | 演示(附带简单说明) |
OVERVIEW | 概述 |
DEFAULTS | 默认的功能 |
OPTIONS | 具体的可用选项(带介绍) |
ENVIRONMENT | 环境变量 |
FILES | 用到的文件 |
SEE ALSO | 相关的资料 |
HISTORY | 维护历史与联系方式 |
按键 | 用处 |
空格键 | 向下翻一页。 |
[Page Down] | 向下翻一页。 |
[Page Up] | 向上翻一页。 |
[HOME] | 直接前往首页。 |
[END] | 直接前往尾页。 |
/关键词 | 从上至下搜索某个关键词,如"/linux"。 |
?关键词 | 从下至上搜索某个关键词,如"?linux"。 |
n | 定位到下一个搜索到的关键词。 |
N | 定位到上一个搜索到的关键词。 |
q | 退出帮助文档。 |
2.3 常用系统工作命令
刚刚学会了一个重量级的man命令,感觉很不错吧?接下来就是常用的命令啦,尽量背记下来,当然实在不行回来查也可以的。
echo命令用于在终端显示字符串或变量,格式为:“echo [字符串 | 变量]”。
将echo命令的字符串输出到终端:
[root@linuxprobe ~]# echo Linuxprobe.Com
Linuxprobe.Com
用echo命令查看SHELL变量的值(前面有$符号):
[root@linuxprobe ~]# echo $SHELL
/bin/bash
查看本机主机名:
[root@linuxprobe ~]# echo $HOSTNAME
Linuxprobe.Com
date命令用于显示/设置系统的时间或日期,格式为:"date [选项] [+指定的格式]"。
强大的date命令能够按照指定格式显示系统的时间或日期,只需键入"+"号开头的字符串指定其格式,详细格式如下:
参数 | 作用 |
%t | 跳格[TAB键] |
%H | 小时(00-23) |
%I | 小时(01-12) |
%M | 分钟(00-59) |
%S | 秒(00-60) |
%X | 相当于%H:%M:%S |
%Z | 显示时区 |
%p | 显示本地AM或PM |
%A | 星期几 (Sunday-Saturday) |
%a | 星期几 (Sun-Sat) |
%B | 完整月份 (January-December) |
%b | 缩写月份 (Jan-Dec) |
%d | 日(01-31) |
%j | 一年中的第几天(001-366) |
%m | 月份(01-12) |
%Y | 完整的年份 |
查看当前的系统时间:
[root@linuxprobe ~]# date
Mon Aug 24 16:11:23 CST 2015
按照"年-月-日 小时:分钟:秒"的格式:
[root@linuxprobe ~]# date "+%Y-%m-%d %H:%M:%S"
2015-08-24 16:29:12
设置系统时间为2015年9月1日8点半:
[root@linuxprobe ~]# date -s "20150901 8:30:00"
Tue Sep 1 08:30:00 CST 2015
查看当前系统时间:
[root@linuxprobe ~]# date
Tue Sep 1 08:30:01 CST 2015
查看本地系统时区:
[root@linuxprobe ~]# date "+%Z"
CST
查看星期几:
[root@linuxprobe ~]# date "+%A"
Tuesday
输入当前是上午还是下午:
[root@linuxprobe Desktop]# date "+%p"
AM
判断今天是一年中的第几天:
[root@linuxprobe ~]# date "+%j"
244
reboot命令用于重启系统(仅root用户可以使用),格式为:"reboot"。
重启计算机:
[root@linuxprobe ~]# reboot
wget命令用于使用命令行下载网络文件,格式为:“wget [参数] 下载地址”。
参数 | 作用 |
-b | 后台下载模式。 |
-O | 下载到指定目录。 |
-t | 最大尝试次数。 |
-c | 断点续传 |
-p | 下载页面内所有资源,包括图片、视频等。 |
-r | 递归下载 |
首先需要配置您的Linux系统能够正常登入互联网,然后使用wget命令下载由《Linux就该这么学》提供的红帽RHEL7系统镜像:
--2015-09-01 18:25:24-- http://www.linuxprobe.com/Tools/RHEL-server-7.0-x86_64-LinuxProbe.Com.iso
Resolving www.linuxprobe.com... 106.185.25.197
Connecting to www.linuxprobe.com|106.185.25.197|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3743416320 (3.5G) [application/octet-stream]
Saving to: 'RHEL-server-7.0-x86_64-LinuxProbe.Com.iso'
100%[====================================>] 3,743,416,320 1.82M/s in 32m 27s
2015-09-01 18:57:51 (1.83 MB/s) - 'RHEL-server-7.0-x86_64-LinuxProbe.Com.iso' saved [3743416320/3743416320]
递归下载《Linux就该这么学》的整站页面与所有资料,下载完成后会在当前目录中保存成名为"www.linuxprobe.com"的目录:
[root@linuxprobe ~]# wget -r -p http://www.linuxprobe.com
--2015-09-01 18:31:41-- http://www.linuxprobe.com/
Resolving www.linuxprobe.com... 106.185.25.197
Connecting to www.linuxprobe.com|106.185.25.197|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: `www.linuxprobe.com/index.html'
………………省略下载过程………………
elinks用于实现一个纯文本界面的浏览器,格式为:“elinks [参数] 网址”。
安装elinks纯文本浏览器:
[root@linuxprobe ~]# yum install elinks
使用elinks访问《Linux就该这么学》:
[root@linuxprobe ~]# elinks www.linuxprobe.com
2.4 系统状态检测命令
合格的运维人员必需具备快速查看系统状态的能力,所以这些命令真的很常用呢!
ifconfig用于获取网卡配置与网络状态等信息:格式为"ifconfig [网络设备] [参数]"。
查看本机当前的网卡配置与网络状态等信息:
[root@linuxprobe ~]# ifconfig
eno16777728: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.10.10 netmask 255.255.255.0 broadcast 192.168.10.255
inet6 fe80::20c:29ff:fe9c:6373 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:9c:63:73 txqueuelen 1000 (Ethernet)
RX packets 61 bytes 6612 (6.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 32 bytes 4511 (4.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 2 bytes 140 (140.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2 bytes 140 (140.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
uname命令用于查看系统内核版本等信息,格式为:“uname [-a]”。
查看系统的内核名称、内核发行版、内核版本、节点名、硬件名称、硬件平台、处理器类型、操作系统等信息:
[root@linuxprobe ~]# uname -a
Linux linuxprobe.com 3.10.0-123.el7.x86_64 #1 SMP Mon May 5 11:16:57 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux
顺便说下,如果您想查看系统详细版本信息就看redhat-release文件:
[root@linuxprobe ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.0 (Maipo)
uptime命令用于查看系统的负载情况,格式为:“uptime”。
我也经常用"watch -n 1 uptime"来每秒刷新一次获得当前的系统负载情况,输出内容分别为系统当前时间、系统已运行时间、当前在线用户以及平均负载值。而平均负载分为最近1分钟、5分钟、15分钟的系统负载情况,负载值越低越好(小于1是正常)。
获取当前系统状态信息:
[root@linuxprobe ~]# uptime
22:49:55 up 10 min, 2 users, load average: 0.01, 0.19, 0.18
free命令用于显示当前系统中内存的使用量情况,格式为:“free [-m/-g]”。
以m为单位显示当前系统中内存的使用量情况:
[root@linuxprobe ~]# free -m
总计内存量 | 已用量 | 可用量 | 进程共享的内存量 | 磁盘缓存的内存量 | 缓存的内存量 | |
total | used | free | shared | buffers | cached | |
Mem: | 1483 | 885 | 598 | 9 | 0 | 255 |
-/+ buffers/cache: | 628 | 855 | ||||
Swap: | 2047 | 0 | 2047 |
who命令用于查看当前登入主机的用户情况,格式为:"who [参数]"。
查看当前登入主机用户的情况:
[root@linuxprobe ~]# who
登陆的用户名 | 终端设备 | 登陆到系统的时间 |
root | :0 | 2015-08-24 17:52 (:0) |
root | pts/0 | 2015-08-24 17:52 (:0) |
last命令用于查看所有系统的登入记录,格式为:"last [参数]"。
查看系统的登入记录:
[root@linuxprobe ~]# 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]”。
查看当前用户在系统中执行过的命令:
[root@linuxprobe ~]# history
1 tar xzvf VMwareTools-9.9.0-2304977.tar.gz
2 cd vmware-tools-distrib/
3 ls
4 ./vmware-install.pl -d
5 reboot
6 df -h
7 cd /run/media/
8 ls
9 cd root/
10 ls
11 cd VMware\ Tools/
12 ls
13 cp VMwareTools-9.9.0-2304977.tar.gz /home
14 cd /home
15 ls
16 tar xzvf VMwareTools-9.9.0-2304977.tar.gz
17 cd vmware-tools-distrib/
18 ls
19 ./vmware-install.pl -d
20 reboot
21 history
历史命令会被保存到用户家目录中的".bash_history"文件中。Linux系统中以点(.)开头的文件均代表隐藏文件,一般会是系统文件。
[root@linuxprobe ~]# cat ~/.bash_history
清空该用户在本机中执行过命令的历史记录:
[root@linuxprobe ~]# history -c
history默认会保存1000条执行过的命令,若要修改可直接编辑/etc/profile文件的HISTSIZE值。
sosreport命令用于收集系统系统配置并诊断信息后输出结论文档,格式为:“sosreport”。
当我们的红帽系统出现故障需要联系红帽厂商或其他技术支持时,大多数情况都需要提供使用到这个命令。
收集系统本地配置信息并诊断:
[root@linuxprobe ~]# sosreport
sosreport (version 3.0)
This command will collect diagnostic and configuration information from
this Red Hat Enterprise Linux system and installed applications. An archive containing the collected information will be generated in
/var/tmp and may be provided to a Red Hat support representative. Any information provided to Red Hat will be treated in accordance with
the published support policies at: https://access.redhat.com/support/ The generated archive may contain data considered sensitive and its
content should be reviewed by the originating organization before being
passed to any third party. No changes will be made to system configuration. Press ENTER to continue, or CTRL-C to quit. Please enter your first initial and last name [linuxprobe.com]:
Please enter the case number that you are generating this report for: Running plugins. Please wait ... Running 70/70: yum...
Creating compressed archive... Your sosreport has been generated and saved in:
/var/tmp/sosreport-linuxprobe.com-20150905230631.tar.xz The checksum is: 79436cdf791327040efde48c452c6322
Please send this file to your support representative.
2.5 工作目录切换命令
虽然后面的章节才会学习到linux的存储结构与“目录”这个概念,但没有关系,现在您也能看懂下面的操作。
参数 | 作用 |
-P | 显示真实路径。(即非快捷链接的地址) |
查看当前的工作路径:
[root@linuxprobe etc]# pwd
/etc
参数 | 作用 |
- | 切换到上一次的目录,如“cd -” |
~ | 切换到“家目录”,如"cd ~" |
~username | 切换到其他用户的家目录,如"cd ~teak" |
.. | 切换到上级目录,如"cd .." |
切换进/etc目录中:
[root@linuxprobe ~]# cd /etc
切换进/bin目录中:
[root@linuxprobe etc]# cd /bin
返回到上一次的目录(即/etc目录):
[root@linuxprobe bin]# cd -
/etc
返回用户自己的家目录:
[root@linuxprobe etc]# cd ~
[root@linuxprobe ~]#
查看当前目录下有那些文件(长格式):
[root@linuxprobe etc]# ls -al
参数 | 作用 |
-a | 查看全部文件(包括隐藏文件) |
-d | 仅看目录本身 |
-h | 易读的文件容量(如k,m,g) |
-l | 显示文件的详细信息 |
查看/etc目录中有那些文件:
[root@linuxprobe ~]# ls /etc
abrt gss printcap
adjtime gssproxy profile
aliases gtk-2.0 profile.d
aliases.db gtk-3.0 protocols
alsa hba.conf pulse
alternatives host.conf purple
anacrontab hostname qemu-ga
asound.conf hosts qemu-kvm
at.deny hosts.allow radvd.conf
………省略部分文件………
查看/etc目录的权限与属性:
[root@linuxprobe ~]# ls -ld /etc
drwxr-xr-x. 132 root root 8192 Jul 10 10:48 /etc
追加-h参数,以K/M/G为单位显示容量:
[root@linuxprobe ~]# ls -ldh /etc
drwxr-xr-x. 132 root root 8.0K Jul 10 10:48 /etc
2.6 文本文件编辑命令
既然已经学会了工作目录间的切换与查看,那么就来试试对文件的一系列操作吧,非常实用。
查看文本文件:
[root@linuxprobe ~]# cat 文件名
参数 | 作用 |
-n | 显示行号 |
-b | 显示行号(不包括空行) |
-A | 显示出“不可见”的符号,如空格,tab键等等 |
查看文本文件:
[root@linuxprobe ~]# more 文件名
参数 | 作用 |
-数字 | 预先显示的行数(默认为一页) |
-d | 显示提示语句与报错信息 |
查看文本文件前20行:
[root@linuxprobe ~]# head -n 20 文件名
参数 | 作用 |
-n 10 | 显示10行 |
-n -10 | 正常输出(如cat命令),但不显示最后的10行 |
查看文本文件后20行:
[root@linuxprobe ~]# tail -n 20 文件名
参数 | 作用 |
-n 10 | 显示后面的10行 |
-f | 持续刷新显示的内容 |
参数 | 作用 |
-t a | 默认字符 |
-t c | ASCII字符 |
-t o | 八进制 |
-t d | 十进制 |
-t x | 十六进制 |
-t f | 浮点数 |
将tr.txt文件的内容转换成大写(注意到命令中间的|了吗?这个叫管道命令符,后面小节会学习到的)
[root@linuxprobe ~]# cat tr.txt | tr [a-z] [A-Z]
WELCOME TO LINUXPROBE.COM
RED HAT CERTIFIED
FREE LINUX LESSONS
PROFESSIONAL GUIDANCE
LINUX COURSE
wc命令用于统计指定文本的行数、字数、字节数,格式为“wc [参数] 文本”。
参数 | 作用 |
-l | 只显示行数 |
-w | 只显示单词数 |
-c | 只显示字节数 |
统计当前系统中的用户个数:
[root@linuxprobe ~]# wc -l /etc/passwd
38 /etc/passwd
cut命令用于通过列来提取文本字符,格式为:“cut [参数] 文本”。
参数 | 作用 |
-d 分隔符 | 指定分隔符,默认为Tab。 |
-f | 指定显示的列数。 |
-c | 单位改为字符 |
获取当前系统中所有用户的名称:
参数作用:-d以":"来做分隔符,-f参数代表只看第一列的内容。
[root@linuxprobe ~]# cut -d: -f1 /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
operator
games
ftp
nobody
dbus
polkitd
unbound
colord
usbmuxd
avahi
avahi-autoipd
libstoragemgmt
saslauth
qemu
rpc
rpcuser
nfsnobody
rtkit
radvd
ntp
chrony
abrt
pulse
gdm
gnome-initial-setup
postfixsshd
tcpdump
linuxprobe
获取root用户的默认SHELL解释器:
[root@linuxprobe ~]# grep ^root /etc/passwd | cut -d: -f 7
/bin/bash
参数 | 命令 |
-b | 忽略空格引起的差异。 |
-B | 忽略空行引起的差异。 |
--brief或-q | 仅报告是否存在差异。 |
-c | 使用上下文输出格式。 |
比较两个文件的差异:
[root@linuxprobe ~]# diff diff_A.txt diff_B.txt
1c1,2
> Welcome to linuxprobe.com
---
> Welcome tooo linuxprobe.com
>
3c4,5
> Free Linux Lessons
---
> Free Linux LeSSonS
> ////////.....////////
仅显示比较后的结果,即相同或不相同:
[root@linuxprobe ~]# diff --brief diff_A.txt diff_B.txt
Files diff_A.txt and diff_B.txt differ
使用上下文输出的格式:
[root@linuxprobe ~]# diff -c diff_A.txt diff_B.txt
*** diff_A.txt 2015-08-30 18:07:45.230864626 +0800
--- diff_B.txt 2015-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
2.7 文件目录管理命令
更改时间(mtime):内容修改时间(不包括权限的)更改权限(ctime):更改权限与属性的时间读取时间(atime):读取文件内容的时间
参数 | 作用 |
-a | 仅修改“访问时间”(atime) |
-m | 仅修改“更改时间”(mtime) |
-d | 同时修改atime与mtime |
-t | 要修改成的时间[YYMMDDhhmm] |
创建文件夹:
[root@linuxprobe ~]# mkdir 文件夹名
参数 | 作用 |
-m=MODE | 默认的文件目录权限,如"-m 755" |
-p | 连续创建多层目录(若文件夹已存在则忽略) |
-v | 显示创建的过程 |
创建一个名字叫linuxprobe的目录:
[root@linuxprobe ~]# mkdir linuxprobe
使用ls命令查看该目录的权限属性等信息:
[root@linuxprobe ~]# ls -ld linuxprobe/
drwxr-xr-x. 2 root root 6 Aug 24 19:25 linuxprobe/
还记得刚刚用cd命令进入linuxprobe目录吗?这里是个小技巧,变量!$或(键盘按键)代表上一条命令的参数。
[root@linuxprobe ~]# cd !$
cd linuxprobe
pwd命令也是刚刚学习过的,用于显示当前的工作路径。
[root@linuxprobe linuxprobe]# pwd
/root/Desktop/linuxprobe
一次创建5个目录a/b/c/d/e:
[root@linuxprobe linuxprobe]# mkdir -p a/b/c/d/e
查看目录的属性,验证是否成功:
[root@linuxprobe linuxprobe]# ls -ld a/b/c/d/e/
drwxr-xr-x. 2 root root 6 Aug 29 10:16 a/b/c/d/e/
目标文件是一个目录,会将源文件复制到该目录中。
目标文件是一个文件,会将源文件覆盖该文件。
目标文件不存在,将会复制源文件并修改为目标文件的名称(重命名)。
参数 | 作用 |
-p | 保留原始文件的属性 |
-d | 若对象为"链接文件",则保留该"链接文件"的属性 |
-r | 递归持续复制(用于目录) |
-i | 若目标文件存在则询问是否覆盖 |
-a | 相当于-pdr(p,d,r为上述的参数) |
创建一个名为install.log的文件:
[root@linuxprobe ~]# touch install.log
将install.log复制为x.log:
[root@linuxprobe ~]# cp install.log x.log
查看到确实出现了文件x.log
[root@linuxprobe ~]# ls
install.log x.log
mv命令用于移动文件或改名,格式为:“mv [选项] 文件名 [目标路径|目标文件名]”。
将文件aaa重命名为bbb:
[root@linuxprobe ~]# mv aaa bbb
删除普通文件并提示确认信息:“rm 文件名”删除普通文件或目录文件,不提示:“rm -rf 文件或目录名”
参数 | 作用 |
-f | 忽略警告信息 |
-i | 删除前先询问 |
-r | 删除文件夹 |
查看当前目录下的文件:
[root@linuxprobe ~]# ls
install.log x.log
删除install.log文件,输入"y"即确认:
[root@linuxprobe ~]# rm install.log
rm: remove regular empty file ‘install.log’? y
删除x.log文件而无需确认:
[root@linuxprobe ~]# rm -rf x.log
Linux系统中还有一个rmdir命令,它不同于rm -rf命令会删除一切,而是仅删除空目录,遇到目录内有文件时则报错。
dd命令用于指定大小的拷贝的文件或指定转换文件,格式为:“dd [参数]”。
参数 | 作用 |
if | 输入的文件名称。 |
of | 输出的文件名称。 |
bs | 设置每个“块”的大小。 |
count | 设置要拷贝“块”的个数。 |
conv=ucase | 将字母从小写转换为大写。 |
conv=lcase | 把字符从大写转换为小写。 |
将光驱设备拷贝成镜像文件:
[root@linuxprobe ~]# dd if=/dev/cdrom of=RHEL-server-7.0-x86_64-LinuxProbe.Com.iso
7311360+0 records in
7311360+0 records out
3743416320 bytes (3.7 GB) copied, 370.758 s, 10.1 MB/s
生成一个560m的空白文件:
[root@linuxprobe ~]# 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
将硬盘的MBR信息拷贝出来:
[root@linuxprobe ~]# dd if=/dev/sda of=sda_image count=1 bs=512K
1+0 records in
1+0 records out
524288 bytes (524 kB) copied, 0.0449481 s, 11.7 MB/s
2.8 用户与组管理命令
参数 | 作用 |
-d | 指定用户的家目录(默认为/home/username) |
-D | 展示默认值 |
-e | 帐号有效截至日期,格式:YYYY-MM-DD. |
-g | 指定一个初始用户组(必须已存在) |
-G | 指定一个或多个扩展用户组 |
-N | 不创建与用户同名的用户组 |
-s | 指定默认的Shell |
-u | 指定用户的UID |
创建名为linuxprobe的用户,并定义家目录路径、UID以及登陆解释器(不允许登陆):
[root@linuxprobe ~]# useradd -d /home/linux -u 8888 -s /sbin/nologin linuxprobe
查看linuxprobe用户的基本信息:
[root@linuxprobe ~]# id linuxprobe
uid=8888(linuxprobe) gid=8888(linuxprobe) groups=8888(linuxprobe)
修改当前用户的密码:“passwd”修改其他用户的密码:“passwd 其他用户名”
参数 | 作用 |
-l | 锁定用户禁止其登陆 |
-u | 解除锁定,允许用户登陆。 |
--stdin | 允许从标准输入修改用户密码,如(echo "NewPassWord" | passwd -stdin Username) |
-d | 使帐号无密码 |
-e | 强制用户下次登陆时修改密码 |
-S | 显示用户的密码状态 |
删除用户与其家目录:
[root@linuxprobe ~]# userdel -r 用户名
参数 | 作用 |
-f | 强制删除用户,家目录与其相关文件 |
-r | 同时删除用户,家目录与其相关文件 |
参数 | 作用 |
-c | 填写帐号的备注信息 |
-d -m | -m与-d连用,可重新指定用户的家目录并自动旧的数据转移过去。 |
-e | 帐户到期时间,格式“YYYY-MM-DD” |
-g | 变更所属用户组 |
-G | 变更扩展用户组 |
-L | 锁定用户禁止其登陆系统 |
-U | 解锁用户,允许其登陆系统 |
-s | 变更默认终端 |
-u | 修改用户的UID |
groupadd命令用于创建群组,格式为:"groupadd [选项] 群组名"。
创建名称为linuxprobe的用户群组:
[root@linuxprobe ~]# groupadd linuxprobe
2.9 打包压缩文件命令
打包并压缩文件:“tar -czvf 压缩包名.tar.gz 文件名”解压并展开压缩包:“tar -xzvf 压缩包名.tar.gz”
参数 | 作用 |
-c | 创建压缩文件 |
-x | 解开压缩文件 |
-t | 查看压缩包内有那些文件 |
-z | 用Gzip压缩或解压 |
-j | 用bzip2压缩或解压 |
-v | 显示压缩或解压的过程 |
-f | 目标文件名 |
-p | 保留原始的权限与属性 |
-P | 使用绝对路径来压缩 |
-C | 指定解压到的目录 |
[root@linuxprobe ~]# 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@linuxprobe ost ~]# mkdir /root/etc
开始解压etc.tar.gz文件:
[root@linuxprobe ~]# 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
2.10 文件查询搜索命令
搜索某个关键词:“grep 关键词 文本文件”
参数 | 作用 |
-b | 将可执行文件(binary)当作文本文件(text)来搜索 |
-c | 仅显示找到的行数 |
-i | 忽略大小写 |
-n | 显示行号 |
-v | 反向选择——仅列出没有“关键词”的行。 |
[root@linuxprobe ~]# 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
………………………………
答案模式:grep entry /usr/share/gedit/plugins/snippets/docbook.xml >> /root/lines
参数 | 作用 |
-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 | 匹配文件的大小(+50k查找超过50k的文件,而-50k则代表查找小于50k的文件) |
-prune | 忽略某个目录 |
-exec {} \; | 后面可接对搜索到结果进一步处理的命令(下面会有演示) |
其中的"host*"表示所有以host开头的文件:
[root@linuxprobe ~]# 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
[root@linuxprobe ~]# find / -perm -4000 -print
/usr/bin/fusermount
/usr/bin/su
/usr/bin/umount
/usr/bin/passwd
/usr/sbin/userhelper
/usr/sbin/usernetctl
………………………………
重点是"-exec {} \;"其中的{}代表find命令搜索出的文件,记住结尾必须是\;
[root@linuxprobe ~]# find / -user linuxprobe -exec cp -arf {} /root/findresults/ \;
本章节的复习作业(答案就在问题的下一行哦,用鼠标选中即可看到的~)
1:请问在红帽RHEL7系统中的默认Shell解释器是什么?
2:如果希望在帮助文档man向下翻,可以有什么方法?
3:mv命令不但可以转移文件,还常常用来做什么?
4:创建一个新用户,UID定位888并限制其不能登陆系统,该如何操作?
5:find命令可以基于什么条件搜索文件?