linux(学习笔记)

1.1.1 Linux系统简介-UNIX发展历史和发行版本

父子关系,unix 60年代----windows 80年代----linux 90年代

unix发行版本——IBM,HP,SUN(solaris):可以在PC上使用,SUN已被orace收购

类Unix操作系统:苹果系统由Unix演变而来

unix——C语言(重写)——TCP/IP(发展) :网络操作系统


1.1.2 Linux系统简介-Linux发展历史和发行版本


91年芬兰大学生开发:企鹅LOGO(芬兰吉祥物) OR 南北极不属于任何国家,意为开源

内核:www.kernel.org/ 原班人马发布

其它的为开发版 (发行版)

分支:redhat和debian(区别:安装方式)

linux中的个人版:全功能版,测试用


1.2 Linux系统简介-开源软件简介


典型:php(大像),APACHE(自由羽毛),MYSQL

开源软件(源代码开放) 自由软件(freeware ,免费软件,不一定开源)

收费软件(Unix)

开源软件安全性好:足够多的眼睛就会让问题浮现


1.3 Linux系统简介-Linux应用领域


www.netcraft.com 操作系统统计:腾讯,淘宝,安卓

企业服务器和嵌入式应用


2.2 Linux系统安装-系统分区

windows:分区---格式化---分配盘符

linux      : 分区---格式化---硬盘设备文件名(Sda---Sdd):第几块硬盘  ---挂载点:空目录(/ 根分区,/swap 虚拟内存 ,/boot 启动分区)

                                                          分区设备文件名(Sda1---sda8)  

                                                          sda1--sda4(主分区)---sda5(第1个逻辑分区)


sda1:/boot——sda2:/swap(内存2倍,一般为2G)—— sda3:/home (文件分区)——sda4(扩展)——sda5:/(根分区)


2.4 Linux系统安装-远程登录管理工具

vmware 网络设置中:桥接(局域网其他的机器也能访问虚拟机,其它方式只能与本机通讯)  如果有2块网卡,要选择用哪块网卡来桥

                                   其它方式是本机网卡没有入网的情况下使用


远程工具:SecureCRT中文字体乱码解决:1.选项中--仿真--终端--Linux

                                                                      2.外观--当前颜色方案:traditional --字体--任意中文字体--字符集gb2312--字符编码utf8                   


文件传输工具:WinSCP


3.1 给初学者的建议-注意事项


1.严格区分大小写

2.所有内容都是文件

3.不靠扩展名区分文件

4.所有存储设备都必须手动挂载

5.win和linux程序不能互相使用


3.2 给初学者的建议-服务器管理和维护建议

目录结构

/bin 保存命令的目录

/boot 启动文件

/dev 设备文件

/etc 配置文件

/home 宿主目录,家目录

/lib  函数库

/lost+found 磁盘碎片

/mnu or /media+/misc 挂载点 加载光盘,U盘

/usr/local 外来软件安装点 类似win的program

/proc+/sys 内存运行临时目录 重起清空

/srv 服务目录

/usr 系统资源目录,类似windows目录

/var 日志目录


4.1.1 Linux常用命令-文件处理命令-命令格式与目录处理命令ls


命令格式: 

命令  选项  参数

ls       -l       /ec


ls 显示目录和文件(list)

ls -a ( -all )显示所有文件  (.开头的是隐藏文件)

ls -l   (-long)长文件详细内容 

ls -d 查看文件或目录本身的信息 定位查看 一般使用-ld

ls -i i节点,身份号

(通用参数-h 文件大小以K,M显示 可以配合-l选项)


du -sh 目录

查看目录大小



drwxr-xr-x

d 文件类型  d -(directory)目录    - -文件    l -(link)软链接


文件权限 r-red读  w-write写 x-execute可执行

3部分          rwx                  r-x                 r-x

3类用户     所有者u       所属组g          其它人o

                    user             group             others


4.1.2 Linux常用命令-文件处理命令-目录处理命令

mkdir (MD)创建目录 -p (递归创建)

cd 改变当前目录 

pwd 查看当前目录

rmdir 删除空目录

touch 创建文件

cp 复制文件    -r 复制目录       -p 保持文件的属性        复制cp命令可以复制过程改名

mv 移动文件目录和改名 和cp的区别:作用目录时不需要用-r  可以移动过去改名也可以在当前位置改名

