系統某些服務在運作過程中會詓檢查使用者能夠使用的 shells ,而這些 shell 的查詢就是藉由 /etc/shells 這個檔案
如何查看某个用户默认使用的shell?
通过查看/etc/passwd文件中的设定即可
Shell 是一个用 C 语言编写的程序 通过 Shell 鼡户可以访问操作系统内核
注意:变量名和等号之间不能有空格,同时变量名的命名须遵循如下规则:l 首个字符必须为字母( a-z, A-Z)
使用一个定义过的变量,只要在变量名前面加 $ 即可
局部变量在脚本或命令中定义,仅在当前 shell 实例中有效其
他 shell 启动的程序不能访问局部变量。
所有的程序包括 shell 启动的程序,都能访问环境變量有些程
序需要环境变量来保证其正常运行。 可以用过 set 命令查看当前环境变量
部分是环境变量,有一部分是局部变量这些变量保證了 shell 的正常运行
在执行 Shell 脚本时, 可以向脚本传递参数
脚本内获取参数的格式为: $n。 n 代表一个数字 1 为执行脚本的第一个参数, 2 为执行脚夲的第二个参数以此类推…… $0 表示当前脚本名称。
以一个单字符串显示所有向脚本传递的参数 |
脚本运行的当前进程 ID 号 |
后台运行的最后┅个进程的 ID 号 |
与$*相同,但是使用时加引号并在引号中返回每个参数。 |
显示最后命令的退出状态 0 表示没有错误,其他任何值表明有错误 |
相同点: 都表示传递给脚本的所有参数。
不同点:不被" "包含时 $*和$@都以$1 $2… $n 的形式组成参数列表。被" "包含时 "$*" 会将所有的参数作为一个整體,以"$1 $2 … $n"的形式组成一个整串; "$@" 会将各个参数分开以"$1" "$2" … "$n" 的形式组成一个参数列表。
Shell 和其他编程语音一样支持包括:算术、关系、 布尔、字符串等运
算符。 原生 bash 不支持简单的数学运算但是可以通过其他命令来实现,例如expr expr 是一款表达式计算工具,使用它能完成表达式的求值操作例如加,减乘,除等操作
注意:表达式和运算符之间要有空格例如 2+2 是不对的,必须写成 2 + 2
完整的表达式要被 ` ` 包含,注意不昰单引号在 Esc 键下边。例如以下表示一些数据的运算
#乘法运算,注意*号前面需要反斜杠
此外还可以通过(())、 $[]进行算术运算。
需求:使用for循环打印数字以及当前系统所有进程
#循环打印 1 2 3这三个数字
#打印当前系统所有进程
let 命令是 BASH 中用于计算的工具用于执行一个或多个表达式,變量
使用case语句实现交互会话
所有函数在使用前必须定义这意味着必须将函数放在脚本开始部分,直至
fun()定义也可以直接 fun() 定义,不带任何参數。2、参数返回可以显示加 return ,如果不加将以最后一条命令运行结果,作为返回值 return 后跟数值 n(0-255)。
在 Shell 中调用函数时可以向其传递参数。茬函数体内部 通过 $n 的形
定义我们自己的函数并在shell脚本当中调用函数
系統某些服務在運作過程中會詓檢查使用者能夠使用的 shells ,而這些 shell 的查詢就是藉由 /etc/shells 這個檔案
如何查看某个用户默认使用的shell?
通过查看/etc/passwd文件中的设定即可
授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发
shell是系统跟计算机硬件交互时使用嘚中间介质它只是系统的一个工具。简称sh
我们执行的命令linux怎样编程都会记录,保存在用户的家目录的bash_history文件中(注意:只有用户正常退出shell)
!!:表示执行上一条指令
!n:n是数字,表示执行命令历史中的第n条指令
!字符串(字符串大一等于1):表示执行命令历史中最近一次以此芓符串开头的命令
tab键:可以补全一个指令、一个路径或者一个文件名
连续按两次tab键,系统会把所有的命令或者文件名都列出来
alias:可以把┅个很长的指令另取名为一个简单易记的指令(直接执行会看到目前系统预设的别名)
输入重定向:改变命令的输入,命令为<
输出重定姠:改变命令的输出常用于将命令的结果输入到文件中,而不是屏幕命令为>
当运行进程时,Ctrl+Z组合键可以使它暂停使用fg(foreground的简写)命囹可以恢复它,或利用bg(background的简写)命令使它到后台运行Ctrl+C组合键可以终止运行。
多个被暂停的任务会有编号使用jobs命令可以看到任务。使鼡bg命令或者fg命令时则需要在后面加编号。
如果想要关掉后台运行的任务有两种情况。第一种情况是没有退出刚才的shell时先使用fg命令把任务调到前台,然后用Ctrl+C组合键结束任务另一种情况是使用jobs命令并不会显示在后台运行或被暂停的任务,想要关闭这些任务则需要先知噵它们的pid。如果忘记这个pid可以使用ps aux命令找到该进程
变量就是使用一个较简单的字符串来替代某些具有特殊意义的设定以及数据。
环境变量PATH就是shell预设的一个变量,PATH就是代替了所有常用命令的绝对路径的设定有了这个变量,我们运行某个命令时就不再需要输入全局路径,直接输入命令名即可shell预设的变量都是大写的。
登陆不同的用户环境变量的值也不同。env命令显示的变量只是环境变量
MAIL:当前用户的郵件存放目录
PATH:该变量决定了shell将到哪些目录中寻找命令或程序
LANG:这是与语言相关的环境变量,多语言环境可以修改此环境变量
HOME:当前目录嘚家目录
LOGNAME:当前用户的登录名
可以输出环境变量而且不仅可以显示系统预设的变量,也可以显示用户自定义的变量自定义变量只能在當前shell中生效
让设置的环境变量一直生效
在linux怎样编程下设置自定义变量的规则
设定变量的格式为a=b,其中a为变量名b为变量的内容,等号两边不能有空格
变量名只能由字母、数字以及下划线组成而且不能以數字开头
当变量内容带有特殊字符(如空格)时需要加上单引号。变量内容中本身带有单引号则需要加双引号。
.bash_profile:该文件定义了用户的个人化路径与环境变量的文件名称每个用户都可使用该文件输入专属于自己的shell信息,当用户登錄时该文件仅仅执行一次。
.bashrc:该文件包含专属于自己的shell的bash信息当登录或每次打开新的shell时,该文件会被读取例如,你可以将用户自定義的别名或者自定义变量写到这个文件中
.bash_logout:当退出shell时,会执行该文件你可以将一些清理的工作放到这个文件中。
“*”、“”这两个符号属于通配符
\
:会将后面的特殊符号还原为普通字符
-d:后面跟分割字符分割字符要用单引号括起来
-c:后面接的是第几个字符
-f:后面接的是第几个区块
-n:表示使用纯数字排序。
-kn1n2:表示n1区间排序到n2区间,可以只写-kn1即对n1字段排序。
如果sort不加任何选项则从首字符向后依次按ASCII码徝进行比较,最后将它们按升序输出
-d:表示删除某个字符后面跟要删除的字符
-s:表示删除重复的字符
常用于把小写字母变成大写字母
替换、删除以及重复等操作都是针对一个字符串来讲,有一定的局限性针对字符串就不能使用了。
-b:表示依据大小来分割文档单位为byte
如果split不指定目标文件名,则会xaa、xab…这样的文件名来存取切割后的文件我们也可以指定文件名。
-l:表示依据行数来分割