linux基础命令

Linux基础
一、基础命令
1、ls:列出当前目录下的的文件或目录
2、ls -a :列出当前目录下所有的文件和目录(包括隐藏文件)
3、ls -l :显示文件的详细信息(长格式的信息查看),相当于 ll
ls -hl:显示文件的详细信息和文件的大小
ls -al:列出当前目录下所有的文件和目录的详细信息
ls -dl:显示当前文件本身的详细信息
4、cat 命令:查看文件信息(只能查看文件)
[root@com ~]# cat /etc/passwd :查看所有的用户信息
[root@com ~]# cat /etc/group :查看所有的用户组信息
注明:在Linux系统中每创建一个用户就会自动生成一个对应的用户组。
5、cd命令:切换目录
[root@com ~]# cd /etc :切换到根目录下的etc目录
pwd:显示当前文件的目录
whoami:查看当前的用户
[root@com etc]# whoami:查看当前用户是root用户
root
6、/:表示用户的根目录
家目录(宿主目录)
1)管理员用户的家目录:
[root@com ~]# pwd
/root
2)普通用户的家目录:
[java17@com ~]$ pwd
/home/java17
7、切换用户命令:su - 用户名
1)切换到普通用户
[root@com ~]# su - java17
[java17@com ~]$ pwd
/home/java17
2)切换到root管理员用户
[java17@com ~]$ su - 或
[java17@com ~]$ su - root
Password:
8、关机、重启、清屏
关机:halt、init 0、shutdown now
重启:reboot、init6
清屏:clear、Ctrl+l

二、Linux文件和目录的一些常用命令
1、touch命令:创建一个空文件
1)在root用户的家目录下创建一个java17.txt的空文件
[root@com ~]# touch java17.txt
2)在root用户的家目录下创建一个带空格的文件(对有空格文件加上引号即可)
[root@com ~]# touch “program file”
2、rm命令:删除文件或目录
删除root用户家目录下的program这个空文件
[root@com ~]# rm program
3、mkdir命令:创建一个目录
1)[root@com ~]# mkdir java17:创建一个java17的目录
2)删除java17这个目录:[root@com ~]# rm -rf java17
注意:如果java17这个目录下还有文件,向一次性删除,用到选项-rf。
-f:在使用中很容易将系统中重要的文件删掉,所以在使用中要谨慎。
3)递归创建目录 -p
[root@com ~]# mkdir -p beifeng/laowang
4、cp命令:复制一个文件或目录
拷贝根目录下etc配置目录下的passwd文件到root用户家目录下的beifeng目录中
[root@com ~]# cp /etc/passwd /root/beifeng
查看是否复制成功:[root@com ~]# ls beifeng
file laowang passwd

5、mv命令:剪切和重命名
1)剪切文件到目录中去
[root@com ~]# mv /laowang /root
2)重命名的功能
[root@com ~]# mv laowang gebilaowang
6、more命令:分页查看文件的内容
[root@com ~]# more /etc/services
1)按回车键:一行一行的查看文件内容
2)按一下空格键:一页一页的查看文件的内容
3)退出文件查看:q或Ctrl+c
7、head命令
1)查看一个文件的前几行(默认是查看前十行)
[root@com ~]# head /etc/services
2)选项 -n(n代表数字)查看文件的前30行
[root@com ~]# head -30 /etc/services
8、tail命名:查看文件的后几行(默认查看文件的后十行)
1)[root@com ~]# tail /etc/services (默认查看文件的后十行)
2)查看文件的后三十行
[root@com ~]# tail -30 /etc/services
3)动态查看文件的后十行
[root@com ~]# tail -f /etc/services
注意:文件可能优势回进行添加和删除,加上选项-f就能保证我们要查看最后十行文件信息数据
9、find命令:查找文件或目录
查看文件名为java17.txt的文件同时显示目录信息
[root@com ~]# find -name java17.txt
./java17.tx