rm (remove)删除文件 -r 删除目录      加f 确认删除

清屏:clear=Ctrl+L

cat 查看短文件 -n 加行号  类似DOS下的TYPE

tac 查看后面几行

more 长文件查看  q退出 空格:翻页 回车:翻行

less 比more 多了向上翻 , page up:向上翻页 , 上箭头:向上翻行 ,/ 可查找    n:查找状态时下一个

head -n 查看文件的前几行

tail -n 查看文件的后几行  -f 动态显示后几页(监控日志)


4.1.4 Linux常用命令-文件处理命令-链接命令

ln(link)生成链接

-s 软链接:1.类似WIN快捷方式;2.有指向符;3.文件大小很小,所有用户都可以操作该文件

不加参数为硬链接:1.类似 cp -p (不同点:可以同步更新源文件内容;源文件删除,硬链接依然可以查看显示)

                                2.可以通过 ls -i 来看源文件和目标文件是不是存在硬链接关系(一个i节点对应该2个文件)

                                3.硬链接只能对文件生成,且不能跨目录


4.2.1 Linux常用命令-权限管理命令-权限管理命令chmod

chmod (改变文件权限)(root 和所有者才能使用)

1. {u,g,o,a}{+-=}{rwx}文件或者目录

2.数字表示权限: r--4  w--2 x--1

3.-R 递归修改,相当Win中的下级目录继承上级目录的权限


                   文件                            目录                           

r             读取查看(cat相关)     查看目录(ls)        

w           修改(vim)                   创建删除(mkdir,touch,rm)

x            执行                                进入目录  (cd)


目录权限RX通常同时出现


chown(ch won)改变文件目录所有者(root才能使用)

格式:chown 用户 文件名

 

chgrp 改变文件目录所属组


umask 改变查看目录默认创建权限

umask 结果 :0022   777-022=755 (rwx-r-x-r-x)

umask -S 直观查看默认创建权限

改变 umask 023     777-023=754 (这才是最后的创建权限)

umask 022 系统默认 


4.3.1 Linux常用命令-文件搜索命令-文件搜索命令find


find(搜索) 范围 匹配条件

-name 按文件名   *(通配符)   ?(通配符:单个字符)

-iname 不区分大小写

-size  (+-=)大于小于等于N 

-user (group)按所有者和所属组

- amin 访问时间access (cd)

- cmin 改变文件属性 change

- mmin 修改文件内容modify

-type f 文件  d目录 l软链接

- inum I节点


连接参数:

-a (and)同时满足

-o  (or)只满足一个条件


对查找出的内容再做一个操作: -exec 命令 {}  \;        ( 换成-ok: 确认操作)


locate   文件名  (全盘搜索)  相对应的升级locate的索引文件库updatedb

 -i 不区分大小写


which 查找命令===whereis(多了帮助信息位置)


grep 要找的文件内容  文件   (在文件中查找内容)

 -i 不区分大小写

-v ^#  查找所有内容,排除以#号开头的行

--color =auto 自动显示颜色 


4.4 Linux常用命令-帮助命令


man (manual手册)查看命令和配置文件帮助

man [1,5]   password 单词即是命令又是配置文件 (1.查看命令 5.查看配置文件)


man=info


help 内置命令


4.5 Linux常用命令-户管理命令

useradd 用户名(添加用户)

passwd 用户名(为用户设置密码)


who 查看当前登陆用户

tty 本地终端

pts 远程终端


w=who


4.6 Linux常用命令-压缩解压命令

gzip 压缩 gunzip 解压缩            (缺点:只能压缩文件,不保留原文件)


tar 参数 生成的文件 要压缩的目录(对目录打包并压缩)

参数 -z 打包并压缩 -f 指定文件 -v显示压缩信息 -c打包

通常参数 tar -czvf

-x 解包对对应 -c 通常参数tar -xzvf


zip -r(压缩目录)生成的文件 要压缩的目录

unzip 解压缩


bzip2(Gzip的升级) -k (保留原文件或者压缩包)

tar -cjvf  xxx.tar.bz2 要压缩的目录   (-j调用bzip2)

bunzip2 解压缩

tar -xjvf xxx.tar.bz2  解压缩tar.bz2


4.7 Linux常用命令-网络命令

write 用户名 (通信私聊)

ctrl+d 发送


wall 信息 (给所有在线用户发信息)


