shell基础学习笔记1

2023-05-16

shell是什么?


shell是一个命令解释器,他为用户提供了一个向linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动、挂起、停止甚至编写一些程序。其实就是输入命令的那个交互界面

shell是一个强大的编程语言,易编写,易调试,灵活性强。shell是解释执行的脚本语言,shell中可以直接调用Linux系统的命令。

shell脚本的执行方式
echo输出命令
-> echo 'hello!'
hello!

-> echo "hello world!"
bash: !": event not found

-> echo 'hello world!'
hello world!

-> echo -e "ab\bcd" #-e可以识别转义字符
acd

-> echo -e "a\tb\tc\nd\te\tf"
a    b    c
d    e    f

#!/bin/ksh
#The first program
#Author L X
echo -e "Mr liu is the most honest man in SBell!"

-> chmod 777 hello.sh #赋予执行权限,直接运行
-> ./hello.sh
bash: ./hello.sh: /bin/Bash: bad interpreter: No such file or directory
-> vim hello.sh 
-> ./hello.sh
Mr liu is the most honest man in SBell!
-> ksh hello.sh  #通过ksh调用执行脚本
Mr liu is the most honest man in SBell!

echo [选项] [输出内容]        /输出命令

    -e    支持反斜线控制的字符转换;

控制字符

    \a    输出警告音;

    \b    退格键;

    \n    换行符;

    \r    回画键;

    \t    制表符,也就是TAB键;

    \v    垂直制表符;

    \0nnn    按照八进制ASCII码表输出字符。

    \xhh    按照十六进制ASCII码表输出字符。

echo -e "\e[1;31m 嫁人就要嫁凤姐 \e[0m"

    30m=黑色,31m=红色,32m=绿色,33m=黄色

    34m=蓝色,35m=洋红,36m=青色,37m=白色

赋予执行权限,直接运行

    chomd 755 hello.sh

    ./hello.sh

    bash hello.sh  可不赋予权限,直接运行;

 

取进程号

-> ps -aux|less #分页查看现在的进程
ps aux|grep vim #用grep命令来查找vim关键字
ps -aux|grep xiangl #查找xiangl的进程号
kill PID

后台
->firefox #这时敲ctrl+z 就可以暂停这个进程
->bg  #相当于敲firefox & 把这个进程放到后台去执行
ctrl+c就把当前命令结束了

如果一个进程占用了大量内存,导致整个系统都被占用了,这时我们可以使用
linux是同时运行着7个工作台的,这时敲ctrl+alt+f1就可以到达第一个工作台。在这里可以输入命令来杀死这个进程

Bash 的基本功能:


    别名与快捷键
    alias #查看系统中已经生效的别名
    alias ls='ls --color=auto' #auto添加颜色,never取消颜色
    
    alias l='ls -l --color=auto'
    
    vim ~/.bashrc #写入环境变量配置文件,就可以一直生效了。.bashrc文件每个用户的目录下都会有一个
    source .bashrc #可以让新加的别名立刻生效
    unalias 别名 #删除别名
    把加在.bashrc中的别名也要删除
    命令生效的顺序
    1)执行绝对路径或相对路径的命令
    2)执行别名
    3)执行Bash的内部命令
    4)执行按照$PATH 环境变量定义的目录查找顺序找到的第一个命令    echo $PATH查看
    
ctrl+c 强制终止当前命令
ctrl+l 清屏
ctrl+a 光标移动到行首
ctrl+e 光标移动到行尾
ctrl+u 从光标所在位置删除到行首
ctrl+z 把命令放到后台
ctrl+r 在历史命令中搜索

历史命令


history -c/w 历史命令保存文件
    -c:清空历史命令
    -w:把缓存中的历史命令写入历史命令保存文件 ~/.bash_history
在 vi /etc/profile 文件中修改HISTSIZE=1000来修改历史记录的保存条数

使用上下箭头也可以调用以前的历史命令
使用"!n"重复执行第n条命令
使用"!!"重复执行上一条命令
使用"!字串"重复执行最后一条以该字串开头的命令

命令和文件的补全:tab键

 

                 文件描述符
     键盘    /dev/stdin    0     标准输入
    显示器   /dev/stdout   1     标准正确输出
    显示器   /dev/stderr   2     标准错误输出

输出重定向 


   命令>文件             #以覆盖的方式,把命令的正确输出输出到指定文件或设备当中
   命令>>文件           #以追加的方式,把命令把命令的正确输出输出到指定文件或设备当中
   错误命令2>文件    #以覆盖的方式,把命令的输出输出到指定文件或设备当中
   错误命令2>>文件  #以追加的方式,把命令把命令的输出输出到指定文件或设备当中