[root@com ~]# find / -name beifeng01
/beifeng01

三、vi编辑器
1、三种模式:
1)命令行模式:刚进入文件的时候状态
[root@com ~]# vi /etc/passwd
2)编辑模式(插入模式):按i键进入编辑模式
3)最后行模式:保存和退出状态
a.如果我们对文件进行了修改要进行保存的话,先进入命令行模式anEsc进去最后行模式后
按Shift : wq 对文件进行保存并退出。
b.如果指示查看文件信息不进行对其编辑直接进入命令行模式按Esc进入最后行模式进行退出,
按Shift : q!进行强制退出。

        注意:w:保存   q:退出   !:强制操作
        这三个选项可以联合使用。

2、vi快捷键
1)G:在命令行模式按G进入文件最后一行
2)gg:在命令行模式按gg进入文件的第一行
3)在最后行模式输入:set nu 显示文件的行号
不显示行号 :set nonu
4)dd:在命令行模式删除一行数据,同样带有剪切的功能
如果要删除多行,直接在dd前面加上数字即可,比如7dd
5)p:黏贴的功能,命令行模式使用
6)u:撤销操作
7)替换内容,在最后行模式操作
:1,$s/nologin/88888888/g
注释:1:表示文件的第一行,不一定十从第一行开始,也可以重其他行开始,只要修改前面的数字即可。
$:表示文件的最后一行
中间的斜线起到了分隔的作用
g:表示通行(全部替换的意思)

四、文件系统常用的命令
1、df命令:查看系统文件占用情况(分区大小)
[root@com ~]# df 选项 挂载点
选项:
-a:显示所有系统文件信息,包括特殊的和隐藏的系统文件
-h:显示文件的一个大小容量,比如KB、MB、GB等
-T: 显示系统文件的一个类型
-m: 以MB为单位显示文件大小容量
-k: 以KB为单位显示文件大小容量,默认都是以KB为大那位的
1)查看root目录下的系统文件
[root@com ~]# df
2)显示文件的大小和占用情况
[root@com ~]# df -h
3)。。。。。。

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❌501:501::/home/jerry:/bin/bash
2、给新用户设置密码
[root@com ~]# passwd jerry(密码为123456)
3、创建号用户后查看用户信息
[root@com ~]# cat /etc/passwd
jerry❌501:501::/home/jerry:/bin/bash
4、以root管理员用户为例,分析用户信息
root❌0:0:root:/root:/bin/bash
用户信息一般分为7个字段
1)第1个字段
用户名:root
2)第2个字段:密码位x
查看用户密码文件(只能在管理员用户下查看)
[root@com ~]# cat /etc/shadow
root:$1 6 L b 6 H p D 1 6Lb6HpD1 6Lb6HpD1uWDZbUlGEOj8EqHWAj52m/:17254:0:99999:7:::
3)第3个字段:用户的一个UID编号位
0:表示管理员用户
1——499:表示伪用户
500——65535:表示普通用户
4)第4个字段:用户组的GID编号位
一个用户组里面可以有多个用户
[root@com ~]# usermod -G webadmin jerry
查看用户组文件
[root@com ~]# cat /etc/group
root❌0:

      5)第5个字段:说明位(对用户进行解释说明的)
      6)第6个字段:用户的一个宿主目录,就是说用户开始登录后的哪个位置
      7)第7个字段:shell的命令环境,用户登录后就可以写shell脚本语言,Linux默认使用的是/bin/bash