ping -c 3   (ping 3 次)


mail 用户名-----------         发邮件

mail---------查看邮件:序号查看,D+序号  删除指定邮件


last 登陆详细日志

lastlog 简单日志

lastlog -u 用户ID (指定用户)


traceroute 路由路径


netstat (查看网络信息)

-rn 查看路由信息

-an 查看所有信息

-tlun 只查看tcp/udp 信息  l:监听 t:TCP信息 u:UDP信息 n:显示IP地址和端口号


setup 网络配置

service network resart 网络服务重启(设置生效)


设备挂载

mount 显示挂载清单

ls -l /dev/cdrom 查看当前光驱文件名

mkdir /mnt/cdrom 先创建挂载点

mount 设备文件名 挂载点 (mount /dev/cdrom    /mnt/cdrom)

umount 卸载 挂载点(必须退出当前设置挂载点)


4.8 Linux常用命令-关机重启命令

shotdown (关机重启命令)

-h [时间,now]关机

-r  [时间,now]重启

-c 取消命令


reboot 重启


init [0-6] 切换运行模式

cat /etc/inittab 查看缺省启动模式


查看当前运行级别:runlevel


logout 退出用户


5.1 文本编辑器Vim-Vim常用操作

vim 文件名

默认命令模式---》: 转到编辑模式---》---i转到插入模式---》esc 返回命令模式---》wq 保存退出(q!不保存退出)

命令模式下输入  : set nu      (加行号)

                           : set nonu  (去除行号)

:n    (移动到指定行)

gg :首行

G  :尾行

0   :行首

$   :行尾


删除命令:

x : 删除单个字符

nx:连续删除N个字符

dd:删除光标所在行

ndd:删除N行

D:删除光标所在字符至行尾

:n1,n2d 删除指定行


复制剪切命令:

yy:复制

nyy:多行复制

p:粘贴到行下

P:粘贴到行上

剪切:dd+pp


编辑状态改变:

r 替换一个字符

R 替换模式

u 撤销


搜索替换命令:

/要搜索的字符串

n :下一个

/set ic   不区分大小写  /set noic  取消不区分大小写

:%s/源/目的/g   不提示全文替换

:n,ns/源/目的/c  提示替换某行到某行


保存退出:

:w  (保存)

:w /文件名 (另存为)


:r 文件名 (导入文件内容)

:! 命令 (临时切换出vim使用命令)

上面2个命令一起使用        :r  !date    (导入当前时间)


快捷键定义:

:map (ctrl+v+ctrl+快捷字母)  要定义的操作


连续注释:

:n1,n2s/^/#/g  (注释)

:n1,n2s/^#//g   (去注释)

 \    转义符 比如 \/   代表的是字符/


:ab mymail [email protected]  (定义快捷AB)


vim自定义配置文件路径: /root/.vimrc     /home/zouzou/.vimrc


6.1 软件包管理-简介

软件包分类:

1.源码包  (C语言脚本)

分支:脚本安装包(类似windows的安装界面)

源码包优点:

(1)开源,可修改源代码;

(2)可自由选择安装功能;

(3)编译安装,执行效率更高;

(4)卸载方便

源码包缺点:安装步骤多,安装时间长,安装出错解决复杂;


2.二进制包(0101机器语言包)

 类似windows 是 exe包,linux redhat系统 的是RPM包(系统默认包)

RPM包优点:安装简单,安装速度快

RPM包缺点:看不到源码,安装选项少,依赖性(A包--B包--C包)


6.2.1 软件包管理-rpm命令管理-包命名与依赖性

1.包全名和包名

包全名:没有安装的软件包,注意路径(放在系统能识别的文件夹里,比如package),一般是软件安装升级

包名:操作已经安装好的软件包时,使用包名,这些包放在/var/lib/rpm 下 ,一般是软件的卸载


2.rpm安装

rpm -ivh 包全名

-i 安装 -v 显示详细信息 -h 显示进度


3.rpm升级

rpm -Uvh 包全名

-U 升级(upgrade)


4.rpm卸载

rpm -e 包名

-e 卸载(erase)


6.2.3 软件包管理-rpm命令管理-查询


rpm -q 包名

 -q  (query查询)

 -a  (all查询所有已安装过的包)

 -i   (information已安装包的信息)


 rpm -qip 包全名

-p (package查询未安装包的信息)


