乐趣区

关于linux:shell-基础

1. 输入命令

echo [选项] [输入内容]

选项:
• -e:反对反斜线管制的字符转换(具体参见表 1)
• -n:勾销输入后行末的换行符号(内容输入后不换行)

2.shell 脚本的构造(个别为三局部)

(1)申明脚本中的语言:

#!/bin/bash

(2)申明脚本的性能
以 #结尾的语句都是正文
(3)脚本的主体

3. 运行形式(运行前需注意该对该文件是否有执行的权限)

(1)应用门路间接运行
(2)通过 bash 调用脚本

bash  文件门路

4. 给命令设置别名

(1)显示零碎中的命令别名

alias

(2)设置别名

alias 别名 ='原命令'

留神:设置别名后,原命令生效。且设置的别名在零碎中必须是不存在的。
应用命令设置的别名且在零碎未登记、重启前无效,须要长久失效,须要批改配置文件
(3)删除别名

unalias 原命令

5. 提取命令 grep

在文件中提取和匹配符合条件的所有字符串行

grep  [选项]  "搜寻内容"  文件名

选项:
• -A 数字:列出符合条件的行,并列出后续的 n 行;
• -B 数字:列出符合条件的行,并列出后面的 n 行;
• -c:统计找到的符合条件的字符串的次数;
• -i:疏忽大小写;
• -n:输入行号;
• -v:反向査找;
• –color=auto:搜寻出的关键字用色彩显示;

6. 管道符

用来连贯多条命令,但下一条命令的执行依赖于上一条命令的正确输入
“命令 1 | 命令 2”命令 2 只能解决命令 1 的正确输入后果

ls -a /etc/ | more  

7. bash 通配符

通配符 作 用

  • ? 匹配一个任意字符
  • * 匹配 0 个或任意多个任意字符,也就是能够匹配任何内容
  • [] 匹配中括号中任意一个字符。例如,[abc] 代表肯定匹配一个字符,或者是 a, 或者是 b, 或者是 c
  • [-] 匹配中括号中任意一个字符,- 代表一个范畴。例如,[a-z] 代表匹配一个小写字母
  • [^] 逻辑非,示意匹配不是中括号内的一个字符。例如,[^0-9] 代表匹配一个不是数字的字符

8. 单引号和双引号、反引号

单引号内的内容会当成字符串原样输入
双引号内的内容会思考非凡含意,比方 ”$”、”\”
如果须要调用命令的输入或者将命令的输入赋值给变量,则须要反引号,反引号等价于 $(命令),但为了防止反引号与单引号的混同,罕用的是 $(命令)代替反引号的应用

9. 圆括号与花括号

圆括号和花括号次要区别在于:
• () 执行一串命令时,须要从新开启一个子 Shell 来执行。
• {} 执行一串命令时,在以后 Shell 中执行。
• () 和 {} 都是把一串命令放田括号外面,并且命令之间用 ”;” 隔开。
• () 最初一条命令能够不必分号。
• {} 最初一条命令要用分号。
• {} 的第一条命令和左括号之间必须有一个空格。
• () 里的各命令不用和括号有空格。
• () 和 {} 中括号外面的某条命令的重定向只影响该命令,但括号外的重定向则会影响到括号里的所有命令。

其实在执行一串命令时,如果应用的是小括号,则这串命令所做的批改只在子 Shell 中失效,一旦命令执行完结,回到父 Shell 中,这个批改就会丟失;而如果应用的是大括号,则此串命令间接在父 Shell 中执行,命令执行完结后,批改仍然会失效。
父 shell 和子 shell 互不烦扰

10. 变量

(1)变量由字母、数字和下划线组成,不能够以数字结尾
(2)在 Bash 中,变量的默认类型是字符串类型,如需进行数值运算,必须进行另外指定:

如:a=1+2
echo $a
1+2 

(3)变量两边用“=”连贯,等号两边不能有空格
(4)变量叠加:
两种格局:”$ 变量名 ” 或 ${变量名}
(5)将命令的后果作为变量的值赋值给变量,须要应用 $()(不举荐应用反引号)
(6)环境变量倡议应用大写辨别

