echo命令:使用echo命令可以打印变量的值,也可以打印系统变量

echo有显示、印出的意思,在PATH前面加$表示后面接的是变量,所以会显示出目前的PATH!
echo $PATH 输出结果
/opt/jdk1.8.0_221/bin:/opt/jdk1.8.0_221/jre/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

linux echo结果赋值变量 linux echo输出变量_搜索

五个放在3个文件夹:/usr/local /usr /root 环境变量

目的:把它当成根目录,可以直接使用它的命令

linux echo结果赋值变量 linux echo输出变量_搜索_02

除了系统变量还可以自己定义变量:

定义变量的方法:export //声明,在定义Java环境变量的时候使用过

linux echo结果赋值变量 linux echo输出变量_加载_03


echo相当于Java中的sout

注意:这种叫做临时变量,作用范围:在当前页签session(会话)可以使用,外界Windows用户使用moba与Linux虚拟机之间的远程通信/远程会话

ssh root@cent01 这个时候 echo $a 也不可使用

exit还原到原来的会话。 继续有效

第二种方式:在文件里使用export外界可以看到么?

不能。如果想要让外界看到,可以使用sourceecho $PATH 已经可以看到一部分环境变量了,如果想要看的更多一点可以使用printenv命令

printenv命令:printenv命令可以打印环境变量

linux echo结果赋值变量 linux echo输出变量_加载_04

如果以后想要做Linux操作系统,可以参考它的环境变量是怎么做的。它的环境变量的做法,就可以体现文件是怎么组织的。

在小黑界面的时候,大文件展示不全,但是无法上翻,在一定的特殊工作场景就是看不了。不能使用工具查看,该怎么办?
more命令:more命令可以查看文件内容 printenv | more

more + 文件名 按空格下一页,按回车下一行,按b键向上返回一页,还有搜索字符串的功能(与vi相似),按q退出

linux echo结果赋值变量 linux echo输出变量_linux echo结果赋值变量_05

比较常用的 -s 当遇到有连续两行以上的空白行,就替换为一行的空白行

还有一种用法 cat Hello.txt | more 与 more Hello.txt 命令是一致的,只不过底下不显示 %了 - - More - -

less命令:less命令可以查看文件内容 printenv | less
less和more的区别:more是一次性全部把文件加载,只是一部分一部分的显示,less在查看之前不会全部加载,而是你要查看多少我加载多少。less在查看巨大文件的时候当时的效能会比较快,不会因为文件过大而读取缓慢,但是每一步都要重新去加载,折合下来,总效率都是一样的。所以less比more使用的更普遍,特别是查看大文件的时候。
less命令也与more命令类似,但是有一个查看缓冲区大小,指的是一次多少个字符。

Linux less命令
less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。
语法
less [参数] 文件 
参数说明:
    -b <缓冲区大小> 设置缓冲区的大小
    //在加载完之后,会加载多少个字节在缓冲区里,下次再加载的时候,缓冲区的部分就不需要重新加载了,加载效率,与缓冲流类似。但是缓冲区不适合设置的太大
    -e 当文件显示结束后,自动离开
    //more在文件显示结束后会自动离开,less不会,到最后了按q退出,但是加上 -e 读完之后就会退出,不需要手动输入q
    -f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
    -g 只标志最后搜索的关键词
    //-g 只标记最后搜索的关键字,可能有多次搜索的时候
    -i 忽略搜索时的大小写
    //比较常用,驼峰命名法有时比较烦人
    -m 显示类似more命令的百分比
    -N 显示每行的行号
    //比较常用 搜索可以快速看到多少行
    -o <文件名> 将less 输出的内容在指定文件中保存起来
    //输出的内容是指加载查看了多少
    -Q 不使用警告音
    -s 显示连续空行为一行
    -S 行过长时将超出部分舍弃
    //超过一页,出现在只需要看开头一部分,不需要看后边的部分
    -x <数字> 将"tab"键显示为规定的数字空格
    //先把tab键都换成空格,再去替换查找的时候。数字如果是4就把一个tab键替换成4个空格
    /字符串:向下搜索"字符串"的功能
    ?字符串:向上搜索"字符串"的功能
    n:重复前一个搜索(与 / 或 ? 有关)
    N:反向重复前一个搜索(与 / 或 ? 有关)
    b 向上翻一页
    d 向后翻半页
    h 显示帮助界面
    Q 退出less 命令
    u 向前滚动半页
    y 向前滚动一行
    空格键 滚动一页
    回车键 滚动一行
    [pagedown]: 向下翻动一页
    [pageup]: 向上翻动一页

wc命令:wc命令用于计算字数

linux echo结果赋值变量 linux echo输出变量_加载_06

-w 统计单词个数
-l 统计行数
-L 计算最长行的长度

linux echo结果赋值变量 linux echo输出变量_搜索_07

可以通过这种方式让程序知道查询结果有多少行!!以后的脚本会使用到grep命令

linux echo结果赋值变量 linux echo输出变量_linux echo结果赋值变量_08