rpm -ql 包名(查询包安装位置)

-l  (list列表)

-p  未安装包装备安装的位置


查询系统文件名是属于哪个安装包:

rpm -qf 系统文件名

-f (文件file)


查询包依赖性

rpm -qR 包名

-R (依赖性requires)


6.2.4 软件包管理-rpm命令管理-校验和文件提取

1.RPM包校验

rpm -V 包名

-V (依赖verify)


校验不通过含意

linux(学习笔记)_第1张图片

linux(学习笔记)_第2张图片



2.RPM包中文件提取

rpm2cpio  将rpm包转换为cpio格式

rpm   -qf  /bin/ls     查询属于哪个包

mv /bin/ls /test/      制造假像

rpm2cpio /mnt/cd/coreutils-8.4-19.el6.i686.rpm | cpio -idv ./bin/ls     进行修复

如不行还可以 cp /root/bin/ls /bin/


6.3.1 软件包管理-RPM包管理-yum在线管理-IP地址配置和网络yum源

网络配置文件中默认网卡是不启动的:

vim /etc/sysconfig/network-scripts/ifcfg-etho0    中  ONBOOT=yes


yum源配置文件:


linux(学习笔记)_第3张图片


6.3.2 RPM包管理-yum在线管理-yum命令

查询:

yum list 查询可用安装包

yum search 包的名称


安装:

yum -y install 包名

-y 自动回答YES


升级:

yum -y update 包名


卸载:

yum -y remove 包名



软件组查询:

yum grouplist |more

|more 显示的太多可以用more暂停便于观察


软件组安装:

yum groupinstall “查询到的软件组”


软件组卸载:

yum groupremove


6.3.3 RPM包管理-yum在线管理-光盘yum源

yum 文件路径  /etc/yum.repos.d/

步骤:

挂载光盘

1.让网络yum源失效,配置文件改成.bak

2.改光盘yum配置文件

baseurl

enable=1


6.4.1 软件包管理-源码包管理-源码包与RPM包的区别

源码包安装位置人为指定


linux(学习笔记)_第4张图片


源码包建议安装位置:/usr/local/软件名     软件启动必须用绝对路径


httpd 服务默认位置 /etc/rc.d/init.d/httpd 

绝对位置启动服务 /etc/rc.d/init.d/httpd start(服务启动方式 service httpd start)

httpd 默认网站根目录 /var/www/html


6.4.2 软件包管理-源码包管理-源码包安装过程

准备工作:

源码下载上传解压

确认gcc 安装是否成功 rpm -q gcc

源代码位置:/usr/local/src

软件安装位置:/usr/local


1.进入到源码解压位置 (查看安装说明vim INSTALL)

2.配置文件 ./configure --prefix=/usr/local/apache2

3.make  (如果报错,清除make clear)

4.make install

5.启动服务 /usr/local/apache2/bin/apachectl start



6.5 软件包管理-脚本安装包


类似windows安装方式(主要是源码包,驱动程序安装)

webmin(apache图形管理工具 ):

http://sourceforge.net/projects/webadmin/files/webmin/

安装命令 ./setup.sh




7.2 用户和用户组管理-用户管理相关文件




用户信息配置文件/etc/passwd

1.用户名称

2.密码标志

3.UID用户ID(改UID变超级用户)   1-499 伪用户     500-65535 普通用户

4.初始组(初始组+附加组)

5.用户说明(备注)

6.家目录

7.用户的shell:命令解释器  (/bin/bash默认  /sbin/nologin禁用用户)


7.1.2 用户和用户组管理-用户配置文件-影子文件

影子文件/etc/shadow

1.用户名称

2.密码位 (* 和!禁用密码)

3.最后一次修改密码时间 :1970是起始时间,后面+天

4.限定2次密码修改间隔

5.密码有效时间

6.密码到期警告时间

7.密码到期宽限时间

8.帐号失效时间 :比67权优先

9.保留


把时间戳换成日期

date -d "1970-01-01 16066 days"


把日期换成时间戳

公式


7.1.3 用户和用户组管理-用户配置文件-组信息文件

/etc/group   

1.组名

2.组密码位

3.GID

4.组中附加用户


/etc/gshadow

1.组名

2.组密码

3.组管理员用户

4.组中附加用户


7.2 用户和用户组管理-用户管理相关文件

家目录

