常用快捷键

​图形界面 到 字符界面Ctrl Alt Fn (F1-----F6) init 3​字符界面 到 图形界面 Alt F7 init 5​Tab键 :自动补齐​反斜杠\ :逼迫换行​ctrl+u 清空至行首​ctrl+k 清空至行尾​ctrl+L 清屏​ctrl+c 取消本次命令编辑​touch 创建文件​mkdir 创建目录 mkdir -p 创建嵌套的多层目录构造​cd 切换事情目录 cd - 切换两个目录 cd .. 返回上个目录​du 统计目录及文件 du -s 只统计大小 du -a 统计所有文件 du -h 人性化显示​du -sh \ 查看所有文件及大小​pwd ------- 查看当前所在位置​vim ------查看日志(编辑器)​Ls ------ 打印(当前目录下所包含的内容)ls 显示目录内容(ls=ll)​./ ------直接运行脚本​​

查看帮助

​help, -help man info (man ls)​常用命令 uname 查看系统信息及内核版本(-a 显示主机;-r 显示内核版本)​hostname 查看主机名​vim /etc/sysconfig/network 变动主机名​ifconfig 查看网络信息​shutdown -h now | poweroff | init 0 关闭打算机​shutdown -r now | reboot | init 6 重启打算机​Ln软链

Ln链接文件​Ln 要链接的文件 链接到什么地方​ln 创建链接文件 ​ln -s 软链接 ln 硬链​

CP 复制

​cp -r 递归复制全体目录树 cp=cp-i cp -r 递归复制​cp -p 保持源文件的属性不变​cp -f 逼迫覆盖目标同名文件或目录​cp -i 须要覆盖文件或目录时进行提醒​

RM 删除

​rm -rf 递归强行删除文件或者目录 不进行提醒​rm -f 强行删除文件或者目录,不进行提醒​rm -r 递归删除全体目录树​rm - i 删除文件或者目录时提醒用户确认​​

快速掌握Linux这篇文章就够了

MV 移动(改名)

​Cat 查看文件​More 分页查看文件 (不可返回)​Less 分页查看文件 (可返回)​Head 查看文件头(前10行)​Tail 查看文件尾 (后10行)​​WC 统计

​wc -l 统计行数 wc -w 统计单词个数 wc -c 统计字节数​

压缩指令

压缩 (仅限文件)

gzip

bzip2

表示高压缩比:

gzip -9

bzip2 -9

解开已经压缩的文件

gzip -d

bzip2 -d

Tar 归档

口令打包压缩:

Tar 要打包压缩到什么地方 要打包压缩的文件

​单个阐明用法:tar -c 创建 . tar格式的包文件​tar -x 解开. tar格式的包文件​tar -v 查看详情信息​tar -f 表示利用归档文件​tar -p 打包时保留原始文件及目录的权限​tar -t 列表查看包内文件​tar -C 解包时指定开释的目标文件夹​tar -z 调用gzip程序进行压缩或者解压​tar -j 调用bzip2 程序进行压缩或者解压​组合命令:​tar -cvf 打包​tar -zcvf 打包压缩​tar -zcvf XXX.tar.gz XX​tar -xvf 解压 ​tar -xvf xxxx.tar.gz -C aaa 解压到指定目录​打包压缩---- tar -zcvf​解压 ----- tar -zxvf ​指定位置解压--- tar -zxcf -C​xx.bz2用bzip2 -d解压​xx.gz用gzip -d解压​xx.tar.gz 用-zxvf解压​xx.tar.bz2用-jxvf解压​​

常用

​打包:1、tar -zcvf a2data.tar.gz ./a2data.cn/2、tar -zcvf a2data.tar.bz2 ./a2data.cn/ ---- 将a2data.cn文件夹下统一打包 ------​解压(万能):​tar -xf a2data.tar.bz2 ./ ---- 解压到当前路径下----​​

VI 编辑器

