前言:
前面学了了用户和用户组的管理,文件权限的管理以及查找文件的三种方式,接下来将学习怎样配置环境变量,常见的压缩格式与怎么解压,管道,标准的输入输出以及重定向
echo命令:
linux的echo命令, 在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到:
- [user1@xianzan dir]$ echo "hello world"
- hello world
- [user1@xianzan dir]$ echo -n "hello world"
- hello world[user1@xianzan dir]$ echo $PATH
- /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin
此外。echo可以直接将你要打印的字符串写到你的文件中:
- [user1@xianzan dir]$ echo "hello world">echotest.txt
- [user1@xianzan dir]$ cat echotest.txt
- hello world
export命令:
用于声明一个环境变量:
- [user1@xianzan dir]$ export PATH=$PATH:/usr/local/bin
- [user1@xianzan dir]$ echo $PATH
- /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin:/usr/local/bin
类似于 export 变量 = 变量值 的方式声明一个环境变量只在本进程或者子进程器作用,关闭进程重新查看PATH变量的值:
<img src="http://img.blog.csdn.net/20160114184427901?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="border: none; max-width: 100%;" />
- [xianzan@xianzan dir]$ echo $PATH
- /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin
说明:
如果在某次运行中,手动export一个变量,则在这次shell使用中,才能访问这个变量,或者在该shell启动的其他程序中,也可以访问这个变量,因为它们是这个shell的子进程。
</pre><pre id="best-content-1144911805" class="best-text mb-10" name="code" style="white-space: pre-wrap; word-wrap: break-word; margin-top: 0px; margin-bottom: 10px; padding: 0px;">要想在linux启动时,环境变量对这个系统的所有用户都有效则修改 <span style="color: rgb(255, 0, 0);">/etc/profile</span>文件
<div class="dp-highlighter bg_plain" style="font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 12px; width: 700.906px; overflow: auto; padding-top: 1px; margin: 18px 0px !important; background-color: rgb(231, 229, 220);"><div class="bar" style="padding-left: 45px;"><div class="tools" style="padding: 3px 8px 10px 10px; font-stretch: normal; font-size: 9px; line-height: normal; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; color: silver; border-left-width: 3px; border-left-style: solid; border-left-color: rgb(108, 226, 108); background-color: rgb(248, 248, 248);"><strong>[plain]</strong> <a target=_blank href="http://blog.csdn.net/xiaofengwu123/article/details/50518084#" class="ViewSource" title="view plain" style="color: rgb(160, 160, 160); text-decoration: none; border: none; padding: 1px; margin: 0px 10px 0px 0px; font-size: 9px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_plain.gif); background-attachment: initial; background-color: inherit; background-size: initial; background-origin: initial; background-clip: initial; background-position: 0% 0%; background-repeat: no-repeat;">view plain</a><span class="tracking-ad" data-mod="popu_168"> <a target=_blank href="http://blog.csdn.net/xiaofengwu123/article/details/50518084#" class="CopyToClipboard" title="copy" target="_blank" style="color: rgb(160, 160, 160); text-decoration: none; border: none; padding: 1px; margin: 0px 10px 0px 0px; font-size: 9px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_copy.gif); background-attachment: initial; background-color: inherit; background-size: initial; background-origin: initial; background-clip: initial; background-position: 0% 0%; background-repeat: no-repeat;">copy</a></span><div style="position: absolute; left: 390px; top: 1782px; width: 18px; height: 18px; z-index: 99;"></div><span class="tracking-ad" data-mod="popu_169"> </span></div></div><ol start="1" style="padding: 0px; border: none; color: rgb(92, 92, 92); margin: 0px 0px 1px 45px !important; background-color: rgb(255, 255, 255);"><li class="alt" style="border-style: none none none solid; border-left-width: 3px; border-left-color: rgb(108, 226, 108); list-style: decimal-leading-zero outside; color: inherit; line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important;"><span style="margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;"><span style="margin: 0px; padding: 0px; border: none; background-color: inherit;">[xianzan@xianzan dir]$ vim /etc/profile </span></span></li></ol></div>
环境变量生效:
- [xianzan@xianzan dir]$ source /etc/profile
shell配置:
Linux系统配置文件有四个:
/etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置;
/etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取;
~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取;此文件类似于/etc/bashrc,不需要重启生效,重新打开一个bash即可生效;
~/.bash_profile 是交互式、login 方式进入bash 运行的。
文件(夹)的压缩:
说明:
经常遇到的压缩格式为 .tar.gz,tar:只是打包,没有压缩后面gz为压缩方式。
gzip .gz GNU压缩工具,用Lempel-Ziv编码;
bzip2 .bz2 采用Burrows-Wheeler块排序文本压缩算法和霍夫曼编码;
zip .zip Windows上PKZIP工具的Unix实现;
tar命令:
tar function [options] object1 object2
function参数定义了tar命令应该做什么
-A --concatenate 将一个已有tar归档文件追加到另一个已有tar归档文件;
-c --create 创建一个新的tar归档文件;
-d --diff 检查归档文件和文件系统的不同之处;
--delete 从已有tar归档文件中删除;
-r --append 追加文件到已有tar归档文件末尾;
-t --list 列出已有tar归档文件的内容;
-u --update 将比tar归档文件中已有的同名文件新的文件追加到该tar归档文件中;
-x --extract 从已有tar归档文件中提取文件;
-C dir 切换到指定目录;
-f file 输出结果到文件或设备file;
-j 将输出重定向给bzip2命令来压缩;
-p 保留所有文件权限;
-v 在处理文件时显示文件;
-z 将输出重定向给gzip命令来压缩;
通常这些选项会组合在一起使用。
- [xianzan@xianzan dir]$ tar -czvf test.tar.gz
- [xianzan@xianzan dir]$ tar -xzvf test.tar.gz
- ./
- ./test3/
- ./test1/
- ./test2/
- [xianzan@xianzan dir]$ ls
- test1 test2 test3 test.tar.gz
file命令:
查看文件类型:ASCII、data、bin等:
- [xianzan@xianzan dir]$ file /etc/passwd
- /etc/passwd: ASCII text
- [xianzan@xianzan dir]$ file /usr/sbin/atrun
- /usr/sbin/atrun: POSIX shell script text executable
- [xianzan@xianzan dir]$ file /dev/fb0
- /dev/fb0: character special
- [xianzan@xianzan dir]$ file /dev/sda1
- /dev/sda1: block special
od命令:
查看二进制文件,格式: od [ -t TYPE ] 文件名
a: 利用默认的字符来输出
c: 使用ASCII输出
d: 十进制输出
f: 浮点数输出
o: 八进制输出
x: 十六机制输出
- [xianzan@xianzan dir]$ od -t d /bin/ls
- 0344420 1 0 0 0
- [xianzan@xianzan dir]$ od -t o /bin/ls
- 0344420 00000000001 00000000000 00000000000 00000000000
管道:
管道可以把一系列命令连接起来,这意味着第一个命令的输出会作为第二个命令的输入,通过管道传给第二个命令,第二个命令的输出又会作为第三个命令的输入,以此类推。显示在屏幕上的是管道行中最后一个命令的输出。通过使用管道符“|”来建立一个管道行。
- [xianzan@xianzan dir]$ cat /etc/passwd |grep xianzan
- xianzan:x:500:500:xianzan:/home/xianzan:/bin/bash
- [xianzan@xianzan dir]$ cat /etc/passwd |grep xianzan |cut -d: -f1
- xianzan
说明:
cut是一个选取命令,就是将一段数据经过分析,取出我们想要的。一般来说,选取信息通常是针对“行”来进行分析的,并不是整篇信息分析的。
-d :自定义分隔符,默认为制表符,-d后面跟的就是截取的标志上面是以 :为截取的标志;
-f :与-d一起使用,指定显示哪个区域,f1代表显示第一个字段。
- [xianzan@xianzan dir]$ cat /etc/passwd |grep xianzan |cut -d: -f2
- x
- [xianzan@xianzan dir]$ cat /etc/passwd |grep xianzan |cut -d: -f3
- 500
命令置换符:
命令置换是将一个命令的输出作为另外一个命令的参数部分。常用命令格式为:command1 `command2`上面这条命令表示,命令command2的输出将作为command1的参数,需要注意的是,命令置换符“`”为ESC键下方的“~”键不按shift的输出。
- [xianzan@xianzan dir]$ ls `pwd`
- 1.c
- [xianzan@xianzan dir]$ ls /home/`cat /etc/passwd |grep xianzan |cut -d: -f1`
- dir 公共的 模板 视频 图片 文档 下载 音乐 桌面
标准输入、输出、出错:
标准输入<1>(Standard Input, stdin)是系统命令或程序获取输入的地方:
- [xianzan@xianzan dir]$ cat
- hello
- hello
标准输出<2>(Standard Output, stdout)是系统命令或程序正确执行信息的输出地方:
- [xianzan@xianzan dir]$ rm -rf *
- [xianzan@xianzan dir]$ ls
- [xianzan@xianzan dir]$ touch hello.txt
- [xianzan@xianzan dir]$ ls
- hello.txt
而标准出错<2>(Standard error, stderr)是系统命令或程序执行出错信息的输出地方:
- [xianzan@xianzan dir]$ ls ls
- ls: 无法访问ls: 没有那个文件或目录
说明:
Linux系统中默认的标准输入为键盘,标准输出和标准出错为终端屏幕。
输入、输出重定向、输出追加重定向符:
输入重定向符 < :
- [xianzan@xianzan dir]$ wc < /etc/passwd
- 39 67 1883
- 行数 单词数 字节数
输出重定向>:
- [xianzan@xianzan dir]$ tail /etc/passwd > stdout.txt
- [xianzan@xianzan dir]$ tail /etc/passwd > stdout.txt
- [xianzan@xianzan dir]$ cat stdout.txt
- gdm:x:42:42::/var/lib/gdm:/sbin/nologin
- ntp:x:38:38::/etc/ntp:/sbin/nologin
- apache:x:48:48:Apache:/var/www:/sbin/nologin
输出追加重定向>>:
- [xianzan@xianzan dir]$ tail /etc/passwd >> stdout.txt
- [xianzan@xianzan dir]$ cat stdout.txt
- gdm:x:42:42::/var/lib/gdm:/sbin/nologin
- ntp:x:38:38::/etc/ntp:/sbin/nologin
- apache:x:48:48:Apache:/var/www:/sbin/nologin
- gdm:x:42:42::/var/lib/gdm:/sbin/nologin
- ntp:x:38:38::/etc/ntp:/sbin/nologin
- apache:x:48:48:Apache:/var/www:/sbin/nologin