普通用户:/home/user       提示符$   改用户uid 为0 但家目录不会变

超级用户:/root                    提示符#


用户邮箱

/var/spool/mail/用户名


用户模板目录

/etc/skel


7.3.1 用户和用户组管理-用户管理命令-useradd

useradd

参数

-u UID

-d 指定家目录位置

-c 指定用户说明,如有空格请加双引号

-g 指定初始组

-G 指定附加组,多组用,分隔

-s  指定用户登陆shell 默认:/bin/bash


  useradd 默认值




linux(学习笔记)_第5张图片


linux(学习笔记)_第6张图片









7.3.3 用户和用户组管理-用户管理命令-usermod和chage

usermod(和useradd参数同)

-L   锁定用户

-U  解锁用户


chage 用户    (修改用户密码状态)

chage -l 用户 :查看用户密码信息

-d 0   密码最后一次修改时间(被加0后说明用户没有修改过密码,实现的功能是用户一登陆就让其修改密码)



7.3.4 用户和用户组管理-用户管理命令-userdel和su


userdel -r 用户  删除用户并删除用户的家目录


id 用户   查看用户ID信息


su - 用户名(切换用户)

su - root -c "useradd user1" (临时切换到root 执行只有超级用户才能执行的命令)


7.4 用户和用户组管理-用户组管理命令

groupadd 用户组

groupmod -n 新组 老组  (修改组名)

gpasswd -a ( -d ) zouzou root   从root组加入(删除)zouzou用户



8.1.1 权限管理-ACL权限-简介与开启

df -h 查看分区信息

dumpe2fs -h /dev/sda1  查看分区是否支持ACL

手动挂载支持ACL,vim /etc/fstab     (defaults,acl) ,然后重启系统 或者手动重新挂载根分区,mount -o remount /


8.1.2 权限管理-ACL权限-查看与设定

设定ACL权限:

setfacl -m u:st:rx /project     设置st用户对project有rx的权限


查看ACL权限:

getfacl  文件或目录


8.1.3 权限管理-ACL权限-最大有效权限与删除

最大有效权限:通过修改mask值后期控制group组(所属组+附加组)和mask值相与得到另外的权限

setfacl -m m:rx 文件或目录 


删除acl 权限:

setfacl -b 文件或目录  (删除全部ACL权限)

setfacl -x u[g]:用户或组   文件或目录   (有选择的删除权限)


8.1.4 权限管理-ACL权限-默认与递归ACL权限

递归: -R  对目录有效  (对现有文件执行递归权限,对新建文件或目录无效)


默认递归继承:      d:     -R    (对之前文件或目录无效 ,如果想对以前新建的文件要设置权限还需执行上面的权限)


8.2.1 权限管理-文件特殊权限-SetUID


功能理解:

1.可执行程序才能设置SUID权限(只对文件)

2.命令执行者(普通用户)对该程序有X权限

3.普通用户在执行拥有SUID的程序的时候,暂时(执行完变成普通用户)变成所有者用户的权限

4.(不确定)所有者U也应该对该文件有X权限

 

                            x(超级执行)

例: passwd(rwsr-xr-x)  --------》可以对/etc/shadow修改

                cat(rwxr-xr-x)  --------》不能对/etc/shadow查看


设置SETUID权限                          取消SETUID权限

chmod 4755 文件名                    chmod 755 文件名

chmod u+s  文件名                     chmod u-s  文件名


     4755---setuid

     2755---setgid

     1755---sticky bit


8.2.2 权限管理-文件特殊权限-SetGID

SETGID权限对文件的处理和SetUid权限相似,----》变成当前文件所属组的权限


                                                                                                            (普通用户获得所属组r权限)

例:locate(rwx--s--x)-----》/var/lib/mlocate/mlocate.mdb (rw-r-----)

chomod g+s (或者chmod 2755)  


可以针对目录(用的少)



8.2.3 权限管理-文件特殊权限-Sticky BIT

翻议:黏着位(简称sbit)

 作用:只能针对目录,对目录设置t权限后,虽然普通用户有777权限,但只有所有者才能删除该目录下的文件。

chmod o+t (或者chmod 1777)


8.3 权限管理-chattr权限




文件隐藏属性


chattr +i  文件   (+I属性  连ROOT用户都不能修改,删除,改名;锁住文件)

              目录    (+I属性,/test/abc.txt 只能查看修改abc.txt  不能删除原有文件,不能新建文件)  

