Linux学习08-认识与学习BASH

news2024/11/23 9:06:11

1 认识BASH

我们必须要通过Shell将我们输入的命令与内核沟通,好让内核可以控制硬件来正确无误地工作。

Bash shell的功能

历史命令:命令行按“上下键”就可以找到前/后一个输入的指令。

命令与文件补全功能:

  • [Tab] 接在一串指令的第一个字的后面,则为命令补全;
  • [Tab] 接在一串指令的第二个字以后时,则为“文件补齐”

命令别名设置功能:

  • alias lm='ls -al'

询指令是否为 Bash shell 的内置命令: type

[dmtsai@study ~]$ type [-tpa] name
选项与参数:
    :不加任何选项与参数时,type 会显示出 name 是外部指令还是 bash 内置指令
-t  :当加入 -t 参数时,type 会将 name 以下面这些字眼显示出他的意义:
      file    :表示为外部指令;
      alias   :表示该指令为命令别名所设置的名称;
      builtin :表示该指令为 bash 内置的指令功能;
-p  :如果后面接的 name 为外部指令时,才会显示完整文件名;
-a  :会由 PATH 变量定义的路径中,将所有含 name 的指令都列出来,包含 alias

2 Shell的变量功能

变量即可变的量。如设定一个x,换到别的地方依旧使用x,那么就是变量的方便之处。

变量的取用与设置:echo, 变量设置规则, unset

[dmtsai@study ~]$ echo $variable
[dmtsai@study ~]$ echo $PATH
[dmtsai@study ~]$ echo ${myname}
       <==这里并没有任何数据~因为这个变量尚未被设置
[dmtsai@study ~]$ myname=Roy
[dmtsai@study ~]$ echo ${myname}

环境变量的功能

环境变量可以帮我们达到很多功能~包括主文件夹的变换、提示字符的显示、可执行文件搜寻的路径。

列出目前的 shell 环境下的所有环境变量与其内容。
[dmtsai@study ~]$ env
HOSTNAME=study.centos.vbird    <== 这部主机的主机名称
TERM=xterm                     <== 这个终端机使用的环境是什么类型
SHELL=/bin/bash                <== 目前这个环境下,使用的 Shell 是哪一个程序?
HISTSIZE=1000                  <== “记录指令的笔数”在 CentOS 默认可记录 1000 笔
OLDPWD=/home/dmtsai            <== 上一个工作目录的所在
LC_ALL=en_US.utf8              <== 语系设置
USER=dmtsai                    <== 使用者的名称啊
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:
or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:
*.tar=01...                    <== 一些颜色显示
MAIL=/var/spool/mail/dmtsai    <== 这个使用者所取用的 mailbox 位置
PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/dmtsai/.local/bin:/home/dmtsai/bin
PWD=/home/dmtsai               <== 目前使用者所在的工作目录 (利用 pwd 取出!)
LANG=zh_TW.UTF-8               <== 这个与语系有关,下面会再介绍!
HOME=/home/dmtsai              <== 这个使用者的主文件夹啊!
LOGNAME=dmtsai                 <== 登陆者用来登陆的帐号名称
_=/usr/bin/env                 <== 上一次使用的指令的最后一个参数(或指令本身)

3 命令别名与历史命令

命令别名设置: alias, unalias

alias lm='ls -al | more'
alias rm='rm -i'
组合按键执行结果
Ctrl + C终止目前的命令
Ctrl + D输入结束 (EOF),例如邮件结束的时候;
Ctrl + M就是 Enter 啦!
Ctrl + S暂停屏幕的输出
Ctrl + Q恢复屏幕的输出
Ctrl + U在提示字符下,将整列命令删除
Ctrl + Z“暂停”目前的命令

 