正确输出和错误输出同时保存:


   命令>文件 2>&1     #以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中。
   命令>文件 2>>&1   #以追加的方式,把正确输出和错误输出都保存到同一个文件当中。
   命令&>文件            #以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中。
   命令&>>文件          #以追加的方式,把正确输出和错误输出都保存到同一个文件当中。
   命令>>文件1 2>>文件2 #把正确的输出追加到文件1中,把错误输出追加到文件2中。
   
   hahah >>test1.log 2>>test2.log
   
   #只要写错误输出>号与文件名之间不能有空格
   ls &>/dev/null  #linux的黑洞,相当于垃圾站
   
   
输入重定向:
命令<文件把文件作为命令的输入
命令<<标识符
...
标识符把标识符之间内容作为命令的输入

wc -c/w/l 文件名
    -c统计字节数
    -w统计单词数
    -l统计行数

也可以写成 cat 文件名 #对文件的字数、单词数、行数做统计


多命令顺序执行:


;    命令1;命令2 #多个命令顺序执行,命令之间没有任何逻辑关系
&&   命令1&&命令2 #逻辑与 当命令1正确执行,命令2才会执行。命令1执行不正确,命令2不会执行
||   命令1||命令2 #逻辑或  当命令1正确执行,命令2不会执行。命令1执行不正确,命令2才会执行

ls && echo yes || echo no #如果命令正确执行打印yes,错误执行就会输出no


管道符:|

netstat -an | grep ESTABLISHD #查看服务器处于连接状态的
netstat -an| grep CONNECTED |wc -l #数一下处于连接状态的有多少个?

shell中的特殊符号
通配符:
?  #匹配一个任意字符
*   #匹配0个或多个任意字符,也就是可以匹配任何内容
[]  #匹配中括号中任意一个字符。[abc]表示匹配或者a或者b或者c中的任意一个
[-] #匹配括号中任意一个字符,[a-z]代表一个范围
[^] #逻辑非,表示匹配不上中括号内的一个字符 [^0-9]代表匹配一个不是数字的字符

   [^0-9]*#代表匹配一个不是数字的字符的任意字符串
Bash中的其他符号
'' #单引号,在单引号中所有特殊符号,$和"" ``都没有特殊含义
"" #双引号。在双引号中特殊符号都没有特殊含义但  $ ` \除外
`` #反引号括起来的内容是系统命令,在Bash中它会先执行,和$()作用一样
$()#用来引用系统命令
# 代表注释
$ #用于调用变量的值,如果变量有name时,需要$name的方式得到变量的值。
\  #转义字符   \$符号将不当作变量的引用


-> a=123345
-> echo a
a
-> echo $a
123345
-> echo '$a'
$a
-> echo "$a"
123345


-> bb=$(ls) #将命令ls运行的结果赋值配变量bb
-> echo $bb #$是调用变量的值
bec_pss8sim cmatrix-1.2a code congdx.log hello.sh killsimlc log1 log2 m2 m2.tar.gz

-> da=$(date)

-> echo "$da"
n Sep 10 16:00:36 CST 2018

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