命令模式:vim/vi ESC​输出模式:a、i、o等键​末行模式:(大写)A键​​事情模式:命令模式 输入模式 末行模式​a #光标后面写​i #光标前面写​o #下一行写​dd #删一行​n+dd #删几行​d$ #删除光标后面的同一行 (删光标)​d^ #删除光标前面的同一行 (不删光标)​x #删光标​X #删光标前面的​yy #复制​p #黏黏到下一行​P #黏黏到上一行​u #撤销上一步​U #撤销这一行的所有修正​:q! #不保存退出 ​:w #保存​:wq #保存退出​:/ #搜索的东西 搜索什么 从上到下搜索​% #搜索的东西 搜索什么 从下到上搜索​

行号

:set nu #设置行号​:set nonu #不要行号了​跳转到首行gg​跳转到尾行G​\#G跳转到到第几行​:e/etc/passwd 打开新的编辑文件​:r/etc/passwd 读入其他文件内容​文件内个更换​s/old/new 更换行里的一个old换成new​s/old/new/g 整行更换 old换成new​#,#s/old/new/g #到#行更换 old换成new​%s/old/new/g 整篇更换 old换成new​c 末端加入c 对每个更换提示用户进行确定​​​

权限掌握属组权限

字符制表示八进制 000 - 777

字符表示法八进制表示法含义r4读w2写x1实行

修正权限的命令

【 su - u2 切换用户】 ​1、 chmod 修正文件权限​2、 chown,chgrp 修正文件权属 ​U----所有者 O----其他人 a-----所有人 g-----所属组​chomd a=rwx root 所有都拥有读写实行权限 ​cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown|awk -F":" '{ print $1"|"$3"|"$4 }'|more​

用户掌握命令useradd 添加用户useradd -g 指定用户所属用户组useradd -G 用户组 指定用户所属的附加组useradd -u 用户号 指定用户的用户号

命令:指定用户所属组

useradd -g 组名 -u 用户号 用户名

​例如​useradd -g g3 -u 510 u5​指定用户附属组​useradd -g 组名 -G 所在组 用户名​例如:​useradd -g g4 -G g1 u7​​

修正账户信息usermod 修正账户信息usermod -g 用户组指定用户所属的用户组usermod -l 锁定账号usermod -u 解锁账号userdel 删除账户userdel -r 删除宿主目录

设置密码

passwd 设置密码

passwd -l 锁定账号

passwd -u 解锁账号

passwd -s 查看账号状态

usermod -L u1 u1账号被锁定

usermod -U u1 u1账号被解锁

passwd u1 设置u1 账号密码

linux 组账户

groupadd 添加组成员

groupdel 删除组成员

gpasswd 设置组成员

-a 添加成员

-d 删除成员

-M 定义成员列表

gpasswd -a u1 g1 将u1加入到g1组中

gpasswd -M u1,u2,u3,u4,u5 g2 将u1到u5添加g2组里

网络设置

存放位置 —- 以RedHat为例

/etc/sysconfig/network-scripts/ifcfg-etc0

修正ip

​setup 交互式图形化工具vim /etc/sysconfig/network-scripts/ifcfg-eth0​修正 DNS

​/etc/resolv.conf​修正主机名

​vim /etc/sysconfig/network​​

网卡掌握

​1.ifdown 关闭网卡 丨 ifup 开启网卡​2.service network stop 丨 start 丨restart 停滞 开启 重启开机自启动

​chkconfig httpd on​开机自动挂载

设置开机自动挂载的路径

这个是当时学习在虚拟机上利用的多。

​/etc/fstab ​网络配置

​IP:是一个逻辑地址,是由32位二进制构成-------------------------------------------------------setup​vim /etc/sysconfig/network-scripts/ifcfg-eth0​DEVICE=eth0 网卡​BOOTPROTO=none 是否自动获取IP ---> dhcp​HWADDR=00:0c:29:d6:96:fb MAC地址​ONBOOT=yes 是否随网络做事启动,eth0生效​NETMASK=255.255.255.0 子网掩码​IPADDR=192.168.18.76 IP地址​TYPE=Ethernet 类型为以太网​------------------------------------------------------修正DNS​vim /etc/resolv.conf​search localdomain​nameserver 192.168.40.2​nameserver 202.106.0.20 联通​nameserver 114.114.114.114​nameserver 8.8.8.8 谷歌​nameserver 4.4.4.4 谷歌

系统程序