管道符 | 把左侧程序的输出作为右侧程序的输入
printenv | less
grep命令用法
printenv | grep path    //环境变量中寻找小写path
printenv | grep -i path //寻找path,不区分大小写
查找出来两条:
PATH=/opt/jdk1.8.0_221/bin:/opt/jdk1.8.0_221/jre/bin:/opt/jdk1.8.0_221/bin:/opt/jdk1.8.0_221/jre/bin:/opt/jdk1.8.0_221/bin:/opt/jdk1.8.0_221/jre/bin:/opt/jdk1.8.0_221/bin:/opt/jdk1.8.0_221/jre/bin:/opt/jdk1.8.0_221/bin:/opt/jdk1.8.0_221/jre/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
CLASSPATH=.:/opt/jdk1.8.0_221/lib/rt.jar:/opt/jdk1.8.0_221/lib/tools.jar:/opt/jdk1.8.0_221/lib/dt.jar
如果只想看PATH不想看CLASSPATH:
[root@localhost ~]# printenv | grep -iw path
PATH=/opt/jdk1.8.0_221/bin:/opt/jdk1.8.0_221/jre/bin:/opt/jdk1.8.0_221/bin:/opt/jdk1.8.0_221/jre/bin:/opt/jdk1.8.0_221/bin:/opt/jdk1.8.0_221/jre/bin:/opt/jdk1.8.0_221/bin:/opt/jdk1.8.0_221/jre/bin:/opt/jdk1.8.0_221/bin:/opt/jdk1.8.0_221/jre/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
grep -ir python .    //在当前和所有子目录中的任何文件中查找python
grep -ir python  file1  //在file1中找到python
grep -ir --include *.py math ~  //在home和所有子目录中的py文件中查找包含'math'的行,不区分大小写

file命令:

Linux file命令用于辨识文件类型。
通过file指令,我们得以辨识该文件的类型。
语法
file [-bcLvz][-f <名称文件>][-m <魔法数字文件>...][文件或目录...]
参数:
    -b  列出辨识结果时,不显示文件名称。
    -c  详细显示指令执行过程,便于排错或分析程序执行的情形。
    -f<名称文件>  指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称。
    -L  直接显示符号连接所指向的文件的类别。
    -m<魔法数字文件>  指定魔法数字文件。
    -v  显示版本信息。
    -z  尝试去解读压缩文件的内容。
    [文件或目录...] 要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件。

linux echo结果赋值变量 linux echo输出变量_加载_09

I/O Stream

linux echo结果赋值变量 linux echo输出变量_linux echo结果赋值变量_10


但是在Linux命令行里不使用stdin stdout stderr,这种只在脚本里写。在命令行里基本上直接使用重定向

linux echo结果赋值变量 linux echo输出变量_字符串_11

在免密登录的时候见过

linux echo结果赋值变量 linux echo输出变量_linux echo结果赋值变量_12


which命令

用于查找命令
which bash
which hexdump

which+命令 使用比较频繁,特别是使用yum去安装的东西,实际上在哪我们并不知道,使用which可以查看,注意:只是看到命令在哪,而不是安装目录在哪,所以which后加的一般是命令,而不是文件夹

linux echo结果赋值变量 linux echo输出变量_搜索_13

ln命令

在文件之间建立连接

ln -s /usr/bin/hexdmp d
#创建了一个符号d链接到/usr/bin/hexdump

linux echo结果赋值变量 linux echo输出变量_字符串_14

软链接和快捷方式一样好用,相当于快捷方式

linux echo结果赋值变量 linux echo输出变量_加载_15

删除软链接会把原目录删掉么?

rm -rf 软链接 并不会把原目录删掉

find命令

搜索目录层次结构中的文件
find  /  -name  'tar'
#从根目录访问所有目录以查找'tar'
find  ~/tmp  -name  '*.txt'  -type f  -exec  d -C {} \;
#从〜/ tmp目录开始,找到所有'.txt'文件并将其转换为hexdump
find常用的参数:
-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
-type c : 文件类型是 c 的文件
d: 目录/c: 字型装置文件/b: 区块装置文件/p: 具名贮列/f: 一般文件/l: 符号连结/s: socket
-pid n : process id 是 n 的文件
-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。

linux echo结果赋值变量 linux echo输出变量_linux echo结果赋值变量_16

find的复合用法:

linux echo结果赋值变量 linux echo输出变量_linux echo结果赋值变量_17


-size的用法:

linux echo结果赋值变量 linux echo输出变量_字符串_18


date命令

打印或设置系统日期和时间
date +%Y-%m-%d  #2017-12-23
date +%H:%M:%S  #13:29:03
date +%I:%M:%S    #12小时时间显示
date +%c  	     #locale的完整日期和时间
date -u 	     #UTC日期和时间
date -R	     #RFC-2822格式
date -Iseconds         #ISO-8601格式

linux echo结果赋值变量 linux echo输出变量_linux echo结果赋值变量_19


date也是比较常用的命令

