ls:列出当前目录下的的文件或目录 ls -a :列出当前目录下所有的文件和目录(包括隐藏文件) ls -l :显示文件的详细信息(长格式的信息查看),相当于 ll
ls -hl:显示文件的详细信息和文件的大小 ls -al:列出当前目录下所有的文件和目录的详细信息 ls -dl:显示当前文件本身的详细信息
cat 命令:查看文件信息(只能查看文件)
[root@com ~]# cat /etc/passwd :查看所有的用户信息
[root@com ~]# cat /etc/group :查看所有的用户组信息 注明:在Linux系统中每创建一个用户就会自动生成一个对应的用户组。
cd命令:切换目录
[root@com ~]# cd /etc :切换到根目录下的etc目录 pwd:显示当前文件的目录
whoami:查看当前的用户
[root@com etc]# whoami:查看当前用户是root用户
root
6、/:表示用户的根目录 家目录(宿主目录)
1)管理员用户的家目录: 2)普通用户的家目录
[root@com ~]# pwd [java17@com ~]$ pwd
/root /home/java17 7、切换用户命令:su - 用户名 2)切换到root管理员用户
1)切换到普通用户 [java17@com ~]$ su - 或
[root@com ~]# su - java17
[java17@com ~]$ pwd [java17@com ~]$ su - root
/home/java17
8、关机、重启、清屏
关机:halt、init 0、shutdown now
重启:reboot、
清屏:clear、Ctrl+l
二、Linux文件和目录的一些常用命令
1、touch命令:创建一个空文件
2)在root用户的家目录下创建一个带空格的文件(对有空格文件加上引号即可)
[root@com ~]# touch "program file"
rm命令:删除文件或目录
参数 -f 或者-fr
注意:如果java17这个目录下还有文件,向一次性删除,用到选项-rf。
-f:在使用中很容易将系统中重要的文件删掉,所以在使用中要谨慎。 3、mkdir命令:创建一个目录 3)递归创建目录 - [root@com ~]# mkdir -p beifeng/laowan 4、cp命令:复制一个文件或目录 拷贝根目录下etc配置目录下的passwd文件到root用户家目录下的beifeng目录中 [root@com ~]# cp /etc/passwd /root/beifeng 查看是否复制成功:[root@com ~]# ls beifeng file laowang passwd
5、mv命令:剪切和重命名 6、more命令:分页查看文件的内容
1)剪切文件到目录中去 [root@com ~]# more /etc/services
[root@com ~]# mv /laowang /root 1)按回车键:一行一行的查看文件内容
2)重命名的功能 2)按一下空格键:一页一页的查看文件的内容
[root@com ~]# mv laowang gebilaowang 3)退出文件查看:q或Ctrl+c
7、head命令
1)查看一个文件的前几行(默认是查看前十行) 8、tail命名:查看文件的后几行(默认查看文件的后十行)
[root@com ~]# head /etc/services 1)[root@com ~]# tail /etc/services (默认查看文件的后十行)
2)选项 -n(n代表数字)查看文件的前30行
三、vi编辑器 1、三种模式:
1)命令行模式:刚进入文件的时候状态
[root@com ~]# vi /etc/passwd
2)编辑模式(插入模式):按 i 键进入编辑模式
注意:w:保存 q:退出 !:强制操作
这三个选项可以联合使用。
2、vi快捷键
1)G:在命令行模式按G进入文件最后一行
2)gg:在命令行模式按gg进入文件的第一行
3)在最后行模式输入:set nu 显示文件的行号
不显示行号 :set nonu
4)dd:在命令行模式删除一行数据,同样带有剪切的功能
如果要删除多行,直接在dd前面加上数字即可,比如7dd
5)p:黏贴的功能,命令行模式使用
6)u:撤销操作
四、文件系统常用的命令
1、df命令:查看系统文件占用情况(分区大小)
[root@com ~]# df 选项 挂载点
选项:
-a:显示所有系统文件信息,包括特殊的和隐藏的系统文件
-h:显示文件的一个大小容量,比如KB、MB、GB等
-T: 显示系统文件的一个类型
-m: 以MB为单位显示文件大小容量
-k: 以KB为单位显示文件大小容量,默认都是以KB为大那位的
1)查看root目录下的系统文件 2)显示文件的大小和占用情况
[root@com ~]# df [root@com ~]# df -h
2、du命令:统计目录和文件的大小
格式:[root@com ~]# du 选项 目录或文件
-a:显示每个子文件的磁盘占用量。默认情况下只统计子目录的占用量
-h:显示文件的一个大小容量,比如KB、MB、GB等
-s: 统计总占用量,不显示子文件的占用量
1)查看etc目录及子目录下的文件大小
[root@com ~]# du -h /etc/
2)查看etc目录及子目录的总大小,不显示子目录
[root@com ~]# du -sh /etc
35M /etc
补充:du命令和df命令的区别:
1)df命令十从文件系统考虑的,不光要文件的空间,还要统计被命令或系统程序占用的空间,
最常见就是文件已经被删除,但是程序并没有释放空间。所以说用df命令查看文件或目录
的剩余空间更准确。
2)du命令是面向文件的,只会统计文件或目录的占用空间,用du命令查看文件或目录更准确。
五、用户和用户组
1、创建用户:useradd 用户名
root@com ~]# useradd jerry :创建一个名为jerry的普通用户
jerry:x:501:501::/home/jerry:/bin/bash
2、给新用户设置密码
[root@com ~]# passwd jerry(密码为123456)
3、创建号用户后查看用户信息
[root@com ~]# cat /etc/passwd
jerry:x:501:501::/home/jerry:/bin/bash
6、创建组
创建一个名为wedadmin的组
[root@com ~]# groupadd webadmin
webadmin:x:502:
7、将用户添加到组里
所用到的命令:usermod -G
将jerry用户添加到webadmin这个组中
[root@com ~]# usermod -G webadmin jerry
webadmin:x:502:jerry
8、删除一个用户
用到的命令:userdel
[root@com ~]# userdel jerry(删除不彻底)
[root@com ~]# userdel -r jerry(彻底删除用户)
9、删除组
用到的命令:groupdel
[root@com ~]# cat /etc/group
六、用户的模板(/etc/skel)
1)在用户模板目录中添加一条信息
[root@com skel]# vi warning.txt
2)新建一个用户,进入用户的家目录查看是否将用户模板目录里添加的文件拷贝过来
[root@com ~]# cat /home/jerry/warning.txt
welcome beifeng!
七、权限
1、文件的一个权限位
查看Music目录的权限
[root@com ~]# ll -d Music
drwxr-xr-x. 2 root root 4096 Mar 28 19:29 Music
1)第1个位置d:目录
2)第2、3、4个位置:表示所有者对该文件的拥有的权限
r:read 读
w:write 写
x:excute 执行
3)第5、6、7个位置:表示所属组对该文件的拥有的权限
-:表示没有权限的意思
4)第8、9、10个位置:表示其他人对该文件的拥有权限
补充:所有者:u root
所属组:g root
其他人:o
2、设置权限
1)以test文件为例:
[root@com ~]# ll -d test
-rw-r--r--. 1 root root 0 Mar 29 18:50 test
改变所有者的权限:chmod
[root@com ~]# chmod u+x test
[root@com ~]# ll -d test
-rwxr--r--. 1 root root 0 Mar 29 18:50 test
补充:如果test文件其他人的权限修改后,要将修改后的该文件拷贝到其他用户目录下,要将该文件修改后的
具备的所有属性信息都拷贝进去要用到选项-p。
[root@com ~]# chmod o+w test
-rwxr--r--. 1 root root 0 Mar 29 19:16 test
[root@com ~]# cp -p test /home/jerry
[jerry@com ~]$ ll -d test
-rwxr--rw-. 1 root root 0 Mar 29 18:50 test
2)设置其他人和所属组对test文件的执行权限
[root@com ~]# chmod g+x test
[root@com ~]# ll -d test
-rwxr-xrw-. 1 root root 0 Mar 29 18:50 test
[root@com ~]# chmod o+w test
[root@com ~]# ll -d test
-rwxr--rw-. 1 root root 0 Mar 29 18:50 test
3、设置所有者和所属组
设置test文件的所有者为jerry(用到的命令:chown)
[root@com ~]# chown jerry test
[root@com ~]# ll -d test
-rwxr-xrw-. 1 jerry root 0 Mar 29 18:50 test
设置test文件的所属组为jerry(用到的命令:chgrp)
[root@com ~]# chgrp jerry test
[root@com ~]# ll -d test
-rwxr-xrw-. 1 jerry jerry 0 Mar 29 18:50 test
补充一个简便方法:将test文件的所有者和所属组一起改成root
[root@com ~]# chown root:root test
[root@com ~]# ll -d test
-rwxr-xrw-. 1 root root 0 Mar 29 18:50 test
4、用数字进行修改文件的操权限
r:4 w:2 x:1
[root@com ~]# chmod 777 test
[root@com ~]# ll -d test
-rwxrwxrwx. 1 root root 0 Mar 29 18:50 test
课堂作业:如果在普通用户jerry下有一个mysite目录,该目录下的结构为
/mysite/hadoop/mr,他们的操作权限分别是
mysite:jerry root
hadoop:root jerry
mr:root:jerry
要求:将mysite目录及子目录的所有者和所属组都修改成root
用到选项-R
[root@com ~]# chown -R root:root mysite
八、date时间设置
1、设置本地时区
[root@com ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
cp: overwrite `/etc/localtime'? y
2、设置当前日期和时间
3、以数字的形式显示日期和时间
[root@com ~]# date -d '7 day ago' '+%Y%m%d%H%M' (两个根号之间要有空格)
201703231123
4、改写crt外联为中文
用root用户登录。输入【vi /etc/sysconfig/i18n】
如果安装系统为中文系统,则修改【LANG=“zh_CN.UTF-8”】
如果安装系统为英文系统,则修改【LANG=“en_US.UTF-8”】
十、管道符:|
1、定义:将一个命令的输出结果作为另一个命令输入参数
2、命令格式:[root@com ~]# cat /etc/services | more
注意:前一个命令一定是正确的输出才能执行后面的一个命令
补充:grep——>从一个文件中搜索出一个字符串所在的行数据
[root@com ~]# grep 'jerry' /etc/passwd
jerry:x:501:501::/home/jerry:/bin/bash
3、用grep命令显示jerry所在的行数并标识颜色
[root@com ~]# grep -n --color=auto 'jerry' /etc/passwd
32:jerry:x:501:501::/home/jerry:/bin/bash
4、管道符和grep命令联合使用
1)显示当前系统中的关于ESTABLLSHED的网络文件
[root@com ~]# netstat -an | grep ESTABLISHED
tcp 0 52 192.168.207.120:22 192.168.207.1:5060 ESTABLISHED
2)查看用户文件中的关于‘root‘
[root@com ~]# cat /etc/passwd | grep root
roo t:x:0:0:root:/root:/bin/bash
ope rator:x:11:0:operator:/root:/sbin/nologin
等价于[root@com ~]# grep 'root' /etc/passwd
十一、追加和覆盖
1、追加 >>:以追加的方式将命令正确的输出 输出到文件或设备中去
用法:[root@com ~]# date >> abc
[root@com ~]# cat abc
2017年 03月 30日 星期四 14:13:50 CST
补充:错误信息追加 2 >>:以追加的方式将错误的命令输出 输出到文件或设备中去
[root@com ~]# lss 2>>abc
2017年 03月 30日 星期四 14:13:50 CST
-bash: lss: command not found
2、覆盖 >:以覆盖的方式把命令的正确输出 输出到指定的文件或设备中去
用法:[root@com ~]# date >abc
[root@com ~]# cat abc
2017年 03月 30日 星期四 14:20:53 CST
补充:错误信息的覆盖 2>:以覆盖的方式把命令的错误输出 输出到指定的文件或设备中去
[root@com ~]# lss 2>abc
[root@com ~]# cat abc
-bash: lss: command not found
十二、关闭防火墙
1、禁用Linux的安全子系统,在selinux文件中
路径:/etc/sysconfig/selinux
将设置为禁用:[root@com ~]# vi /etc/sysconfig/selinux
SELINUX= disabled
2、查看防火墙状态:[root@com ~]# service iptables status
3、关闭防火墙:
[root@com ~]# service iptables stop
iptables:清除防火墙规则:[确定]
iptables:将链设置为政策 ACCEPT:filter [确定]
iptables:正在卸载模块:[确定]
4、设置开机是否启动相关服务(可以理解为永久性修改)
查看开始是否自启动
[root@com ~]# chkconfig
NetworkManager 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
abrt-ccpp 0:关闭 1:关闭 2:关闭 3:启用 4:关闭 5:启用 6:关闭
abrtd 0:关闭 1:关闭 2:关闭 3:启用 4:关闭 5:启用 6:关闭
acpid 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
.......
5、关闭防火墙设置开机不启动
[root@com ~]# chkconfig iptables off
[root@com ~]# service iptables status
iptables:未运行防火墙。(表示Linux中的防火墙成功被关闭)
十四、压缩和解压缩
1、压缩
在linux系统压缩格式有:
.gz (gzip命令:只能压缩文件不能压缩目录,压缩后的格式是.gz)
.tar ()
.tar.gz
gzip命令:只能压缩文件不能压缩目录,压缩后的格式是.gz
举例:在root家目录下创建一个file文件,将/etc/services文件拷贝到file文件中去,
然后使用jerry用户进行对file文件的压缩。压缩后格式为.gz
[jerry@com ~]$ sudo gzip /root/file
file.gz
2、解压缩文件
gunzip命令——>解压.gz压缩包命令
[jerry@com ~]$ sudo gunzip /root/file.gz
file
3、压缩文件或目录为.tar
命令格式:sudo tar 文件或目录(可以保留原文件)
举例:用jerry用户将root用户下的file文件拷贝到/opt下,然后用jerry用户将file文件压缩成file.tar格式
[jerry@com opt]$ sudo tar -cvf file.tar file
file
[jerry@com opt]$ ls
file file.tar rh
4、压缩成.tar.gz格式(常用的压缩类型)
[jerry@com opt]$ sudo gzip file.tar
[jerry@com opt]$ ls
file file.tar.gz rh
解压:
[jerry@com opt]$ sudo tar -zxf file.tar.gz -C ./
[jerry@com opt]$ ls
file file.tar.gz rh
[jerry@com opt]$ sudo tar -zxf file.tar.gz -C /root
[jerry@com opt]$ sudo ls /root
file
-c:建立一个压缩文件的参数指令
-x:解开一个压缩文件的参数指令
-t:查看tarfile里面的文件
-f:使用档名,请留意f之后要立即接上档名,不要再加参数。
-C;指定解压后文件存放的位置
十五、Linux下配置JDK环境变量
1、解压jdk1.7
首先在/opt目录下创建一个softwares目录,专门存放压缩文件
在/opt目录下创建一个modules目录,专门存放解压缩文件
[jerry@com softwares]$ sudo tar -zxf jdk-7u67-linux-x64.tar.gz -C /opt/modules/
[jerry@com softwares]$ ls /opt/modules/
jdk1.7.0_67
2、修改配置信息(千万不能写错)
[jerry@com ~]$ sudo vi /etc/profile
#JAVA_HOME
export JAVA_HOME=/opt/modules/jdk1.7.0_67
export PATH=$PATH:$JAVA_HOME/bin
3、生效修改后的配置文件
[root@com ~]# source /etc/profile
4、查看jdk是否安装成功
[root@com ~]# java -version
java version "1.7.0_67"
十六、find搜索命令
搜索命令会消耗系统的大量资源
语法格式:find 搜索范围 搜索内容
1、根据文件名搜索
a.根据具体的文件名
[root@com ~]# find / -name init
/sbin/init
/lib/alsa/init
b.模糊查询带有关键字init的文件
[root@com ~]# find /etc -name *init*
/etc/pam.d/run_init
/etc/X11/xinit/xinitrc-common
c.查找以init关键字为开头的文件
[root@com ~]# find /etc -name init*
d.查找以init后面三个字符的文件
[root@com ~]# find /etc/ -iname init???
/etc/inittab
注释:*号匹配的是任意字符,也叫通配符
?号是匹配的单个字符
注意:-iname不区分大小写
[root@com ~]# find /etc/ -iname INIT???
/etc/inittab
2、根据文件的大小搜索
-size,它有两个指定模式 ,一个是+:大于,一个-:小于,不加符号表示=
[root@com ~]# find / -size +2M
[root@com ~]# find / -size -2M
[root@com ~]# find / -size 2M
3、根据文件的类型去搜索
a.根据文件类型搜索 (f)
[root@com ~]# find /etc -name init* -type f
/etc/init/init-system-dbus.conf
/etc/inittab
b.根据目录类型搜索(d)
[root@com ~]# find /etc -name init* -type d
/etc/init
/etc/rc.d/init.d
十八、RPM包管理
1、rpm包的一个命名规则:tftp -server-0.49-7.el6.x86_64.rpm
tftp -server---->软件包名
0.49-7————>软件的版本号
el6.x86_64——》适合什么系统
rpm——》包的类型
2、rpm包一个依赖性
1)树形依赖:a->b-c 安装软件包a时,要求先安装软件包b,在安装软件包b时要求先安装软件包c...
2)环形依赖:a->b-c-a :重复回头安装,很繁琐
3、首先要对光驱进行挂载:mount命令
[root@com ~]# mount /dev/cdrom /media
补充:进入挂载的光驱目录下,所有的挂载文件都在 /media/Packages
查看Packages里面挂载的软件包总条数:
[root@com Packages]# ls | wc -l
3956
4、rpm包的管理
a.安装一个软件包:
依赖安装:
[root@com Packages]# rpm -ivh mysql-connector-odbc-5.1.5r1144-7.el6.x86_64.rpm
warning: mysql-connector-odbc-5.1.5r1144-7.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY
error: Failed dependencies:
libodbcinst.so.2()(64bit) is needed by mysql-connector-odbc-5.1.5r1144-7.el6.x86_64
unixODBC is needed by mysql-connector-odbc-5.1.5r1144-7.el6.x86_64
一次性安装成功:
[root@com Packages]# rpm -ivh zlib-devel-1.2.3-29.el6.x86_64.rpm
warning: zlib-devel-1.2.3-29.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Preparing... ########################################### [100%]
1:zlib-devel ########################################### [100%]
b.卸载安装包:(不加包的后缀名)
命令格式:[root@com Packages]# rpm -e zlib-devel-1.2.3-29.el6.x86_64
c.查询
*查询rpm包安装是否成功(不加包的后缀名)
[root@com Packages]# rpm -q zlib-devel-1.2.3-29.el6.x86_64
zlib-devel-1.2.3-29.el6.x86_64
*查询所有已经安装好的rpm包
[root@com Packages]# rpm -qa
*查询httpd主包是否安装
[root@com Packages]# rpm -q httpd
httpd-2.2.15-26.el6.centos.x86_64
*查询软件包的一个详情信息
[root@com Packages]# rpm -qi httpd
*查询系统文件属于哪个包 选项-qf(f表示文件)
1)查询ls命令属于哪个rpm包
[root@com Packages]# rpm -qf /bin/ls
coreutils-8.4-19.el6.x86_64
2)查询ntp.conf这个系统脚本文件属于属于哪个包
[root@com Packages]# rpm -qf /etc/ntp.conf
ntp-4.2.4p8-3.el6.centos.x86_64
十九、yum命令
1、作用:用来解决rpm包的依赖性
2、使用它的条件:需要可用的外网
3、特点:方便、快捷、自动解析依赖
4、命令格式:#yum
5、安装 (不加后缀名)
*选择确定安装:
[root@com ~]# yum -y install mysql-connector-odbc-5.1.5r1144-7.el6.x86_64
Complete!
*自动下载安装:
[root@com ~]# yum -y install mysql-connector-odbc-5.1.5r1144-7.el6.x86_64
Complete!
*卸载软件包:
[root@com ~]# yum -y remove mysql-connector-odbc-5.1.5r1144-7.el6.x86_64
Complete!
6、yum仓库
路径位置:/etc/yum.repos.d/
查看仓库里面的4个配置文件
[root@com yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
以CentOS-Base.repo为例
[root@com yum.repos.d]# cat CentOS-Base.repo
gpgcheck=1——>代表是否开启验证
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 ——》校验公密所在的位置。
有时候校验失败:
*ping不通外网
*包根本无法下载(配置仓库信息错误)
shell编程
四、Linux中支持的shell
[root@com ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
五、shell脚本的一个执行方式:
首先学一个回显命令:echo
[root@com ~]# echo laowang
laowang
1、在root目录下创建一个sh目录专门存放shell脚本语言
[root@com ~]# mkdir sh
sh
2、在sh目录下写一个.sh类型的脚本语言,比如hello.sh
[root@com sh]# vi hello.sh
#!/bin/bash (他不是注释,它代表一个标识,标称当前写的程序是shell脚本,不能省略)
#fanjun(weibo.com/beifeng)
echo "fan jun is the most honest man in beifeng!"
3、执行写好的脚本
第一种方式执行:通过bash或sh调用执行脚本语言
a.通过相对路径直接加脚本名执行
[root@com sh]# bash hello.sh
fan jun is the most honest man in beifeng!
b.通过绝对路径直接加脚本名执行
[root@com ~]# sh /root/sh/hello.sh
fan jun is the most honest man in beifeng!
第二种方式执行:直接通过写路径执行脚本语言
前提:首先要给我们写好的脚本语言赋予755权限
[root@com sh]# chmod 755 hello.sh
-rwxr-xr-x. 1 root root 89 3月 31 11:27 hello.sh
a.通过相对路径执行
[root@com sh]# ./hello.sh
fan jun is the most honest man in beifeng!
b.通过绝对路径执行
[root@com ~]# /root/sh/hello.sh
fan jun is the most honest man in beifeng!
六、shell变量类型(4种变量)
1、用户自定义变量(只能在当前的shell中生效)
1)常用的调用命令:echo $变量名
2)定义一个简单的变量
[root@com ~]# name=java17
[root@com ~]# echo $name
java17
3)变量的一个叠加
[root@com ~]# aa=123
[root@com ~]# aa="$aa"456
[root@com ~]# echo $aa
123456
变量叠加的第二种方式
[root@com ~]# abc=123
[root@com ~]# abc=${abc}456
[root@com ~]# echo $abc
123456
4)查看变量:set命令
root@com ~]# set
5)变量删除
[root@com ~]# unset abc
2、环境变量(系统运行时缩用到啊的变量)
特点:*它不仅在当前的shell种有效,在子shell中也有效
*如果把环境变量写道特定的文件中,那么该环境变量在所有的shell中都有效
举例说明:
1)申明一个环境变量:export 变量名=变量值
[root@com ~]# export age=18
2)查看环境变量
[root@com ~]# env
3)删除环境变量
[root@com ~]# unset age
4)环境变量的类型
a.系统环境变量:从U你在/etc/profile
它是系统全局生效的配置文件,系统下所有的用户都能共享该文件
b.用户环境变量:存在 ~/.bash_profile 文件中定义的变量
每个用户目录下都会有一个用户变量,用来保存每个用户的环境变量,只针对某一个用户生效,
其他用户不能共享。
3、位置变量
获取执行脚本文件时所传入的参数,将传入的参数保存在位置变量中,以便在脚本中可以使用这些变量
举例说明:在脚本里面编写位置变量
[root@com sh]# vi 1.sh
#!/bin/bash
echo $0
echo $2
echo $3
echo $1
给位置变量传参
[root@com sh]# sh 1.sh start stop restart
1.sh($0指示回显脚本名称)
stop
restart
start
注意:a.执行shell脚本传参时,每个参数之间要用空格隔开。
b.如果编写脚本语言时不写位置变量,那么执行脚本传参时就不能有参数显示
[root@com sh]# vi 2.sh
#!/bin/bash
echo $0
[root@com sh]# bash 2.sh start stop restart
2.sh
4、预定义变量
$0:显示脚本名称
$!:进程中的PID号,每个进程都有一个PID号
$$:当前进程中的ID
$#:当前shell的参数个数
$*:整体显示所有参数的内容
$@:逐个显示所有参数内容
$?:判断表示程序退出的代码(返回0代表成功,非0代表失败)
举例1:$?的使用
正确退出返回0
[root@com sh]# ls /etc
[root@com sh]# echo $?
0
错误退出返回非0
[root@com sh]# ls /etc/hahaha
[root@com sh]# echo $?
2
举例2:使用S#显示参数的个数
[root@com sh]# vi 3.sh
#!/bin/bash
echo $#
[root@com sh]# bash 3.sh start stop restart
3
举例3:$*的使用
[root@com sh]# vi 4.sh
#!/bin/sh
echo $*
[root@com sh]# bash 4.sh start stop restart
start stop restart
举例4:$@的使用
[root@com sh]# vi 5.sh
#!/bin/bash
echo $@
[root@com sh]# bash 5.sh start stop restart
start stop restart
七、逻辑符号
1、逻辑与:&&,前面的命令执行成功后才会执行后面的命令
格式:命令1 && 命令2
举例说明:[root@com tmp]# cat /etc/passwd && mkdir /tmp/haha
[root@com ~]# ll -d /tmp/haha
drwxr-xr-x. 2 root root 4096 3月 31 15:23 /tmp/haha
2、逻辑或:||,前面一个命令执行失败才会执行后面一个命令
但是如果前面一个命令执行成功,后面一个命令不会执行
举例说明:[root@com ~]# cat /etc/passwdord || mkdir /tmp/hehe
cat: /etc/passwdord: 没有那个文件或目录
[root@com ~]# cat /etc/passwd || mkdir /tmp/xixi(不会执行后面这个命令
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
3、无逻辑符号 ; ----->多个命令顺序执行,命令之间没有任何逻辑关系
[root@com ~]# ls;date;cd/user1;pwd
abc Desktop gebilaowang Music sh text.txt
anaconda-ks.cfg Documents install.log Pictures Templates Videos
beifeneg Downloads install.log.syslog program file test warning.txt
beifeng file java17.txt Public test.txt
2017年 03月 31日 星期五 15:33:24 CST
bash: cd/user1: 没有那个文件或目录
/root
八、shell的算术运算
补充:命令--->declare :说明变量的类型
格式:#declare +/- 选项 变量名
选项 -:给变量设定类型属性
+:取消变量的类型属性
-i:将变量申明为整数类型
-x:将变量申明为环境变量
-p:显示指定变量被声明的类型
1)数值运算方法1:
[root@com ~]# aa=11
[root@com ~]# bb=22
[root@com ~]# declare -i cc=$aa+$bb
[root@com ~]# echo $cc
33
2)数值运算方法2:(不推荐使用)
[root@com ~]# dd=$(expr $aa + $bb)
[root@com ~]# echo $dd
33
3)数值运算方法3:
[root@com ~]# ee=$(($aa+$bb))
[root@com ~]# echo $ee
33
4)数值运算方法4:
[root@com ~]# ff=$[$aa+$bb]
[root@com ~]# echo $ff
33
九、内置测试判断
1、定义字符串必须加上双引号
[root@com ~]# a="I am"
[root@com ~]# echo $a
I am
2、判断字符串之间是否相等,必须加上双引号
[root@com ~]# [ "$a" = "$b" ];echo $?
0
[root@com ~]# c="I love you"
[root@com ~]# [ "$a" = "$c" ];echo $?
1
3、判断用户输入的是否是字母y,满足其中一个条件就可以完成表达式
[root@com ~]# [ "$Yn"="Y" -o "$Yn"="y" ];echo $?
0
4、-e 文件名,如果文件存在则为真
[root@com ~]# [ -e /etc/passwd ];echo $?
0
[root@com ~]# [ -e /etc/ ];echo $?
0
5、-r 文件名 如果文件存在且可读则为真
注意不再当前位置需要加上绝对路径
[root@com ~]# [ -r /root/passwd ];echo $?
1
6、-w 文件名 如果文件存在且可写则为真
[root@com ~]# [ -w /etc/passwd ];echo $?
0
7、-x 文件名 如果文件存在且可执行则为真
[root@com ~]# [ -x /etc/passwd ];echo $?
1
第一种测试方式
1、数值比较:用到一些选项
-eq:等于
-ne:不等于
-gt:大于
-ge:大于等于
-lt:小于
-le:小于等于
注意:在数值比较中不能使用>、<或 =
举例1:[root@com sh]# vi 6.sh
#!/bin/bash
a=9
b=15
if [ $a -lt $b ]
then
echo smaller
fi
[root@com sh]# sh 6.sh
smaller
2、字符串的比较:分为5种比较方式
= :等于
!= :不等于
-z:长度为0则为true
-n:长度不为0则为true
str:字符串不为空则为true
举例2:[root@com sh]# vi 7.sh
#!/bin/sh
str1="abc"
str2="abc"
str3=
if [ $str1 = $str2 ]
then
echo equal
fi
[root@com sh]# bash 7.sh
equal
3、文件的测试或比较
-d:如果是目录则为真
-f:如果是文件则为真
-r:如果可读则为真
-w:如果可写则为真
-x:如果可执行则为真
举例3:[root@com sh]# vi 8.sh
#!/bin/sh
if [ -f $1 ]
then
echo is file
fi
[root@com sh]# bash 8.sh
is file
第二方式:
[root@com sh]# vi 9.sh
#!/bin/sh
if test 10 -gt 9
then
echo bigger
fi
[root@com sh]# bash 9.sh
bigger
十、shell控制语句
第一个:if
语法:if 条件判断
then
command....
fi
第一种写法举例: [root@com sh]# vi 9.sh
#!/bin/sh
if test 10 -gt 9
then
echo bigger
fi
[root@com sh]# bash 9.sh
bigger
第二种写法举例: if 条件语句
then
command....
else
comand....
fi
[root@com sh]# vi 10.sh
#!/bin/sh
if [ -d /home/jerry/tmp ]
then
ls/home/jerry/tmp
else
mkdir /home/jerry/tmp
echo 目录创建成功
fi
[root@com sh]# bash 10.sh
目录创建成功
第三种写法举例: if 条件语句
then
command...
elif 条件语句
then
command...
elif 条件语句
then
command...
.. ......
else 条件语句
command...
fi
#!/bin/sh
#read score and choose level
#read 是一种交互式用法,他会读取设备输入
read score
if [ $score -ge 90 ]
then
echo "levelA"
elif [ $score -ge 80 ]&&[ $score -lt 90 ]
then
echo "levelB"
elif [ $score -ge 70 ]&&[ $score -lt 80 ]
then
echo "levelC"
elif [ $score -ge 60 ]&&[ $score -lt 70 ]
then
echo "levelD"
else
echo "levelE"
fi
[root@com sh]# bash 11.sh
90
levelA
[root@com sh]# bash 11.sh
95
levelA
[root@com sh]# bash 11.sh
85
levelB
[root@com sh]# bash 11.sh
75
levelC
[root@com sh]# bash 11.sh
60
levelD
[root@com sh]# bash 11.sh
45
levelE
第二个循环:for循环
for [ 循环条件:循环控制]
do
循环体
echo command....
done
[root@com sh]# vi 12.sh
#!/bin/sh
sum=0
for ((i=0;i<10;i++))
do
echo $i
sum=$((sum+i))
done
echo $sum
[root@com sh]# bash 12.sh
0
1
2
3
4
5
6
7
8
9
45
while循环
while [循环条件]
do
[循环体]
[控制语句]
done
[root@com sh]# vi 14.bash
#!/bin/sh
i=1
while [ $i -le 10 ]
do
SUM=$((SUM+i))
i=$[ i + 1 ]
done
echo $SUM
[root@com sh]# bash 14.bash
55
case的用法
第一种:
[root@com sh]# vi 15.bash
#!/bin/sh
echo "input from : one two three"
read input
case $input in
one)echo "your input is one"
;;
two)echo "your input is two"
;;
three)echo "your input is three"
;;
*)echo "your input $input"
esac
[root@com sh]# bash 15.bash
input from : one two three
one
your input is one
[root@com sh]#
[root@com sh]# bash 15.bash
input from : one two three
oen
your input oen
[root@com sh]# bash 15.bash
input from : one two three
two
your input is two
[root@com sh]# bash 15.bash
input from : one two three
three
your input is three
[root@com sh]# bash 15.bash
input from : one two three
haha
your input haha
第二种写法:
[root@com sh]# vi 16.bash
#!/bin/bash
echo "input from : one two three"
read input
case $input in
one | two )echo "your input is one or two"
;;
three | four )echo "your input is three or four"
;;
five | six )echo "your input is five or six"
;;
*)echo "your inoujt is $input"
esac
[root@com sh]# bash 16.bash
input from : one two three
one
your input is one or two
[root@com sh]# bash 16.bash
input from : one two three
two
your input is one or two
[root@com sh]#
[root@com sh]# bash 16.bash
input from : one two three
three
your input is three or four
[root@com sh]# bash 16.bash
input from : one two three
haha
your inoujt is haha
系统的管理命令
1、top:查看系统资源
每隔3秒更新一次,按q退出浏览状态
2、free:查看内存信息
选项 -m:就是以MB格式显示
[root@com ~]# free -m
total used free shared buffers cached
Mem: 1869 1253 616 0 52 867
-/+ buffers/cache: 333 1536
Swap: 3999 0 3999
3、df -l 查看硬盘分区信息
[root@com ~]# df -l
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda3 47269816 3388120 41480468 8% /
tmpfs 957344 76 957268 1% /dev/shm
/dev/sda1 297485 37256 244869 14% /boot
/dev/sr0 4251346 4251346 0 100% /media
4、ps -ef 查看系统的进程 5、kill 杀死正在进行进程 killall
[root@com ~]# ps -ef | grep crond 选项 -9
root 2127 1 0 09:36 ? 00:00:01 crond kill -9 端口
root 6830 5112 0 17:44 pts/0 00:00:00 grep crond
6、ifconfig:查看ip、子网掩码。。
8、netstat:查看网络端口
7、ping 检测网络质量和网络连接 选项:-t:监控tcp协议的进程
ping 主机名 -l:listnning
ping 地址 域名 -n:显示端口信息
-p:显示进程的PID
卸载系统自带的jdk
1、查询jdk:rpm -qa | grep java
卸载系统自带JDK
1、查询JDK: rpm -qa | grep java
2、卸载: rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.50.1.11.5.el6_3.x86_64
java-1.7.0-openjdk-1.7.0.9-2.3.4.1.el6_3.x86_64
详细信息去看 https://blog.csdn.net/helpless_pain/article/details/68929231