系统程序管理

RPM包 (Red Hat)

命名格式 : bash-3.1-16.1.i386.rpm

软件包名-版本号-发布次数-硬件平台-后缀名

rpm管理命令

rpm -q [子选项] 【软件名】​ rpm -qa 查看系统中已安装的所有rpm软件包列表​ rpm -qpi 通过.rpm 包文件查看该软件的详细信息​ rpm -qpl 查看.rpm安装包内所包含的目录.文件列表安装

​ rpm -i rpm包文件 安装一个新的rpm软件包​ rpm - U 升级某个rpm软件包,若原来未安装,则进行安装​ rpm -F 更新某个rpm 软件,若原来未安装,则放弃安装​​

安装

步骤1: tar 解包步骤2: ./configure 配置步骤3: make 编译步骤4: make instal步骤5: service httpd restart service network restart步骤6: cd /var/www/

Yum

本地:Yum(file本地)

​命令:​cd /etc/yum.repos.d/xd​挂载:1. 挂载光盘镜像到/mnt​mount /dev/cdrom /mnt 2. 配置yum源​vim /etc/yum.repos.d/xxx.repo​[xxx]​baseurl=file:///mnt/Server(flie本地)​enabled=1(是否启动文件 0否 1是)​gpgcheck=0​3. 安装 yum -y install 软件名称 (vsftpd)​4. 重启​yum service vsftpd start​

做事器Yum

