Linux就该这么学
第一章:
对Shell的认识:
计算机硬件是由运算器、控制器、存储器、输入/输出设备等设备组成的,而能够让机箱内各种设备各司其职的东西就叫做——系统内核。
内核负责驱动硬件、管理活动和分配/管理硬件资源,所以它不能直接让用户操作!
因为用户不能直接控制硬件也不能直接操作内核,所以需要基于“系统调用接口”开发出的程序或服务来满足用户的日常工作。
“Shell”——也可称为“壳”,充当的是人与内核(硬件)的翻译官,用户将一些命令“告诉”Shell,它就会调用相应的程序服务执行工作。
现在包括红帽系统在内的很多热门Linux系统主流默认字符Shell是Bash(Bourne-Again Shell)。
Bash的优势:
1.默认保存历史命令(可以上下键翻看);
2.命令仅需要输入前几位就可以用tab键补全(RHEL7可以进行参数补全);
3.强大的批处理脚本;
4.使用的环境变量。
Linux命令——常用系统工作命令:
man 可用于查看命令的具体可用参数与对象格式等。例如:#man man 可以查看man自身的帮助信息。
echo 用于在终端显示字符串或变量
date 命令用于显示或设置系统时间或日期,格式为:“date [选项] [+指定的格式]”。
参数 作用 参数 作用 参数 作用 参数 作用
%t 跳格[TAB键] %S 秒(00-60) %A 星期几(Sunday-Saturday) %d 日(01-31)
%H 小时(00-23) %X 相当于%H:%M:%S %a 星期几(Sun-Sat) %j 一年中的第几天(001-366)
%I 小时(00-12) %Z 显示时区 %B 完整月份(January-December) %m 月份(01-12)
%M 分钟(00-59) %p 显示本地AM或PM %b 缩写月份(Jan-Dec) %Y 完整的年份
按照“年-月-日 小时:分钟:秒”的格式:# date "+%Y-%m-%d %H:%M:%S" 输出:2016-10-14 11:30:00,
设置系统时间为2016年10月14日 11点30分的格式为:# date -s "20161014 11:30:00",
查看当前系统时间:# date 输出:Sun Oct 14 11:34:09 CST 2016
reboot 命令用于重启系统(仅root用户可以使用),格式为:“reboot”。 # reboot
wget 命令用于使用命令行下载网络文件,格式为:“wget [参数] 下载地址”。
参数 作用 参数 作用
-b 后台下载模式 -c 断点续传
-O 下载到指定目录 -p 下载页面内所有资源,包括图片、视频等
-t 最大尝试次数 -r 递归下载
elinks 用于实现一个纯文本界面的浏览器,格式为:“elinks [参数] 网址”。安装elinks 纯文本浏览器:# yum install elinks ; 使用elinks访问百度:# elinks www.baidu.com
Linux命令——系统状态监测命令:
ifconfig 用于获取网卡配置与网络状态等信息:格式为“ifconfig [网络设备] [参数]”。 查看本地当前的网卡配置与网络状态等信息:# ifconfig
uname 命令用于查看系统内核版本等信息,格式为:“uname [-a]”。查看系统的内核名称、内核发行版、内核版本、节点名、硬件名称、硬件平台、处理器类型、操作系统等信息:# uname -a
输出: Linux iZ28jc899pfZ 3.10.0-123.9.3.el7.x86_64 #1 SMP Thu Nov 6 15:06:03 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
如果想看系统详细版本信息就看redhat-release文件:# cat /etc/redhat-release 输出:CentOS Linux release 7.0.1406 (Core)。
uptime 命令用于查看系统的负载情况,格式为:“uptime”。也可以用 “watch -n 1 uptime” 来每秒刷新一次当前的系统负载情况,输出内容分别为系统当前时间、系统已运行时间、当前在线用户
以及平均负载值。而平均负载分为最近1分钟、5分钟、15分钟的系统负载情况,负载值越低越好(小于1是正常)。
例:# uptime 输出:14:34:41 up 114 days, 2:01, 1 user, load average: 4.75, 5.42, 5.19
另外还有个参数-V查看版本:# uptime -V 输出:uptime from procps-ng 3.3.9
free 命令用于显示当前系统中内存的使用量情况,格式为:“free [-m/-g]”。以m为单位显示当前系统中内存的使用量情况:# free -m
total used free shared buffers cached
Mem: 15631 14868 762 76 39 1632
-/+ buffers/cache: 13195 2435
Swap: 16383 1022 15361
who 命令用于查看当前登录主机的用户情况,格式为:“who [参数]”。例:# who 输出:root pts/0 2016-10-16 14:07 (221.218.215.59)
history 命令用于显示历史执行过得命令,格式为:“history [-c]”。清空该用户在本机中执行过得命令:# history -c。
history默认会保存1000条执行过得命令,诺要修改可直接编辑/etc/profile文件的HISTSIZE值。
sosreport 命令用于收集系统配置并诊断信息后输出结论文档,格式为:“sosreport”。例:# sosreport
Linux命令——工作目录切换命令:
pwd 命令用于显示当前的工作目录,格式为:“pwd [选项]”。参数:-p 作用:显示真实路径(即非快捷链接的地址)
cd 命令用于切换工作路径,格式为:“cd [目录名称]”。
参数 作用 参数 作用 参数 作用 参数 作用
- 切换到上一次的目录,如“cd -” ~ 切换到“家目录”,如“cd ~” ~username 切换到其他用户的家目录,如“cd ~teak” .. 切换到上一级目录,如“cd ..”
ls 命令用于查看目录中有那些文件,格式为:“ls [选项] [文件]”。
参数 作用 参数 作用 参数 作用 参数 作用
-a 查看全部文件(包括隐藏文件) -d 仅看目录本身 -h 易读的文件容量(如k,m,g) -l 显示文件的详细信息
Linux命令——文本文件编辑命令:
cat 命令用于查看纯文本文件(较短的),格式为:“cat [选项] [文件]”。参数:-n 作用:显示行号, 参数:-b 作用:显示行号(不包括空行), 参数:-A 作用:显示出“不可见”的符号,如空格,tab键等。
more 命令用于查看纯文本文件(较长的),格式为:“more [选项] 文件”。参数:-数字 作用:预先显示的行数(默认为一页), 参数:-d 作用:显示提示语句与报错信息。
head 命令用于查看纯文本文档的前N行,格式为:“head [选项] [文件]”。参数:-n 10 作用:显示10行, 参数:-n -10 作用:正常输出(如cat命令),但不显示最后的10行。
tail 命令用于查看纯文本文档的后N行,格式为:“tail [选项] [文件]”。参数:-n 10 作用:显示后面的10行, 参数:-f 作用:持续刷新显示的内容。
od 命令用于查看特殊格式的文件,格式为:“od [选项] [文件]”。
参数 作用 参数 作用 参数 作用
-t a 默认字符 -t o 八进制 -t x 十六进制
-t c ASCII字符 -t d 十进制 -t f 浮点数
tr 命令用于转换文本文件中的字符,格式为:“tr [原始字符] [目标字符]”。
wc 命令用于统计指定文本的行数、字数、字节数,格式为:“wc [参数] 文本”。参数:-l 作用:只显示行数, 参数:-w 作用:只显示单词数, 参数:-c 作用:只显示字节数。
cut 命令用于通过列来提取文本字符,格式为:“cut [参数] 文本”。参数:-d 分隔符 作用:指定分隔符,默认为Tab, 参数:-f 作用:指定显示的列数, 参数:-c 作用:单位改为字符。
例:# cut -d: -f1 /export/data/shell/shangdiandian_80_deploy.sh 参数作用:-d 以“:”来做分隔符,-f参数代表只看第一列的内容。
diff 命令用于比较多个文本文件的差异,格式为:“diff [参数] 文件”。例:# diff a.txt b.txt
参数 作用 参数 作用 参数 作用 参数 作用
-b 忽略空格引起的差异 -B 忽略空行引起的差异 --brief或-q 仅报告是否存在差异 -c 使用上下文输出格式
Linux命令——文本目录管理命令:
touch 命令用于创建空白文件和修改文件时间,格式为:“touch [选项] [文件]”。
对于在Linux中的文件有三种时间:
1.更改时间(mtime):内容修改时间(不包括权限的) 2.更改权限(ctime):更改权限与属性的时间 3.读取时间(atime):读取文件内容的时间
参数 作用 参数 作用 参数 作用 参数 作用
-a 近修改“访问时间”(atime) -m 近修改“更改时间”(mtime) -d 同时修改atime与mtime -t 要修改成的时间[YYMMDDhhmm]
mkdir 命令用于创建空白的文件夹,格式为:“mkdir [选项] 目录”。参数:-m=MODE 作用:默认的文件目录权限,如“-m 755”,参数:-p 作用:连续创建多层目录(若文件夹已存在则忽略),参数:-v 作用:显示创建的过程。
cp 命令用于复制文件或目录,格式为:“cp [选项] 源文件 目标文件”。
复制命令的三种情况:
1.目标文件是一个目录,会将源文件复制到该目录中 2.目标文件是一个文件,会将源文件覆盖该文件 2.目标文件不存在,将会复制原文件并修改为目标文件的名称(重命名)。
参数 作用 参数 作用 参数 作用
-p 保留原始文件的属性 -r 递归持续复制(用于目录) -a 相当于-pdr(p,d,r为前面的参数)
-d 若对象为“链接文件”,则保留该“链接文件”的属性 -i 若目标文件存在则询问是否覆盖
mv 命令用于移动文件或改名,格式为:“mv [选项] 文件名 [目标路径|目标文件]”。例:# mv aaa bbb 将文件aaa重命名为bbb
rm 命令用于删除文件或目录,格式为:“rm [选项] 文件”。参数:-f 作用:忽略警告提示, 参数:-i 作用:删除前先询问, 参数:-r 作用:删除文件夹。
Linux系统中还有一个rmdir命令,它不同于rm -rf命令会删除一切,而是仅删除空目录,遇到目录有文件时则报错。
dd 命令用于指定大小的拷贝的文件或指定转换文件,格式为:“dd [参数]”。
参数 作用 参数 作用 参数 作用
if 输入的文件名称 bs 设置每个“块”的大小 conv=ucase 将字母从小写转换为大写
of 输出的文件名称 count 设置要拷贝“块”的个数 conv=lcase 将字母从大写转换为小写
例:将光驱设备拷贝成镜像文件:# dd if=/dev/cdrom of=RHEL-server-7.0-x86_64-LinuxProbe.Com.iso
生成一个560m的空白文件:# dd if=/dev/zero of=560_file count=1 bs=560M
将硬盘的MBR信息拷贝出来:# dd if=/dev/sda of=sda_image count=1 bs=512K
Linux命令——用户与组管理命令:
useradd 命令用于创建新的用户,格式为:“useradd [选项] 用户名”。
参数 作用 参数 作用 参数 作用 参数 作用
-d 指定用户的家目录(默认为/home/username) -e 账号有效截止日期,格式:YYYY-MM-DD -G 指定一个或多个扩展用户组 -s 指定默认的Shell
-D 展示默认值 -g 指定一个初始用户组(必须已存在) -N 不创建与用户同名的用户组 -u 指定用户的UID
例:创建名为hxm的用户,并定义家目录路径、UID以及登录解释器(不允许登录):# useradd -d /home/linux -u 888 -s /sbin/nologin hxm
查看hxm用户的基本信息:# id hxm
passwd 命令用于修改用户的密码,格式为:“passwd [选项] [用户名]”。例:修改当前用户的密码:# passwd 修改其他用户的密码:# passwd 其他用户名
参数 作用 参数 作用 参数 作用
-l 锁定用户禁止其登录 --stdin 允许从标准输入修改用户密码,如(echo “NewPassWord” | passwd -stdin Username) -e 强制用户下次登录时修改密码
-u 解除锁定,允许用户登录 -d 是账号无密码 -S 显示用户的密码状态
userdel 命令用于删除用户所有表格,格式为:“userdel [选项] 用户名”。参数:-f 作用:强制删除用户,家目录与其相关文件 参数:-r 作用:同时删除用户,家目录与其相关文件 例:userdel -d 用户名 删除用户与其家目录
usermod 命令用于修改用户的属性,格式为:“usermod [选项] 用户名”。
参数 作用
-c 填写账号的备注信息
-d -m -d与-m连用,可重新指定用户的家目录并自动将旧的数据转移过去
-e 账户到期时间,格式为“YYYY-MM-DD”
groupadd 命令用于创建群组,格式为:“groupadd [选项] 群组名称”。例:# groupadd linuxprobe 创建名称为“linuxprobe”的用户群组
Linux命令——打包压缩文件命令:
tar 命令用于对文件打包压缩或解压,格式为:“tar [选项] [文件]”。例:# tar -czvf 压缩包名.tar.gz 文件名 打包并压缩文件, # tar -xzvf 压缩包名.tar.gz 解压并展开压缩包。
参数 作用 参数 作用 参数 作用 参数 作用
-c 创建压缩文件 -z 用Gzip压缩或解压 -f 目标文件名 -C 指定解压到的目录
-x 解开压缩文件 -j 用bzip2压缩或解压 -p 保留原始的权限和属性
-t 查看压缩包内有哪些文件 -v 显示压缩或解压的过程 -P 使用绝对路劲来压缩
Linux命令——文件查询搜索命令: ------------------------------------------------ 10-20 ------------------------------------------------------
grep 命令用于对文本进行搜索,格式为:“grep [选项] [文件]”。搜索某个关键词:“grep 关键词 文本文件”
参数 作用 参数 作用 参数 作用
-b 将可执行文件(binary)当做文本文件(text)来搜索 -i 忽略大小写 -v 反向选择——仅列出没有“关键词”的行
-c 仅显示找到的次数 -n 显示行数
例:搜索在/etc/passwd中“/sbin/nologin”出现的行,找出系统中不允许登录的用户:# grep /sbin/nologin /etc/passwd
找出文件“/export/data/shell/shangdiandian_80_deploy.sh”中所有包含entry的行并输出到/root/lines:# grep entry /export/data/shell/shangdiandian_80_deploy.sh >> /root/lines
find 命令用于查找文件,格式为:“find [查找路径] 寻找条件 操作”。
参数 作用 参数 作用 参数 作用
-name 匹配名称 -atime -n +n 匹配访问文件的时间 --type b/d/c/p/l/f 匹配文件类型(块设备、目录、字符设备、管道、链接文件、文本文件)
-perm 匹配权限(mode为完全匹配,-mode为包含即可) -ctime -n +n 匹配修改权限的时间 --size 匹配文件的大小(+50k查找超过50k的文件,-50k查找小于50k的文件)
-user 匹配所有者 -nouser 匹配无所有者的文件 -prune 忽略某个目录
-group 匹配所有组 -nogroup 匹配无所有组的文件 --exec {} \; 后面可接对搜索到结果进一步处理的命令
-mtime -n +n 匹配修改内容的时间(-n指n天以内,+n指n天以前) -newer f1 !f2 匹配比文件f1新却比f2旧的文件
搜索时“~”代表用户的家目录,“.”代表当前目录,“/”代表根目录。
例:搜索在“/etc/”中所有以host开头的文件:# find /etc -name "host*" print
搜索整个系统中所有包含SUID的文件(因SUID的数字表示法是4,而减号表示只要包含即可):# find / -perm -4000 -print
找出用户hxm的文件并复制到/root/findresults目录(重点是“-exec {} \;”其中的{}代表find命令搜索出的文件,记住结尾必须是\;):# find / -user hxm -exec cp -arf {} /root/findresults/ \;
总结:以上就是linux系统中日常用到的命令。