服务器问题

Linux小白入门基础教程

  1、Linux 安装

  准备工作

  Vmware

  RHEL 5.5

  Vmware基本配置

  Linux安装及一般配置

  磁盘的分区与目录挂载

  硬盘零磁道位置的分区表记录为64B,因此一共可以创建4个主分区

  实例:对30G硬盘,1G内存进行分区

  / 10G 强制为主分区

  /home 5G

  /usr 5G强制为主分区

  /boot 500M

  /var 8G

  /swap 使用全部可用空间 交换空间的大小一般是物理内存的两倍

  最后有一个100M多的空闲空间不需要理睬

  2、Linux介绍

  Unix

  GNU – GNU is Not Unix

  GCC

  GPL – General Public License,通用公共许可证

  Free software – 自由软件

  Linux

  Linux主要版本

  Ubuntu – 用户桌面

  RedHat – 使用最广,性能稳定,商业版,服务器

  CentOS – RedHat的克隆版,免费

  Linux的优点

  性能稳定

  较高的安全性和Bug的快速修复

  支持多用户多任务

  完善的用户和群组策略

  资源耗费低

  适合嵌入式应用

  免费或费用低廉

  Linux的缺点

  专业软件支持不够

  厂商支持度不够

  标准化不足

  使用不方便

  3、Linux 桌面系统

  图形界面登录

  常用桌面系统 – GNOME、KDE(模仿windows桌面)

  GNOME桌面系统演示

  Nautilus使用 – 文件资源管理器

  KDE桌面系统演示

  Konqueror的使用

  远程登录 - 一般将Linux作为服务器用

  SSH – Secure Shell, 安全外壳协议

  应用层和传输层上的协议

  支持多种系统

  加密且压缩传输

  SecureCRT – 收费 – 破解,不安全

  选中文本 -> 右击

  会话选项 -> 外观

  脚本 -> 开始录制脚本

  右击 -> 克隆会话

  右击 -> 锁定会话

  Xshell – 免费 – 推荐使用

  外观

  中击 - 复制

  文件属性 -> 终端 -> 编码 - UTF-8,可支持中文

  4、Linux 文件和目录管理

  文件系统架构

  Linux文件系统具有层级性

  1)文件或者目录起始于根目录“/”成为树状结构

  2)最顶层由/开始

  文件和目录名区分大小写

  区分大小写,而windows不区分大小写

  路径通过“/”分隔开

  “..”表示上层目录

  “.”表示当前目录

  隐藏目录或者文件名以“.”开始

  ls –l

  ls –la

  重要目录说明

  home目录

  1)root用户的home目录是/root

  2)普通用户的目录是/home/user

  3)su – xiang

  bin目录

  1)常用的可执行文件

  2)/bin、/usr/bin、/sbin等

  3)/sbin 存放的是只有root用户权限执行的指令

  外部设备mountpoint

  1)/media、/mnt

  2)当检测到设备接入会自动产生挂载点

  /etc,系统的配置文件 - 只有root用户可以修改

  /tmp,临时文件

  /boot,系统内核和开机必要文件

  /dev,系统所有的设备文件

  /usr

  1)unix system resource

  2)保存程序的相关文件

  /lost+found

  1)每个分区都会自动创建

  /var、/srv

  - /var存放数据库文件,程序执行过程中所使用的数据

  /proc 虚拟文件系统,数据在内存中,如:系统内核、程序运行进程信息、网络状态

  /lib、/usr/lib、/usr/local/lib - 存放一些可复用的函数或库

  目录以及文件的命名规则

  不超过255个字符

  区分大小写

  1)file、File、fILE表示不同的文件

  除了/外,所有的字符都合法

  1)避免文件名首字符使用+-.等

  2)避免使用空格、制表符和@#$%[]()等

  最好使用有意义的名称来命名

  ls指令操作

  ls,ls[options][file_or_dirs]

  1)ls,列出当前目录内容

  2)ls / ,显示根目录的内容

  3)ls –a,显示隐藏文件

  4)ls –l,显示详细内容

  5)ls –ld,显示目录本身的属性

  ls –l 相当于 ll

  ls –a

  ls –la

  ls –ld

  ls -lh

  文件和目录操作

  相对路径和绝对路径

  1)绝对路径必须是/开头

  2)相对路径一般比较短

  切换目录

  1)cd、pwd

  2)cd ..,cd ~,cd –

  3)su – 表示切换到root

  复制文件和目录,cp

  1)cp [options] file destination –p的参数不改变时间戳

  2)cp [options] file1 file2 destination

  3)cp -r dir1 dir2,复制目录

  移动和重命名文件和目录,mv

  1)移动操作类似于cp

  删除文件和目录,rm

  1)rm [options] filenames

  2)-i,交互式

  3)-r,递归删除

  4)-f,force

  新建文件和目录,touch,mkdir

  1)cd、pwd

  2)cd ..,cd ~,cd -

  确定文件的格式

  1)打开文件前确定格式使用不用的程序打开

  2)file [options] filenames

  cat – 打开一些小文件

  cat [options] filenames

  cat –b test.txt 显示带行号的文件内容

  分页查看文本文件,less – 打开一些内容比较多的文本文件(大文件)

  1)less [options] [filename]

  2)使用pgUp、pgDown翻页

  3)g 到最顶端 G 到最低端

  4)/search 进行搜索 n N

  5)q

  5、Linux用户、群组和权限

  Linux安全性模型

  Linux使用User和Group控制使用者对文件的存取权限

  用户使用账号和口令登录Linux

  每个文件都有owner,并且owner属于某个Group

  每个程序都有owner和Group

  用户概述

  每个用户都有一个唯一的User ID

  User的信息存储在/etc/passwd中

  1)存储用户名和home目录等信息

  如:less /etc/passwd

  xiang:x:500:500:xiang.yu:/home/xiang:/bin/bash

  x意味着要有密码才可以登录

  第一个500表示UID

  第二个500表示GID

  2)/etc/shadow – 存储当前用户的密码

  如:less /etc/shadow

  root:$1$H7TmDsKo$O8fYNYKC7YOpLZEcPCg4u0:16890:0:99999:7:::

  采用MD5的加密算法 – 单向的哈希算法

  每个User都有一个home目录

  User未经授权将禁止读写或执行其他User的文件

  root用户解读

  1)超级管理员账号,具有至高无上的权限

  2)一般不要随便用root登录并操作系统

  用户群组概述

  每个User都属于一个Group,具有唯一的标识符gid

  Group信息存储于/etc/group中

  1)gid、成员等

  2)/etc/gshadow 保存密码

  系统会为每个User关联一个和User同名的Group

  1)每个User至少存在于自己同名的Group中

  2)User也可以加入其他的Group

  在同一个Group中的成员可以共享其他成员的文件

  权限的种类

  只读权限,用r表示(read)

  可以读取文件或者列出目录的内容(ls)

  可写权限,用w表示(write)

  可以写、删除文件或者目录

  可执行权限,用x表示(execute)

  1)可以执行可执行文件

  2)可以进入目录并使用cd切换进入目录

  没有任何权限,用-表示

  注:当给某个用户授予读权限时,不要忘记授予执行权限

  Linux文件和目录权限解读

  d rwx-w----

  1)目录

  2)owner权限为可读写可执行

  3)group权限为可写

  4)others没有任何权限

  - rwxrwxr-x

  1)文件

  2)owner权限为可读写可执行

  3)group权限为可读写可执行

  4)others权限为可读可执行

  Linux权限验证流程

  # whoami 显示当前用户

  如何设置Linux文件和目录的权限

  a) 字符表示法

  1)chmod [-R] mode file

  2)模式类别

  chmod a= perm 去除所有权限,不影响子目录

  chmod –R a= perm 影响子目录

  b) 数字表示法

  1)使用一组三位数字来表示

  2)第一组代表owner的权限

  3)第二组代表group的权限

  4)第三组代表others的权限

  c) 如何使用Nautilus或Konqueror设置权限

  6、Linux 用户和群组进阶学习

  用户的主要群组和次要群组

  1)主要群组

  每个文件必须有一个组所有者,因此必须有一个与每个用户相关的默认组,这个默认组成为新建文件的组所有者,被称作用户的主要群组。用户的主要群组在passwd文件中的第四个字段中定义。

  2)次要群组

  除了主要群组,用户也可以根据需要再隶属于其他群组,这些组被称为次要群组,在group文件中的第四个字段中定义

  # groups 查看当前用户的所有群组,第一个是主要群组

  用户的管理

  1)useradd [-u UID] [-g 初始群组] [-G 次要群组] [-mM] [-c 说明] [-d 家目录] [-s shell]

  -u:制定一个特殊的UID给该账号

  -g:指定一个主要群组的名称,会修改passwd文件

  -G:指定次要群组的名称,会修改group文件

  -M:强制不要创建用户家目录,系统账号默认

  -m:强制建立用户家目录,一般账号默认

  -c:passwd文件的第五个字段的说明文字

  -d:指定用户的家目录位置,不要使用默认的值

  -s:指定默认的shell,如果没有指定则默认是/bin/bash

  2)usermod [-cdegGlsuLU] username

  -c:该账号的说明文字

  -d:账号的家目录

  -e:指定用户帐号禁用的日期,格式YY-MM-DD

  -G:修改次要群组的名称,会修改group文件

  -g:修改主要群组名称

  -a:与-G合用,可增加次要群组

  -l:将当前账号的名称重命名为指定的名称

  -u:修改UID

  -L:暂时将用户的密码冻结无法登录

  -U:解冻账号,其实是删除shadow的!字符

  实例:给用户xiang增加次要群组user1

  # useradd user1

  # usermod –aG user1 xiang

  3)userdel [-r] username

  -r:连同用户的家目录一起删除

  4)passwd,修改密码

  用户信息的检查

  1)finger [-s] username:查阅用户相关的信息

  -s:仅仅列出用户的账号、全名、登录时间等

  2)id,可以查阅某人或者自己相关的UID、GID信息

  3)whoami

  4)who&w

  5)users

  6)groups

  用户群组的管理

  1)groupadd [-g gid] [-r] 组名

  -g:后面接特定的GID,用来指定GID,从500开始

  -r:建立系统群组,小于500

  2)groupmod [-g gid] [-n group_name] 群组名

  -g:修改既有的GID数字

  -n:修改既有的组名

  3)groupdel [groupname]

  删除特定的群组

  默认权限的控制

  1)内核级别,文件的默认权限是666

  2)内核级别,目录的默认权限是777

  3)通过umask来阻止一些权限,从而产生最终的权限

  4)非管理账号的umask为0002

  5)root的umask为0022

  6)umask作用原理

  在root用户下,新建文件后默认权限是644

  在root用户下,新建目录后默认权限是755

  # umask 002 //可以进行修改

  7)使用减法计算是错误的,应该理解为遮盖

  7、文件的压缩与打包

  7-1关于文件压缩和打包

  1)文件压缩

  通过压缩算法将文件的体积缩小,同时会将多个文件合并至一起方便交换、传输。

  2)文件打包

  将多个文件或者整个目录合并成一个文件,用来进行文件的备份、分发、传输等。

  3)Linux支持的压缩格式

  1)*.Z ,compress程序压缩文件

  2)*.gz ,gzip程序压缩文件

  3)*.bz2,bzip2程序压缩文件

  4)*.tar,tar程序打包文件,并未压缩

  5)*.tar.gz,tar打包的档案,使用gzip压缩

  6)*.tar.bz2,tar打包的文件,使用bzip2压缩

  Linux文件压缩指令

  1)gzip [-cdtv#] 文件名称

  1)扩展名为*.gz

  2)-c:将压缩的数据输出到屏幕上

  3)-d:解压缩的参数

  4)-t:进行文件的一致性校验看是否损坏

  5)-v:显示和原文件相比的压缩比

  6)-#:压缩等级,-1最快,-9最慢,默认是-6

  实例:

  gzip –c list >list.gz 进行重定向,会保留源文件,默认使用gzip压缩时会删除源文件

  gzip –v1 list

  2)bzip2 [-cdkzv#] 文件名称

  1)扩展名为*.bz2

  2)-c:将压缩的数据输出到屏幕上

  3)-d:解压缩的参数,该参数代表执行解压缩操作

  4)-k:保留原文件并不删除原始文件

  5)-z:压缩的参数,该参数代表是执行压缩操作

  6)-v:显示和原文件对比的压缩比

  7)-#:压缩等级,-1最快,-9最慢,默认是-6

  Linux文件打包指令

  1)tar [-jcv] –f finaname.tar.bz2 待压缩的档案或者目录名

  将某个文件或者目录打包并使用bzip2压缩成一个文件

  2)tar [-jxv] –f filename.tar.bz2 –C 解压缩的目录

  将压缩文件解压缩至特定的目录

  3)参数解释

  1)-c:建立打包档案

  2)-t:查看打包的文件都有哪些文件名

  3)-x:解压缩或者解打包文件,和-C搭配使用解压缩至特定目录

  4)-j:通过bz2支持进行压缩或者解压缩

  5)-z:使用gzip进行压缩或者解压缩

  6)-v:将正在处理的文件名显示出来

  7)-f:紧跟要被处理的文件名,建议单独写一个选项

  实例:

  # tar –jcvf test.tar.bz2 test

  # tar –jxvf test.tar.bz2 –C dir

  # tar –zcvf test.tar.gz test

  # tar –zxvf test.tar.gz –C dir

  8、Linux 软件的安装

  8-1 如何通过源码安装

  什么是源码包:

  附带有程序的源代码、configure文件、说明文档的安装包

  一般先以tar打包,再以压缩软件压缩,如tar.gz或 tar.bz2

  需要自定义参数进行编译安装

  使用wget进行下载,支持多线程,断点

  如:wget http://~

  configure – 实际上是shell脚本

  自定义参数

  配置安装环境,必要性检查

  生成makefile文件

  make&install

  编译生成二进制文件

  执行安装

  使用源码包进行安装的过程

  获取源码安装包,如去官网下载

  解压缩,阅读install或readme文件,获取安装说明

  根据安装说明安装好该软件依赖的其他软件

  建立makefile文件(通过configure检测安装环境,定义必要的参数)

  根据生成的makefile文件,执行make指令进行编译操作

  根据makefile中要install的内容,将上步骤中编译好的二进制文件安装到系统中

  常用指令:

  1)./configure –help,查看参数信息,建立makefile文件

  2)make clean,读取makefile中关于clean的内容执行clean操作(非必需)

  3)make,根据makefile中的设置执行编译操作

  4)make install,将编译的二进制文件安装到系统中

  实例:memcached和libevent两个有依赖的包进行演示

  # tar -zxvf *.tar.gz

  # ./configure --prefix=/root/local/libevent //来指定安装目录,默认是/usr/local下

  # make

  # make install

  # tar –zxvf *.tar.gz

  # ./configure --prefix=/root/local/memcached --with-libevent=/root/local/libevent //依赖包

  # make

  # make install

  指定安装目录的好处是如果要安装出错或重装,直接删除

  8-2 RPM、YUM简介

  RPM

  RedHat Package Manager的简称,RedHat包管理器

  以数据库的记录方式将软件安装到Linux

  软件包事先编译好并且打包成RPM机制的文件,类似于Windows的安装程序

  软件信息记录在本地数据库,方便查询、升级、卸载

  不允许自定义参数和设置,限制较多

  SRPM

  Source RPM,附带源代码的RPM 包,扩展名以src.rpm命名

  不可以直接安装,需要通过编译后再安装

  可以修改参数文件自定义配置项

  和RPM比较类似

  YUM

  Yellow dog Update, Modified的简称,基于RPM包管理

  能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无需繁琐地一次次下载、安装

  使用简单、方便

  8-3 RPM的使用

  默认安装路径

  1)/etc : 配置文件所在目录,如/etc/my.cnf、/etc/crontab等

  2)/usr/bin : 一些可执行文件

  3)/usr/lib : 程序使用的函数库(连接库),.so像windows中的C:\Windows\System32

  4)/usr/share/doc : 软件使用手册与说明

  5)/usr/share/man : man page文件

  RPM安装

  rpm [-ivh] rpm1 rpm2 : 安装rpm1/rpm2并显示进度和详情

  --nodeps : 忽略依赖问题执意安装

  --replacefiles : 对于已经安装过的某个文件覆盖安装

  --replacepkgs : 已经安装过的软件重新安装

  --force : --replacefiles 和 –replacepkgs

  --test : 测试软件能否被正确安装,rpm –ivh *** --test

  --justdb : RPM数据库损坏或者产生错误时更新数据库信息

  --nosignature : 忽略数字签名的检查

  --prefix : 改变软件的默认安装路径

  --noscripts : 禁止RPM执行一些后置指令,如一些初始化的指令

  实例:

  http://www.rpmfind.net/中,使用wget

  在安装光盘中,使用cp

  # rpm -ivh python-*.rpm

  RPM升级

  1)–Uvh : 如果软件安装过则更新,若没安装过直接安装

  2)-Fvh : 只有该软件安装过才会升级,否则不予升级

  实例:

  # rpm –qa python 查看当前软件的版本

  # rpm –Uvh python-*.rpm 升级

  RPM查询

  1)-q : 只查询软件是否安装

  2)-qa : 列出本机安装的所有的软件名称,可以通过 | grep来过滤

  3)-qi : 列出软件的详细信息,如开发商、版本、说明等

  4)-ql : 列出该软件所有的文件、所在目录完整名(list)

  5)-qc : 列出该软件所有的配置文件

  6)-qR : 列出该软件依赖的其他软件的文件

  7)-qf : 查询某个文件属于哪个软件所有

  8)--noscripts:禁止RPM执行一些后置指令,如一些初始化的指令

  实例:

  # rpm –qa python

  RPM验证

  1)-V : 查询软件所有被修改过的文件

  2)-Va : 不接文件名,列出本机所有可能被修改过的程序文件

  3)-Vp : 接文件名,列出该软件中可能被修改的文件

  RPM卸载与数据库重建

  注意要从上往下依次卸载,先卸载不被任何其他软件依赖的软件

  -e : 卸载软件

  --rebuilddb 重建RPM数据库

  8-4 YUM的使用

  YUM的安装:执行下面脚本

  #!/bin/bash

  rpm -qa|grep yum|xargs rpm -e --nodeps

  wget http://mirrors.163.com/centos/5/os/i386/CentOS/yum-3.2.22-40.el5.centos.noarch.rpm

  wget http://mirrors.163.com/centos/5/os/i386/CentOS/yum-fastestmirror-1.1.16-21.el5.centos.noarch.rpm

  wget http://mirrors.163.com/centos/5/os/i386/CentOS/yum-metadata-parser-1.1.2-4.el5.i386.rpm

  rpm -ivh yum-*

  cd /etc/yum.repos.d/

  mv rhel-debuginfo.repo rhel-debuginfo.repo.bakup

  mv rhel-source.repo rhel-source.repo.bakup

  wget http://www.linuxidc.com/files/2011/05/06/CentOS-Base.repo

  yum makecache

  查询,yum [list|info|search|provides|whatprovides] 参数

  search : 查询某个程序的名称或者是描述 ( yum search mysql)

  list : 列出目前yum所管理的所有软件以及版本 (rpm -qa)

  info : 类似list,查询软件的功能、版本说明 (rpm -qai)

  provides : 通过文件查询所属软件 (rpm -qf)

  实例:

  yum list >list 新创建一个,覆盖

  yum list >>list 将内容追加到list后面,如果没有则新建

  安装、升级,yum [install | update] 程序名称

  install : 安装软件

  update : 升级软件,不指定名称则升级整个系统

  卸载,yum [remove] 程序名称

  remove : 卸载

  yum的配置

  /etc/yum.repos.d/CentOS-Base.repo

  yum clean [package | headers | all]

  /var/cache/yum

  9、vi编辑器的使用

  9-1 vi vim

  9-2 vi的三种模式

  命令模式

  插入模式,通过aio进入

  扩展模式,通过:进入

  9-3 移动光标

  hjkl -> 左下上右

  w下一个字符,b上一个字符

  (上一个句子,)下一个句子,{上一个段落,}下一个段落

  9-4 命令模式下修改、复制、删除等操作

  9-5 撤销操作

  a)u,撤销最近一次的修改,undo

  b)ctrl – r,取消最后一次的撤销,redo

  c)U,撤销所有修改

  9-6 查找操作

  a)/text, 向后搜索

  b)?text,向前搜索

  c)n,搜索下一个同样的内容

  d)N,搜索上一个同样的内容

  9-7 粘贴操作

  a)用p粘贴复制、修改或者删除的数据

  b)对于行,p粘贴在行上,P粘贴在行下

  c)对于字符,p粘贴在字符右侧,P粘贴在字符左侧

  9-8 命令模式下的一些技巧

  a)dtc,删除从光标到c之间的所有字符

  b)rc,将光标下的字符替换为c

  c)dw,删除游标处所在的字符

  d)5dd,删除5行数据

  e)5yy,复制5行数据

  f)5x,删除5个字符

  g)R,进入替换状态,Esc退出

  9-9 保存、退出,进入扩展模式

  a):w,保存

  b):q,退出

  c):wq,保存并退出

  d):w!,强制保存

  e):q!,强制退出

  f):wq!,强制保存退出

  9-10 文件内定位

  1)G,跳转到文件最后一行

  2)1G,跳转到文件第一行

  3)ctrl d,往下滚动半屏

  4)ctrl u,往下滚动半屏

  9-11 屏幕定位相关

  1)H,跳转到本屏显示的第一行

  2)M,跳转到本屏显示的中间一行

  3)L,跳转到本屏显示的最后一行

  4)z Enter,使当前的行成为屏幕显示的第一行

  5)z -,使当前行成为屏幕的最后一行

  9-12 查找并批量替换 – 通过sed来查找

  实例:

  :s/i/- 将本行中i替换为-

  :s/i/-/g 将本行中所有的i替换为-

  :1,10s/i/-/g 将1到10行中的所有的i替换为-

  :1,$s/i/-/g 将文件中所有的i替换为-

  9-13 读取和保存

  实例:

  :r test.txt 将test.txt的内容读入到当前文件

  :1,3 w newfile.txt 将1-3行的内容写入到newfile.txt中

  :1,$ w newfile.txt 将整个文件写入到newfile.txt中

  :1,3 w >>oldfile.txt 将1-3行数据追加到oldfile.txt中

  9-14 设置

  1):set,显示常用的配置选项

  2):set all,显示所有的配置选项

  3):set number,设置行号

  10、bash shell 的学习

  10-1 bash shell 的概述

  Bash是Bourne Again Shell的简称,是从Unix系统中的sh发展而来,是用户和Linux内核交互的工具,用户通过bash操作内核完成系统的使用和管理

  Shell的种类

  /bin/sh – 已经被/bin/bash替代

  /bin/bash – 默认的shell

  /bin/ksh – 源自贝尔实验室,兼容bash

  /bin/tcsh – 整合C shell,功能更为强大

  /bin/csh – 已经被tcsh取代

  /bin/zsh – 源自ksh功能更为强大

  10-2 bash shell 的配置

  变量概述

  变量是代表一些值得符号:

  可以通过变量来设置shell或者其他程序

  变量存在于内存中

  Linux有自定义变量(local)和环境变量(environment)

  自定义变量和环境变量作用范围不同

  可以使用以下指令查看所有变量:

  set可以查看所有变量

  env只能查看环境变量

  unset删除变量

  bash shell有以下几种设置方式:

  通过自定义变量设置

  VARIABLE=value来设置

  echo $VARIABLE获取变量值

  变量名不能以数字或特殊字符开头

  实例:

  # mysql=/root/dirs/mysql/bin

  # echo $mysql

  # cd $mysql

  常见的变量

  1)HISTFILESIZE: 记录历史指令保存的最大值

  2)COLUMNS: 终端窗口显示的宽度

  3)LINES: 终端窗口显示的高度

  4)PS1: 设置提示符号前面的内容样式(\d, \h, \t, \u, \w, \!, \$, \l, \#等)

  实例:

  # set |grep PS1

  # PS1=‘[\u@\h \w \t]\$’

  通过别名设置

  # type ll

  # alias cls=’clear’

  # alias //查看所有别名

  # alias cls //查看别名值

  # type –a cls

  # unalias cls //删除别名定义

  通过set指令设置

  set自身查看所有变量值

  设置shell内部的属性值(set –o noclobber, set –o vi)

  通过环境变量设置

  自定义变量只能在当前的shell环境中有效

  环境变量会在整个主机下的shell环境中生效

  使用$或export [variable name]来设置

  常用变量介绍:

  HOME:指向当前用户的家目录

  LANG:应用程序使用何种语言显示界面

  PWD:指向用户当前的工作目录路径

  PATH变量:

  系统预设的环境变量

  执行一些没有指定路径的指令时会去该路径中找

  PATH=$PATH.: 将隐藏路径设置到PATH中,会带来安全性问题

  可以使用which指令来找到某个指令所在的位置

  10-3 shell startup scripts的原理和功能

  概述

  用户登录或其他非登录动作时会自动执行的一些shell脚本:

  建立自定义变量或者执行set指令设置shell

  建立环境变量,设置其他程序

  使用alias,简化后续的操作

  登录的时候执行哪些程序

  分为login和non-login脚本

  login shell:

  通过完整的登录流程时运行的shell

  首先会读取/etc/profile(PATH/USER/HOSTNAME/HISTSIZE等)

  读取/etc/profile.d/*.sh(颜色、语言、指令别名等)

  ~/.bash_profile、~/.bash_login、~/profile(只依次读取其中一个)

  ~/.bash_rc、/etc/bashrc

  source指令加载脚本的变更

  non-login shell: - 即在终端中输入bash时

  不需要登录即可运行的shell,如su和原bash下的新bash动作

  ~.bash_rc、/etc/bashrc

  读取/etc/profile.d/*.sh (颜色、语言、指令别名等)

  ~/.bash_logout:

  在注销用户时会运行该脚本

  可以执行备份、缓存和临时文件清理等任务

  10-4 数据流重定向和管道命令

  标准输入输出和错误输出概述

  概念:

  stdin是指令数据的输入,代码为0,使用<或者<<,默认是键盘

  stdout是指令执行成功返回的结果,代码为1,使用>或者>>,默认由屏幕显示

  stderr是指令执行失败返回的错误信息,代码为2,使用2>或2>>,默认是屏幕

  实例:

  # ls -al /dev/std*

  数据流重定向的使用

  <: 指定输入的数据媒介来源

  1>: 将正确的内容覆盖输出到指定的媒介

  1>>: 将正确的内容追加到指定的媒介

  2>: 将错误信息覆盖输出到指定的媒介

  2>>: 将错误信息追加到输出指定的媒介

  实例:

  # find /root ins 1>success 2>failed

  # find /root ins >all 或者 # find /root ins &>all 其中&就是表示0、1、2

  # tr ‘a-z’ ‘A-Z’ <hello.c p="" 将hello.c的小写转换为大写

  多个指令执行的判断方法

  实例:

  # mkdir test&&cd test&&touch conf.txt //前者执行成功才会执行后者

  # mkdir test||mkdir test1 //将第一个执行失败,才会去执行第二个,若第一个执行成功,不会执行第二个

  管道命令概述

  命令通过管道符|连接

  能够接受标准输入(stdin),如tail/more/grep等

  能够接受来自前一个指令的正确的数据作为stdin进行处理

  实例:

  # ls –la |more //通过翻页的形式

  # ls –la |more |grep hostname

  grep指令,grep [-cinv] ‘key’ filename,支持正则

  1)-c, 计算字符出现的个数

  2)-i, 忽略大小写进行查找

  3)-n, 输出行号

  4)-v, 显示没有该字符的行

  实例:

  # grep –in ‘[a-z]the’ test.txt //显示行号并忽略大小写显示‘the’

  # grep –ic ‘the’ test.txt //统计并忽略大小写‘the’出现的次数

  # grep –icv ‘the’ test.txt //统计出‘the’没有出现的行

  # grep –in –-color=auto ‘the’ content.txt //显示‘the’的行号,标红,忽略大小写

  # grep –in –-color=auto ‘the’ content.txt |grep –-color=auto take //继续过滤

  sort指令,sort [-fbknrtu] filename

  1)-f, 忽略大小写

  2)-b, 忽略最前面的空格

  3)-m, 以月份英文名字排序

  4)-n, 使用数字排序

  5)-r, 逆向排序

  6)-t, 分隔符,默认是tab分割

  7)-k, 以第几列来排序

  实例:

  # cd /root/usr/bin

  # ls –l

  # ls –l |sort –t ‘ ’ –k 5 –n //按照第五列以空格分开从小到大排序

  wc指令,wc[-lwm] filename,统计功能

  1)-i, 统计行

  2)-w, 统计词

  3)-m, 统计字符

  实例:

  # cat content.txt |wc –l

  # cat content.txt |wc –w

  # cat content.txt |wc –m

  除此之外还有很多管道命令:tr cut join paste等




免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:bkook@qq.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
上一篇:Centos安装MySQL基础教程
下一篇:安装centos7的基本方法与教程
0

在线
客服

在线客服服务时间:9:00-18:00

客服
热线

19899115815
7*24小时客服服务热线

关注
微信

关注官方微信
顶部