​------做事器yum​0、命令:cd /etc/yum.repos.d/​1、做事器端供应共享​-- 做事器安装一个ftp-- 把光盘镜像挂载ftp的共享目录​挂载:​mount /dev/cdrom /var/ftp/pub​必须担保两台机器能够正常通信(能够ping通)​2、配置客户端​vim /etc/yum.repos.d/xxx.repo​[xxx]​baseurl=[ftp://192.168.18.221/dev/cdrom](ftp://192.168.18.221/dev/cdrom) /var/ftp/pub 【做事器ip地址及共享目录】​enabled=1(是否启动文件 0否 1是)​gpgcheck=0​开启 service vsftpd start​卸载

rpm -e 软件名

源代码(灵巧定制)

tarball 封包

tar.gz 或者 tar.bz2

效验工具

md5 sum 磁盘管理查看磁盘

fdisk -l ​fdisk /dev/sdb 磁盘分区​指令 m​l list known partition 列出所有的分区​n add a new partition 创建一个新的分区​p print the partition table 打印分区内容​t change a partition's system id 改变分区系统id​w write table to disk an exit 保存并退出分区​d delete a partition 删除一个分区查看分区

​fdisk -l ​fdisk /dev/sdb 磁盘分区​n----创建​d----删除​交流分区

fdisk /dev/sdb格式化为 swap 命令​mkswp /dev/sdb1​

设置分区

​mkswap /dev/sdb1 (做成交流文件系统)​free 查看一下内存​swapon /dev/sdb1 开启交流内存​free 查看内存​swapoff /dev/sdb1 关闭交流内存​free 末了查看 是否存在文件系统

​umount 卸载mount 挂载​1、创建mkfs - t ext3 /dev/sdb1​mkfs ext3/dev/sdb1​挂载​mount /dev/sdb /mnt​查看​df -hT ​​​

LVM逻辑卷

创建lvm

创建物理卷__PV

pvcreate /dev/sdb,c,d,e (创建pv)​ pvdisplay(显示pv)创建卷组

vgcreate /dev/feng_vg /dev/sdb,c,d,e(创建vg)​ vgdisplay (显示vg)拓展vg

pvcreate /dev/sdf(创建一个新的pv)​ vgextend feng_vg /dev/sdf (扩展vg)减少vg

vgreduce feng_vg /dev/sdc,d,e移除vg

vgremove feng_vg

创建LV

lvcreate -L 30G -n feng_lv feng_vg格式化

mkfs.ext3 /dev/feng_vg/feng_lv挂载

mount /dev/feng_vg/feng_lv /aa增加

先卸载 ​ umount /aa​ lvextend -L +10G /dev/feng_vg/feng_lv(检测硬件)​ resize2fs /dev/feng_vg/feng_lv (重设文件系统大小)

减少LV

先卸载 (输入卸载名称或者目录) umount /dev/feng_vg/feng_lv​缩小lv先缩小文件系统再缩小lv​e2fsck -f /dev/feng_vg/feng_lv (检测硬件)​resize2fs /dev/feng_vg/feng_lv 9g (将文件系统缩小到9G)缩小lv

lveduce -L 9G /dev/feng_vg/feng_lv移除lv

lvremove /dev/feng_vg/feng_lv

移除pv

pvremove /dev/sdb1 /dev/sdb2​lv 利用pe(默认4M) 的块 ​lvcreat -l (小写) 个数 ​lvcreat -L (大写) 指定容量Mdadm 案例 raid5一、添加RAID5

mdadm -C /dev/md5 -l 5 -n 3 /dev/sd[b,c,d]​二、创建文件系统

格式化:mkfs.ext3 /dev/md5 makir /raid5三、挂载文件系统

mount /dev/md5 /raid5 挂载文件系统​ df -hT 查看RAID容错

mdadm /dev/md5 -f /dev/sdb 破坏磁盘b​mdadm -D /dev/md5 查看​mdadm /dev/md5 -a /dev/sdf 增加一块磁盘​mdadm /dev/md5 -r /dev/sdb 移除坏磁盘​echo "DEVICE /dev/sdc /dev/sdd /dev/sde /dev/sdf" >>(写入到哪) /etc/mdadm.conf 把UUID 写入 /etc/.......文件中​mdadm -Ds >> /etc/mdadm.conf 把UUID 读写出来​cat /etc/mdadm.conf​mdadm -S --scan /dev/md5 关闭RAID(须要卸载md5)​mdadm -A --scan /dev/md5 开启RAID​​规复快照!

SSH 协议

​默认端口 :TCP:22 FTP:21 SSH:22 Apache(阿帕奇):80​步骤1: ping 192.168.18.221 (ping得通)​步骤2:ssh [root@192.168.18.221](mailto:root@192.168.18.221) 输入密码 进入做事端​步骤3: exit 退出做事端 ​ssh-keygen -t rsa(或者dsa) 客户机天生密钥​ 步骤4:ssh-copy-id -i .ssh/id_rsa.pub [root@192.168.18.221](mailto:root@192.168.18.221)​将密钥上传输到做事端。
​步骤5:输入做事端密码 exit 再次输入 ssh [root@192.168.18.221](mailto:root@192.168.18.221)​便可直接进入!

操持任务

date----当前韶光 ctrl+D 保存 Atq 查看任务列表 Atrm 删除任务​

At 一次性操持任务

命令:at + 韶光

Crontab 周期性操持任务

做事脚本名称: /etc/init.d/crond

​crontab -e [-u 用户名] 编辑操持任务​crontab -l [-u 用户名] 查看操持任务​crontab -r [-u 用户名] 删除操持任务​周期条件

分时日月周实行内容0-59(整数)0-23(整数)1-31(整数)1-12(整数)run_command50321实行命令或脚本例如:3018/31,3,5/bin/rm-rf /var/ftp/pub/30 18 /3 1,3,5 /bin/rm -rf /var/ftp/pub/ 每隔3天在周1,3,5来打消FTP做事公共目录.

,-/表示该范围内的任意韶光表示间隔的多个不连续韶光点表示一个连续的韶光范围指定间隔的韶光频率

搭建一个Apache论坛

该论坛是再虚拟机环境下运行,实机一样得操作。
规复快照,检测是否有 阿帕奇​ service httpd restart​ 源代码安装的 进入apache目录 删除即可​ yum源安装的 利用 rmp卸载
一、挂载

mount /dev/cdrom /mnt 挂载镜像文件到/mnt​ls /mnt/Server/ 查看是否有文件​vim /etc/yum.repos.d/aa.repo 配置yum文件​二、安装

​【注:\ 为安装http 下所有包】​1.yum -y install http\ (先装阿帕奇做事)​2.yum -y install mysq\ (数据库)​3.yum -y install php\ (php开拓措辞)​三、启动

service httpd restart 启动阿帕奇​service mysqld restart 启动mysq​再去启动论坛包(Discuz_X2_SC_UTF8)copy到虚拟机​四、解压(zip压缩包)

​cd /root/Desktop 切换到桌面​unzip Discuz_X2_SC_UTF8 解压Discuz到桌面​cp -r upload /uar/www/html/ 复制upload文件到html​cd /dav/www/html ​ls 切换到html 查看是否有upload文件​(规复快照)重新配置ip​vim /etc/sysconfig/network-scripts/ifcfg-eth0​ifdown eth0 && ifup etho​ping通(192.168.18.222)--本机​利用本机或者虚拟机浏览器进行访问​192.168.18.221 Red Hat 192.168.18.221 upload​五、安装

192.168.18.221/upload进入Dis 安装引导​修正阿帕奇权属权限​chown apache upload html -R(-R递归修正所有权属)六、创建数据库

mysql 进入数据库​show databases; 显示当前数据库​create database hehe; 创建 hehe​grant all on hehe.\ to ‘hh’@‘localhost’ identified by ‘123456’; (密码 ,授权)​数据库名:hehe​数据库用户名:hh​密码:123456​​缺点情形方案整理:

​1、数据库模版缺点​ yum -y install php-\​2、安装http中过程中途停滞​ yum -y install httpd-devel​3、安装mysql时出错​ yum -y install mysql-connector-odbc​4、想卸载已安装http(apache)时,需在挂载镜像。
​ yum -y remove http\​​​5、配置yum(配置做事器中文包)​yum install fonts-chinese.noarch​yum install m17n-db-common-cjk​yum install m17n-db-chinese​

NFS网络文件系统

1.功能:文件共享

2.协议与端口: 须要RPC进行掌握

NFS安装

yum install nfs-utils protmap(端口分放)​

做事机 ip 221

​vim /etc/exports (配置文件)​/aa 192.168.18.220/255.255.255.0(rw)​根下aa 共享(客户机)ip/子掩网码 rw 读写 ro 只读​cd / 切换到根下​mkdir aa 创建aa目录​touch aa/abc.txt 创建aa下abc文档​service nfs restart 重启nfs做事​

客户机 ip 220

​showmount -e 192.168.18.221​cd /​mkdir pub 创建pub 文件​mount 192.168.18.220:/aa pub 挂载到aa/pub​切换到做事机 变动权属 ​ll -d aa 查看aa权限​ chmod o+w aa 修正aa权限(o 其他人)​service nfs restart 重启做事​切换到客户机 ​cd pub/​vim abc.txt 修正​touch aa.txt 创建一个文件​切换到做事机​cd aa ls aa 查看是否有文件

配置Samba

samba 软件包

samba.i386 : The Samba SMB server.

samba-client.i386 : Samba (SMB) client programs.

samba-common.i386 : Files used by both Samba servers and clients.

安装samba

mount /dev/cdrom /mnt 挂载​切换到挂载目录进行配置​cd /mnt/Server/ ​vim /etc/yum.repos.d/qq.repo​r /etc/yum.repos.d/rhel-debuginfo.repo​yum -y install samba​

编辑文件

cd /etc/samba/ 切换​vim smb.conf 配置文件​

vim /etc/samba/smb.conf​security=share ---共享​找见[public] 7yy 复制7行 ​p 粘贴修正

[aa] --- 这是昵称​comment = nidaye ---注释信息​path = /aa ---要共享的目录​public = yes ---公共的匿名用户可以访问的​writeable = yes ---可被写​browseable = yes ---可被浏览查看

​cd / ls mdkir qq 返回根下查看 创建qq文件 ​cd qq touch aa.txt 切换到qq下创建aa文档​service smb restart 重启smb做事​

修正文件权限

1、 chmod o+w /aa ​2、 cd /aa chmod 777\​

Linux客户端

smbclient -L //192.168.18.221---查看共享信息

smbclient //192.168.18.221/share-进入共享目录​? 查看有哪些命令可以利用​ls 查看共享目录下有哪些内容windows客户端

\192.168.18.221 ---可以看到共享目录

系统监控PS 进程监控

ps工具标识进程的5种状态码

D 不可中断uninterruptible sleep(usually IO)R 运行runnable (on run queue)S 中断sleepingT 停滞traced or stoppedZ 僵去世a defunct ("zombie") process

利用方法

ps [options] [--help]

ps的参数-A列出所有的行程-w显示加宽可以显示较多的资讯-au显示较详细的资讯-aux显示所有包含其他利用者的行程

总述

标识释义USER行程所拥有者PIDpid%CPU占用cpu利用率%MEM占用的影象体利用率VSZ占用的虚拟机体大小RSS占用的影象体大小TTY终真个次要装置号码

COMMAND

所实行的指令

top动态监控系统进程

TOP动态

第一行任务行列步队信息- 01:06:08 当前韶光 1 user 当前登任命户数第二、三行 进程和cpuTasks:158total 进程总数末了两行为内存信息Mem:191272k total 物理内存总数 COMMAND 命令名/命令行

SAR

系统活动情形报告

指令软件包:sysstat-7.0.3-3.el5.i386mp

sar 命令常用格式

sar options[-o file]t[n]

个中:t:采样间隔 n 采样次数 默认值为1.

options未明朗行选项,sar常用选项如下:

-o file表示将命令结果以二进制格式存放在文件中-A所有报告的总和-u输出cpu利用情形的统计-v输出inode、文件和其他内核表的统计信息-d输出每一个块设备的活动信息-r输出内存和交流空间的统计信息-b显示l/O和传送速率的统计信息-a文件读写情形-c输出进程统计信息,每秒创建的进程数-R输出内存页面的统计信息-y终端设备活动情形-w输出系统交流活动信息

vmstat监控工具

vmstat 2 10 每隔两秒采集10次r---表示运行行列步队b---表示壅塞的进程swap----虚拟内存已经利用的大小si----每秒从磁盘读入虚拟内存的大小sp---每秒虚拟内存写入磁盘的大小in----每秒cpu的中断次数sy----系统cpu韶光id----空闲cpu韶光wt-----等等lO cpu 韶光

iostat

紧张可以显示cpu和1/O系统的负载情形及分区状态信息 直接实行iostat

lsof紧张查看端口lsof -i 22查看端口为22 的做事losf -g gid显示归属gid的进程情形lsof -i用以显示符合条件的进程情形echo $$当提高程号kill -9 5641杀去世(结束)5641进程strace跟踪进程实行时的系统调用和所接管的旗子暗记。
Find详解 常见用法-name filenname#查找名为filename的文档-perm#按实行权限来查找-user username#按文档属主来查找-group groupname#按组来查找-mtime -n +n#按文档变动韶光来查找文档 -n指n天以内,+n指n天以前-group groupname#按组来查找-type b/d/c/p/l/f#查是块设备、目录、字符设备、管道、符号链接、普通文档-size n[C]#查长度为n块[或n字节]的文档-prune#忽略某个目录

shell脚本

Shell:操作系统与用户进行交互操作的界面,供应脚本措辞编程环境,方便用户自动批量处理大量的事情任务。

红帽企业版linux一样平常默认的Shell是bash shell。

vim aa.sh #编辑aa脚本​cd /root/Desktop #切换到root下的桌面​mkdir aa #创建aa目录​touch aa/aa.txt #在aa目录下创建aa.txt​sh aa.sh #运行aa.sh脚本​echo $$ 查看当提高程号 ​bash 进入另一个shell​exit 退出

history 历史

语法更换!

前一个命令!
n命令号n!
-n倒数第n个命令!
cmd末了用来启动cmd的命令

多命令运行

​#!
/bin/sh 注释信息,可写可不写​echo $? 返回值:通过$?变量进行查看,返回0成功,不堪利则返回非0值!
​有条件的链接命令​&& 把两个命令链接在一起,只有第一个命令成功实行时,才会实行第二个命令。
​|| 把两个命令链接在一起,只有第一个命令失落败时,才会实行第二个命令。

Bash变量

例如:aa=DataScience​echo $aa 则会显示DataScienceShell变量

A和B A=123 B=234​echo a:$A b:$B 显示AB变量内容​a:123 b:234​export A 将A变量提升为环境变量​bash​ps​echo a:$A b:$B---- 启动一个bash ,通过ps运行,确定有俩个shell在运行;父shell(B),子shell(A)由于被提升为一个环境变量,A shell从B shell中继续了它,相反,A shell对B shell的变量B一无所知。
Bshell 属于sleep状态。
结果如下​a:123 :b:​exit ​echo a:$A b:$B 退出再次查看​ a:123 b:234​unset A B----- 取消环境变量A和shell变量 B

命令更换

更换 语法含义历史(history)!
前一个命令行大括号(Brace){}指定的文本代字号(Tilde)~username用户的主目录变量​{...}Shell和环境变量算数(Arithmetic)$((...))算数运算命令更换‘...’,$(...)运行在字shell中的命令的输出路径名(Pathname)[^...]?,[...]文件系统中匹配的文件名

​mkdir chap{a1,a2,a3,a4,}/{bb,cc} 须要先创建{a1,a2,a3,a4}​mkdir -p {a1,a2,a3,a4,}/{bb,cc}​

算法

a=123 b=234​echo $(($a+$b)) ----- a+b​357 ---------- 结果​​2、打算器​Scale=2 保留几位小数, %取余。
Quit 退出打算器 \:反斜杠 转义字符
创建韶光文档

date +%Y%m%d

语法浸染\避免下一个字符被shell阐明“”避免双引号内除了S、!
和(反引号)字符以外的其它字符被shell阐明‘’避免单引号内的字符被shell阐明

​alias 命令 Shell别名可创建扩展(更换)为任意文本的命令​alias NAME=a​unalias 取消 ​unalias a 取消a更换NAME的命令​标准输入 标准输出

​echo “aaa”> aa.txt 创建aa.txt文档​cat aa.txt 查看aa.txt文档​设置密码(可批量设置用户密码)​useradd u1 创建u1用户​passwd u1 设置u1 密码​useradd u2 创建u2用户​vim bb.txt 新建立一个bb.txt文档​123456 将密码输入 bb.txt文档中​passwd u2 --stdin <bb.txt 将输入定向到文档中​su - u1 切换到u1​su - u2 切换到u2​输入密码 123456​

标准输出和缺点输出

echo “aaabbccc”>aa.txt​>>文件续写​echo “aaabbbcc”>>aa.txt​意思是用>把内容输入到文档中。
​head -1 /etc/rc.d/\ > aa.txt 2>bb.txt ​将标准输出和缺点输出分别传到aa.txt和bb.txt​head -1 /etc/re.d/\ >aa.txt 2>&1 ​head -1 /etc/rc.d/\ >& aa.txt​将标准输出和缺点输出合并到aa.txt​

Shell scripts

scripts脚本返回值 echo $?

返回值退出状态0(Zero)SuccessNon-zeroFailure2Incorrect usage126Not an executable127Command not found

​vim aa.sh 编辑aa.sh脚本​read -p "qing shu ru yong hu ming cheng " name​echo $name​sh aa.sh 运行aa,name脚本

只读变量

变量含义?最新实行的命令的退出状态-当前启用中的shell选项标记$当前shell的进程id(PID)!
最新后台命令的进程ID(pid)_前一个命令的末了标记PPIDshell父进程的ID(PID)SHELLOPTS被冒号隔开确当前启用中的shell选项列表,和set -o命令结果一样UID当前用户的用户id

路径更换

~ /? []/[^] &

比较--针对文件

关于文件类型的判断,如:test -e filename

-e是否存在-f是否为文件-d是否为目录-b是否为block device-c是否为character device-S是否为socket-p是否为pipe文件-L是否为链接

比较--权限

关于文件权限的判断,如:test -r filename

-r文件是否可读-w文件是否可写-x文件是否可实行-u文件是否有SUID-g文件是否有SGID-k文件是否有Sticky bit-s文件是否非空

比较--新旧与大小

比较两个文件大小,命令 例如: test A -nt B

-ntA是否比B新-otA是否比B旧-efA是否和B是用一个文件,两个整数之间的判断。
-eq两个数相等-ne两个数不等-gtA大于B-ltA小于B-geA大于即是B-leA小于即是B

Shell语法If语句格式

(number=num)

​read -p "请输入一个数字" num ​ if [ $num -eq 3 ] (如果)​then​ echo "wo xiang ni"​elif [ $num -le 5 ]​ then (然后) echo "zhen xiang le "​else [ $num -ge 6 ] (否则)​ echo "miss 531"​fi (结束)​闰年

初版

​year=`date +%Y`​if [ $[ $year % 400 ] -eq 0 ]​then​echo "$year is a leap year."​elif [ $[ $year % 4 ] -eq 0 ]​then​if [ $[ $year % 100 ] -ne 0 ]​then​echo "$year is a leap year."​else​echo "$year is not a leap year."​fi​else​echo "$year is not a leap year."​fi​

第二版(原版)

​year=$(date +%Y)​if [ $[ $year % 400 ] -eq 0 ]​then​echo "$year is a leap year."​elif [ $[ $year % 4 ] -eq 0 ]​then​if [ $[ $year % 100 ] -ne 0 ]​then​echo "$year is a leap year."​else​echo "$year is not a leap year."​fi​else​echo "$year is not a leap year."​fi​

第三版(查询哪一年是闰年)

​read -p "shu ru nian fen" year​if [ $[ $year % 400 ] -eq 0 ]​then​echo "$year is a leap year."​elif [ $[ $year % 4 ] -eq 0 ]​then​if [ $[ $year % 100 ] -ne 0 ]​then​echo "$year is a leap year."​else​echo "$year is not a leap year."​fi​else​echo "$year is not a leap year."​fi​FOR 循环

格式语法:for NAME in [ LIST ];do COMMANDS; done

列表 实行命令 结束

LIST用法

直接写1 2 3大括号{1..5}文件名/etc/.conf命令结果find /etc/ -name ".conf"C措辞风格for ((i=0;i<5 i=i+2))i++

ping网段案例

ping.sh

for p in {1..10} p---变量名称​do do----实行内容​host=(192.168.18.$p)​ping -c2 192.168.18.$p >> /root/Desktop/2.txt c2---频率​if [ $? == 0 ]​then​echo "$host is online." 在线​else​echo "$host is offline." 不在线​fi​done​while循环

aa=1​while [ $aa -le 10 ]​do​echo "wo xiang ni le"​aa=$[$aa+1]​done​case 判断

​aa=3 ( 3 变量值)​case "$aa" in ​ 1) echo "haha";; (1,2,4常量值) 2) echo "heihei";; 3) echo "nimei";; (有内容两;没有一个;)​esac​break