主要作用:保护文件,防止误操作


chattr +a  文件     (比I属性多了个追加)

                目录    (比I属性多了追加文件和修改文件)


取消属性-i 和-a


lsattr  -a -d   查看所有文件隐藏属性,以-d方式



8.4 权限管理-sudo权限



sudo作用:root用户分配命令给普通用户(切记不要授权vim使用权限)


visudo 命令 (修改的是/etc/sudoers文件)


st                                    ALL=/usr/sbin/useradd

%(组)

要授权的用户            被管理计算机的IP(目的IP)=命令绝对路径


sudo -l   普通用户查看当前用户可以执行哪些sudo命令

sudo 命令绝对路径(执行方法)


9.1 文件系统管理-回顾分区和文件系统

9.2.1 文件系统管理-文件系统常用命令-df、du、fsck、dumpe2fs

df -h   文件系统查看   (统计文件+系统资源)

du -sh  统计目录大小  -s:只统计主目录,不统计子目录(只统计文件占用)


fsck  设备文件名  :修复文件系统(类似chkdsk)   (有可能修复系统,尽量不要修系统上当)

-a  或 -y 都是自动修复


dumpe2fs   设备文件名  ( 显示磁盘状态 ) 


9.2.2 文件系统管理-文件系统常用命令-挂载命令


mount   查看设备的挂载点

mount -a  自动挂载  (按照挂载文件/etc/fstab  自动载一下)


手动挂载:mount   [-t 文件系统]  [-L  卷标名]  [-o特殊选项]  设备文件名  挂载点

            -t  :  ext3   ext4   iso9660 (光盘)

linux(学习笔记)_第7张图片



9.2.3 文件系统管理-文件系统常用命令-挂载光盘与U盘


U盘挂载:

fdisk -l 查看U盘分的设备文件名
 
monut -t vfat(fat32文件,如果是fat16这里用fat) 设备文件名  挂载点

卸载 umount 设备文件名或者挂载点


9.2.4 文件系统管理-文件系统常用命令-支持NTFS文件系统



工具下载地址: http://www.tuxera.com/community/ntfs-3g-download/

ntfs-3g_ntfsprogs-2014.2.15.tgz


安装过程: ./configure--》make--》makeinstall


挂载NTFS的U盘:必须在虚拟机中挂
mount -t ntfs-3g /dev/sdb1  /mnt/usb


9.3.1 文件系统管理-fdisk分区-分区过程


fdisk sdb  (硬盘)



linux(学习笔记)_第8张图片


m帮助 l查看分区类型  n新建  p显示分区列表  d删除分区   w保存  q退出



分完区一般要启机器,可以不启,用重新读取分区信息partprobe

格式化命令:   mkfs -t ext4 分区名---》挂载


fdisk:看分区             mount和df看挂载



9.3.2 文件系统管理-fdisk分区-自动挂载与fstab文件修复


查看分区UUID:dumpe2fs 分区名

1.挂载文件/etc/fstab

配置文件格式 :/dev/sdb1  /disk1    ext4   defaults   1 2


linux(学习笔记)_第9张图片

检测是否挂载成功: mount -a   (用/etc/fstab下的配置挂载测试)


2.修复/etc/fstab


配置文件写错了。重启时

密码root进到系统后,根下的配置文件为不可写,解决:mount -o remount,rw /  (作用:重新挂根目录为可写)

9.4 文件系统管理-分配swap分区



缓存cached:加速读

缓冲buffers: 加速写


查看swap分区  free -m  按m显示


分swap分区思路:fdisk ---》n建逻辑分区 ---》t改ID为82---》w保存退出---》如果退出分区在使用可以用partprobe重新载入分区---》格式化mkswap /dev/sdb6---》加入swapon(off) /dev/sdb6 这个是手动, 要开机自动加载swap请改启动配置





10.1 Shell基础-概述



1.概念

硬件---》内核---》shell命令解释器---》应该程序  (此流程可逆)


shell是解释执行的编程语言,现编现执行,还可以直接调用linux命令


2.分类

A.早期的sh  主流bash兼容早期的sh

B.C家庭的csh和tcsh


3.系统中默认可用sh

查看/etc/shells

shell切换   默认bash ---sh---csh   (exit退出当前shell)


