Linux学习笔记之认识与学习Bash
什么是shell:shell是一个翻译器,将所敲的命令翻译成CPU能理解的语言,之后CPU再去执行,CPU执行后返回给shell,shell再翻译成我们所能理解的语言并显示;终端并不是shell,而是建立了程序员与shell之间的桥梁。Linux中默认的shell为bash shell。
Windows下putty相当于Linux中的终端。其实shell是用来对核心发送指令的,核心收到指令后,就会控制相应的硬件。
为什么学习shell:命令行操作传输的速度快;大量的快捷键操作提高速度,Linux中通用。
本地变量:在某一个shell中定义的变量为本地变量,只能在本shell中使用
环境变量:会影响到所有的子shell
位置变量:在脚本文件中使用,相当于形参,例如下面的$1等等,而$0表示脚本的名字,$#表示参数的个数,$*表示所有的参数,${10}表示第10个参数,而$10表示$1+0,即第一个参数加上0。
命令别名与历史命令
命令别名设置:alias,unalias
历史命令:history(最多存储最近的1000条,可以通过更改变量HISTFILESIZE改变)
Bash Shell的操作环境
路径与命令查找顺序:执行顺序即为tpye –a 命令 显示的顺序
Bash的登陆与欢迎信息:/etc/issue,登陆前的显示信息 \d为当前信息
/etc/motd, 登陆后的信息
Bash的环境配置文件:login-shell 登陆所需要的shell
用户的环境变量配置.bash_profile
所有用户的环境变量/etc/profile
终端机的环境设置:stty,set
通配符与特殊符号:一对中括号[]匹配一个字符,出现在中括号里的都是匹配的,例如[a-z]表示匹配26个字母,-表示到,如果要匹配-,则需要转义\-;
?表示匹配一个字符(不论是什么);
[^]或者[!]表示否定中括号中的匹配项;
*表示匹配任意多个字符(不论是什么)。
输出重定向: 目标1 > 目标2;将目标1所输出的内容输出到目标2中,如果目标2未被创建,则先创建,如果目标2存在,则先清空目标2的内容,再输出。
目标1 >> 目标2 将目标1的输出内容追加到目标2的尾部
> and >> 只重定向正确的命令,即目标1为有效命令;
2> and 2>> 可以重定向错误的命令,即将错误输出重定向到目标2中, 如果目标1为有效输入,则不重定向到目标2,而是输出到屏幕上。
&> and &>> 无论目标1是否有效,全部重定向到目标2中。
输入重定向: 目标1 < 目标2 将目标2的内容输入到目标1的操作中
<< here文档,<<结束字段,则在文档中也要以结束字段结尾
命令执行的判断依据:;,&&,||
终端中同一个命令行中执行两个命令,则两个命令用”;”隔开,两个命令没有任何关系。Linux中有一个一个字符大小的容器来记录最近一次命令是否正确,查看该容器的值 echo $?,0表示正确,非0表示错误
命令1 && 命令2: 命令1为假则不执行命令2,其他则全部要执行
命令1 || 命令2 :命令1是真则不执行命令2,否则都执行。
管道: 命令1 | 命令2:命令1执行的结果是命令2执行的参数。
命令1 | tee xx | 命令2:命令1的结果通过管道使保存在xx中,再给命令2做参数,xx中只保存最后一次的结果,即新的会覆盖旧的,tee –a xx 则会再末尾进行追加。
xargs 一般用在不能使用管道时,find …| xargs ……
选取命令: Linux文件中的每行的每一部分大多以:隔开,可以通过cut命令查看某一文件的某一部分cut –d: –f2 files 表示通过指明分隔符:查看files的第2部分,其中:可以自定义
命令
cat /etc/shells 查看系统中有哪些shell,在终端敲shell的名字进行切换
echo $$ 查看开启shell的进程PID
type 命令名称 查看命令的来源(外部指令or bash内建指令)
type –t command 显示command为外部指令还是bash内建指令,并显示别名
type -p command 当command为外部指令时,显示完整文件名
type -a command 由PATH变量定义的路径中,显示含command的指令
export 显示所有的环境变量
env 查看当前shell环境下,所有环境变量与其内容
set 列举Bash中的所有自定义变量
一些系统的自定义变量
RANDOM 为(0~32767)随机数环境变量
COLUMNS 当前终端一行所能容纳的字符个数
LINES 目前终端所能容纳的行数
OSTYPE 操作系统的类型
MACHTYPE 安装的系统类型
PS1 命令提示字符
PS2 续行的提示符(默认为>)
$ 目前系统所使用的PID(线程代号 Process ID)
? 上一条指令执行的回传值(0表示正确,非0位错误命令)
cal 显示日历
date 显示日期
cal ; date 同一行敲多个命令,每两个命令间用”;”隔开
\ 可以另起一行敲命令,系统会认为下一行是上一行的延续
$变量名 引用变量;最佳的引用变量方式为${变量名}
unset 变量名 取消变量
变量名=值 本地变量
Declare 变量名 则变量的内容默认为字符串
declare +x 已定义变量 本地变量
declare +x 变量名=值 本地变量
export 变量名=值 环境变量
export 已定义的变量名 将该变量设定为环境变量
declare –x 变量名=值 环境变量
declare -r 变量名 设置变量为只读不可更改
export -p 显示所有的环境变量
su - 用户 切换到用户
Locale 查看系统语言编码
Locale -a 查看系统支持的所有语言编码(/usr/lib/locale/)
echo –n $变量名 不换行
read -p “*****” 变量名 显示为*****;变量名的值从键盘读取
数组名=(项1 项2 项3) 定义一个数组,内部元素用空格隔开
echo ${数组名[下标]} 显示数组中的第下标个元素
echo ${数组名[*]} 显示数组的所有元素,可以用@代替*
echo ${!数组名[*]} 查看所有元素的下标
echo ${#数组名[*]} 查看数组中元素的个数
readonly 变量名 设置变量为只读
ulimit -a 查看所有的大小限制
ulimit -相应的命令字 大小 设置相应选项的大小限制 (大小的单位为字节)
变量名1=${变量名2} 将变量2的值赋值给变量1
${变量名#*需要删除的字段} #表示从前往后删除,直到删除最近的一次关键字段
${变量名##*需要删除的字段} ##表示从前往后删除,直到删除最后一次的关键字段为止
${变量名%*需要删除的字段} %表示从后往前删除,删除最近的关键字段
${变量名%%*需要删除的字段} %%表示从后往前删除,删除最后一次的关键字段
变量1=${变量2-值} 如果变量2被定义过,则将变量2的值赋给变量1,否则将值赋给变量1
变量1=${变量2:-值} 如果变量2被定义了,并且变量2是一个空值则将值赋给变量1
变量1=${变量2:=值} 如果变量2未被定义或定义了其值为空,则将值赋给变量2,再赋给变量1;如果变量2定义了其值不为空则赋给变量1
变量1=${变量2:?值} 如果变量2未被定义或定义了其值为空,则显示为值的警告信息,并且变量1还是未被定义;如果变量2定义了且有值,则将该值赋给变量1
变量1=${变量2:+值} 如果变量2定义了且其值不为空,则将+后的值赋给变量1;否则就不赋值
Ifconfig eth0 查看网卡信息
alias aa=’ifconfig eth0’ 将aa设置为ifconfig eth0命令的别名
unalias aa 取消设置的别名aa
!+history序号 快速调用第序号个历史命令
History -c 清空历史命令
type -a 命令 显示的顺序即为执行顺序
ctrl+Alt+F5 进入非图形化界面
ctrl+Alt+F1 退出非图形化界面进入图形化界面
stty -a 显示终端 快捷键操作(^表示ctrl)
set -u 当引用变量未定义时,系统给出提示
set +u 关闭以上功能
set -x 系统跟踪用户操作,+号取消该功能(对脚本进行排错)
cal 2> files 1>&2 表示:正确的像错误的一样导入,即将日历重定向到file中
xxxxx > files 2>&1 错误的像正确的一样导入
grep 关键字 files 在files中查找含有关键字的行(Linux严格区分大小写)
grep 关键字 files –color 在上面的基础上,高亮显示关键字
grep –i 关键字 files 不区分大小写过滤关键字
grep –n 关键字 files 显示过滤行出现的行号
grep –v 关键字 files 反向过滤, 除了含有关键字的行
grep –A3 关键字 files 同时显示关键字所在行的下面的三行
grep –B3 关键字 files 上面三行
sort 按照字符的大小排序(默认从小到大)
sort -n 以数字的形式排序
sort -r 从大到小排序
sort -t: -K3 files 在files中指明分隔符:来对第三部分进行排序
sort -u 排出重复的行进行排序 = uniq命令
uniq -c files files中重复的次数
wc files 显示:行号l,单词数w,字符数c(每行后还有换行符)
ls -1 以行显示
tr ‘a-z’ ‘A-Z’ file 将file中的小写转换为大写显示,源文件不变
tr -d “:” files 删除files中的:号
tail -7 files 显示files的尾7行
col -x files 用空格键替换tab == expand命令
cat -A files 显示files中的不可打印字符(^I表示tab,$表示结束符)
paste file1 file2 将file1与file2按行进行组合
join file1 file2 按行组合,但是省略file2中与file1相同的第1部分,默认分隔符为空格,只组合第一部分相同时的行(默认第一部分)
join –t “:” -1 4 file1 -2 3 file2 比较file1的第四部分和file2的第三部分,以:作为分割符,进行组合,如果相同则组合,不同则不组合
split –b 10K files 关键字 将files按10k的大小进行分割,分割的文件以关键字名开头
cat 关键字* > files 将以关键字开头的文件组合成一个名为files的文件
split –l 10 files 关键字 按10行一个文件进行分割
Linux学习笔记之认识与学习Bash的更多相关文章
- [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- 【神经网络与深度学习】学习笔记:AlexNet&Imagenet学习笔记
学习笔记:AlexNet&Imagenet学习笔记 ImageNet(http://www.image-net.org)是李菲菲组的图像库,和WordNet 可以结合使用 (毕业于Caltec ...
- Vue学习笔记-Vue.js-2.X 学习(六)===>脚手架Vue-CLI(项目说明-Babel)
五 Vue学习-vue-cli脚手架学习(创建只选一个选项:Babel) 1. 项目目录说明 node_modules : 包管理文件夹 public : 静态资源 src : 源代码 gitign ...
- Vue学习笔记-Vue.js-2.X 学习(五)===>脚手架Vue-CLI(PyCharm)
Vue项目在pycharm中配置 退出运行: ctrl+c Vue学习笔记-Vue.js-2.X 学习(六)===>脚手架Vue-CLI(项目说明)
- Vue学习笔记-Vue.js-2.X 学习(四)===>脚手架Vue-CLI(基本工作和创建)
(五) 脚手架Vue-CLI 一 Vue-CLI前提(nodejs和webpack) 二 Vue学习-nodejs按装配置,Node.js 就是运行在服务端的 JavaScript. 1. 去nod ...
- Vue学习笔记-Vue.js-2.X 学习(三)===>组件化高级
(四) 组件化高级 1.插槽(slot)的基本使用 A:基本使用: <slot></slot> B:默认置:<slot><h1>中间可以放默认值< ...
- Vue学习笔记-Vue.js-2.X 学习(二)===>组件化开发
===重点重点开始 ========================== (三) 组件化开发 1.创建组件构造器: Vue.extends() 2.注册组件: Vue.component() 3.使用 ...
- Vue学习笔记-Vue.js-2.X 学习(一)===>基本知识学习
一 使用环境: windows 7 64位操作系统 二 IDE:VSCode/PyCharm 三 Vue.js官网: https://cn.vuejs.org/ 四 下载安装引用 方式1:直接 ...
- 跟着鸟哥学Linux系列笔记2-第10章VIM学习
跟着鸟哥学Linux系列笔记0-扫盲之概念 跟着鸟哥学Linux系列笔记0-如何解决问题 跟着鸟哥学Linux系列笔记1 常用的文本编辑器:Emacs, pico, nano, joe, vim VI ...
随机推荐
- ASP.NET Core中的依赖注入: 构造函数的选择与服务生命周期管理
ServiceProvider最终提供的服务实例都是根据对应的ServiceDescriptor创建的,对于一个具体的ServiceDescriptor对象来说,如果它的ImplementationI ...
- .net core 添加NLog
依赖项——右键——管理NuGet程序包——浏览——输入以下内容 Install-Package NLog.Extensions.Logging -Pre 在根目录下添加nlog.config 更改 ...
- ElasticSearch 单台服务器部署多个节点
转载:https://www.cnblogs.com/wxw16/p/6160186.html 一般情况下单台服务器只会部署一个ElasticSearch node,但是在学习过程中,很多情况下会需要 ...
- Facebook被指控通过其应用程序进行监视用户照片
Facebook被批使用其应用程序收集有关用户及其朋友的信息,其中包括一些尚未注册社交网络,阅读短信,跟踪其位置并在手机上查看照片的人. 有关大众监督的声称是前创业公司Six4Three对该公司提起的 ...
- Java数据流学习
数据流 与机器无关的操作Java基本数据类型.网络传输会用. DataInputStream 数据输入流允许应用程序以与机器无关的方式从底层输入流中读取Java基本数据类型.应用程序可以使用数据输出流 ...
- python基础:10.多线程装饰器模式下的单例模式
with def __enter__ def __close__ 闭包: 装饰器: 闭包的延迟绑定: 单例模式的应用:
- INSTR代替NOT LIKE
instr(title,'手册')>0 相当于 title like '%手册%' instr(title,'手册')=1 相当于 title like '手册%' instr(titl ...
- java基础复习(二)
一. 基本语法 如果一个源文件中什么内容都没有,编译会不会生成 字节码文件?不会 如果一个类中没有主方法(如下图),编译运行会怎么样?编译可以通过,但运行报错 : 没有主方法 主方法 : 是一个特殊的 ...
- Java序列化及反序列化
序列化概念: 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列的过程:而Java反序列化是指把字节序列恢复为Java对象的过程. 2.为什么需要序列化与反序列化 我们知道 ...
- 跨域AJAX
本篇主要讨论JSONP和CORS这两种技术,使用它们的原因是为了完成对资源的跨域访问,也就是如何绕过浏览器的同源策略Same-origin Policy. 那么什么是Same-origin Polic ...