11. 用户自定义变量

(1)查问曾经设定的变量

set [选项]

选项:
• -u:如果设定此选项,则在调用未声明的变量时会报错(默认无任何提醒);
• -x:如果设定此选项,则在命令执行之前会先把命令输入一次;

(2)变量删除

Unset 变量名

12. 环境变量和自定义变量

环境变量是全局变量,而自定义变量是局部变量。如果将环境变量写入配置文件,则环境变量能够永恒存在,否则一旦 shell 终止,则环境变量也生效了
(1)环境变量的设置

Export  age="18"

(2)环境变量的查问

Set   查问所有变量
Env  仅查问环境变量  

(3)删除

Unset  变量名

13. bash 地位参数变量用法

ls   a.conf  b.conf  c.conf
// 则 $0 的值就是 ls 命令自身,$1,$2,$3 的值别离是 a.conf  b.conf  c.conf

地位参数变量 作 用

  • $n
    n 为数字,$0 代表命令自身,$1〜$9 代表第 1〜9 个参数,10 以上的参数须要用大括号蕴含,如 ${10}
  • $*
    这个变量代表命令行中所有的参数,把所有的参数看成一个整体
  • $@
    这个变量也代表命令行中所有的参数,不过 $@ 把每个参数区别对待
  • $#
    这个变量代表命令行中所有参数的个数

14. 预约义变量(已定义、不能更改的全局变量)

预约义变量 作 用

  • $?
    最初一次执行的命令的返回状态。如果这个变量的值为 0,则证实上一条命令正确执行;如果这 个变量的值为非 0 (具体是哪个数由命令本人来决定),则证实上一条命令执行谬误
  • $$
    以后过程的过程号(PID)

  • $!
    后盾运行的最初一个过程的过程号(PID)

15. 接管规范输出

Read【选项】【变量名】

选项:
• -p “ 提示信息 ”:在期待 read 输出时,输入提示信息;
• -t 秒数:read 命令会始终期待用户输出,应用此选项能够指定等待时间;
• -n 字符数:read 命令只接管指定的字符数就会执行;
• -s:暗藏输出的数据,实用于机密信息的输出;

read -n 1 -t 30 -p "Please select your gender[M/F]:" gender

提醒 ” 请抉择性别 ” 并期待 30 秒,把用户的输出保留到变量 gender 中
应用 ”-n 1″ 选项只接管一个输出字符就会执行(毋庸按回车键)

16. 数值运算

(1)应用 declare 申明变量类型

declare [+/-] [选项] 变量名

选项:
• -:给变量设定类型属性;
• +:勾销变量的类型属性;
• -a:将变量申明为数组型;
• -i:将变量申明为整数型(integer);
• -r:将变量申明为只读变量。留神,一旦设置为只读变量,既不能批改变量的值,也不能删除变量,甚至不能通过 +r 勾销只读属性;
• -x:将变量申明为环境变量;
• -p:显示指定变量的被申明的类型;

Name[0]="zhang san"
Name[1]="li ming"
Name[2]="xiao ming"
echo ${name}
// zhang san
echo ${name[*]}
// zhang san li ming xiao ming

(2)应用 expr 或 let 数值运算工具

Dd = $(expr $aa + $bb)

留神 + 号两边必须有空格,否则运算不执行

let  ee = $aa+$bb(举荐的运算办法)

(3)$((运算式))或者 $[运算式]

Gg=$[$aa+$bb]

17. 罕用运算符

优先级    运算符    说 明
-,+    单目负、单目正
!,~    逻辑非、按位取反或补码
*, /, %    乘、除、取模
+, -    加、减
<<, >>    按位左移、按位右移
<=, >=, <, >    小于或等于、大于或等于、小于、大于
== ,!=    等于、不等于
&    按位与
^    按位异或
|    按位或
&&    逻辑与
II    逻辑或
=,+=,•=,*=,/=,%=,&=, |=, <<=, >>=    赋值、运算且赋值
退出移动版