5、影子文件(就相当于passwd的影子,用户的密码文件)
查看用户的密码文件
root:$1 6 L b 6 H p D 1 6Lb6HpD1 6Lb6HpD1uWDZbUlGEOj8EqHWAj52m/:17254:0:99999: :::
一共有9个字段
1)第一个字段:用户名
2)第二个字段:加密的密码
散列式的一个加密方法:SHA512加密
如果!!、* 表示用户没有密码,不能登录
3)第三个字段:密码最后修改的时间
使用1970年1月1号的第17254天。
4)第四个字段:第二次修改时间和修改的时间差
如果是0就代表没有时间差,忽略不计
5)第五个字段:表示用户密码的一个有效期
99999表示在创建用户之后第99999天内密码有效
6)第六个字段:密码到期前得到的一个警告天数
7)第七个字段:表示密码到期后的宽限天数
如果是8就表示宽限天数为8天
8)第八个字段:账户的失效天数
9)第九个字段:起到一个保留信息的作用(暂无显示任何内容)

6、创建组
创建一个名为wedadmin的组
[root@com ~]# groupadd webadmin
webadmin❌502:
7、将用户添加到组里
所用到的命令:usermod -G
将jerry用户添加到webadmin这个组中
[root@com ~]# usermod -G webadmin jerry
webadmin❌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”】

九、man帮助命令
1、可以查看命令的一些帮助信息
[root@com ~]# man ls
2、可以查看一些配置文件的信息
[root@com ~]# man services
service-name:网络服务名
port:端口号
protocol:协议
aliases:别名
3、查看网络配置文件信息
# service-name port/protocol [aliases …] [# comment]
discard 9/tcp sink null

十、管道符:|
1、定义:将一个命令的输出结果作为另一个命令输入参数
2、命令格式:[root@com ~]# cat /etc/services | more
注意:前一个命令一定是正确的输出才能执行后面的一个命令
补充:grep——>从一个文件中搜索出一个字符串所在的行数据
[root@com ~]# grep ‘jerry’ /etc/passwd
jerry❌501:501::/home/jerry:/bin/bash
3、用grep命令显示jerry所在的行数并标识颜色
[root@com ~]# grep -n --color=auto ‘jerry’ /etc/passwd
32:jerry❌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❌0:0:root:/root:/bin/bash
ope rator❌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中的防火墙成功被关闭)

十三、sudo权限
1、它的操作对象是系统命令(系统命令是存放在/bin或/sbin)
2、命令格式:visudo—>给普通用户赋予管理员的权限操作
[root@com ~]# visudo (管理员身份运行)
root ALL=(ALL)–>使用的身份 ALL
用户 被管理的主机地址 授权的命令
jerry ALL=(root)NOPASSWD:ALL
3、用普通用户操作管理员的命令的话要加上 sudo + 系统命令
比如:[jerry@com ~]$ sudo reboot————》重启系统

十四、压缩和解压缩
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= P A T H : 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

十七、Linux软件包的管理
1、Linux中的软件包主要针对于服务器的
2、windows中软件包不能在Linux中直接使用
3、Linux中的软件包的分类
1)源码包:一般Linux系统中的内核里面才存在的源码包,特点是开源免费。
2)二进制包:
特点:*比较常用,是经过编译的,简化软件包的一个操作。
*不能看到源码
*安装速度要比源码包快
*具有依赖性,安装起来非常繁琐
二进制包常用的有:rpm包——》系统默认的包
yum——》自动解析依赖性,针对于解决rpm包的依赖性

十八、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
*列出系统中所有已经安装好的rpm包
[root@com ~]# yum list
yum-utils.noarch 1.1.30-37.el6 base
包名 版本 仓库名

    *查看httpd-tools包
     [root@com ~]# yum list | grep httpd-tools
        httpd-tools.x86_64                         2.2.15-26.el6.centos          @anaconda-CentOS-201303020151.x86_64/6.4
        httpd-tools.x86_64                         2.2.15-56.el6.centos.3        updates        
        @anaconda-CentOS-201303020151.x86_64/6.4————》表示该包已经安装成功

5、安装 (不加后缀名)
*选择确定安装:
[root@com ~]# yum install mysql-connector-odbc-5.1.5r1144-7.el6.x86_64
y
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编程