符号内容
#注解符号:这个最常被使用在 script 当中,视为说明!在后的数据均不执行
\跳脱符号:将“特殊字符或万用字符”还原成一般字符
|管线 (pipe):分隔两个管线命令的界定(后两节介绍);
;连续指令下达分隔符号:连续性命令的界定 (注意!与管线命令并不相同)
~使用者的主文件夹
$取用变量前置字符:亦即是变量之前需要加的变量取代值
&工作控制 (job control):将指令变成背景下工作
!逻辑运算意义上的“非” not 的意思!
/目录符号:路径分隔的符号
>, >>数据流重导向:输出导向,分别是“取代”与“累加”
<, <<数据流重导向:输入导向 (这两个留待下节介绍)
' '单引号,不具有变量置换的功能 ($ 变为纯文本)
" "具有变量置换的功能! ($ 可保留相关功能)
` `两个“ ` ”中间为可以先执行的指令,亦可使用 $( )
( )在中间为子 shell 的起始与结束
{ }在中间为命令区块的组合

 4 数据重定向

  1. 标准输入  (stdin) :代码为 0 ,使用 < 或 << ;
  2. 标准输出  (stdout):代码为 1 ,使用 > 或 >> ;
  3. 标准错误输出(stderr):代码为 2 ,使用 2> 或 2>> ;
指令下达情况说明
cmd1 && cmd21. 若 cmd1 执行完毕且正确执行($?=0),则开始执行 cmd2。
2. 若 cmd1 执行完毕且为错误 ($?≠0),则 cmd2 不执行。
cmd1 || cmd21. 若 cmd1 执行完毕且正确执行($?=0),则 cmd2 不执行。
2. 若 cmd1 执行完毕且为错误 ($?≠0),则开始执行 cmd2。

 5 管线命令(pipe)

ls -al /etc | lessx

选取命令: cut, grep

[dmtsai@study ~]$ cut -d'分隔字符' -f fields <==用于有特定分隔字符
[dmtsai@study ~]$ cut -c 字符区间            <==用于排列整齐的讯息
选项与参数:
-d  :后面接分隔字符。与 -f 一起使用;
-f  :依据 -d 的分隔字符将一段讯息分区成为数段,用 -f 取出第几段的意思;
-c  :以字符 (characters) 的单位取出固定字符区间;
[dmtsai@study ~]$ grep [-acinv] [--color=auto] '搜寻字串' filename
选项与参数:
-a :将 binary 文件以 text 文件的方式搜寻数据
-c :计算找到 '搜寻字串' 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字串' 内容的那一行!
--color=auto :可以将找到的关键字部分加上颜色的显示喔!

范例一:将 last 当中,有出现 root 的那一行就取出来;
[dmtsai@study ~]$ last | grep 'root'

排序命令: sort, wc, uniq

[dmtsai@study ~]$ sort [-fbMnrtuk] [file or stdin]
选项与参数:
-f  :忽略大小写的差异,例如 A 与 a 视为编码相同;
-b  :忽略最前面的空白字符部分;
-M  :以月份的名字来排序,例如 JAN, DEC 等等的排序方法;
-n  :使用“纯数字”进行排序(默认是以文字体态来排序的);
-r  :反向排序;
-u  :就是 uniq ,相同的数据中,仅出现一行代表;
-t  :分隔符号,默认是用 [tab] 键来分隔;
-k  :以那个区间 (field) 来进行排序的意思

范例一:个人帐号都记录在 /etc/passwd 下,请将帐号进行排序。
[dmtsai@study ~]$ cat /etc/passwd | sort
[dmtsai@study ~]$ uniq [-ic]
选项与参数:
-i  :忽略大小写字符的不同;
-c  :进行计数

范例一:使用 last 将帐号列出,仅取出帐号栏,进行排序后仅取出一位;
[dmtsai@study ~]$ last | cut -d ' ' -f1 | sort | uniq
[dmtsai@study ~]$ wc [-lwm]
选项与参数:
-l  :仅列出行;
-w  :仅列出多少字(英文单字);
-m  :多少字符;

范例一:那个 /etc/man_db.conf 里面到底有多少相关字、行、字符数?
[dmtsai@study ~]$ cat /etc/man_db.conf | wc 

双向重导向: tee

[dmtsai@study ~]$ tee [-a] file
选项与参数:
-a  :以累加 (append) 的方式,将数据加入 file 当中!

[dmtsai@study ~]$ last | tee last.list | cut -d " " -f1
# 这个范例可以让我们将 last 的输出存一份到 last.list 文件中;

字符转换命令: tr, col, join, paste, expand

tr 可以用来删除一段信息当中的文字

[dmtsai@study ~]$ tr [-ds] SET1 ...
选项与参数:
-d  :删除讯息当中的 SET1 这个字串;
-s  :取代掉重复的字符!

范例一:将 last 输出的讯息中,所有的小写变成大写字符:
[dmtsai@study ~]$ last | tr '[a-z]' '[A-Z]'
[dmtsai@study ~]$ col [-xb]
选项与参数:
-x  :将 tab 键转换成对等的空白键

join合并数据

[dmtsai@study ~]$ join [-ti12] file1 file2
选项与参数:
-t  :join 默认以空白字符分隔数据,并且比对“第一个字段”的数据,
      如果两个文件相同,则将两笔数据联成一行,且第一个字段放在第一个!
-i  :忽略大小写的差异;
-1  :这个是数字的 1 ,代表“第一个文件要用那个字段来分析”的意思;
-2  :代表“第二个文件要用那个字段来分析”的意思。

paste 就直接“将两行贴在一起

[dmtsai@study ~]$ paste [-d] file1 file2
选项与参数:
-d  :后面可以接分隔字符。默认是以 [tab] 来分隔的!
-   :如果 file 部分写成 - ,表示来自 standard input 的数据的意思。
[dmtsai@study ~]$ expand [-t] file
选项与参数:
-t  :后面可以接数字。一般来说,一个 tab 按键可以用 8 个空白键取代。
      我们也可以自行定义一个 [tab] 按键代表多少个字符呢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/101634.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大学生学习网站哪里找?收好这15个网站

1.学堂在线 地址:https://www.xuetangx.com/ 这里面的课程都是精选&#xff0c;以北大清华为首的高校汇聚于此 2.中国大学生MOOC 地址:https://www.icourse163.org/ 不多说都是精品 3.网易公开课 地址:https://open.163.com/ 网易公开课汇集清华、北大、哈佛、耶鲁等世界名…

全景分割~

Hinton组提出基于大型全景掩码的实例分割框架&#xff0c;图像视频场景丝滑切换 全景分割是一项基本的视觉任务&#xff0c;该任务旨在为图像的每个像素指定语义标签和实例标签。语义标签描述每个像素的类别&#xff08;例如天空、竖直物体等&#xff09;&#xff0c;实例标签…

408 | 考前知识拾遗

计网 二、物理层 各种编码图像 数据交换方式——怎么算时间 VLAN每个VLAN都是一个广播域 三、数据链路层 差错控制&#xff1a;检错、纠错 停等、GBN、SR差别 随机访问 VLAN的考点 交换机&#xff1a;转发、自学习 四、网错层 路由协议/算法 ☆☆☆IPV4分组 1、网关配置、路由…

JVM——常量池

目录一、常量池二、运行时常量池三、intern方法 1.8四、intern方法 1.6五、StringTable 垃圾回收六、StringTable调优通过解决以下问题可以更深入了解字符串创建过程中的原理 一、常量池 二进制字节码的组成&#xff1a;类的基本信息、常量池、类的方法定义&#xff08;包含…

集合的框架体系和Collection接口

1.集合的理解和好处 前面我们保存多个数据使用的是数组&#xff0c;那么数组有不足的地方&#xff0c;我们分析一下 1.1数组 1)长度开始时必须指定&#xff0c;而且一旦指定&#xff0c;不能更改 2)保存的必须为同一类型的元素 3)使用数组进行增加/删除元素的示例代码-比较麻烦…

调试3D渲染和3D可视化的五个好处

建筑和建筑环境是我们日常生活中不可避免的一部分&#xff0c;直接影响我们和我们的福祉。它可以是我们的家、办公室、附近的教堂或城市的商业综合体;所有这一切的设计和规划都是建筑。然而&#xff0c;具有讽刺意味的是&#xff0c;建筑的交流往往并不具有包容性。例如&#x…

玩以太坊链上项目的必备技能(函数及其可见性和状态可变性-Solidity之旅十三)

状态变量可见性 在这之前的文章里&#xff0c;给出的例子中&#xff0c;声明的状态变量都修饰为public&#xff0c;因为我们将状态变量声明为public后&#xff0c;Solidity 编译器自动会为我们生成一个与状态变量同名的、且函数可见性为public的函数&#xff01; 在 Solidity…

ASP.NET Core 3.1系列(19)——EFCore中的添加实体操作

1、前言 前面介绍了EFCore中关于查询和执行原生SQL的操作&#xff0c;这篇博客就来介绍一下EFCore中添加实体的相关操作。关于添加实体&#xff0c;EFCore提供了多种方法供开发者使用。但EFCore中针对实体的一系列操作最终都会被转换成SQL&#xff0c;因此这些方法之间也存在着…

设计模式之模版方法模式

Template method design pattern 模版方法模式的概念、模版方法模式的结构、模版方法模式的优缺点、模版方法模式的使用场景、模版方法模式的实现示例、模版方法模式的源码分析 1、模版方法模式的概念 模版方法模式&#xff0c;即定义一个算法骨架&#xff0c;而将一些步骤延迟…

ARM——指令集仿真环境搭建

目录 一、ARM指令集仿真环境搭建 1.1指令和指令集 指令 指令集 1.2汇编的本质 汇编 C语言 1.3为什么学习汇编 1.4仿真 硬件仿真 软件仿真 1.5Keil 1.6环境搭建 1.7汇编工程创建 二、汇编 2.1汇编中的符号 2.2ARM指令集 2.3简单的ARM程序 一、ARM指令集仿真环境搭…

Cyanine5 NHS ester |分子量:616.19|分子式:C36H42ClN3O4

Cyanine5 NHS ester |分子量&#xff1a;616.19|分子式&#xff1a;C36H42ClN3O4 外观&#xff1a;暗蓝色粉末 分子量&#xff1a;616.19 分子式&#xff1a;C36H42ClN3O4 溶解性&#xff1a;易溶于有机溶剂&#xff08;DMF,DMSO和氯化物&#xff09;&#xff0c;难溶于水 …

Mob社会化分享集成ShareSDK

如何在项目已经集成 SMSSDK 的情况下集成 ShareSDk 到项目中&#xff0c;需要使用创建 module 的方式引入 ShareSDk&#xff0c;主要内容如下&#xff1a; 1.下载ShareSDK 2.引入 ShareSDK 3.创建 MainLibs Module 4.创建 OneKeyShare Module 5.在项目中引入 Module 6.配…

Unity Addressables资源管理 主设置面板

Addressables资源管理总目录 0.主设置菜单位置 位置1 位置2 1.Profiles 路径配置选项 这个是全局路径配置的选择 可以点击 Manager Profiles 打开路径配置面板 打包路径设置 2.Diagnostics 诊断设置 Send Profiler Events 打开这个选项&#xff0c;才能在Event Viewer窗口…

记录java枚举类在数据库、前后端交互时的序列化方式

实体类枚举属性持久化到数据库 1.EnumValue 2.配置 mybatis-plus:configuration:default-enum-type-handler: com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler 或 mybatis-plus:typeEnumsPackage: xxx 实体类中枚举属性自动转为EnumValue标记的属性值 从数据…

C++数学与算法系列之排列和组合

1. 前言 本文将聊聊排列和组合&#xff0c;排列组合是组合学最基本的概念&#xff0c;在程序运用中也至关重要。 排列问题&#xff1a;指从给定个数的元素中取出指定个数的元素进行排序。 组合问题&#xff1a;指从给定个数的元素中仅仅取出指定个数的元素&#xff0c;不排序…

Docker镜像

镜像是一种轻量级、可执行的独立软件包&#xff0c;它包含运行某个软件所需的所有内容&#xff0c;我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等)&#xff0c;这个打包好的运行环境就是image镜像文件。 只有通过这…

【设计模式】工厂方法模式Factory(Java)

文章目录1. 定义2. 类图3. Java实现案例3.1 抽象类&#xff1a;Pizza和PizzaStore3.2 具体披萨&#xff1a;北京两种上海两种共四种3.3 具体披萨店&#xff1a;北京店和上海店3.4 测试主方法1. 定义 工厂方法模式定义了一个创建对象的接口&#xff0c;但由子类决定要实例化的类…

基于JAVA的XX公司固定资产管理系统的设计与实现

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 本课题研究对象是中小企业财务管理系统&#xff0c;设计采用自己开发实践和所学知 识&#xff0c;系统部分主要分为以下…

汽车主机厂Adams/Car悬架动力学开发最全攻略

​​​​​​​一、写在前面 实际经历告诉我们&#xff0c;当我们接触一个新事物或学习一项新的技能时&#xff0c;入门往往是最为困难的&#xff0c;迷茫、彷徨、无助…… 正是基于同样的经历&#xff0c;在掌握Adams/Car软件的应用后&#xff0c;作者即开始构思如何将自己的…

论文投稿指南——中文核心期刊推荐(电工技术)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…