终止当前for循环

​for n in {1..10}​do​ if [ $n -eq 3 ] then break fi echo $n​done​

continue

跳出本次循环

for n in {1..10}​do​ if [ $n -eq 3 ] then continue fi echo $n​done​正则表达式

是指用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。
便是用某种模式去匹配一类字符串的一个公式。

​touch bb.txt​grep “m” bb.txt​基本元字符集

grep -E = egrep

· 匹配任意单个字符。
如:rat、r、t。
^ 匹配一行的开始$ 匹配一行的结尾匹配0个或多个前面的字符+ 匹配1个或者多个+前面的字符(须要\号,如grep -E “11+” /root/2)? 匹配0个或1个?之前的字符\ 转义[]匹配括号中的任何一个字符。
如:[abc][^] 匹配不在括号中的,表示打消 如abc或者 grep -v [abc]< 匹配词的开始> 匹配词的结束。
如 <the>\。
| 或。
例如 (him|her)

{m} 前面的表达式重复m次。
如:“\w{2}”相称于“\w\w”。
{m,n} 表达式至少重复m次,做多重复n次。
如:“ba{1,3}”匹配“ba”或“baa”“baaa” "d{2,3}"{m,} 表达式至少重复m次\w 任意一个字母或数字或下划线\d 任意一个数字 grep [0-9] bb.txt\s 空格、制表符、换页符、空缺符中的任意的一个。
\b 匹配一个单词的边界。
如:“.\b.” 以什么开头放后边 以什么结尾放前边

环境支持

命令或环境·[]^$( ){ }?+|( )vi×××××awk××××××××sed××××××grep××××××egrep×××××××××perl×××××××××