一、shell编程的概念
1、shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面
系统程序。用户可以通过shell来启动、挂载、停止甚至编写一些程序。
2、shell还是功能强大的编程语言,易调试,易编辑、灵活性强,shell是结识知识性的脚本语言。
在shell中直接调用Linux中系统命令。
二、shell执行原理
1. 在我们计算机语言中,最底层是硬件,硬件是通过内核进行管理的。内核通过管理硬件进行功能的实现,
但是在计算机语言里底层硬件只能识别0101…的机器语言,无法识别a,b,c,asc码语言。在这中间就需要一个
翻译机制进行编译,就是所谓的shell编辑器,shell编辑器可以讲外层输入的asc码翻译成计算机能识别的机器语言,
所以说内核要通过shell编辑器进行翻译才能对硬件进行管理。
2.反之,硬件要将输入的请求响应给外层应用,那么我们内核是无法识硬件的机器语言,
那么这时shell编辑器也会将硬件处理的机器语言翻译成asc语言给内核,内核再进行shell编辑器反馈给外层应用。
最后就会得到我们想要的结果了!

三、shell的分类
1、Bourne Shell(bshell):从1979年起在unix系统中开始使用
它的主要文件是:sh、bash、zsh、psh
2、C shell(cshell):主要是一个升级版本
它的主要文件是:csh、tcsh

    注意点:bshell和cshell不能兼容,它们之间是独立的
            bash和sh是可以相互兼容的。

四、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 KaTeX parse error: Expected 'EOF', got '#' at position 59: … [root@com ~]#̲ aa=123 …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= a a + aa+ aa+bb
[root@com ~]# echo KaTeX parse error: Expected 'EOF', got '#' at position 61: … [root@com ~]#̲ dd=(expr $aa + $bb)
[root@com ~]# echo KaTeX parse error: Expected 'EOF', got '#' at position 54: … [root@com ~]#̲ ee=(( a a + aa+ aa+bb))
[root@com ~]# echo KaTeX parse error: Expected 'EOF', got '#' at position 54: … [root@com ~]#̲ ff=[ a a + aa+ aa+bb]
[root@com ~]# echo $ff
33

九、内置测试判断
1、定义字符串必须加上双引号
[root@com ~]# a=“I am”
[root@com ~]# echo $a
I am

2、判断字符串之间是否相等,必须加上双引号
[root@com ~]# [ “ a " = " a" = " a"="b” ];echo $?
0

[root@com ~]# c=“I love you”
[root@com ~]# [ “ a " = " a" = " a"="c” ];echo $?
1

3、判断用户输入的是否是字母y,满足其中一个条件就可以完成表达式
[root@com ~]# [ “ Y n " = " Y " − o " Yn"="Y" -o " 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 s u m = i sum= isum=((sum+i))
done
echo $sum

[root@com sh]# bash 12.sh
0
1
2
3
4
5
6
7
8
9
45

[root@com sh]# vi 13.bash
for MONTH in Jan Feb Mar Apr May Jun July Aug Sep Oct Nov Dev
do
echo $MONTH
done

[root@com sh]# bash 13.bash
Jan
Feb
Mar
Apr
May
Jun
July
Aug
Sep
Oct
Nov
Dev

while循环
while [循环条件]
do
[循环体]
[控制语句]
done

[root@com sh]# vi 14.bash
#!/bin/sh
i=1
while [ i − l e 10 ] d o S U M = i -le 10 ] do SUM= ile10]doSUM=((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 查看系统的进程
[root@com ~]# ps -ef | grep crond
root 2127 1 0 09:36 ? 00:00:01 crond
root 6830 5112 0 17:44 pts/0 00:00:00 grep crond
5、kill 杀死正在进行进程
选项 -9
kill -9 端口
6、ifconfig:查看ip、子网掩码。。
7、ping 检测网络质量和网络连接
ping 主机名
ping 地址 域名
8、netstat:查看网络端口
选项:-t:监控tcp协议的进程
-l:listnning
-n:显示端口信息
-p:显示进程的PID

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值