什么是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的更多相关文章

  1. [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  2. [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  3. 【神经网络与深度学习】学习笔记:AlexNet&Imagenet学习笔记

    学习笔记:AlexNet&Imagenet学习笔记 ImageNet(http://www.image-net.org)是李菲菲组的图像库,和WordNet 可以结合使用 (毕业于Caltec ...

  4. Vue学习笔记-Vue.js-2.X 学习(六)===>脚手架Vue-CLI(项目说明-Babel)

    五  Vue学习-vue-cli脚手架学习(创建只选一个选项:Babel) 1. 项目目录说明 node_modules : 包管理文件夹 public : 静态资源 src : 源代码 gitign ...

  5. Vue学习笔记-Vue.js-2.X 学习(五)===>脚手架Vue-CLI(PyCharm)

    Vue项目在pycharm中配置 退出运行: ctrl+c Vue学习笔记-Vue.js-2.X 学习(六)===>脚手架Vue-CLI(项目说明)

  6. Vue学习笔记-Vue.js-2.X 学习(四)===>脚手架Vue-CLI(基本工作和创建)

    (五) 脚手架Vue-CLI 一 Vue-CLI前提(nodejs和webpack) 二  Vue学习-nodejs按装配置,Node.js 就是运行在服务端的 JavaScript. 1. 去nod ...

  7. Vue学习笔记-Vue.js-2.X 学习(三)===>组件化高级

    (四) 组件化高级 1.插槽(slot)的基本使用 A:基本使用: <slot></slot> B:默认置:<slot><h1>中间可以放默认值< ...

  8. Vue学习笔记-Vue.js-2.X 学习(二)===>组件化开发

    ===重点重点开始 ========================== (三) 组件化开发 1.创建组件构造器: Vue.extends() 2.注册组件: Vue.component() 3.使用 ...

  9. Vue学习笔记-Vue.js-2.X 学习(一)===>基本知识学习

    一  使用环境: windows 7 64位操作系统 二  IDE:VSCode/PyCharm 三  Vue.js官网: https://cn.vuejs.org/ 四  下载安装引用 方式1:直接 ...

  10. 跟着鸟哥学Linux系列笔记2-第10章VIM学习

    跟着鸟哥学Linux系列笔记0-扫盲之概念 跟着鸟哥学Linux系列笔记0-如何解决问题 跟着鸟哥学Linux系列笔记1 常用的文本编辑器:Emacs, pico, nano, joe, vim VI ...

随机推荐

  1. HDU 6613 Squrirrel 树形dp

    题意:给你一颗树,你可以把这棵树上的一条边的边权变为0,现在让你选一个根,让所有点到这个点的最大距离尽量的小.如果有多个根的最大距离距离相同,输出编号最小的边. 思路:如果没有把边权变为0的操作,这个 ...

  2. find命令使用详解

    一.主要内容 ====================================== 1. 用文件名查找文件 2.用文件名查找文件,忽略大小写 3. 使用mindepth和maxdepth限定搜 ...

  3. gelera集群详解

    [MySQL]galera集群原理简介   特性 基于行复制的完全并行同步复制实时多主架构,任意节点可读写无延迟复制,事务零丢失,可靠健壮的读写体验.自动化节点关系控制:节点故障自动摘除,节点加入自动 ...

  4. IBM和DoE推出世界上最快的超级计算机

    IBM和美国能源部的橡树岭国家实验室今天发布了该部门最新的超级计算机Summit.IBM声称峰会目前是世界上“最强大,最聪明的科学超级计算机”,其峰值性能每秒高达20万亿次.当新的榜单在本月晚些时候发 ...

  5. python关于window文件写入后,换行默认\r\n的问题

    因为python兼容各种平台,所以当在window打开文本文件写入后,换行会默认写成\r\n linux是\n 如果想去掉换行的\r 解决方法:在open函数里写入换行要求即可 with open(f ...

  6. Linux批量新建文件夹(大括号表达式的应用)

    如果想要批量新建文件夹来存放照片,按照年份和月份,格式为YYYY-MM.可以使用下面命令批量新建: mkdir {2007..2009}-{01..12} 结果如下: 2007-01 2007-07 ...

  7. Install packages failed: Installing packages: error occurred. ------简单的问题常常会被忽略

    用 pip install 安装了wxpy这个库,但是使用的时候却报错:ImportError: No module named wxpy 我先用 pip list 查看了一下,发现这个库是已经存在的 ...

  8. JS中的getter和setter

    对象有两种属性:(1)数据属性,就是我们经常使用的属性(2)访问器属性,也称存取器属性 存取器属性就是一组获取和设置值的函数.getter负责获取值,它不带任何参数.setter负责设置值,在它的函数 ...

  9. BZOJ 2694: Lcm 莫比乌斯反演 + 积性函数 + 线性筛 + 卡常

    求 $\sum_{i=1}^{n}\sum_{j=1}^{m}lcm(i,j)\mu(gcd(i,j))^2$   $\Rightarrow \sum_{d=1}^{n}\mu(d)^2\sum_{i ...

  10. 【LeetCode 84】柱状图中最大的矩形

    题目链接 [题解] 维护一个单调递增的栈. 会发现栈内的第i个元素的前面一个(i-1)元素在原始的序列中的数字 都是要高于第i个元素的.(或者没有元素) 那么第i个元素往左最多可以扩展到第i-1个元素 ...