linux shell 基础
一、shell基础:
Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。我们遵守shell的语法编写脚本并传递给shell,shell帮我们解释成系统内核能识别的内容,内核再控制计算机硬件去执行这些脚本。
实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。
二、创建并执行shell脚本:
# 颜色打印输出 echo -e "\033[31m hello,world \033[0m"
执行脚本的方式:
1、bash解释执行:
bash hello.sh
2、脚本添加执行权限:
chmod 755 hello.sh # 加上执行权限 source hello.sh # 执行程序
命令的执行顺序:
1、命令路径>>>2、别名>>>3、bash路径下的命令>>>4、环境变量对应的命令
三、查看历史命令:
[root@iz2zecvcubpx381ej4viivz ~]# history 1 ls 2 who 3 user 4 users
1、清除历史命令:
[root@iz2zecvcubpx381ej4viivz ~]# history -c # 清除历史命令 [root@iz2zecvcubpx381ej4viivz ~]# history 1 history
2、保存命令到文件,默认保存在当前用户家目录的.bash_history
history -w # 保存到默认文件 history -w 1.txt # 保存到自定义文件
3、其他用法:
!! # 运行上一次执行的命令 ! num # 执行序号对应的命令 ! str # 执行最近一次以str开头的命令
四、命令别名:
# 打印设置的别名
[root@iz2zecvcubpx381ej4viivz ~]# alias alias cp='cp -i' alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto'
# 设置别名的规则
alias new_name='old_name'
配置别名系统生效:修改/etc/bashrc
配置别名当前账号生效:当前用户家目录修改.bashrc文件
五、输出重定向:
普通重定向:
命令 > 文件 # 覆盖的形式 命令 >> 文件 # 追加的形式
错误重定向:
命令 2> 文件 # 覆盖的形式
命令 2>> 文件 # 追加的形式
正确错误都输出:
命令 $> 文件
六、多命令执行规则和grep命令:
ls;ls # ;号连接多个命令,顺序执行,互不影响
ls&&ls # &&连接两个命令,前面执行成功,后面才会执行,换言之,前面执行失败,后面将不会执行
ls||ls # ||连接两个命令,前面的执行成功,后面的不会执行,换言之,只有前面的执行失败,后面的才会执行
1、grep命令及相关参数:
ls | grep 'ga' # 正常匹配
ls | grep -i 'Ga' # -i 忽略大小写
ls | grep -n 'ga' # -n 输出行号
ls | grep -E '[g,a]' # -E 可接正则表达式
ls | grep -v 'ga' # -v 反选
ls | grep -e 'g' -e 'a' # 使用多个匹配规则
2、stat命令查看文件或是目录的创建、修改和访问时间:
stat test2.txt
File: ‘test2.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd01h/64769d Inode: 262182 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2017-08-08 12:34:34.908631227 +0800 # 访问时间
Modify: 2017-08-08 12:34:34.908631227 +0800 # 修改时间
Change: 2017-08-08 12:34:34.908631227 +0800 # 创建时间
Birth: -
七、通配符和特殊字符:
1、常用的通配符及其含义:
? # 匹配任意一个字符
* # 匹配0到无数个字符
[] # 匹配中括号里的任意一个字符
[0-9] # 匹配范围内的一个字符
[^] # 匹配非中括号的内容
2、常见的特殊字符及其含义:
'' # 单引号,里面的内容不会有特殊的含义
"" # 双引号,里面的内容会有特殊的含义
$ # 调用变量
$() # 调用系统命令
# # 注释
\ # 转义