shell基础学习笔记1 的相关文章

  • 指向一维数组的指针学习笔记

    main int a 61 2 4 6 8 10 y 61 1 x p p 61 amp a 1 for x 61 0 x lt 3 x 43 43 y 43 61 p 43 x 1 43 4 43 6 43 8 printf 34 y 6
  • 生日快乐音乐小程序

    include 34 iostream 34 include 34 time h 34 include lt windows h gt include lt stdio h gt include lt conio h gt using na
  • c语言之指向字符串的指针学习笔记

    一 指向字符串的指针 1 xff1a 什么是字符串 xff1f 用双引号括起来的0个或多个字符 34 123 34 2 xff1a 字符串的结束符号 39 0 39 39 0 39 它是一个字符 xff0c 不是一个字符串 3 xff1a
  • 指向函数的指针与指针数组学习笔记

    指向函数的指针 1 char p 指向字符串的指针 2 int p 指向整型变量的指针 3 int a 4 61 1 2 3 4 p 61 a 指向一维数组的指针 4 int a 3 4 61 p 4 61 a 指向二维数组的指针 5 指针
  • makefile

    目录 一 Makefile简介 1 make解决的问题 xff1a 1 大量代码的关系维护 2 减少重复编译时间 二 Makefile文件命名规则 三 Makefile语法规则 1 Makefile基本规则三要素 xff1a 1 xff09
  • c语言之宏学习笔记

    宏 宏 什么是宏 xff1f 1 用一个字符串表示有意义的常量或常量表达式被称为宏 2 使用宏可以增加程序的灵活性 3 宏为了区分变量一般用大写字母 xff0c 也可以用小写字母 4 宏不是语句 xff0c 所以在定义宏的时候不要加分号 x
  • 一道有趣的数学题

    爱因斯坦曾出过这样一道有趣的数学题 xff1a 有一个长阶梯 xff0c 若每步上2 阶 xff0c 最后剩1阶 xff1b 若每步上3阶 xff0c 最后剩2阶 xff1b 若每步上5阶 xff0c 最后剩4阶 xff1b 若每步上6阶
  • c语言之文件学习

    文件是相关信息的集合 文字信息 声音信息 图形信息 文件的取名 xff1a 主文件名 扩展名 文件的分类 xff1a xff08 c 程序中 xff09 A xff1a 文本文件 B xff1a 二进制文件 xff08 data xff09
  • 翻转c风格的字符串

    这里的字符串是c风格的字符串 以 39 0 39 结尾 include lt stdio h gt using namespace std void reverse string 01 char void reverse string 02
  • 交换两个字符串

    swap char p1 char p2 char p p 61 p1 p1 61 p2 p2 61 p void main char str1 61 34 12345 34 char str2 61 34 ABCDEFG 34 char
  • 翻转句子中单词的顺序

    include 34 stdafx h 34 include 34 iostream 34 include lt windows h gt include lt stdlib h gt include lt stdio h gt using
  • 常用的vi/vim命令

    转载自 xff1a https blog csdn net wang907553141 article details 78846784 常用的vi vim命令 xff1a vi命令 xff1a yy xff1a 复制 光标所在的这一行 n
  • sql中limit使用方法

    sql中limit使用方法 此处以mysql为例 xff0c 但是我相信物以变通在oracle上也一定适用 1 下面是几种limit的方法 xff1a 原则看看下面几个例子应该就懂了 在数据库中很多地方都会用到 xff0c 比如当你数据库查
  • 数据库sql的优化问题的面试题

    想一下这个道面试题怎么做 有一张user表有1000万条数据 xff0c 请为下面的sql提供优化建议 xff1f 字段分别为 xff1a 主键id xff0c 用户id xff0c 姓名 xff0c 性别 select from user
  • 日期加一天的函数

    bool isLeapYear int year if year 4 61 61 0 amp amp year 100 61 0 year 400 61 61 0 判断闰年 return true return false void add
  • SpringAOP简单案例

    简介 本文是一个老师在学校给学生上课的简单案例 xff0c 介绍了AOP的五个通知的使用 xff0c 以及通知的执行顺序 通过自定义注解来充当切入点 xff0c 获取注解的类型分别对不同的老师做对应的业务处理 代码中的消息响应体 xff08
  • 学习 shell脚本之前的基础知识

    转载自http www 92csz com study linux 12 htm 日常的linux系统管理工作中必不可少的就是shell脚本 xff0c 如果不会写shell脚本 xff0c 那么你就不算一个合格的管理员 目前很多单位在招聘
  • Linux入门教程

    http www 92csz com study linux 发现这个写的不错 xff0c 作为小白入门非常棒 xff01
  • c与c++的区别

    相同 xff1a C 43 43 是在C语言的基础上改进的 xff0c C语言的很多语法在 C 43 43 中依然广泛使用 xff0c 例如 xff1a C 43 43 仍然使用 char short int long float doub
  • 多线程--线程管理

    说到多线程编程 xff0c 那么就不得不提并行和并发 xff0c 多线程是实现并发 xff08 并行 xff09 的一种手段 并行是指两个或多个独立的操作同时进行 注意这里是同时进行 xff0c 区别于并发 xff0c 在一个时间段内执行多

