shell基础
/etc/shells
这个文件存放了系统当前可以使用的shell/etc/passwd
用户登陆时会默认取一个shell操作,而这个登陆取得的shell就记录在/etc/passwd
这个文件内.bash_history
记录前一次登陆以前所执行的命令,这一次的命令放在临时内存中,注销登陆后才写入文件- bash支持通配符查询与命令执行,如
ls -l /usr/bin/X*
变量的设置与使用
=
设置变量,myname = virs
echo
显示变量,echo $PATH
- 增加变量可以用
$变量名称
增加,比如PATH="$PATH":/home/bin
- 若该变量需要在其他子进程中使用,需要使用
export
声明成环境变量export PATH
,export
也可以显示当前的环境变量 unset 变量名称
可以取消变量的设置- linux中,双引号可以保持变量的内容,双引号里面的变量仍然变量,但是单引号里面的内容只是一般的字符,反单引号的作用是:在一串命令中反单引号里面的内容会被先执行,而执行的结果又会被当作外部输入信息,如
- ls -al `locate crontab`
env
可以列出当前shell的所有环境变量,env是environment的缩写
set
可以查看当前bash的所有变量,包括环境变量和自定义变量locale
显示当前语系变量
反单引号的使用
反单引号是指(`)
即数字键1左边的字符,其意义是:
- 在一串命令中,反单引号内部的命令会先执行,同时执行结果会作为外部输入信息替换掉原来的文本
如:
ls -l `locate crontab`
,先执行locate crontab
将文件名列出来,然后使用ls
查看文件具体信息
变量的键盘读取、数组与声明:read,array,declare
read [-pt] variable
-p:后面可以接提示符
-t :后面接等待的秒数,如果没有输入系统自动略过
read -p "your input:" atest
输入This is a test
后echo $atest
declare [-aixr] variable
参数-a
将后面的variable设置为数组(array)类型,可以存放字符串之类参数-i
将后面的variable设置为整型(integer)类型参数-x
将后面的variable设置环境变量参数-r
将后面的variable设置readonly,变量不可更改也不可重设bash
默认的变量类型为字符串类型- 数组类型的赋值
a[1]="sda"
,变量显示echo "${a[2]}"
数据流重定向
数据流重定向就是将原本在屏幕显示的信息传输到其他地方,比如文件、或者设备之类的,执行一个命令的时候涉及到输入与输出,而输出又分为标准输出与标准错误输出
标准输入(stdin):代码为0,使用 < 或 <<
标准输出(stdout):代码为1,使用 > 或 >>
标准错误输出(stderr):代码为2,使用 > 或 >>
>
表示输出到文件,如果文件存在就把文件内容清空然后输入
>>
表示输出到文件,但是如果文件存在,输入数据累加到文件后面
标准输出
find /home -name .bashrc > list_right 2> list_error
,将正确数据输出到list_right
,错误数据输出到list_error
find /home -name .bashrc > list 2>&1
find /home -name .bashrc &> list
,把正确和错误的数据输出到一个list文件里面- 不想要的输出可以丢到
/dev/null
这个黑洞文件中
标准输入
cat > catfile
,创建catfile文件并且由键盘输入文件的内容,输出结束按ctrl+d
cat > catfille < ~/.bashrc
,创建catfile文件,键盘输入由文件./bashrc
代替,最终catfile的内容与.bashrc的内容一样cat > catfille << "eof"
创建catfile文件并且由键盘输入文件的内容,指定’eof’为文件结束输入标志,文件内容写完后,再输入eof即可推出,不需要按ctrl+d
管道命令
后一个命令接收前一个命令传来的数据作为stdin(注意不接受stderr数据),然后执行输出
command1 | pipe | pipe.....
常用的有
选取命令grep、cut
cut
命令用于切割字符,相当于splite
- 第一种用法
cut -d'分割字符' -f fields
- 第二种用法
cut -c 字符范围
使用cut命令略去开头的’declare -x’
grep
命令用于挑选想要的信息,相当于正则表达式
语法:grep [-acinv] [–color=auto] ‘查找字符串’ filename
-a: binary文件以text文件方式查找
-c: 计算查询到字符串的次数
-i: 忽略大小写
-n: 输出行号
-v: 反向选择
--color=auto: 查找关键字加上颜色显示
filename: 指定查找文件
排序命令sort、wc、uniq
wc
命令用于计数
参数:
-l:列出多少行
-w: 列出多少英文单词
-m: 列出多少字符
-c: 统计字节数,注意区别-m
其他命令
- 双向重定向
tee
- 字符转换命令
tr、col、join、paste、expand
- 切割命令
splite
- 参数代换
xargs