Linux Shell 极简教程shell命令学习笔记

Shell-编程基础

2020-05-04  本文已影响0人  傻子般白痴

1、Shell概述

(1)Shell说明:
cd /etc/
cat shells
(2)ShellScript编写建议
(3)建议在 Script 档案中声明的东西

2、echo命令

man echo:

NAME
     echo -- write arguments to the standard output

SYNOPSIS
     echo [-n] [string ...]

DESCRIPTION
     The echo utility writes any specified operands, separated by single blank (` ') characters and followed by a newline (`\n') character, to the standard output.
     The following option is available:
     -n    Do not print the trailing newline character.  This may also be achieved by appending `\c' to the end of the string, as is done by iBCS2 compatible systems.  Note that this
           option as well as the effect of `\c' are implementation-defined in IEEE Std 1003.1-2001 (``POSIX.1'') as amended by Cor. 1-2002.  Applications aiming for maximum portabil-
           ity are strongly encouraged to use printf(1) to suppress the newline character.

     Some shells may provide a builtin echo command which is similar or identical to this utility.  Most notably, the builtin echo in sh(1) does not accept the -n option.  Consult the
     builtin(1) manual page.

EXIT STATUS
     The echo utility exits 0 on success, and >0 if an error occurs.

SEE ALSO
     builtin(1), csh(1), printf(1), sh(1)

转义说明:

\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\\ 插入\字符;
\nnn 插入nnn(八进制)所代表的ASCII字符;

3.shell 脚本样例开发

创建文件:

(1)创建Shell脚本文件
vim helloShell.sh
(2)定义bashbang
#!/bin/bash  
(3)脚本开发
echo hello shell 

执行方式:

chmod 755 helloShell.sh
./helloShell.sh
bash helloShell.sh

4、Bash基本功能

(1) history

说明:

语法:

history [选项] (参数)
    -c:清空当前历史命令;
    -a:将历史命令缓冲区中命令写入历史命令文件中;
    -r:将历史命令文件中的命令读入当前历史命令缓冲区;
    -w:将当前历史命令缓冲区命令写入历史命令文件中。

样例:

(2) 命令和文件的补全
(3) alias

说明:

语法:

alias [选项] (参数)
[选项]:
 -p:打印已经设置的命令别名。
[参数]:
格式为 命令别名=‘实际命令’   例如: alias  lt = 'ls -ltr' 

样例:

(4)bash 快捷键
快捷键 作用
ctrl+c 强制结束当前命令
Ctrl+A 把光标移动到命令行开头
ctrl+E 把光标移动到明亮行结尾
Ctrl+L 清屏 相当于 clear
ctrl+U 删除或者剪切光标之前的命令
ctrl+K 删除或者剪切光标之后的命令
ctrl+Y 粘贴 ctrl+u 或者 ctrl+K 之后的内容
ctrl+R 在历史命令中搜索
ctrl+Z 暂停,并放入后台
ctrl+S 暂停屏幕输出
Ctrl+Q 恢复屏幕输出
(5)、输入输出重定向
1) Bash的标准输入输出
操作设备 设备文件名 文件描述符 类型
键盘 /dev/stdin 0 标准输入
显示器 / dev/stout 1 标准输出
显示器 /dev/sterr 2 标准错处输出
2) 输出重定向
输出重定向
3)输入重定向

说明:

wc [选项] [文件名]
 选项
    -c 统计字节数
    -w 统计单词数
    -l 统计行数
(6)多命令顺序执行

说明:

执行符 格式 作用
cmdA ;cmdB ; cmdC 多个命令顺序执行,每个命令之间没有联系
&& cmdA && cmdB 当 cmdA 成功执行结束后,执行 cmdB;当 cmdA执行异常是,不会执行 cmdB
| cmdA || cmdB 当 cmdA 执行异常时,cmdB才会执行;当 cmdA执行正常时,cmdB不会执行

样例:

单分支if:如果ls执行成功输出yes,执行失败输出no  
ls && echo  yes || echo no  
(7)管道符
1)行提取命令 grep

说明:

grep [选项] "搜索内容" 文件名
[选项]:
 -A 数字 列出符合条件的行,并列出后续的n行
 -B 数字 列出符合条件的行,并列出前面的n行
 -c 统计符合条件的字符串的次数
 -i 忽略大小写
 -n 输出行号
 -v 反向查找
 --color=auto 搜索出的关键字用颜色显示

样例:

  • grep ls .bash_history
  • grep -A 3 "ls" .bash_history
  • grep --color=auto -A 3 "ls" .bash_history
  • grep -c "ls" .bash_history
2)搜索命令 find

用途: 在指定目录下查找文件
说明:

find path -option [-print] [-exec -ok |xargs |grep] [command {} \;]
path:要查找的目录路径
    ~ 表示$HOME目录
    . 表示当前目录
    / 表示根目录
-option:查找方式
   -name filename  #查找名为filename的文件
   -perm  #按执行权限来查找
   -user username  #按文件属主来查找
   -group groupname  #按组来查找
   -mtime  -n +n #按文件更改时间来查找,-n指n天以内,+n指n天以前
   -atime  -n +n #按文件访问时间来查找文件,-n指n天以内,+n指n天以前
   -ctime  -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
   -nogroup  #查无有效属组的文件
   -nouser   #查无有效属主的文件,即文件的属主在/etc/passwd中不存
   -type    b/d/c/p/l/f     #查是块设备、目录、字符设备、管道、符号链接、普通文件
   -size n[c]  #查长度为n块[或n字节]的文件
   -mount #查文件时不跨越文件系统mount点
   -follow  #如果遇到符号链接文件,就跟踪链接所指的文件
   -prune   #忽略某个目录
[-print] : 将结果作为标准输出
[-exec]: 对匹配到的文件执行shell命令
[-ok]: 对匹配到的文件执行 Shell 命令,执行之前会进行确认

样例:

3)find 与 grep的区别
(8)通配符
通配符 说明 样例
* 匹配0个或多个任意字符 a*b,a与b之间可以有任意长度的字符,也可以没有。
? 匹配一个任意字符 a?b,a与b之间必须但也只能存在一个字符,该字符可以是任意字符
[] 匹配[]中的任意单个字符 a[xyz]b,a与b之间必须但也只能存在一个字符,该字符只能是x或y或z
[! ] 匹配除list中的任意单个字符 a[!a-z]b,a与b之间必须但也只能存在一个字符,该字符不能是小写字母
[c1-c2] 匹配c1-c2间的任意单个字符 a[0-1]b,a与b之间必须但也只能存在一个字符,该字符只能是数字
{} 匹配{} 中的一个字符串 a{abc,xyz,opq}b,a与b之间必须但也只能存在一个字符串,字符串只能是abc或xyz或opq
(9)特殊字符
1) 说明
符号 作用
'' 单引号,被单引号包含的所有特殊字符都没有特殊含义
"" 双引号,在双引号内的特殊符号是没有特殊含义的,但是$,`, \例外
`` 反引号,反引号括起来的就是系统命令
$() 引用系统命令
() 用于一串命令执行时,回去子shell中执行
{} 异常命令执行时,{}中的命令会在当前 Shell 中执行
[] 用于变量测试
# 在 Shell 中,除BashBang 之外,其他情况下均代表注释
$ 用于调用变量的值
\ 转义符
2)$()和 ` `(反引号)

【参考文档】:

man.linuxde

上一篇下一篇

猜你喜欢

热点阅读