shell基础及变量

一、shell基础

1)

[root@www~]# history [-raw] histfiles

选项与参数:
n :数字,意思是『要列出最近的n 笔命令行表』的意思!
-c :将目前的shell 中的所有history 内容全部消除
-a :将目前新增的history 命令新增入histfiles中,若没有加histfiles,
则默认写入~/.bash_history
-r :将histfiles的内容读到目前这个shell 的history 记忆中;

-w :将目前的history 记忆内容写入histfiles中

历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中进行修改

2)

历史命令的调用
使用上、下箭头调用以前的历史命令
使用“!n”重复执行第n条历史命令
使用“!!”重复执行上一条命令

使用“!字串”重复执行最后一条以该字串开头的命令

3)

命令与文件补全

在Bash中,命令与文件补全是非常方便与常用的功能,我们只要在输入命令或文件时,按“Tab”键就会自动进行补全

4)

命令别名
[root@localhost ~]# alias别名='原命令'
#设定命令别名
[root@localhost ~]# alias grep=‘grep--color=auto’(注意等号两边不能有空格)
alias的作用仅在该次登入的操作,即输入一次alias后,这个修改只在当前的Shell生效。如果重新开启一个Shell,或者重新登录,则这些alias将无法使用。好在linux中提供alias永久化的方法:
<1>.若要每次登入就自动生效别名,则把别名加在/etc/profile或~/.bashrc中。然后# source ~/.bashrc

<2>.若要让每一位用户都生效别名,则把别名加在/etc/bashrc最后面,然后# source /etc/bashrc

删除别名

[root@localhost ~]# unalias别名

5)

多命令顺序执行


管道符
命令格式:
[root@localhost ~]# 命令1 | 命令2

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

cut
可以将一段信息的某一段给他『切』出来,处理的信息是以『行』为单位
[root@www~]# cut -d'分隔字符' -f fields <==用于有特定分隔字符
[root@www~]# cut -c 字符区间<==用于排列整齐的信息
选项与参数:
-d :后面接分隔字符。与-f 一起使用;
-f :依据-d 的分隔字符将一段信息分割成为数段,用-f 取出第几段的意思;

-c :以字符(characters) 的单位取出固定字符区间;

tee
[root@www~]# tee [-a] file
选项与参数:
-a :以累加(append) 的方式,将数据加入file 当中!
echo输出命令
[root@localhost ~]# echo [选项] [输出内容]
选项:
-e :支持反斜线控制的字符转换
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\\插入\字符;
\nnn插入nnn(八进制)所代表的ASCII字符;

二、shell中的变量与符号

1)

变量
shell 变量可以保存如路径名、文件名或者一个数字
变量名称可以由字母、数字和下划线组成,但是不能以数字开头。如果变量名是“2name”则是错误的。

在Bash中,变量的默认类型都是字符串型,如果要进行数值运算,则必修指定变量类型为数值型。

2)

变量分类

本地变量    (用户变量)局部变量只在创建它们的Shell中使用,可以在shell程序内任意使用和修改它们。
环境变量    可以在创建它们的Shell及其派生出来的任意子程序中使用。有些变量是用户创建的,其他的则是专用的(比如PATH、HOME)。是系统环境的一部分,不必去定义它们,可以在shell程序中使用它们。还能在shell中加以修改。

内部变量      由系统提供的。与环境变量不同,但用户不能修改它们。

本地变量在用户现在的shell生命期的脚本中使用
变量名=值
注意:
(1)等号两边不可以有空格
(2)取值包含空格,必须用双引号括起来

(3)Shell变量可以用大小写字母,区分大小写

3)

变量的声明和使用
(1)变量是弱类型的(不用声明类型)
(2)变量声明及赋值格式
变量=值(等号两边不能有空格)
(3)变量的引用
$变量名
${变量名}

变量名为1个字符时建议使用方式一,多余一个字符时建议使用方式二

4)

显示变量

echo命令可以显示单个变量取值,变量名前加$

echo显示输出
# echo命令介绍

功能说明:显示文字。

语法:echo [-ne][字符串] / echo [--help][--version]

补充说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号。

参数:

-n不要在最后自动换行

-e打开反斜杠ESC转义。若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:\t 插入tab;\\插入\字符;

-help显示帮助

-version显示版本信息

5)

清除变量

unset 变量名

6)

设置环境变量
variable-name=value
export variable-name(环境变量名大写)
显示环境变量
env可以看到所有的环境变量
echo $环境变量名(显示一个变量)
清除环境变量

unset 环境变量名

HOME :代表使用者的家目录。cd ~ 去到使用者的家目录或者利用cd 就可以直接回到使用者家目录了。
PS1:shell的主提示符
SHELL :目前这个环境使用的SHELL 是哪个程序?如果是bash 的话,预设是/bin/bash
PWD:用户当前工作目录的路径。它指出用户目前在Linux文件系统中处在什么位置。它是由Linux自动设置的
HISTSIZE :这个与“历史命令”有关,曾经下达过的指令可以被系统记录下来,而记录的“数目”则是由这个值来设定的。
ENV :这个使用者所使用的个性化环境设置文件的读取文件。
MAIL :当我们使用mail 这个指令在收信时,系统会去读取的邮件信箱文件(mailbox)。
PATH :就是执行文件搜寻的路径,目录与目录中间以冒号(:)分隔,由于文件的搜寻是依序由PATH 的变量内的目录来查询,所以,目录的顺序也是重要的喔。

LANG :语系文件,很多数据都会用到他,当出现编码错误的时候往往需要设置它,中文编码是zh_CN.UTF8

让环境变量的修改在退出shell再次登录时仍有效,需要在相关配置文件中修改

Bash的初始化文件有:/etc/profile、~/.bash_profile、~/.bash_login、~/.profile、~/.bashrc、/etc/bashrc

部分内部变量是:
$# ——传送给shell程序的位置参数的数量
$?——最后命令的完成码或者在shell程序内部执行的shell程序(返回值)。0表示没有错误,其他任何值表明有错误。
$0——shell程序的名称

$*——调用shell程序时所传送的全部参数的单字符串,“参数1”“参数2”…形式保存的参数

$@“参数1参数2”…形式保存的参数
$n第n个参数

$$本程序的PID

7)特殊符号

1、注释符#
除了#!/bin/bash里的#特殊
2、美元符$
变量符。与反斜杠转义符相反,使其后的普通字符作为变量名,如$a表示变量a的值。变量字符长度超过1个时,用{}括起来
3、单引号
被引起的字符全部做普通字符,即全部原样

echo ‘my $SHELL’

4、双引号
引号内的内容,除$、转义符\、倒引号`这三个保留特殊功能,其他字符均做普通字符。
5、倒引号(数字1键旁边的那个键)

引号内的字符串当做shell命令行解释执行,得到的结果取代整个倒引号括起来的部分。

6. 反斜线

反斜线是转义字符,它能把特殊字符变成普通字符。在某个字符前面利用反斜杠(\)能够阻止shell把后面的字符解释为特殊字符。

7.获取字符串长度
string="abcd"
echo ${#string} #输出4
8.提取子字符串
以下实例从字符串第2 个字符开始截取4 个字符
string="runoobis a great site"

echo ${string:1:4} # 输出unoo


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值