第四章 shell的使用
一、Shell的基本概念
Shell是操作系统中运行的程序
位于操作系统内核和用户之间
Shell定义用户与OS进程交互的一个界面,命令解释器
二、Shell的分类
种类:Bsh、Csh、Ksh、Bash
Bash是linux的默认Shell
Bash是Bsh的升级替代品
tcsh是csh的兼容升级版
/etc/shells 文件下记录了shell的全路径名
三、Shell的使用
1、Shell的临时切换:直接输入Shell名即可,使用exit或Ctrl+D返回
练习: ls /
bsh
ls /
exit
bsh
csh
bash
exit
exit
ls /
exit
exit
2、Shell的永久切换:修改 /etc/passwd 文件的最后一个字段
chsh 更改Shell的路径 下次登录生效
练习: useradd ttt
passwd ttt
vi /etc/passwd
将ttt用户的登录shell修改成/bin/bsh
登录ttt账户测试
3、显示当前的shell:echo $SHELL
四、变量
变量:不固定,可以变化的值
单引号'' 字符串不进行任何的变量替换,保持字符串的原始值
双引号"" 变量引用会以变量的值来替换,并作为字符串的一部分
反引号`` 用于进行命令替换,引号中命令的执行结果将替换命令本身作为字符串
1、环境变量:设置用户工作环境
查看当前用户的所有变量:set
$USER 当前用户的登录名称 与whoami命令结果一致
$UID 当前用户号(UID) 与id -u 命令结果一致
$SHELL当前用户登陆SHELL 与/etc/passwd文件中Shell字段一致
$HOME 当前用户登陆目录(宿主目录) 与/etc/passwd文件中home字段一致
$PWD 用户当前所在目录 与pwd命令结果一致
$PATH 当前用户命令搜索路径
$PS1 主提示符
$PS2 辅助提示符
PS1:保存系统提示符
echo $PS1
默认PS1=['\u@\h \W]\$'
说明: \d :日期
\H :完整的主机名称
\h :主机的第一个名字
\t :24小时时间
\T :12小时时间
\A :显示时间为24小时格式
\u :当前用户的账号名称
\w :完整工作目录名称
\W :列出最后一个目录
\# :命令计数器
\$ :权限提示符
练习:信息提示符显示系统时间和命令计数器,不显示用户账号
PS1='\#[\d-\t@\h \W]\$'
PS2:存储二级系统提示符,分行显示一条命令,使用"\",默认为>
练习:查看当前文件夹内全部文件列表显示
ls -a\
>l
ls -al
ls
tou\
>ch 999
ls
cp 999 \
>888
ls
ls /e\
>tc
ls /etc
PATH:存储执行程序的位置
/etc/skel 保存初始用户配置文件模板
配置文件:永久更改环境变量
在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个
执行的顺序为:~/.bash_profile、 ~/.bash_login、 ~/.profile。
如果 ~/.bash_profile文件存在的话,一般还会执行 ~/.bashrc
文件。
在退出shell时,还会执行 ~/.bash_logout文件。
执行顺序为:/etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout
全局配置文件:/etc/profile:此文件为系统的所有用户设置环境信息,当用户第一次登录时,该文件被执行,
并从/etc/profile.d目录的配置文件中搜集shell的设置
/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取
用户配置文件:~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,
该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取
~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件
2、位置变量:存储命令的参数($1-$9)
练习:编写小程序,使输入输出的12换位、34换位
创建文件名为change文件
vi这个文件,内容如下
echo $2 $1 $4 $3
修改权限为740可以执行
. change 1 2 3 4
显示结果为2 1 4 3
3、预定义变量:系统自带,不可更改
$0 命令的名称
$# 位置参数的数量
$* 所有位置参数的内容
$? 命令执行后返回的状态,0表正确,非0表错误
$$:当前进程号
$!:后台运行的最后一个进程号
4、用户自定义变量
自定义变量方法: 变量名=值
练习: ab=cd
echo $ab
显示cd
使用export所有子shell生效
练习: bsh
echo $ab
无提示
查看变量set
清除变量unset 变量名
export 输出变量为全局变量,例如,export DAY=sunday
练习: 1、在当前shell中输入xzht显示good
xzht=good
echo $xzht
显示good
2、在当前shell和子shell中输入laolu都显示sexy
export laolu=sexy
echo $laolu
显示sexy
bsh
echo $laolu
显示sexy
exit
3、删除xzht变量
set
unset xzht
set
五、bash shell功能
1、行编辑功能:在没输入回车之前,可以修改输入的命令
Ctrl+U 删除当前光标到行首的内容
Ctrl+K 删除当前光标到行尾的内容
2、命令补全功能:使用Tab键进行补全,1下不能补全,按2下给出提示;也可对文件名进行补全
3、命令重复使用
使用↑↓可以翻看历史命令
使用history查看历史命令,可以使用“!命令编号”进行简单重复输入
用户历史命令保存文件:
环境变量HISTFILE
主文件夹下.bash_history
环境变量HISTSIZE 值代表历史记录最大数目1000
清除历史命令:history -c
练习: ls
ls -a
ls -l
history
!行号 执行命令
在.bash_logout文件中添加history -c使用户注销后清除缓存命令
vi /root/.bash_logout
在空白行添加history -c后保存退出
注销 root后登陆测试
在非root账户.bashrc文件中添加exit使这个账户登录就立刻自动注销
useradd kkk
passwd kkk
登录kkk成功后注销
vi /home/kkk/.bashrc
在空白行处添加exit后保存退出
测试kkk登录效果
4、命令别名:根据自己的喜好修改该系统内部命令
创建别名命令:alias 新命令='内部可执行命令'
取消别名命令:unalias 自定义命令,-a取消所有
命令别名保存在宿主目录的.bashrc文件中
查看别名列表:alias
系统别名定义文件/etc/profile.d/
练习: 建立del执行rm -rf功能
touch 123
ls
del 123
提示报错
alias del='rm -rf'
del 123
ls
123文件消失
$head -4 colorls.sh
无提示练习:使用gzgp将光盘挂载到当前目录下的mycd目录下
六、管道与重定向
标准输入STDIN 文件编号0 默认键盘
标准输出STDOUT 文件编号1 默认显示器
标准错误STDERR 文件编号2 默认显示器
1、重定向:修改输入输出的资源
wc 计算指定文件中的字符数、单词数和行数
-c 字节数
-m 字符数
-l 行数
-L 行最长长度
-w 单词数
输入重定向<
输出重定向>
练习: ls
touch dir
ls > dir
more dir
ls /
ls / > dir
more dir
输出重定向追加>>
练习: ls -l
touch ddd
ls -l > ddd
more ddd
ls -a > ddd
more ddd
ls -l >> ddd
more ddd
2> 错误重定向
&> 标准输出+错误输入重定向 重定向到相同文件
ls afile bfile > outfile 2>errfile重定向到不同文件
2、管道命令:|;可以将多个命令连接结合使用
练习: cat /etc/passwd
more /etc/passwd
cat /etc/passwd | more
cat /etc/passwd | less
ls -al |more
ls -al /etc
ls -al /etc |more
ls -al /etc |less
七、脚本文件
Shell脚本程序是由Shell环境解释执行的,不需要在执行前进行编译
系统服务启动程序 /etc/init.d 只有root才有修改权限
禁用CTRL-ALT-DELETE组合键应修改/etc/inittab
1、编译脚本:直接 vi文件,增加执行权限
2、执行脚本:使用bash或者.执行
脚本运行环境设置 #!/bin/bash
注释以#开头
添加可执行权限 chmod u+x 文件名
执行脚本 bash 文件名
使用. 和bash执行脚本,不需要可执行权限
练习1: 建立hl程序执行结果显示Hello!到屏幕
linux查看当前文件夹内容vi hl
输入内容: echo Hello!保存退出
使用. hl或者bash hl进行执行
无提示练习:要求root账户登录就显示“You are root!”提示
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论