【Bash百宝箱】Linux shell学习
shell特点——
Linux有多种shell能够使用,默认的为bash,bash有以下几个主要特点。
1、命令记忆能力
在命令行中按上下键能够找到一个前/后输入的命令。这些命令记录在~/.bash_history
中,这个文件记录的是上一次登录shell曾经所运行过的全部命令,当前登录shell所运行的命令则暂存在暂时内存中,成功注销系统后这些命令更新到文件里。历史命令可通过history
命令查看,再次运行某个历史命令时可结合叹号!
一起使用,叹号后面跟历史命令的序号。假设多重登录bash,即开几个bash窗体时。最后注销的那个bash会把前面bash的历史记录覆盖掉。
2、Tab键
在部分命令或文件未输入全然时。按Tab
键一次可补全命令或文件,按Tab
键两次可列出全部可用的命令或文件。
3、命令别名设置功能
使用alias
可给一个较长的命令设置一个简单的别名。unalias
取消设置,例如以下样例:
$alias lm='ls -alt'
上面alias
命令设置别名仅仅对当前bash有效,且bash退出后别名也就失效了,怎样设置一次就能够永远在全部的bash中都有效呢?方法是把上面的别名设置命令写入~/.bashrc
文件里,这个文件读入shell可使用source
命令,也能够使用句点
,或者重新启动电脑,这样便一劳永逸了。
4、内置命令type
通过type
命令我们能够知道一个命令的类型。是内置命令,还是外部命令或者是一个别名。type
命令本身是一个内置命令。
type
经常使用三个參数,-t
显示命令类型,-p
仅当命令类型为外部命令时才显示命令全路径。-a
显示PATH
环境变量中全部与命令相关的指令信息,也包括alias
别名命令。
5、命令运行
命令运行须要按下Enter
键,假设命令须要多行输入时,可在Enter
键前紧接着一个\
字符进行转义,之间不能有空格。
6、bash环境
1)路径与命令查找有一定的顺序,它们的先后顺序为:相对或绝对路径运行命令>alias
命令>builtin
命令>通过$PATH
环境变量顺序找到的第一个命令。
2)我们能够自己定义Linux登录与欢迎信息。配置文件为/etc/issue
和/etc/motd
,而/etc/issue.net
是提供给telnet这个远程登录程序用的。
shell变量——
如其他编程语言一样。shell中也能够自己定义变量,但有一定的规则,总结例如以下。
1、比如常见的环境变量PATH
。变量的显示可通过echo
命令查看,变量前要加$
符号,变量可选择性地使用一对花括号括起来。
2、变量通过等号=
赋值,等号两边不能有空格。
3、变量名称仅仅能是英文或数字,开头字符不能为数字。
4、变量内容包括特殊字符时。可用转义字符\
转义。双引號内的特殊字符如$
保持原本特性,单引號内的特殊字符如$就是个普通字符,引號成对出现,从左向右匹配。
5、在一串命令中包括了其他命令时。其他的命令能够使用反单引號`命令`或者美元符号结合圆括号$(命令)
的方式,这样的命令会被先运行。运行结果作为输入信息。
6、变量累加内容时可用"$变量名称"
或${变量名称}
操作,例如以下:
$PATH="$PATH"xxx
$PATH=${PATH}xxx
7、变量须要在子进程生效时,export
这个变量,使其成为环境变量。
进入一个子进程能够使用bash命令,退出时使用exit
命令。
8、取消变量时使用unset
。
9、环境变量查看可使用env
命令,使用export
命令也能够。set
命令查看全部变量。包括环境变量和自己定义变量。
10、declare
命令用于声明变量类型,相似于typeset
,-a
表示数组。-i
表示整数,-x
相似于export
,-r
指定变量仅仅读。
11、几个特殊变量:PS1
为命令提示符,PS2
为使用转义字符后第二行命令的提示符,$
为本shell的PID,?
为上个运行命令的回传码,回传码为0表示命令运行成功。
12、read
命令能够读取键盘输入到变量,-p
參数能够指定提示信息,比如:
$read -p "please input your name:" name
13、ulimit
命令能够设置用户对系统资源使用的限制。
14、变量内容的删除可使用#
、##
、%
、%%
符号,内容替换可使用/
、//
符号。
${变量#关键词}——从左向右匹配,删除最短数据。
${变量##关键词}——从左向右匹配。删除最长数据。
${变量%关键词}——从右向左匹配。删除最短数据。
${变量%%关键词}——从右向左匹配,删除最长数据。
${变量/旧字符串/新字符串}——从左向右匹配,删除第一个匹配的数据。
${变量//旧字符串/新字符串}——从左向右匹配,删除全部匹配的数据。
15、变量值測试与替换可使用-
、+
、=
、?
、:
符号等,效果例如以下:
经常使用组合键——
Ctrl + C:终止眼下的命令。
Ctrl + D:输入结束EOF,可退出当前shell。
Ctrl + M:Enter键。
Ctrl + S:暂停屏幕的输出。
Ctrl + Q:回复屏幕的输出。
Ctrl + U:在提示字符下,将整行命令删除。
Ctrl + Z:暂停眼下的命令。
常见通配符与特殊符号——
*:随意数目个随意字符。
?:随意一个字符。
[abcd]:随意一个方括号内的字符,即a、b、c、d中随意一个。
[a-z]:随意一个从a到z范围内的字符。关键在于中间的减号。表示范围。
[^abc]:^代表反向选择,即除了abc之外。随意一个其他的字符。
#:凝视符号。
\:转义字符。
|:管线。
;:分号,连续几个命令间的分隔符。
~:用户主文件夹。
$:用于读取变量。
&:工作控制。当前命令后台作业。
!:逻辑非。
/:路径分隔符。
>、>>:数据流重定向,输出,各自是替换和追加。
2>、2>>:数据流重定向,错误输出,数字2与尖括号之间没有空格。
<、<<:数据流重定向。输入。
' ':单引號。上面提到了。不具有变量替换功能。
" ":双引號,具有变量替换功能
` `:符号之间为可运行命令,等同于$()。
( ):相当于子shell。
{ }:命令区块的组合。
数据流重定向使用方法举例——
stdin
、stdout
、stderr
事实上是三个特殊的文件,文件标识符分别为0、1、2,以下的样例用到了 这几个数字。
把纯文本文件from中的内容拷贝到文件to,使用数据流重定向有以下两种方法:
$cat from > to
$cat > to < from
有时候运行某个命令时,有标准输出,也有标准错误输出,把标准输出重定向到文件file
:
$command > file
把标准错误输出重定向到文件file
:
$command 2> file
把标准输出、标注错误输出同一时候重定向到文件file有以下三种方法:
$command > file 2>&1
$command 2> file >&2
$command &> file
注意上面数字的使用方法。
/dev/null
是一个特殊文件,能够理解为一个无限大的垃圾站点,能够把随意不想要的数据重定向到这个文件里。
命令行连续运行几个命令——
方法一:使用分号
$command1; command2
方法二:使用&&
和||
符号
$command1 && command2
$command1 || command2
&&
和||
也就是通常所说的短路符号。
管线命令——
1、管线
管线即一个竖线|
,左边的命令要有标准输出,且仅会处理标准输出。标准错误则忽略,右边的命令要能接受标准输入,以下介绍几个经常使用的管线命令。
2、cut
以行为单位。截取部分数据。
$echo $PATH | cut -d ':' -f 1
在PATH
环境变量中,-d
指定分隔符为冒号,冒号把PATH
环境变量中的内容切割开。-f
指定截取切割后的第几个字段,这里为第1个字段。还能够选择多个字段。以逗号隔开。-d
指定的分隔符能够是空格,例如以下命令:
$last | cut -d ' ' -f 1
$export | cut -c 10-20
-c
截取了每行第10个到第20个的字符。
3、grep
以行为单位,匹配目标字符串。匹配成功则输出整行内容,如:
$top | grep init
以下介绍几个经常使用的參数:
-c:计算字符串匹配的次数。
-i:忽略大写和小写。
-n:输出行号。
-v:反向选择,即输出没有匹配到字符串的行。
grep也能够单独使用,格式例如以下:
$grep [options] <string> <filename>
4、sort
sort
即排序,如:
$ls | sort -r
-r
表示反向排序。
5、uniq
uniq
用于处理反复数据,仅仅筛选一次,如:
$last | cut -d ' ' -f 1 | uniq -c
显示每个帐号登入总次数。
6、wc
wc
统计文本中有多少行、字符串、字符,如:
$wc filename
当中,-l
能够统计行数,-w
统计字符串。-c
统计字符。
7、tee
从前面的几个命令能够看出,数据流重定向到文件后。屏幕就没有输出了。而这个tee
就能够双向定向。一边到文件,一边到屏幕,如:
$ls | tee filename
ls
的结果重定向到filename
的同一时候也输出到了屏幕。
8、tr
tr
用来删除或替换字符串。
$ls | tr [a-z] [A-Z]
如上样例,tr
把ls
的结果中的小写字母全部替换为了大写。
$ls | tr -d 'string'
-d
參数指定要删除的字符串。
9、col
col
过滤一些数据,选项与參数:
-x:将tab键转换成对等的空格键。
-b:在文件内有反斜杠/时。仅保留反斜杠最后接的那个字符。
10、join
把两行数据合并为一行,格式例如以下:
$join [options] file1 file2
选项与參数例如以下:
-t <string>:join默认以空格符分隔数据。-t指定详细的切割符。而且在file1和file2中查找string,查找成功时,把file1和file2的两行数据连成一行,且string仅仅显示一次。在行首显示。
-i:忽略大写和小写。
-1 <num>:数字1,指定第一个文档file1要用哪个字段来分析。
-2 <num>:数字2。指定第二个文档file2要用哪个字段来分析。
11、paste
把多个文本行合并为一行,默认以Tab
键作为分隔符号,语法格式例如以下:
$paste [options] [files]
经常使用參数为-d
,指定分隔符。
12、expand
expand
将Tab
键转换为空格。
13、split
将大文件分隔为多个小文件。语法格式例如以下:
$split [options] [file] PREFIX
经常使用选项为-b
。指定小文件大小。-l
參数指定小文件行数。PREFIX
为小文件前缀。能够选择性地指定为自己定义的字符串。
14、xargs
xargs
读入标准输入,以空格符或换行符作为分隔,把标准输入分隔成多个參数,然后运行指定的命令,格式例如以下:
$xargs [options] command
比如,以下的命令,在/tmp
文件夹下查找名字为core
的文件,
$find /tmp -name core -type f -print0 | xargs -0 /bin/rm -f
……….
【Bash百宝箱】Linux shell学习的更多相关文章
- Linux Shell 学习笔记 一 目录结构
以Red Hat Enterprise Linux 各版本为例,RHEL中目录具体作用如下, /bin 存放普通用户使用的命令 /sbin 存放管理员可以执行的命令 /home ...
- 【转】十分有用的linux shell学习总结
在最近的日常工作中由于经常会和Linux服务器打交道,如Oracle性能优化.我们 数据采集服务器的资源利用率监控,以及Debug服务器代码并解决其效率和稳定性等问题.因此这段时间总结的有关Linux ...
- Linux shell 学习
·详细介绍Linux shell脚本基础学习(一) ·详细介绍Linux shell脚本基础学习(二) ·详细介绍Linux shell脚本基础学习(三) ·详细介绍Linux shell脚本基础学习 ...
- linux shell学习之shell流程控制
在linux shell编程中,流程控制结构与语句,也算是shell脚本中的重点了,不了解的朋友,跟随脚本小编一起来学习下吧. linux控制流结构学习. 一,shell控制流结构 1.控制结构 ...
- linux shell学习笔记二---自定义函数(定义、返回值、变量作用域)介绍
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...
- Linux Shell 学习笔记 00
1.Bash = Bourne Again SHell 2.终端提示符: #普通用户 username@hostname$ #管理员用户 root@hostname# 3.shell脚本通常是一个以s ...
- Linux Shell 学习笔记
2.return与exit区别 return 表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,由return后面的参数指定,当然如果是在主函数main, 自然也就结束当前进程了,如果不是 ...
- linux shell学习记录
1.shell脚本开始以 #! /usr/bin 这个叫做Shebang 这个指定解释器的路径 2.shell 一些配置在~/.bashrc中,运行的历史shell命令在~/.bash_history ...
- Linux Shell学习笔记:exit退出状态代码
inux提供$?特殊变量来保存最后一条命令执行结束的退出状态.执行完一条命令后,立即执行echo$?,可以查看最后一条命令的退出状态值. 正常的情况下,命令成功执行完成的退出状态是0,如果非0,则命令 ...
随机推荐
- POJ 1654 Area 凸包面积
水题直接码... /********************* Template ************************/ #include <set> #include < ...
- 内核中的宏定义__init、__initdata和__exit、__exitdata
__init.__initdata和__exit.__exitdata的定义位于<kernel/include/linux/init.h> /* These are for everybo ...
- 【Codeforces Round #453 (Div. 2) B】Coloring a Tree
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 从根节点开始. 显然它是什么颜色.就要改成对应的颜色.(如果上面已经有某个点传了值就不用改 然后往下传值. [代码] #includ ...
- 【2017"百度之星"程序设计大赛 - 初赛(A)】数据分割
[链接]http://acm.hdu.edu.cn/showproblem.php?pid=6109 [题意] 在这里写题意 [题解] 要处理的关系越多,肯定就越容易错. ->单调性. 根据这个 ...
- Java中的线程模型及实现方式
概念: 线程是一个程序内部的顺序控制流 线程和进程的比较: 每个进程都有独立的代码和数据空间(进程上下文),进程切换的开销大. 线程:轻量的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和 ...
- Java调用jama实现矩阵运算
Java调用jama实现矩阵运算 一.jama简介 Jama是一个基本的线性代数java包.包括一个基本的Matrix类和5个矩阵分解类. Matrix类提供了基本的线性代数数值运算的功能,不同的构造 ...
- asp.net Code学习一(vs code跨平台软件操作)
1.命令行: dotnet new -t web 创建web项目 dotnet new restore build pubilsh run test pack dotnet -info / -h do ...
- 亚马逊AWS学习——EC2的自己定义VPC配置
转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/47153421 本文出自[我是干勾鱼的博客] 1 网络配置 EC2即亚马逊AWS云 ...
- ThinkPHP5.0---URL访问
ThinkPHP 5.0 在没有启用路由的情况下典型的URL访问规则是(采用 PATH_INFO 访问地址): http://serverName/index.php(或者其它应用入口文件)/模块/控 ...
- 哈夫曼树的介绍 ---java实现
一. 什么是哈夫曼树 是一种带权路径长度最短的二叉树,也称最优二叉树 带权路径长度:WPL=(W1*L1+W2*L2+W3*L3+...+ Wn*Ln) N个权值Wi(i=1,2,...n)构 ...