Linux date命令可以用来显示或设定系统的日期与时间,在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中可用的标记列表如下:
时间方面:
    % : 印出 %
    %n : 下一行
    %t : 跳格
    %H : 小时(00..23)
    %I : 小时(01..12)
    %k : 小时(0..23)
    %l : 小时(1..12)
    %M : 分钟(00..59)
    %p : 显示本地 AM 或 PM
    %r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
    %s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
    %S : 秒(00..61)
    %T : 直接显示时间 (24 小时制)
    %X : 相当于 %H:%M:%S
    %Z : 显示时区
日期方面:
    %a : 星期几 (Sun..Sat)
    %A : 星期几 (Sunday..Saturday)
    %b : 月份 (Jan..Dec)
    %B : 月份 (January..December)
    %c : 直接显示日期与时间
    %d : 日 (01..31)
    %D : 直接显示日期 (mm/dd/yy)
    %h : 同 %b
    %j : 一年中的第几天 (001..366)
    %m : 月份 (01..12)
    %U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)
    %w : 一周中的第几天 (0..6)
    %W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)
    %x : 直接显示日期 (mm/dd/yy)
    %y : 年份的最后两位数字 (00.99)
    %Y : 完整年份 (0000..9999)

cut命令

从文件中提取字段
date -u | cut -d ' '  -f2,3,6
#输出的日期格式按空格分割,取出2,3,6位
cut -d ' '  -f1,2  /etc/mtab 
#此示例从文件/etc/mtab中读取数据

linux echo结果赋值变量 linux echo输出变量_加载_20

tr命令

用于转换或删除文件中的字符
date -u | tr 'a-z' 'A-Z' 	# 小写转大写
echo 'abcdefg' | tr -d 'b-e' 	# 删除
echo 'abbbbg' | tr -s 'b' 	# 重复单词显示一次

linux echo结果赋值变量 linux echo输出变量_加载_21

tr命令只能是字符,替换要使用sed命令。。

ping命令

用于测试与目标主机的连通性
ping www.ibm.com
ping 192.168.0.16

Windows环境下ping命令只测试4次,Linux环境下如果不停止就一直ping
需要使用CTRL+C停止

sed命令:

Linux sed 命令
Linux sed 命令是利用脚本来处理文本文件。
sed 可依照脚本的指令来处理、编辑文本文件。
Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
语法
sed [-hnV][-e<script>][-f<script文件>][文本文件]
参数说明:
    -e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。
    -f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
    -h或--help 显示帮助。
    -n或--quiet或--silent 仅显示script处理后的结果。
    -V或--version 显示版本信息。
动作说明:
    a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
    c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
    d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
    i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
    p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
    s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

linux echo结果赋值变量 linux echo输出变量_linux echo结果赋值变量_22

使用sed命令和vi的末行模式命令相似,但文件没有变

其他的一些命令:
chgrp :change group 为文件夹更换群组
chown:为所属用户和群组一起更换
paste:用于合并文件的列,会把文件以列对列的方式,一列一列的加以合并,默认都是以空格来分隔
split:把大文件切分成比较小的文件,与paste相反,指定每多少行切成一个小文件
scp:不同虚拟机之间远程文件传输
whereis:查找文件而不是命令,一般不太去用
read:控制台输入,脚本的时候会使用 -n 后跟一个数字,定义输入文本的长度
look:查询单词,给它首字符串,查询开头字符串符合条件的单词
查找以字母L开头的所有行:look L testfile
let:用于计算的工具,主要脚本中使用,定义变量计算,自加,自减,+=,-=
df:df -h 当前Linux虚拟机磁盘的使用情况
du:查看某个目录/文件的大小占用磁盘的空间 默认是-a的所有都显示 -s 仅显示总计
//一般是批量查看某些大文件,如果文件过大要进行清理的情况
dirs:显示目录和记录,作用不大和pwd没啥差别
mount:用于挂载设备
tree:显示目录树
fdisk:格式化硬盘,创建和维护分区表 fdisk -l 当前设备的使用情况
telnet:用于远程登陆,云计算会使用,cmd命令行也有,用于测试两台机器间的网络是否连通
netconf:网络管理
logout:当前session连接,退出登陆
poweroff:关机
reboot:重启
系统管理用的不多,主要有:systemcontroller和service,export定义变量,ulimit使用到的时候再说,clear清屏,clock时钟
备份压缩:zip gzip unziip tar 都是说过的

使用都非常灵活!多练习!

8.28课前复习:
1、如何查看a.txt的第8~10行,并替换到b.txt中,如果出错则追加到c.txt
head a.txt | tail -3 > b.txt 2>> c.txt
2、查找yum命令的位置,可以使用哪几个命令
which yum
whereis yum
find / -name ‘*yum’
3、如何显示当前日期的日月年,时分秒
date ‘+%d%m%Y %H%M%S’
4、在Linux中定义变量的几种方式,作用范围分别是什么
export 在命令行使用:当前会话有效
export 在文本中使用:只在文本中有效,如果要全局有效,则 source 文本