朗科实习期间心得笔记(四)
SHELL:
用户与操作系统之间完成交互式操作的一个接口程序,为用户提供简化了的操作。
上世纪70年代中期,Bell实验室,由bourne开发,bourne shell,简称sh;
Bill joy:创建 C shell ,简称csh;衍生版:tcsh
David korn :开发了korn shell 简称为ksh
GNU:开发 bourne again shell,简称 bash(linux系统中默认的shell程序)
zsh:最终shell,功能非常强大;
当前系统中所有可以支持的安全shell:/etc/shells
(注意:1.除了/sbin/nologin之外,其他的shell都可以用来测试使用
2.在更换shell时,最好在bash中更换其他shell,如果已经换成了其他shell,就使用exit命令返回至bash,再行切换)
在命令前加\意味着用命令本身,而非其所指向的命令。(例cp=cp -i \cp 就是用cp本身)
Bash特性:
一、命令的别名----(自定义命令)
alias :定义或显示别名
alias [-p] [名称[=值] ... ]
注意:如果alias命令不带任何选项参数,则表示显示所有已经定义并生效的别名设置。
# alias ALIAS=”COMMAND[OPTION]...[ARGUMENT]...”
unalias :从别名定义列表中删除每一个“名字”。
格式:unalias [-a] 名称[名称 ...]
注意:无论使用alias命令还是unalias命令,其功能都会立即生效;此二命令的生命周期仅为当前shell的生命期,一旦注销登陆,相当于关闭了bash,则使用alias命令定义的别名或unalias命令删除的别名操作会立即失效。
当自定义的命令已存在的情况下,优先执行自定义命令
对于每个用户来说,都有一个私有的bash的配置文件,就在用户的家目录中的一个隐藏文件,文件名为.bashrc;其主要功能就是用来保存命令的别名的定义。
注意:在对于此文件中的命令别名进行编辑并保存之后,在当前已经运行的bash中并不会立即生效,需要重新加载此文件在能是配置生效,以下两种操作皆可实现。
1.source=. 命令---执行文件中定义的命令。
2.重启bash:注销之后再次登陆即可。
source/. 命令:在当前 shell 中执行一个文件中的命令。
格式:. /source 文件名 [参数]
二、bash的快捷键
C:表示ctrl键
M:表示alt键
E:表示ESC键
DEL:表示backspace键
C-l:清屏,相当于clear命令;
C-a:将光标跳转至命令行编辑模式的行首;
C-e:将光标跳转至命令行编辑模式的行尾;
C-k:删除命令行编辑模式的光标所在位置至行尾的内容;
C-u:删除命令行编辑模式的光标所在位置至行首的内容;
C-c:结束前台进程;
M-.:引用上一个命令中的最后一个参数;(在Xshell中不管用)
E,.(按ESC松手后按点):功能同上;
三、命令历史:
Bash进程会保存其会话中的用户曾经执行过的命令,以方便用户重复执行某个命令操作;
命令历史包括两个方面:
1.用户曾经执行过的命令;
2.用户曾经执行过的命令的路径;
在bash中有一个内置的变量--PATH,PATH变量的值为当前系统中所有的命令的文件所在的路径的集合;
命令是如何被bash执行的?
bash会将命令行的内容按照空白字符进行切片,分析第一个切片内容:
1.判断第一个切片内容是内部命令还是外部命令,如果是内部命令则直接运行,如果是外部命令,先找hash表中的路径缓存,如果有则直接执行,否则需要通过查找PATH变量中所包含的路径中,是否有对应名称的文件;
使用hash命令查看被记住的命令文件的路径;
-r:清空hash表
使用history命令查看被记住的命令的命令行参数;
history:现实或操纵历史列表
-c:清空历史缓冲区中的命令历史纪录
-d+ OFFSET:删除指定的历史命令条目
重复执行历史缓冲区中的命令:
!- NUMBER:重复执行历史缓冲区中编号为“NUMBER”的命令
!-STRING:重复执行理事缓冲区中以“STRING”开头的最后一次执行过的命令;
!?+STRING:重复执行历史缓冲区中包含了“STRING”的最后一次执行过的命令;
!-NUMBER:重复执行历史缓冲区中倒数第“NUMBER”条命令;
使用上、下Arrow可以从历史缓冲区中调用命令,回车后执行;
C-r:在历史缓冲区中实施搜索,回车之后执行;
!$:在历史缓冲区中调用最后一个命令的最后一个参数;
!^:在历史缓冲区中调用最后一个命令的第一个位置的参数;
!:NUMBER:历史缓冲区中调用最后一个命令的第NUMBER位置的参数;
!SEQUENCE:NUMBER:历史缓冲区中调用第SEQUENCE条命令的第NUMBER位置的参数;
在bash中与命令历史相关的内置变量:
HISTSIZE:历史缓冲区中能够保存的命令历史的最大条目数量;默认是1000;
HISTFILESIZE:在用户的家目录下面~/.bash_history文件中能够保存的命令历史的最大条目数量,默认为1000;
HISTTIMEFORMAT:在命令历史缓冲区中记录历史命令时,同时记录命令的执行时间戳标记;可以使用date命令的FORMAT来表示时间的记录格式;默认为空;
HISTCONTROL:控制命令历史的记录方式;
Ignoredups:连续且相同的命令不会被记录到历史缓冲区;此为默认值;
Ignorespace:以空白字符开头的命令不会被记录到历史缓冲区;
Ignoreboth:上述两种情况都不会被记录到历史缓冲区;
四、命令补全(TAB键的使用)
包括两个方面的内容:
1.构成命令字符串的补全;
参考PATH变量中的路径,对命令进行补全;
如果给出的字符串在PATH变量对应的路径中是唯一的,则直接补全命令;
如果给出的字符串在PATH变量对应的路径中不唯一,则bash给出提示;
2.命令中参数所对应的字符串补全;
根据给出的路径进行补全:
如果给出的字符串在给出的路径中是唯一的,则直接补全命令;
如果给出的字符串在给出的路径中不唯一,则bash给出提示;
五、命令行展开
1.~展开:
~:bash会自动将其展开为当前登录用户的家目录;
~STRING:bash会自动将其展开为以STRING为用户名的用户的家目录;
~+:调用bash的内置变量PWD的值;
~-:调用bash的内置变量OLDPWD的值;
2.{}展开:
在“{}”中,可以填充一个以“,”分隔的路径列表,bash会将其展开为多个独立的路径;
示例: ~]# mkdir -pv /china/{a,b,c}/{d,e,f}
mkdir: 已创建目录 "/china"
mkdir: 已创建目录 "/china/a"
mkdir: 已创建目录 "/china/a/d"
mkdir: 已创建目录 "/china/a/e"
mkdir: 已创建目录 "/china/a/f"
mkdir: 已创建目录 "/china/b"
mkdir: 已创建目录 "/china/b/d"
mkdir: 已创建目录 "/china/b/e"
mkdir: 已创建目录 "/china/b/f"
mkdir: 已创建目录 "/china/c"
mkdir: 已创建目录 "/china/c/d"
mkdir: 已创建目录 "/china/c/e"
mkdir: 已创建目录 "/china/c/f"
六、命令执行结果
在bash中,命令的执行结果有两种:
1.执行命令的输出结果;
根据用户的需求获取到的命令执行的正常输出结果;
命令引用/命令替换:
``相当于$()
``:反向单引号,引用命令执行的输出结果;
2.执行命令的状态返回值;
与此前的一个命令是否成功执行相关的返回内容;
bash使用一个特殊的内置变量来保存其内容:$?
$?:实际上保存的是一个数值,其取值范围:0-255
其中:0:表示命令执行成功 1-255:表示命令执行失败
1,2,127:是bash中内置的命令执行失败的状态返回值
1:表示小问题
2:表示严重问题
127:表示命令本身出现的问题
其它数字:表示用户可以自定义的失败状态返回值
七、引用功能
``:强引用
凡是被单引号引用的内容,bash在处理时,一律视其为普通字符,即使其本身是bash定义的具有特殊功能和作用字符亦是如此,但单引号本身除外;
“”:弱引用
被双引号所引用的内容中,有些特殊字符仍然会保留其特殊含义,如:$,\其他的都视为普通字符。
八、转义功能
\:bash所定义的转义字符,大多数情况下\只能将其后面一个字符转义;
\COMMAND:取消定义过的命令别名,而使用其本身的功能;
九、Globbing---文件名通配符,简称为glob;
*:匹配任意长度的任意字符或字符串;(某些特殊位置的 . 字符不能匹配)
?:匹配任意的单个字符;(某些特殊位置的 . 字符不能匹配)
[ ]:匹配指定范围内的任意单个字符,必须匹配且只能匹配一个字符;
指定范围的方法:
1.枚举法:列出所有有效字符
2.范围指令:
[0-9]:表示所有的单个的十进制数字;
[a-z]:a,A,b,B,......y,Y,z 不包括Z
[A-Z]:A,B,b,......y,Y,z,Z 不包括a
3.bash内建字符集:
[:lower:]:所有的小写字母
[:upper:]:所有的大写字母
[:alpha:]:所有字母,包括大小写
[:digit:]:所有单个的十进制数字
[:alnum:]:所有的字母和十进制数字
[:punct:]:所有的符号
[:space:]:表示空白字符,包括空格和制表符;
4.反向匹配
^:取反,^a表示除了a之外其他字符;
注意:当 中括号 中有 托字符 表示字符集取反向匹配是,要注意 * 的使用,因为 * 的通配范围可能会导致反向匹配失败;此类失败是因为bash的globbing是在贪婪模式下匹配的;
十、管道
| 管道符号通常是用来连接多个命令的:将管道符号前面的命令的执行的输出结果通过管道传递给管道符号后面的命令,让后面的命令将前面的命令的输出结果当作参数使用;
wc命令
输出文件中的行数、单词数、字节数
格式: wc [选项列表]... [文件名列表]...
-c, --bytes, :仅显示文件中的字节数
-m, --chars:仅显示文件中有效字符的数量
-l, --lines:仅显示文件的行数
-w, --words:仅显示文件中字的数量
注意:
1.一般来讲,凡是被管道连接的命令,都应该能够在执行成功之后完成命令结果的输出,否则管道无意义;
2.管道不是万能的,有些场合没办法是用管道;
十一、输入输出重定向
在使用计算机的时候,实现某个功能的主体是程序!
程序=指令+数据
数据至关重要!
文件:IO---输入和输出(input/output)
在linu系统中,能够完成输入和输出功能的实体:文件
可以用于输入的设备:文件
键盘设备、文件系统中的常规文件、网卡设备、声卡设备、磁盘设备等;
可以用于输出的设备:文件
显示器、文件系统中的常规文件、网卡设备、声卡设备、磁盘设备等;
在内存中使用文件的方式是定义文件描述符,一个文件描述符就对应一个文件;
0:表示标准输入,记为 stdin,从键盘实现的输入数据流
1:表示标准输出,记为stdout,到显示器的输出数据流
2:表示标准错误,记为stderr,到显示器的错误数据流
输入输出重定向(IO重定向):
采用非标准设备文件实现的IO操作;
输入重定向:
< :
输出重定向:
>:覆盖输出重定向
~]# set -C :开启防止意外覆盖原文件开关,可以使用 >| 来完成覆盖重定向输出,而无需关心是否开启此开关;
~]# set +C :关闭防止意外覆盖原文件开关
>>:追加输出重定向
错误重定向:
2>:覆盖错误重定向
2>>:追加错误重定向
合并标准输出和标准错误的重定向:
1.COMMAND{>|>>} /PATH/TO/SOMEFILE 2>&1
2.&>(覆盖),&>>(追加)
特殊的设备文件:/dev/null: biackhole,bitbucket(位桶)----相当于回收站
/dev/zero:泡泡机,吐零机
bash中的其他特殊符号:
<<:here document ,此处文档,结束标记;
<<<:here string ,此处字符串,结束标记;
转载于:https://blog.51cto.com/holmes975/1976241
朗科实习期间心得笔记(四)相关推荐
- 朗科实习期间心得笔记(八)
其他的文本处理命令: wc命令 cut命令 在文件的每一行中提取片断 注意:能够被cut命令修剪的文本文件或数据内容,一般是具有某种特定格式或结构的文本文件或数据内容:如: ...
- 朗科实习期间心得笔记(七)
bash多命令执行方法: 1.命令替换 COMMAND1 $(COMMAND2) 2.管道 COMMAND1 | COMMAND2 | COMMAND3 .... ...
- 朗科实习期间心得笔记(六)
与用户账户和组账户相关的文件: /etc/passwd /etc/group /etc/shadow /etc/gshadow /etc/default/useradd /etc/login.defs ...
- 朗科实习期间心得笔记(五)
bash特性 十二.bash变量 变量:一段有名称的连续的内存空间:这段内存空间的名称,称为变量名,在这段内存空间中存储数据,则称为变量值: 向内存空间(变量)中存储数据的过程,称为赋值操作:赋值的符 ...
- 朗科学习期间心得笔记(一)
(一) 1.完整的操作系统由内核(kernel)和应用(application)组成. linux内核版本由 主版本号+次版本号+小改动 (注:在2.X的版本奇数代表测试版偶数代表稳定版) 可在 ht ...
- 朗科学习期间心得笔记(三)
vi编辑器:全屏文本编辑器 vi:visual interface,可视化界面: S.U.N:bill joy, vim相对于vi有更多的新特性: 1.语法着色显示: 2.更多的命令: 3.历史纪录: ...
- 朗科学习期间心得笔记(九)
bash脚本编程的结构: bash脚本编程语言: 脚本类语言 解释型语言 过程式编程语言 过程式编程语言的结构: 顺序执行结构:从上到下,从左向右的执行所有语句(命 ...
- 朗科学习期间心得笔记(二)
基本命令: 7.touch:修改文件的时间戳. change file timestamps(如果文件不存在就会创建该文件) 常用选项: -c,--no-create;不创建任何文件 -a;仅修改文件 ...
- 朗科实习期间笔记心得(十)
bash脚本编程 case选择分支结构 case 词 in [模式 [| 模式]...) 命令 ;;]... esac 在脚本中使用的case结构: case $(VAR-NAME) in ...
最新文章
- linux 下 vi 块编辑
- 《罗永浩打脸罗永浩》、MPEG召集人辞职称MPEG将不再存在、Zoom免费用户将没有端到端加密|Decode the Week...
- 理解一下select 1 和 exists
- SKINTOOL 系统不能正常运行
- Java Thread Status(转)
- android 应用自动重启,Android 应用崩溃后自动重启的方法
- 在CentOs7上yum安装redis
- python获取网页数据对电脑性能_【Python】网页数据爬取实战
- HBase 中文文档0.97
- 特斯拉上海超级工厂汽车年产量已达到45万辆
- mysql参数优化步骤_MySQL架构优化实战系列4:SQL优化步骤与常用管理命令2(转)
- 固定字符结尾的正则_新手上路:图文解读助你理解和使用正则表达式
- 鄂尔多斯打造西部云计算基地
- 使用weui滚动加载结合php实现分类页数据列表
- php 爬虫图片代码,python爬虫入门教程之糗百图片爬虫代码分享
- windows 在一个文件夹打开cmd的方式
- MATLAB课设代做在哪儿找,代写Grid World作业、代做CID留学生作业、代写Matlab课程设计、代做Matlab编程实验作业...
- 360浏览器各历史版本大全和bug汇总(及历史版本官方下载地址)
- python绘制语谱图(不掉包实现)
- SIRIUS更新日志|SIRIUS人脸识别更新日志|天狼星人脸识别更新日志
热门文章
- vue跳转页面传对象
- html怎么键tab键,html中控制Tab键的顺序
- android 动画机制
- php access ole相片,access2007对'位图图像'对象的操作失败.OLE服务器也许尚未注册。若要注册OLE服务器,必须重新安装它。--的解决方法...
- Hi Magi,Bye 百度
- Crimsonland 血腥大地 逆向无敌通关分析报告【配置文件加密】【Dll隐藏MD5检测补丁反调试函数】【反反调试】...
- 实录国内4级(省级、地级、县级、乡级)城市geoHash
- java string to uuid_在JAVA中生成UUID字符串的有效方法(不带破折号的UUID.randomUUID()。toString())...
- android后台计时,android – 在后台计时器
- 带噪图像的高斯滤波MATLAB,图像处理___高斯滤波与高斯噪声