10.2 Shell基础-脚本执行方式 



1.输出命令

echo
-e  支持右斜杠字符转换(转义)

linux(学习笔记)_第10张图片


例:echo "ab\bc"  输出ac


2.hello word

#!/bin/bash 
#注释 上面的是shell编程的开始符

echo "hello word"

shell执行方法一(主要):1.先赋执行权限,chmod 755
                                           2. shell的绝对路径和相对路径(./)来执行

方法二:bash 脚本  (不需要赋权限) 

dos2unix  Dos转成linux (格式转换) 这条命令需yum安装
cat -A  显示所有字符,包括换行符



10.3.1 Shell基础-Bash基本功能-历史命令与补全







1.历史命令   history
 -c 清空所有
-w 保存历史命令   /用户家目录/.bash_history

历史命令保存条数:/etc/profile 下 HISTSIZE=10000





10.3.2 Shell基础-Bash基本功能-别名与快捷键

别名:      alias  别名=‘原命令’

让别名永久生效:vim /root/.bashrc

删除别名: unalias  别名

命令执行顺序:命令绝对(相对)路径---》别名---》bash内部命令---》环境变量定义的路径



  linux(学习笔记)_第11张图片



10.3.3 Shell基础-Bash基本功能-输入输出重定向





1.标准输入输出
键盘       0   标准输入
显示器   1   标准输出
显示器   2    标准错误输出


2.输出重定向

标准输出重定向:>覆盖    >>追加
标准错误输出重定向:2>覆盖    2>>追加
正确错误输出都保存:命令  &>>   文件
输出结果丢垃圾箱:命令 &>>/dev/null
正确错误分别保存:命令 >> 文件1 2>>文件2

wc < /etc/fstab  统计文件的行数,字数


10.3.4 Shell基础-Bash基本功能-多命令顺序执行与管道符

1.多命令执行

;             各命令互相独立, date ; dd if=/dev/zero of=/root/testfile bs=1k count=100000 ; date (生成100M文件需要多少时间)

&&         逻辑与  ls && echo yes   第一条命令正确执行了,才执行第二条命令

||            逻辑或  lssss &&  echo no  第一条命令不正确执行,才执行第二条命令


ls  && echo yes || echo no   判断命令是否正确执行


2.管道符

ls /etc/ -a  |  more

命令1的正确输出作为命令2的操作对象

netstat -an | grep "ESTABLISHED"  查看哪些用户是连接状态


10.3.5 Shell基础-Bash基本功能-通配符和其他特殊符号






[^0-9] 非数字的任意一个字符


特殊符号

linux(学习笔记)_第12张图片




10.4.1 Shell基础-Bash变量-用户自定义变量




变量不能以数字开头

变量值默认是字符串

环境变量建议大写(区分小写命令)

变量分类:    用户自定义变量------》环境变量------》预定义议量-------》位置参数变量

                        2端都可以定义              (只能改值,可追加变量)                                 ( 只能改值)



变量叠加: aa="$aa"123  或  aa=${aa}123


查看变量set 
删除变量 unset  变量名 (前面没有$)


10.4.2 Shell基础-Bash变量-环境变量




自定义变量(局部变量)只在当前shell中生效,而环境变量在所有变量中生效。

父变量    子变量
bash         bash

原变量是bash, 再按bash变子变量,exit又变成bash                可以通过pstree查看父子关系

定义环境变量 : export 变量名=变量值 

查询环境变量:env

调用、删除环境变量方法和自定义变量同

系统查找路径: echo $PATH
在$PATH叠加/test 方法:  PATH="$PATH":/test

PS1 提示符

linux(学习笔记)_第13张图片



10.4.3 Shell基础-Bash变量-位置参数变量


linux(学习笔记)_第14张图片



$n  起到传递数据到$n的作用    命令本身后面跟2个位置达到传递的作用

11 22 33 44 55
$# -----5
$*  -----原数   当一个整体
$@-----原数   把每个参数区分对待



10.4.4 Shell基础-Bash变量-预定义变量

linux(学习笔记)_第15张图片


$?  返回上个命令执行正确或错误的结果  0 为正确  其它为不正确


接收键盘输入到变量
 
read  参数  变量

-p 提示信息
-t  等待几秒
-n 输入字符个数
-s 隐藏输入









你可能感兴趣的:(linux(学习笔记))