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 ...
随机推荐
- token和session的区别及其发展史
其实token与session的问题是一种时间与空间的博弈问题, session是空间换时间,而token是时间换空间. 一.发展史 很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为 ...
- Install packages failed: Installing packages: error occurred. ------简单的问题常常会被忽略
用 pip install 安装了wxpy这个库,但是使用的时候却报错:ImportError: No module named wxpy 我先用 pip list 查看了一下,发现这个库是已经存在的 ...
- 通俗理解BiLSTM-CRF命名实体识别模型中的CRF层
虽然网上的文章对BiLSTM-CRF模型介绍的文章有很多,但是一般对CRF层的解读比较少. 于是决定,写一系列专门用来解读BiLSTM-CRF模型中的CRF层的文章. 我是用英文写的,发表在了gith ...
- Python爬虫之抓取豆瓣影评数据
脚本功能: 1.访问豆瓣最受欢迎影评页面(http://movie.douban.com/review/best/?start=0),抓取所有影评数据中的标题.作者.影片以及影评信息 2.将抓取的信息 ...
- 4412 Linux设备总线
总线_设备_驱动注册流程详解 注册流程图 • 设备一般都需要先注册,才能注册驱动– 现在越来越多的热拔插设备,反过来了.先注册驱动,设备来了再注册 设备 • 本节使用的命令– 查看总线的命令#ls / ...
- 学习React之前你需要知道的的JavaScript基础知识
在我的研讨会期间,更多的材料是关于JavaScript而不是React.其中大部分归结为JavaScript ES6以及功能和语法,但也包括三元运算符,语言中的简写版本,此对象,JavaScript内 ...
- js中打地鼠游戏
<!DOCTYPE html><html lang=""><head> <mata charset = "utf-8" ...
- 【转】 Linux 的目录详解 (Linux基础一)
前言 转自: http://c.biancheng.net/view/2833.html 进行了一些提炼和修改. 学习 Linux,不仅限于学习各种命令,了解整个 Linux 文件系统的目录结构以及各 ...
- 测开之路二十三:python常用模块
os模块 sys模块 hashlib shutil对文件和目录进行操作 random和随机相关 json
- Php邮件发送源码
好久冒写点东西了.....最近生活压抑的很....为生活而劳累,整理下邮件发送的实例了,网上也有很多,我这个也是提取整理好的,测试Ok,首页邮件类smtp_email_class.php如下:< ...