当前位置:   article > 正文

Linux入门_linux入门基础教程

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

 

新建文件和目录,touchmkdir

            1)cd、pwd

            2)cd ..,cd ~,cd -

 

确定文件的格式

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

            2)file [options] filenames

 

cat – 打开一些小文件

  1. cat [options] filenames
  2. 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

  编译生成二进制文件

  执行安装

 

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

  1. 获取源码安装包,如去官网下载
  2. 解压缩,阅读install或readme文件,获取安装说明
  3. 根据安装说明安装好该软件依赖的其他软件
  4. 建立makefile文件(通过configure检测安装环境,定义必要的参数)
  5. 根据生成的makefile文件,执行make指令进行编译操作
  6. 根据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

  1. RedHat Package Manager的简称,RedHat包管理器
  2. 以数据库的记录方式将软件安装到Linux
  3. 软件包事先编译好并且打包成RPM机制的文件,类似于Windows的安装程序
  4. 软件信息记录在本地数据库,方便查询、升级、卸载
  5. 不允许自定义参数和设置,限制较多

 

SRPM

  1. Source RPM,附带源代码的RPM 包,扩展名以src.rpm命名
  2. 不可以直接安装,需要通过编译后再安装
  3. 可以修改参数文件自定义配置项
  4. 和RPM比较类似

 

YUM

  1. Yellow dog Update, Modified的简称,基于RPM包管理
  2. 能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无需繁琐地一次次下载、安装
  3. 使用简单、方便

 

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安装

  1. rpm [-ivh] rpm1 rpm2 : 安装rpm1/rpm2并显示进度和详情
  2. --nodeps : 忽略依赖问题执意安装
  3. --replacefiles : 对于已经安装过的某个文件覆盖安装
  4. --replacepkgs : 已经安装过的软件重新安装
  5. --force : --replacefiles 和 –replacepkgs
  6. --test : 测试软件能否被正确安装,rpm –ivh *** --test
  7. --justdb : RPM数据库损坏或者产生错误时更新数据库信息
  8. --nosignature : 忽略数字签名的检查
  9. --prefix : 改变软件的默认安装路径
  10. --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卸载与数据库重建

  1. 注意要从上往下依次卸载,先卸载不被任何其他软件依赖的软件
  2. -e : 卸载软件
  3. --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] 参数

  1. search : 查询某个程序的名称或者是描述 ( yum search mysql)
  2. list : 列出目前yum所管理的所有软件以及版本 (rpm -qa)
  3. info : 类似list,查询软件的功能、版本说明 (rpm -qai)
  4. provides : 通过文件查询所属软件 (rpm -qf)

    实例:

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

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

 

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

  1. install : 安装软件
  2. update : 升级软件,不指定名称则升级整个系统

 

  卸载,yum [remove] 程序名称

  1. remove : 卸载

 

  yum的配置

  1. /etc/yum.repos.d/CentOS-Base.repo
  2. yum clean [package | headers | all]
  3. /var/cache/yum

 

9、vi编辑器的使用

9-1 vi vim

9-2 vi的三种模式

  1. 命令模式
  2. 插入模式,通过aio进入
  3. 扩展模式,通过:进入

9-3 移动光标

  1. hjkl -> 左下上右
  2. w下一个字符,b上一个字符
  3. (上一个句子,)下一个句子,{上一个段落,}下一个段落

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有以下几种设置方式:

  通过自定义变量设置

  1. VARIABLE=value来设置
  2. echo $VARIABLE获取变量值
  3. 变量名不能以数字或特殊字符开头

实例:

  # 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)

 

  通过环境变量设置

  1. 自定义变量只能在当前的shell环境中有效
  2. 环境变量会在整个主机下的shell环境中生效
  3. 使用$export [variable name]来设置

 

  常用变量介绍:

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

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

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

 

  PATH变量:

系统预设的环境变量

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

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

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

 

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

概述

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

  1. 建立自定义变量或者执行set指令设置shell
  2. 建立环境变量,设置其他程序
  3. 使用alias,简化后续的操作
  4. 登录的时候执行哪些程序
  5. 分为login和non-login脚本

 

login shell:

  1. 通过完整的登录流程时运行的shell
  2. 首先会读取/etc/profile(PATH/USER/HOSTNAME/HISTSIZE等)
  3. 读取/etc/profile.d/*.sh(颜色、语言、指令别名等)
  4. ~/.bash_profile、~/.bash_login、~/profile(只依次读取其中一个)
  5. ~/.bash_rc、/etc/bashrc
  6. source指令加载脚本的变更

 

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

  1. 不需要登录即可运行的shell,如su和原bash下的新bash动作
  2. ~.bash_rc、/etc/bashrc
  3. 读取/etc/profile.d/*.sh (颜色、语言、指令别名等)

 

~/.bash_logout:

  1. 在注销用户时会运行该脚本
  2. 可以执行备份、缓存和临时文件清理等任务

 

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

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

概念:

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

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

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

实例:

  # ls -al /dev/std*

 

数据流重定向的使用

  1. <: 指定输入的数据媒介来源
  2. 1>: 将正确的内容覆盖输出到指定的媒介
  3. 1>>: 将正确的内容追加到指定的媒介
  4. 2>: 将错误信息覆盖输出到指定的媒介
  5. 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 //将hello.c的小写转换为大写

 

多个指令执行的判断方法

  实例:

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

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

 

管道命令概述

  1. 命令通过管道符|连接
  2. 能够接受标准输入(stdin),如tail/more/grep等
  3. 能够接受来自前一个指令的正确的数据作为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等

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/553765
推荐阅读
相关标签
  

闽ICP备14008679号