随机推荐

  • 选择排序和冒泡排序

    void select sort int a int n 选择排序 选择排序 xff0c 每次选择最小的放在第一个位置 xff0c 然后下次从第二个位置开始 for i 61 0 i lt n 1 43 43 i j 61 i 给下标放在一
  • 数据库面试题

    1 数据库系统的核心是 A 数据模型B 数据库管理系统C 软件工具D 数据库 2 下列叙述中正确的是 A 数据库是一个独立的系统 xff0c 不需要操作系统的支持 B 数据库设计是指设计数据库管理系统 C 数据库技术的根本目标是要解决数据共
  • 什么是shell?

    操作系统与外部最主要的接口就叫做shell shell是操作系统最外面的一层 shell管理你与操作系统之间的交互 等待你输入 xff0c 向操作系统解释你的输入 xff0c 并且处理各种各样的操作系统的输出结果 shell提供了你与操作系
  • 《心流》——每天十分钟,解读完本书

    心流 每天十分钟 xff0c 解读完本书 你好 xff01 这里是 每天十分钟 xff0c 解读完本书 xff0c 我是财哥哥 xff0c 今天为你解读的是 心流 xff0c 作者是米哈里 契克森米哈赖 他是积极心理体验这一领域的权威学者
  • SourceInsight4.0的使用

    转自 xff1a https blog csdn net qq 39660930 article details 77499455 一 项目管理 1 新建一个项目 快捷键Alt 43 Shift 43 N可以打开新建项目对话框 xff0c
  • 输入一个英文句子,翻转句子中的单词,要求单词内的字符顺序不变。 如:I am a student. 转换成 student. a am I

    输入一个英文句子 xff0c 翻转句子中的单词 xff0c 要求单词内的字符顺序不变 如 xff1a I am a student 转换成 student a am I 算法分析 xff1a 1 通过ReverseString xff08
  • OpenMLDB开源社区贡献者体系今日发布

    关于OpenMLDB OpenMLDB 是一个开源机器学习数据库 xff0c 提供企业级 FeatureOps 全栈解决方案 OpenMLDB 致力于闭环解决 AI 工程化落地的数据治理难题 xff0c 并且已经在上百个企业级人工智能场景中
  • 排序算法

    影响排序算法性能的几个要素 xff1a 1 时间性能 2 辅助空间 3 算法的复杂性 直接插入排序算法的基本操作是将一个记录插入到已经排好序的有序表中 xff0c 从而得到一个新的 xff0c 记录数增加一的有序表 void InsertS
  • c语言常用小知识点总结1

    define 用来定义宏常量 格式 xff1a define 标识符 大写字母 常量 define PI 3 14 注意后面是不加 分号的 常用字母的ASCII码 39 a 39 61 97 39 A 39 61 65 39 0 39 61
  • 数据结构学习笔记1

    程序设计 61 数据结构 43 算法 谈谈算法 数据结构与算法是 好基友 xff0c 如果单独谈数据结构 xff0c 或者单独谈算法是没什么意义的 来一个牛叉的算法吧 xff01 计算1 43 2 43 3 43 4 43 100 xff0
  • Oracle面试题附带答案

    1 你要对操纵Oracle数据库中的数据 下列哪个选项表示Oracle中select语句的功能 xff0c 并且不需要使用子查询 xff08 C xff09 A xff0e 可以用select语句改变Oracle中的数据 B xff0e 可
  • C结构体中数据的内存对齐问题

    转自 xff1a http www cnblogs com qwcbeyond archive 2012 05 08 2490897 html 32位机一般默认4字节对齐 xff08 32位机机器字长4字节 xff09 xff0c 64位机
  • 解决codeblocks无法调试的问题

    错误提示 xff1a ERROR You need to specify a debugger program in the debuggers 39 s settings For MinGW compilers it 39 s 39 gd
  • 求出现在字符串1而没有出现在字符串2中的字符

    编写一个函数 xff0c 它的功能是将未在字符串s中出现 xff0c 而在字符串t中出现的字符 xff0c 型参一个新的字符串放在u中 xff0c u中的字符按原字符的顺序排列 xff0c 但要去掉重复字符 至少会想到去考察t xff0c
  • 什么情况下需要建立索引? 索引的作用?为什么能够提高查询速度?(索引的原理) 索引有什么副作用吗?

    https www cnblogs com Berryxiong p 6249427 html 为什么能够提高查询速度 xff1f 索引就是通过事先排好序 xff0c 从而在查找时可以应用二分查找等高效率的算法 一般的顺序查找 xff0c
  • 100w测试数据,为什么加了索引查询反而变慢了?

    建表 xff1a create table tb test fval varchar 50 插入测试数据 xff1a DELIMITER CREATE DEFINER 61 96 root 96 64 96 localhost 96 PRO
  • linux环境下使用gdb调试c和c++ 学习笔记

    第二十三课 xff1a GDB简介 哔哩哔哩 bilibili gdb调试 xff1a 1 gcc a c b c c c o app g g 编译器会保留函数名和变量名 2 启动gdb gdb 可执行程序的名字 xff08 gdb app
  • ubuntu下eth0网卡信息不见了

    ubuntu终端下命令ifconfig的问题解决 问题一 ifconfig之后只显示lo 没有看到eth0 问题二 ifconfig之后显示eth0 xff0c 但是没有显示静态IP地址 xff0c 即无inet 地址 广播 掩码 问题三
  • 计算机指令

    指令系统的设计原则包括 xff1a 完备性 xff1a 该有的都要有 有效性 xff1a 简洁 加速常用操作 没有歧义 规整性 xff1a 对称 均匀 一致 xff08 简单源于规整 xff09 兼容性 xff1a 之前 之后的都能用 下面
  • shell基础学习笔记1

    shell是什么 xff1f shell是一个命令解释器 xff0c 他为用户提供了一个向linux内核发送请求以便运行程序的界面系统级程序 xff0c 用户可以用shell来启动 挂起 停止甚至编写一些程序 其实就是输入命令的那个交互界面