- 浏览: 69300 次
- 性别:
- 来自: 沈阳
文章分类
最新评论
1、数据流重导向
标准输入(stdin) :代码为 0 ,使用 < 或 << ;
标准输出(stdout):代码为 1 ,使用 > 或 >> ;
标准错误输出(stderr):代码为 2 ,使用 2> 或 2>> ;
一串指令的最左边一定是指令,而在 >,2>,< 右边的,必须是档案或装置才行!
• 1> :是将正确的数据输出到指定的地方去
• 2> :是将错误的数据输出到指定的地方去
[dmtsai@linux ~]$ find /home -name testing > list_right 2> list_error
如果我只要正确的数据,错误的信息我不要了。
[dmtsai@linux ~]$ find /home -name testing > list_right 2> /dev/null
如果我要将数据都写到同一个档案中。
[dmtsai@linux ~]$ find /home -name testing > list 2> list <==错误写法
[dmtsai@linux ~]$ find /home -name testing > list 2>&1 <==正确写法
那个 < 又是什么呀!?
[root@linux ~]# cat > catfile
testing
cat file test
<==这里按下 [ctrl]+d 结束输入来离开!
[root@linux ~]# cat > catfile < somefile
[root@linux ~]# cat > catfile <<eof
> This is a test testing
> OK now stop
> eof <==输入这个玩意儿,嘿!立刻就结束了!
[root@linux ~]# sync; sync; shutdown -h now
当前面的指令执行结果为正确 (例如:仅有 standard output 时),就可以接着执行后续的指令, 否则就予以略过!
[root@linux ~]# ls /tmp && touch /tmp/testingagin
那个 || 刚好完全跟 && 相反,当前一个指令有错误时,在 || 后面的指令才会被执行!
[root@linux ~]# ls /tmp/vbirding || touch /tmp/vbirding
以 ls 测试 /tmp/vbirding 是否存在,若存在则显示 "exist" ,若不存在,则显示 "not exist"!
ls /tmp/vbirding && echo "exist" || echo "not exist"
2、一些基本的管线命令指令介绍:
撷取命令: cut, grep
• cut
[root@linux ~]# cut -d'分隔字符' -f fields
[root@linux ~]# cut -c 字符区间
参数:
-d :后面接分隔字符。与 -f 一起使用;
-f :依据 -d 的分隔字符将一段讯息分割成为数段,用 -f 取出第几段的意思;
-c :以字符 (characters) 的单位取出固定字符区间;
• grep
[root@linux ~]# grep [-acinv] '搜寻字符串' filename
参数:
-a :将 binary 档案以 text 档案的方式搜寻数据
-c :计算找到 '搜寻字符串' 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
排序命令: sort, wc, uniq
• sort
[root@linux ~]# sort [-fbMnrtuk] [file or stdin]
参数:
-f :忽略大小写的差异,例如 A 与 a 视为编码相同;
-b :忽略最前面的空格符部分;
-M :以月份的名字来排序,例如 JAN, DEC 等等的排序方法;
-n :使用『纯数字』进行排序(预设是以文字型态来排序的);
-r :反向排序;
-u :就是 uniq ,相同的数据中,仅出现一行代表;
-t :分隔符,预设是 tab 键;
-k :以那个区间 (field) 来进行排序的意思;
• uniq
[root@linux ~]# uniq [-ic]
参数:
-i :忽略大小写字符的不同;
-c :进行计数
• wc
[root@linux ~]# wc [-lwm]
参数:
-l :仅列出行;
-w :仅列出多少字(英文单字);
-m :多少字符;
范例二:我知道使用 last 可以输出登入者,但是 last 最后两行并非账号内容,
那么请问,我该如何以一行指令串取得这个月份登入系统的总人次?
[root@linux ~]# last | grep [a-zA-Z] | grep -v 'wtmp' | wc -l
# 由于 last 会输出空白行与 wtmp 字样在最底下两行,因此,我利用
# grep 取出非空白行,以及去除 wtmp 那一行,在计算行数,就能够了解啰!
双向重导向: tee
[root@linux ~]# tee [-a] file
参数:
-a :以累加 (append) 的方式,将数据加入 file 当中!
字符转换命令: tr, col, join, paste, expand
• tr
[root@linux ~]# tr [-ds] SET1 ...
参数:
-d :删除讯息当中的 SET1 这个字符串;
-s :取代掉重复的字符!
DOS下面会自动在每行行为加入^M这个断行符号,这个时候我们可以使用这个tr来将^M去除。^M可以使用\r来替代
cat /etc/passwd | tr -d '\r' >/root/passwd.linux
• col
[root@linux ~]# col [-x]
参数:
-x :将 tab 键转换成对等的空格键
• join
[root@linux ~]# join [-ti12] file1 file2
参数:
-t :join 预设以空格符分隔数据,并且比对『第一个字段』的数据,
如果两个档案相同,则将两笔数据联成一行,且第一个字段放在第一个!
-i :忽略大小写的差异;
-1 :这个是数字的 1 ,代表『第一个档案要用那个字段来分析』的意思;
-2 :代表『第二个档案要用那个字段来分析』的意思。
范例一:用 root 的身份,将 /etc/passwd 与 /etc/shadow 相关数据整合成一栏
[root@linux ~]# join -t ':' /etc/passwd /etc/shadow
范例二:我们知道 /etc/passwd 第四个字段是 GID ,那个 GID 记录在
/etc/group 当中的第三个字段,请问如何将两个档案整合?
[root@linux ~]# join -t ':' -1 4 /etc/passwd -2 3 /etc/group
• paste
[root@linux ~]# paste [-d] file1 file2
参数:
-d :后面可以接分隔字符。预设是以 [tab] 来分隔的!
- :如果 file 部分写成 - ,表示来自 standard input 的资料的意思。
范例一:将 /etc/passwd 与 /etc/shadow 同一行贴在一起
[root@linux ~]# paste /etc/passwd /etc/shadow
范例二:先将 /etc/group 读出(用 cat),然后与范例一贴上一起!且仅取出前三行
[root@linux ~]# cat /etc/group|paste /etc/passwd /etc/shadow -|head -n 3
• expand
这玩意儿就是在将 [tab] 按键转成空格键
分割命令: split
[root@linux ~]# split [-bl] file PREFIX
参数:
-b :后面可接欲分割成的档案大小,可加单位,例如 b, k, m 等;
-l :以行数来进行分割。
我的/etc/termcap七百多k,若想分成300KB一个文件怎么办?
cd /tmp;split -b 300k /etc/termcap termcap
ll -l termcap*
......termcapaa
......termcapab
如何将上面的小文件合成一个文件
cat termcap* >>tercapback
将使用ls -al /输出 的信息中,每10行记录成一个文件
ls -al / |split -l 10 - lsroot
结果
wc -l lsroot*
.........
参数代换: xargs
范例一:将 /etc/passwd 内的第一栏取出,仅取三行,使用 finger 这个指令将每个
账号内容秀出来
[root@linux ~]# cut -d':' -f1 < /etc/passwd |head -n 3| xargs finger
范例二:同上,但是每次执行 finger 时,都要询问使用者是否动作?
[root@linux ~]# cut -d':' -f1 < /etc/passwd |head -n 3| xargs -p finger
范例三:将所有的 /etc/passwd 内的账号都以 finger 查阅,但一次仅查阅五个账号
[root@linux ~]# cut -d':' -f1 < /etc/passwd | xargs -p -n 5 finger
范例四:同上,但是当分析到 lp 就结束这串指令?
[root@linux ~]# cut -d':' -f1 < /etc/passwd | xargs -p -e'lp' finger
关于减号 - 的用途
[root@linux ~]# tar -cvf - /home | tar -xvf -
上面这个例子是说:『我将 /home 里面的档案给他打包,但打包的数据不是纪录到档案,而是传送到 stdout; 经过管线后,将 tar -cvf - /home 传送给后面的 tar -xvf - 』。后面的这个 - 则是取用前一个指令的 stdout, 因此,我们就不需要使用 file 了!这是很常见的例子喔!注意注意!
标准输入(stdin) :代码为 0 ,使用 < 或 << ;
标准输出(stdout):代码为 1 ,使用 > 或 >> ;
标准错误输出(stderr):代码为 2 ,使用 2> 或 2>> ;
一串指令的最左边一定是指令,而在 >,2>,< 右边的,必须是档案或装置才行!
• 1> :是将正确的数据输出到指定的地方去
• 2> :是将错误的数据输出到指定的地方去
[dmtsai@linux ~]$ find /home -name testing > list_right 2> list_error
如果我只要正确的数据,错误的信息我不要了。
[dmtsai@linux ~]$ find /home -name testing > list_right 2> /dev/null
如果我要将数据都写到同一个档案中。
[dmtsai@linux ~]$ find /home -name testing > list 2> list <==错误写法
[dmtsai@linux ~]$ find /home -name testing > list 2>&1 <==正确写法
那个 < 又是什么呀!?
[root@linux ~]# cat > catfile
testing
cat file test
<==这里按下 [ctrl]+d 结束输入来离开!
[root@linux ~]# cat > catfile < somefile
[root@linux ~]# cat > catfile <<eof
> This is a test testing
> OK now stop
> eof <==输入这个玩意儿,嘿!立刻就结束了!
[root@linux ~]# sync; sync; shutdown -h now
当前面的指令执行结果为正确 (例如:仅有 standard output 时),就可以接着执行后续的指令, 否则就予以略过!
[root@linux ~]# ls /tmp && touch /tmp/testingagin
那个 || 刚好完全跟 && 相反,当前一个指令有错误时,在 || 后面的指令才会被执行!
[root@linux ~]# ls /tmp/vbirding || touch /tmp/vbirding
以 ls 测试 /tmp/vbirding 是否存在,若存在则显示 "exist" ,若不存在,则显示 "not exist"!
ls /tmp/vbirding && echo "exist" || echo "not exist"
2、一些基本的管线命令指令介绍:
撷取命令: cut, grep
• cut
[root@linux ~]# cut -d'分隔字符' -f fields
[root@linux ~]# cut -c 字符区间
参数:
-d :后面接分隔字符。与 -f 一起使用;
-f :依据 -d 的分隔字符将一段讯息分割成为数段,用 -f 取出第几段的意思;
-c :以字符 (characters) 的单位取出固定字符区间;
• grep
[root@linux ~]# grep [-acinv] '搜寻字符串' filename
参数:
-a :将 binary 档案以 text 档案的方式搜寻数据
-c :计算找到 '搜寻字符串' 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
排序命令: sort, wc, uniq
• sort
[root@linux ~]# sort [-fbMnrtuk] [file or stdin]
参数:
-f :忽略大小写的差异,例如 A 与 a 视为编码相同;
-b :忽略最前面的空格符部分;
-M :以月份的名字来排序,例如 JAN, DEC 等等的排序方法;
-n :使用『纯数字』进行排序(预设是以文字型态来排序的);
-r :反向排序;
-u :就是 uniq ,相同的数据中,仅出现一行代表;
-t :分隔符,预设是 tab 键;
-k :以那个区间 (field) 来进行排序的意思;
• uniq
[root@linux ~]# uniq [-ic]
参数:
-i :忽略大小写字符的不同;
-c :进行计数
• wc
[root@linux ~]# wc [-lwm]
参数:
-l :仅列出行;
-w :仅列出多少字(英文单字);
-m :多少字符;
范例二:我知道使用 last 可以输出登入者,但是 last 最后两行并非账号内容,
那么请问,我该如何以一行指令串取得这个月份登入系统的总人次?
[root@linux ~]# last | grep [a-zA-Z] | grep -v 'wtmp' | wc -l
# 由于 last 会输出空白行与 wtmp 字样在最底下两行,因此,我利用
# grep 取出非空白行,以及去除 wtmp 那一行,在计算行数,就能够了解啰!
双向重导向: tee
[root@linux ~]# tee [-a] file
参数:
-a :以累加 (append) 的方式,将数据加入 file 当中!
字符转换命令: tr, col, join, paste, expand
• tr
[root@linux ~]# tr [-ds] SET1 ...
参数:
-d :删除讯息当中的 SET1 这个字符串;
-s :取代掉重复的字符!
DOS下面会自动在每行行为加入^M这个断行符号,这个时候我们可以使用这个tr来将^M去除。^M可以使用\r来替代
cat /etc/passwd | tr -d '\r' >/root/passwd.linux
• col
[root@linux ~]# col [-x]
参数:
-x :将 tab 键转换成对等的空格键
• join
[root@linux ~]# join [-ti12] file1 file2
参数:
-t :join 预设以空格符分隔数据,并且比对『第一个字段』的数据,
如果两个档案相同,则将两笔数据联成一行,且第一个字段放在第一个!
-i :忽略大小写的差异;
-1 :这个是数字的 1 ,代表『第一个档案要用那个字段来分析』的意思;
-2 :代表『第二个档案要用那个字段来分析』的意思。
范例一:用 root 的身份,将 /etc/passwd 与 /etc/shadow 相关数据整合成一栏
[root@linux ~]# join -t ':' /etc/passwd /etc/shadow
范例二:我们知道 /etc/passwd 第四个字段是 GID ,那个 GID 记录在
/etc/group 当中的第三个字段,请问如何将两个档案整合?
[root@linux ~]# join -t ':' -1 4 /etc/passwd -2 3 /etc/group
• paste
[root@linux ~]# paste [-d] file1 file2
参数:
-d :后面可以接分隔字符。预设是以 [tab] 来分隔的!
- :如果 file 部分写成 - ,表示来自 standard input 的资料的意思。
范例一:将 /etc/passwd 与 /etc/shadow 同一行贴在一起
[root@linux ~]# paste /etc/passwd /etc/shadow
范例二:先将 /etc/group 读出(用 cat),然后与范例一贴上一起!且仅取出前三行
[root@linux ~]# cat /etc/group|paste /etc/passwd /etc/shadow -|head -n 3
• expand
这玩意儿就是在将 [tab] 按键转成空格键
分割命令: split
[root@linux ~]# split [-bl] file PREFIX
参数:
-b :后面可接欲分割成的档案大小,可加单位,例如 b, k, m 等;
-l :以行数来进行分割。
我的/etc/termcap七百多k,若想分成300KB一个文件怎么办?
cd /tmp;split -b 300k /etc/termcap termcap
ll -l termcap*
......termcapaa
......termcapab
如何将上面的小文件合成一个文件
cat termcap* >>tercapback
将使用ls -al /输出 的信息中,每10行记录成一个文件
ls -al / |split -l 10 - lsroot
结果
wc -l lsroot*
.........
参数代换: xargs
范例一:将 /etc/passwd 内的第一栏取出,仅取三行,使用 finger 这个指令将每个
账号内容秀出来
[root@linux ~]# cut -d':' -f1 < /etc/passwd |head -n 3| xargs finger
范例二:同上,但是每次执行 finger 时,都要询问使用者是否动作?
[root@linux ~]# cut -d':' -f1 < /etc/passwd |head -n 3| xargs -p finger
范例三:将所有的 /etc/passwd 内的账号都以 finger 查阅,但一次仅查阅五个账号
[root@linux ~]# cut -d':' -f1 < /etc/passwd | xargs -p -n 5 finger
范例四:同上,但是当分析到 lp 就结束这串指令?
[root@linux ~]# cut -d':' -f1 < /etc/passwd | xargs -p -e'lp' finger
关于减号 - 的用途
[root@linux ~]# tar -cvf - /home | tar -xvf -
上面这个例子是说:『我将 /home 里面的档案给他打包,但打包的数据不是纪录到档案,而是传送到 stdout; 经过管线后,将 tar -cvf - /home 传送给后面的 tar -xvf - 』。后面的这个 - 则是取用前一个指令的 stdout, 因此,我们就不需要使用 file 了!这是很常见的例子喔!注意注意!
发表评论
-
shell命令集
2016-03-16 10:36 3601、给一个变量赋值,用let,如: let num=1 ... -
Linux常用命令(4)
2016-03-16 09:51 5431、查看命令所在具体位置 which 文件 2、查看环 ... -
red hat的经验总结1
2016-01-13 16:44 5021、system-config-date 进入日期界面 2、在 ... -
SUSE服务启动顺序
2015-10-27 14:57 698SUSE 服务启动顺序的问 ... -
linux core文件的设置
2015-06-26 11:01 2416L一、前言: 有的程序可 ... -
linux字符集
2015-06-10 15:58 478一·查看字符集 字符集在系统中体现形式是一个环境变量,以Cen ... -
SAMBA配置(转)
2015-06-10 15:20 640Samba配置文件常用参数 ... -
Linux xargs命令
2015-03-02 16:41 642xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个 ... -
LINUX任务(jobs)详解(转载)
2015-03-01 14:34 601在用管理员执行一个命令后,用Ctrl+Z把命令转移到了后台。 ... -
很精彩的linux命令(转载)
2015-03-01 14:32 638博客分类: linux运维shell基础/命令/语法 1.按 ... -
Linux运维常用命令 (转载)
2015-03-01 14:27 8121 删除0字节文件 find-type f -size 0 ... -
shell编程之cut
2015-03-01 14:21 657cut用法 博客分类: shell基础/命令/语法 li ... -
Linux常用命令(3)
2015-02-27 16:29 6101、命令别名设置 alias,unalias ... -
vi 小技巧
2015-02-27 15:41 728vi可以同时编辑多个文件,多个文件间可以切换,并复制内容 如: ... -
Linux常用命令(2)
2014-12-01 16:06 7141、文件系统开机挂载配 ... -
Linux常用命令(1)
2014-11-12 16:18 4231、欢迎文字 /etc/issue 2、查看目前支持语言及 ... -
Linux 网桥配置命令:brctl(转)
2014-11-06 14:48 3866linux brctl Linux网关模式 ... -
Linux下创建光盘ISO文件
2014-11-06 14:40 670dd if=/dev/scd0 of=/1.iso -
Centos经验总结
2014-11-05 10:50 721centos查看系统版本 lsb_release -a ce ...
相关推荐
鸟哥linux私房菜-服务器版 3版 vbird-linux-server-3e.pdf
《鸟哥Linux私房菜》是一本广受欢迎的Linux学习书籍,它分为基础篇和服务器篇,涵盖了Linux操作系统的各个方面,旨在帮助读者从零开始掌握Linux系统管理技能。该书在豆瓣上的高评分(9.1分以上)充分体现了其在IT...
linux 鸟哥的私房菜服务器篇 pdf(全高清) 分两卷 不用积分下载地址: linux 鸟哥的私房菜基础篇 http://www.jsoncn.com/post/166.html linux 鸟哥的私房菜服务器篇 http://www.jsoncn.com/post/167.html
### Linux鸟哥私房菜第四版基础篇——计算机概论 #### 0.1 计算机:辅助人脑的好工具 随着科技的发展,计算机已成为我们生活中不可或缺的一部分。无论是日常办公还是娱乐休闲,都能见到各种形态的计算机的身影,如...
鸟哥Linux私房菜 基础篇+服务器篇(全),Linux基础知识,shell脚本及搭建服务器相关,Linux神作。
于2009年5月29日转换整理vbird网站基础篇前13章内容。 后13章地址: http://download.csdn.net/source/1559709 版权归vbird所有哦,喜欢的话请购买正版书籍!!
《鸟哥的私房菜简体中文版》是一本深受读者喜爱的Linux操作系统学习书籍。它涵盖了从Linux基础到进阶的各个方面,非常适合Linux初学者和有一定基础希望进一步提高的读者。该书由经验丰富的Linux讲师编写,深入浅出地...
内容概要:《鸟哥的Linux私房菜-基础篇》第四版详细介绍Linux的基础知识,包括计算机组成、操作系统原理、Linux文档查看方法(man页、info页)、常见实用文档位置及使用方法、nano编辑器简介及SELinux安全管理等方面...
鸟哥Linux私房菜基础篇教学视频,文档中给出的是网盘链接。
linux入门经典教材,通俗易懂! 目录: 第一部分 Linux的规则与安装 第0章 计算机概论 第1章 Linux是什么 第2章 Linux如何学习 第3章 主机规划与磁盘分区 第4章 安装CentOS 5.x与多重引导小技巧 第5章 首次...
鸟哥的Linux 私房菜 基础学习篇.mobi,鸟哥的Linux 私房菜 基础学习篇.mobi
学习linux的书籍,根据网上的《鸟哥的私房菜》自己制作的chm格式的文档,感觉币html格式的查看起来方便多了。
《鸟哥Linux私房菜服务器架设》是Linux系统管理员必备的经典教程,尤其在第三版中,作者深入浅出地讲解了Linux系统的基础知识以及如何搭建和管理服务器。本教程覆盖了从安装Linux操作系统到配置网络服务、安全管理、...
根据给出的文件信息,"鸟哥Linux私房菜基础学习篇(第三版).pdf" 是一本针对Linux新手的入门书籍,涵盖了Linux的基础命令和指令速查表。为了满足题目要求,以下是根据提供的文件内容、标签以及Linux基础知识构建的...
书籍默认解压密码 kevin.blog.csdn.net 没有积分联系博主获取。其中包含PDF以及CHM两种格式
《鸟哥的Linux私房菜》是一本面向Linux学习者的经典教材,它不仅提供了Linux系统的基础知识,还包含了大量实用的操作技巧和命令参考,非常适合初学者和希望系统学习Linux的用户。从提供的内容片段来看,这本书中涉及...