Bash学习

必须通过shell将我们输入的命令与内核通信,好让内核可以控制硬件来正确无误的工作。
也就是说,只要能够操作应用程序的接口都能够称为shell。狭义的shell指的是命令行方面的软件。

3.系统合法shell与etc/shells功能
Bourne shell,简称sh.
cat /etc/passwd可以查看到每个默认账号的shell,root使用的是/bin/bash,系统账号bin与daemon等就使用的是奇怪的sbin/nologon。

4.bash shell功能
bash主要的优点有下面几个:

  1. 命令记忆功能(history)
  2. 命令补全并能(tab)
  3. 命令别名设置功能(alias)
  4. 作业控制、前台、后台控制(job control, foreground, background)
  5. 程序脚本(shell script)
  6. 通配符(Wildcard)

本人自己用history,tab通配符比较多,确实是好用,至于提到的命令别名、作业控制、程序脚本用的比较少,今后学习。

5.bash shell的内置命令:type
type命令可以查看某个命令是来自于外部命令(指的是其他非bash所提供的命令)或是内置在bash当中。

6.变量显示与设置:echo,unset
myname=ddh 设置了一个变量
echo $myname
取消变量的方法为unset变量名称

1.变量设置中,单引号和双引号的用户有何不同。
答:单引号与双引号的最大不同在于双引号仍然可以保有变量的内容,单引号内仅能是一般字符,而不会有特殊字符。(DDreamH才知道)

2.命令执行过程中,反单引号()符号代表的意义
答:在一串命令中,在
之内的命令会先被执行,而执行的结果作为外部的输入信息。
例:locate命令可以列出所有的相关文件名。
ls -l locate crontab

3.常用的工作目录可以使用 work="/cluster/abc/server/dd/cc"cd word即可切换到指定目录。

7.环境变量

  • 用env查看环境变量与常见环境变量与其内容
  • HOME
  • SHELL
  • HISTSIZE
  • MAIL
  • PATH
  • LANG
  • RANDOM

8.变量键盘读取、数组与声明:read,array,declare

  • read:read [-pt] variable -p代表可以接提示符,t表示后面可以等待的“秒数”
  • declare/typeset:declare [-aixr] variable -a数组类型,-i整数类型,-x环境变量,-r将变量设置为readonly。
delcare -i sum=100+200+300 #-i代表整形数据,sum的值为600
echo $sum #输出600
declare -x sum #将sum变成环境变量
export | grep sum #输出 declare -ix sum="600"
declare -r sum #将sum设置为只读变量,不可修改
declare -x sum #将-变成+可以进行取消操作
declare -p sum #-p可以单词列出变量的类型
  • 数组(array)变量类型
[root@centos01 /]# declare -a var
[root@centos01 /]# echo $var

[root@centos01 /]# var[1]="hello"
[root@centos01 /]# var[2]="world"
[root@centos01 /]# var[3]="shell"
[root@centos01 /]# echo "$var[1]$var[2]$var[3]"
[1][2][3]
[root@centos01 /]# echo "${var[1]}${var[2]}${var[3]}"
helloworldshell
[root@centos01 /]# echo "${var[1]} ${var[2]}, ${var[3]}"
hello world, shell

9.与文件系统及程序的限制关系:unlimit
unlimit命令可以限制用户的某些系统资源,包括打开的文件数量,使用CPU的时间,可以使用的内存总量。
ulimit [-SHacdfltu] [配额]
-a 列出所有的限制数据
-f 可以创建的最大文件容量,单位为kb,一般为2GB
-t 可使用最长CPU的时间,单位为秒
-u 单一用户可以使用的最大进程数量
-d 进程可以使用的最大断裂内存容量

10.变量内容的删除、替代与替换

  • 变量内容的删除与替换
[root@centos01 /]# echo $path
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ddhdzt/.local/bin:/home/ddhdzt/bin
[root@centos01 /]# path=${PATH}
[root@centos01 /]# echo $path
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ddhdzt/.local/bin:/home/ddhdzt/bin
[root@centos01 /]# echo ${path#/*local/bin:}
/usr/bin:/usr/local/sbin:/usr/sbin:/home/ddhdzt/.local/bin:/home/ddhdzt/bin
[root@centos01 /]# echo ${path#/*local/bin:}
/usr/bin:/usr/local/sbin:/usr/sbin:/home/ddhdzt/.local/bin:/home/ddhdzt/bin
[root@centos01 /]# echo ${path#/*local/bin:}
/usr/bin:/usr/local/sbin:/usr/sbin:/home/ddhdzt/.local/bin:/home/ddhdzt/bin
[root@centos01 /]# echo ${path#/*local/sbin:}
/usr/sbin:/home/ddhdzt/.local/bin:/home/ddhdzt/bin
[root@centos01 /]# echo ${path#/*:}
/usr/bin:/usr/local/sbin:/usr/sbin:/home/ddhdzt/.local/bin:/home/ddhdzt/bin
[root@centos01 /]# echo ${path#/*:}
/usr/bin:/usr/local/sbin:/usr/sbin:/home/ddhdzt/.local/bin:/home/ddhdzt/bin
[root@centos01 /]# echo ${path#/*:}
/usr/bin:/usr/local/sbin:/usr/sbin:/home/ddhdzt/.local/bin:/home/ddhdzt/bin
[root@centos01 /]# echo ${path##/*:}
/home/ddhdzt/bin

11. 命令别名与历史命令
命令别名:alias rm=’rm -i’,可以给删除命令增加一条提示
取消命令别名:unalias rm
历史命令:history

你可能感兴趣的:(Linux)