您的位置:新葡亰496net > 电脑系统 > 新葡亰496net:基础知识

新葡亰496net:基础知识

发布时间:2019-09-11 16:39编辑:电脑系统浏览(62)

    1、輸入輸出,重定向,管道

    shell_advanced,advancedbashshell

    1、輸入輸出,重定向,管道 2、<(cmd);>(cmd) 3、>;<;>>;<<;>>>;<<< 4、文本管理_1:cat;head;tail;cut;wc;sort;uniq;tr;tac;rev     一、輸入輸出,重定向,管道 1、Linux 程序有三个正经的输入输出,分别是: 标准输入,用数字0表示,私下认可连接到键盘,程序平日用来赢得顾客的输入 标准输出,用数字1表示,暗中同意连接到荧屏,程序平常用来输出音讯规范错误,用数字2代表,暗中同意连接到显示屏,程序经常用来输出错误消息 深入分析: 命令 passwd 从标准输入读取顾客密码,所以客商能够用键盘输入密码 命令 echo 把结果输出到正规输出,所以能够在荧屏上看出结果 普通客商未有权限查看/root 目录,所以出错,于是 ls 把错误音信输出到标准错误,也正是显示屏 2、> 与 >> > 删除原本数据,写入新数据 >> 将新数据追加到原本数据将来 3、/dev/null 俗称:垃圾桶文件 # echo hello world > /dev/null --重定向到该公文的数码都被基本舍弃了,能够用这一个性格来掩盖某个输出音讯 # ls / /root 2> /dev/null --屏蔽掉命令的失误音讯 4、输出重定向 顾客能够依靠需求,把暗许的输入输出的样子举办修改 # ls -l > test # ls -l 1> test --两条都以正规输出重定向到 test 文件,即暗许1可省略 # ls /jjjj 2> test --将规范错误重定向到 test 文件 # ls / /jjjj 1> stdout 2> stderr --将标准输出与正规错误分别重定向到七个例外的文本中 # ls /jjjj / > std 2>&1 --将标准错误合併到规范输出,人己一视定向到三个文书个中 # ls /jjjj / &> std --结果与上条语句等价,尤其简洁 # ls /jjjj / &>> std --也是将标准输出与行业内部错误重定向追加到二个文件 5、标准输入重定向   # cat 0< /etc/passwd   # cat < /etc/passwd   # cat /etc/passwd --cat命令的科鲁班入来源于文件 /etc/passwd 中 6、管道 下边所陈述的重定向,是把标准的输入输出连接到文件。我们也得以把八个程序之间的行业内部输入输出实行连接,完成命令之间数据的传递,这种才干被形象地称做管道,程序的输出就像是流水在管道中流通同样,从最右侧包车型大巴次序流到最左侧的次序。管道是linux shell 里那么些常见的技能,利用管道技巧能够达到特别使用八个小工具,完毕特别复杂而庞大的效率。 # cat /etc/passwd | head -n 3 --侧边的通令的正式输出作为左侧的授命的正经输入 # cat /etc/passwd | head -n 3 | tail -n 1 7、规范输入输出的递进切磋 规范的输入输出是Linux 默认为程序创立好的四个文本描述符,就算抢先四分之二的主次都会利用那五个公文汇报符来作为团结的输入输出,不过那决不是强制性的,相当于说,程序能够不应用那四个正经的文件描述符,而是自身展开新的文书陈诉符来使用。当程序不行使正式的输入输出时,这里所利用的重定向对其也就不起功能了。举例: passwd: 程序从正规输入读取客商密码,由此大家可以经过重定向标准输入来向它提供密码 ssh: 命令是用以远程登陆的程序,它读取客商输入的密码时,使用的不是职业输入,因而大家不能够通过重定向标准输入来向它提供密码 8、验证进程的标准输入输出所连接的文本 # sleep 999 1> /tmp/good 2>&1 --在二个极端运营命令 # pgrep -x sleep --在别的一个极限,找寻sleep 的进程ID # lsof -anop 16715 -d 0,1,2 --查看该进度所张开的文书 9、验证重定向发生的机会 # vim file # cat -n file > file --期待cat 会在每一行后面加上行号,然后把结果重定向保存回原本的公文file 中 # cat file --为空了 原因:shell 实施命令此前,会先实施重定向操作,在第 2 条命令中,先举行 > file,那些重定向操作会把公文file 的原委清空。当重定向操作把file 文件清空之后,再cat 该文件,自然就看不到任何内容了 $ sudo ls /root > /root/ls.log --该例子中,顾客未有机缘输入密码,因为重定向操作西施行,当前顾客是普通顾客,不能在路线/root/ls.log 中开创文件,shell 出错并脱离:bash: /root/ls.log: Permission denied。此时还平素不推行命令sudo,所以也就没有机遇输入密码   二、<(cmd);>(cmd) 1、<(cmd) 用进度置换的章程重定向标准输入 2、>(cmd) 用进程置换的措施重定向标准输出 3、进度置换 进程的正儿八经输出存到叁个临时文件中,重临有时文件的路径<(),当要求使用程序的输出,可是又不想生成叁在那之中档文件时,能够思虑选用进度置换 # paste <(seq $(wc -l /etc/passwd | cut -d" " -f1)) <(awk -F: '{print $1}' /etc/passwd) # paste <(seq 26) <(awk -F: '{print $1}' /etc/passwd) --可将该两条命令举行相比   三、>;<;>>;<<;>>>;<<< 1、> --输出重定向,成立(存在则覆盖) # echo 'hello world' > test -- 荒诞不经 test 则开创,存在则覆盖里面内容 2、< --输入重定向,来源于文件 # less < /etc/passwd --将 /etc/passwd 里面包车型大巴剧情输入到工具 less # cat < <(ls /) --这里运用到命令置换 # wc -l < $(echo /etc/passwd) # wc -l < <(cat /etc/passwd) --这里运用到进度置换 3、>> --重定向到文件,创立(存在则加多到文件末尾) # echo 'hello george' >> george -- 不设有 george 则创立,存在则扩张内容至文件末尾 4、<< --重定向,用于Here document 4.1、Here Document 是在Linux Shell 中的一种特别的重定向格局,它的主干的情势如下: cmd << delimiter Here Document Content delimiter : << delimiter --shell批量注释 Here Document Content delimiter 成效:将两个 delimiter 之间的剧情(Here Document Content) 传递给 cmd 作为输入参数 4.2、终端 # cat << EOF > one > two > three > EOF EOF --只是贰个标记而已,能够替换来放肆的官方字符 > --那些标识是终端发生的提醒输入音信的标志符 delimiter -- 绝对要顶格写,前边前边不能够有其余字符,包含空格 4.3、shell # vim here.sh --注:还可在中间使用变量 #!/bin/bash cat << EOF > output.sh echo "hello" echo "world" echo $1 EOF # chmod a x here.sh # ./here.sh george # cat output.sh --查看里面内容;在此间 $1 被开展成为了本子的参数 注意:若不想实行这几个变量,则需选择双引号将率先个 EOF 引起来。 4.4、<<- Here Document 还也可以有二个用法就是将 '<<' 变为 '<<-'。 使用 <<- 的独一变化正是Here Document 的情节部分每行前边的 tab (制表符)将会被删去掉,这种用法是为着编制Here Document的时候可以将内容部分开展缩进,方便阅读代码 5、<<< --重定向,用于Here string # wc -l <<< "$(ls -l /home)" # while read x; do echo "hello";done <<< "$(seq 5)" # bc <<< "2 ^ 10" # vim string.sh #!/bin/bash while read line do if [ "${line#ftp:}" != "$line" ];then awk -F: '{print $6}' <<< $line break fi done < /etc/passwd 注释:循环读取/etc/passwd 文件中的每一行,假诺是ftp 客户,就打字与印刷出其家目录,并退出循环 ${line#ftp:}:某行初阶相称到了 ftp: ;则只取该行未相配部分 # chmod a x string.sh # ./string.sh   四、文本管理_1:cat;head;tail;cut;wc;sort;uniq;tr;tac;rev 文本管理是每三个系统一管理理员都会反复接触的职责,其宗旨内容是有关工具的选取,关键要点在于灵活地组成四个工具去达成职务1、cat --concatinate,把二个要么多少个公文的內容按順序連接起來,輸出到标准輸出 # cat -n /etc/passwd --显示文件内容,何况拉长行号 # cat -A /etc/passwd --打字与印刷出某个不可知的字符和地点标识 # cat 1.txt 2.txt > test.txt --合併文件 2、head --读取文件底部 # head -n 3 /etc/passwd --读取文件/etc/passwd 的前头三行 # head -n -1 file --丢掉 file 的末梢一行 # head -c 3 /etc/passwd --读取文件/etc/passwd 的后面三個字节 # head -c -3 file --丢弃 file 的最后 3 个字节 # head -c 10m /dev/urandom > big --创制三个10M的公文 3、tail --读取文件后面部分 # tail -n 3 /etc/passwd --读取文件 /etc/passwd 前面三行 # tail -n 28 /etc/passwd --从第28行开首读取,直到文件尾巴部分;吐弃底部的27行 # tail -c 3 /etc/passwd --读取文件 /etc/passwd 的前面三個字节 # tail -c 28 /etc/passwd --从第28字节最初读取,直到文件尾部;扬弃尾部的27字节 # tail -f /etc/passwd --追踪文件尾部内容的变通,常用來视察日志文件的变化化,特别实用 4、cut --功效类似于awk,可是从未awk那么强劲和复杂性,当要对数码做分列输出时,常常选择awk,用cut的时候非常的少常用选项: -d --定义分隔符 -b --输出钦点地点的字节(byte) -c --输出钦点地方的字符(character) # echo "a;b;c d;e" | cut -d ";" -f1,3,4 -- -d 定义分隔符( 私下认可是 TAB );-f 定义输出对应字段 # cat -n /etc/passwd | cut -d $'n' -f1,3-5,7 -- 使用换行符做分隔符 # echo 笔者是中夏族 | cut -b1-3 -- -b 输出内定地点的字节(byte);多个utf8 的汉语字占用3个字节 # echo 作者是华夏人 | cut -c2-4 -- -c 输出钦命地方的字符(character);与-b 的分别表今后拍卖非斯拉维尼亚语字符时 # echo 做个大胆的中原人 | cut -b1-2,9 --会输出三个 ”假“ 字 # echo -n 做个大侠的炎黄种人 | xxd --会发掘 1,2,9 那八个字节为:e581 87 # echo -n 假 | xxd --而 ”假“ 也是 5、wc --计算数据的字节数,字符数,单词数,行数 常用选项: -c --总计字节数 -m --总结字符数 -w --总括词数 -l --总计行数 # echo -n 作者是神州人 | wc -c -- -c 计算字节数,5个utf8华语占16个字节 # echo -n 笔者是华夏人 | wc -m -- -m 计算字符数,与-c 的分歧表未来拍卖非塞尔维亚语字符时,类似于命令cut # echo -n 我是华夏人 | wc -w -- -w 计算词数,未有分开符分开,5个粤语算五个词,那与汉语所谓的“词”是例外的 # echo -n Uppercase CHINESE | wc -w --两个词 # echo -n Uppercase CHINESE | wc -c --拾伍个葡萄牙共和国语字节,未有 -n 就有二十三个(因为还只怕有叁个换行符) # echo -n Uppercase CHINESE | wc -m --拾伍个日文字符,未有 -n 就有21个(因为还或许有多个换行符) # wc -l /etc/passwd -- -l 总括行数 6、sort --按行对文本实行排序 常用选项: -t --钦定分割符 -k --内定排序的字段 -u --去除重复的行 -n, -h --遵照数值排序 -r --反过来排序 # cut -d ":" -f7 /etc/passwd | sort -u -- -u 去除重复行 # echo -e "1n2n10" | sort # echo -e "1n2n10" | sort -n -- -n 按数值排序,不能够处理K, M, G 等单位字符 # ls -lh | tail -n 2 | sort -k5,5n -- -k 钦命排序的字段 # ls -lh | tail -n 2 | sort -k5,5h -- -h 遵守数值排序时,能管理K, M, G 等单位字符 # head -4 /etc/passwd | sort -t: -k7,7 -- -t 以冒号 : 作为字段分割符,按第7字段排序 # head -4 /etc/passwd | sort -t: -k7,7 -k3,3n --先按第7字段排序,若第7字段有雷同的,则按第3字段排序 # echo -e "1n2n3" | sort -nr -- -r 对排序反转 # head -4 /etc/passwd | sort -t: -k7,7 -k3,3nr --至反转第3字段排序,也可同期对七个字段反转 7、uniq --去除接二连三的重复行 常用选项: -c --计算重复行的数目 # echo -e "1n1n2n1" | uniq -- 结果中仍有多个1,因为那多个1是不接二连三的 # echo -e "1n1n2n1" | sort -u -- sort 去除重复则毫不总是 # cut -d: -f7 /etc/passwd | sort | uniq -c -- 在sort命令例子的功底上,计算区别的登入shell现身的次数 8、tr --调换,删除,缩减同样字符 常用选项: -d --删除,删除相称到的保有字母 -s --缩减,缩减一样字符 格式: tr SET1 SET2 注意: 把会集1里面包车型地铁字符转变成集结2中对应地方的字符,所以原则上五个汇聚中的字符数目应该同样,可是,若是三个聚众中的字符数不等于,程序也不会出错,请留心这种情状下的结果。要点: a、 tr 不关切多少个聚众中是如何字符,它只是简单地把对应地方的字符每一种做替换而已、 b、 tr 做的是单个字符的交替,不能够替换字符串 # echo abc | tr a-z A-Z --把27个小写字母调换来相呼应的大写字母 # echo abc | tr ab BA --把 a 和 b,分别转变为 B 和 A # echo 好人做好事 | tr 好 坏 -- “好” 转变为 “坏” # echo abcdefg | tr a-z AB --集结2非常短,程序自动用会集第22中学最终二个字符来扩展群集2 # echo abcdefg | tr a-b A-Z --集合2较长,程序自动把集结2切短 # echo Abc | tr a-zA-Z A-Za-z --达成英语字母大小反转 # echo hello world | tr -d ow -- -d 删除,相称到的保有字母 # echo 0123456789 | tr -d 13579 # tr -d '12' < /etc/passwd -- 删除文件/etc/passwd 中的换行符,tr 可用八进制表示四个字符 # echo aabbaacc | tr -s a -- -s,将各样连在一齐的多少个 a 缩减至三个 # echo aabbaacc | tr -s a A -- 集结之后再做调换 9、tac --把一个依旧多个文本的內容按順序連接起來,輸出到標準輸出,各类文件中,内容按行号反序打字与印刷 # echo -e "111111111n2222222" > f1 # echo -e "333333333n4444444" > f2 # tac f2 f1 10、rev --把文件中的行左右反转 # echo -e "1234567nabcdefg" > test # rev test   五、扩展 1、cat,md5sum # echo file1 > file1 # echo file2 > file2 --创建四个文件 # md5sum file1 file2 --相比他们的 md5 值是或不是同样 # head -c 10m /dev/urandom > bigfile --使用随机设备创设叁个 10M 的公文 # head -c 3m bigfile > file1 --将前 3M 数据导入 file1 # tail -c 4m bigfile > file3 --将后 3M 数据导入 file3 # head -c 6m bigfile | tail -c 3m > file2 --将中间 4M 数据导入 file2 # ls -lh file* # cat file1 file2 file3 > newbigfile --使用 cat 将七个文件合併到二个新大文件中 # md5sum newbigfile bigfile --在用命令相比较旧大文件与新大文件的 md5sum 值

    1、 輸入輸出,重定向,管道 2、(cmd);(cmd) 3、;;;;; 4、文本管理_1:cat;head;tail;cut;wc;sort;uniq;tr;tac;rev 一、輸...

    I/O:

    学科纲要:

    2、<(cmd);>(cmd)

    系统设定

    1. shell性情 命令历史 history !!  !$  !n  !字符 Tab 键能够补全文件路线大概命令 alias  a=“b”  unalias a 通配符 *相配零个或多少个字符 ?相配两个字符 输入输出重定向 >, >>,  <,  2>, 2>> 管道符 | 作业调整 ctrl z, jobs,  fg,  bg

    2. 变量 系统变量名都以大写,echo 能够查看变量名 env 能够列出当前客户的全体蒙受变量以及客户自定义全局变量 set命令能够把富有变量列出来包含系统的和自定义的全局变量以及当前shell自定义变量 linux下设置自定义变量准绳: (1)格式为 “a=b”, 其中a为变量名,b为变量的内容,等号两侧不可能有空格;(2)变量名只可以由英、数字以及下划线组成,并且无法以数字开首;(3)当变量内容蕴涵特殊字符(如空格)时,要求加上单引号;(4)假诺变量内容中须求用到任何命令运维结果则可以运用反引号;(5)变量内容能够加上其余变量的剧情,必要加双引号;

    3、>;<;>>;<<;>>>;<<<

      默认输入设备:规范输入,STDIN,0

    系统具备客户使用变量: export myname=Aming  全局变量,插手/etc/profile并source /etc/profile恒久生效 系统有个别客商接纳变量: export myname=Aming 参预当前客商家目录下的 .bashrc中 source .bashrc export myname=Aming  全局变量,export 不加任何取舍表示,表明全数的意况变量以及客商自定义变量 客商自定义变量,能够动用 unset 变量名 进行破除变量设置

    4、文本管理_1:cat;head;tail;cut;wc;sort;uniq;tr;tac;rev

      私下认可输出设备:标准输出,STDOUT,1

    1. 系统和村办景况变量的布置文件 /etc/profile  PATH, USECR-V, LOGNAME, MAIL, INPUTRC, HOSTNAME, HISTSIZE, umask等 /etc/bashrc  $PS1  umask    以往要是设置umask修改 /etc/profile 不要改这么些文件 .bash_profile  客商本身的情况变量 .bashrc  当客商登入时以及历次展开新的shell时, 施行该公文 .bash_history  记录命令历史用的 .bash_logout :当退出shell时,会实施该公文。

    2. shell中的特殊符号 * 相配符号,零个或八个放肆字符 ? 相称符号,1个随机的字符 # 注视表明用的,使前面包车型地铁内容失去原先的意义 脱义字符,将特殊字符还原为普通字符 |将符号后面命令的结果丢给标识前面包车型客车下令,一般针对文书档案操作的命令比较常用,举个例子cat, less, head, tail, grep, cut, sort, wc, uniq, tee, tr, split, sed, awk等等 

     

      标准错误输出:STDE奥迪Q3兰德酷路泽,2

    $ 援用变量,还恐怕有 !$ ; 分号,多条命令写一行时,分隔命令 ~ 客户家目录 & 放到命令最终边,让命令在后台运营 >, >>, 2>, 2>>  [错误]重定向,追加[错误]重定向 [ ] 中括号,中间为字符组合,代表中间字符中的大肆三个 ls 1[23a].txt

     

      属于不一样的数据流

    1. 常用命令: 1)cut 语法: cut -d ‘分隔字符’ [-cf] n 这里的n是正整数 -d 前面钦命分隔符,用单引号引起来,-f 钦赐第几段 cut -d ':'  -f 1 /etc/passwd |head -n 5 -c 前边独有一个数字代表截取第多少个字符head -n2 /etc/passwd|cut -c2 -c 前边跟二个数字区域,表示截取从几到几head -n2 /etc/passwd|cut -c2-5

    一、輸入輸出,重定向,管道

     

    2)sort 语法: sort [-t 分隔符] [-kn1,n2] [-nru]  (n1<n2) 不加选项,从首字符向后,依次按ASCII码值举办升序排序sort  /etc/passwd -t 后钦点分隔符,-kn1,n2表示在内定的距离中排序,-k前边只跟二个数字代表对第n个字符排序,-n代表使用纯数字排序 sort -t: -k3 -n /etc/passwd -r 表示以降序的样式排序 sort -t: -k3,5 -r /etc/passwd -u 去重  cut -d: -f4 /etc/passwd |sort -n -u

    1、Linux 程序有多个职业的输入输出,分别是:

    标准输入:键盘

    3)wc 用于总计文档的行数、字符数、词数 不加任何选用,会来得行数、词数以及字符数 -l 总括行数 -m 总计字符数 -w 总结词数

    专门的学问输入,用数字0表示,私下认可连接到键盘,程序平时用来收获顾客的输入

    规范输出和谬误输出:荧屏

    4)uniq uniq 去重新,最常用就贰个 -c 用来总结重复的行数,去重前要先排序sort testb.txt |uniq -c 

    标准输出,用数字1象征,私下认可连接到荧屏,程序常常用来输出音讯

     

    5)tee 后跟文件名,类似于>,比重定向多了贰个效应,在把文件写入前面所跟的文书中的同期,还显得在显示屏上

    标准错误,用数字2代表,默许连接到荧屏,程序经常用来输出错误新闻

    I/O重定向:

    6)tr 用来替换字符 最常用的便是高低写转变: head -n2 /etc/passwd |tr '[a-z]' '[A-Z]' tr 替换七个字符也是可以的 grep 'root' /etc/passwd |tr 'r' 'Rubicon'

    解析:

     

    7)split 切割大文件用的 -b : 按大小来划分单位为byte  split -b50 1.txt 暗许会以xaa, xab, …那样的方式定义分隔后的公文名,也足以钦赐文件名 split -b50 1.txt 123 -l : 按行数分隔,split -l10 file

    指令 passwd 从专门的工作输入读取客商密码,所以顾客能够用键盘输入密码

    出口重定向:

    1. && 和 || command1 ; command2  前边命令是或不是推行到位都会实施前边命令 command1 && command2 唯有前面命令实行成功才会执行前面命令 command1 || command2  独有后边命令不成功再去实行前边命令

    一声令下 echo 把结果输出到标准输出,所以能够在显示器上见到结果

    > :覆盖输出

    普通顾客未有权力查看/root 目录,所以出错,于是 ls 把错误新闻输出到正式错误,约等于显示屏

    >> :追加输出

    2、> 与 >>

    2>:错误输出

    > 删除原本数据,写入新数据

    2>>:追加错误输出

    >> 将新数据追加到原本数据现在

     

    3、/dev/null

    常规输出

    俗称:垃圾桶文件

    ls /usr > /tmp/var.out

    # echo hello world > /dev/null --重定向到该文件的多少都被基本吐弃了,能够用那几个特点来遮盖某个输出音信

     

    # ls / /root 2> /dev/null --屏蔽掉命令的失误音信

    set

    4、输出重定向

      -C:禁止对曾经存在文件使用覆盖重定向;

    用户能够依据必要,把暗许的输入输出的趋势扩充改变

       C:允许覆盖输出

    # ls -l > test

     

    # ls -l 1> test --两条都以行业内部输出重定向到 test 文件,即暗许1可总结

    强制覆盖输出

    # ls /jjjj 2> test --将行业内部错误重定向到 test 文件

    ls /usr >| /tmp/var.out

    # ls / /jjjj 1> stdout 2> stderr --将行业内部输出与正统错误分别重定向到多少个差别的文件中

    荒唐输出

    # ls /jjjj / > std 2>&1 --将标准错误合併到正式输出,同样尊敬定向到一个文件其中

    ls /varr 2> /tmp/var2.out

    # ls /jjjj / &> std --结果与上条语句等价,越发简洁

    定向规范输出与正式错误输出

    # ls /jjjj / &>> std --也是将业内输出与标准错误重定向追加到三个文书

    ls /varr > /tmp/var3.out 2> /tmp/err.out

    5、规范输入重定向

     

      # cat 0< /etc/passwd

    &>:重定向规范输出或错误输出至同一个文件

      # cat < /etc/passwd

    ls /varr &> /tmp/var4.out 

      # cat /etc/passwd --cat命令的正经输入来源于文件 /etc/passwd 中

     

    6、管道

    输入重定向

    地点所描述的重定向,是把正规化的输入输出连接到文件。大家也能够把多少个程序之间的正式输入输出举办连接,完毕命令之间数据的传递,这种手艺被形象地称做管道,程序的输出就如流水在管道中流通一样,从最左侧的次第流到最侧边的程序。管道是linux shell 里优良布满的手艺,利用管道本事能够直达相当使用四个小工具,完毕特别复杂而强劲的服从。

    <:平时输入

    # cat /etc/passwd | head -n 3 --左侧的指令的标准输出作为左侧的指令的专门的工作输入

    <<:Here Document

    # cat /etc/passwd | head -n 3 | tail -n 1

    cat << EOF

    7、标准输入输出的深切探讨

     

    规范的输入输出是Linux 默以为程序制造好的八个文本描述符,即使相当多的前后相继都会选拔那多少个公文汇报符来作为和睦的输入输出,然而那不用是强制性的,也正是说,程序能够不应用那多少个正式的文本描述符,而是自身展开新的文本陈诉符来使用。当程序不采纳规范的输入输出时,这里所选用的重定向对其也就不起成效了。举例:

    正规输入

    passwd: 程序从行业内部输入读取客商密码,因而我们能够通过重定向标准输入来向它提供密码

    tr 'a-z' 'A-Z' < /etc/fstab

    ssh: 命令是用来远程登陆的主次,它读取客商输入的密码时,使用的不是职业输入,由此大家不能够由此重定向标准输入来向它提供密码

    出口内容到文件中

    8、验证进程的正儿八经输入输出所连接的文件

    cat >> /tmp/myfile.txt << EOF

    # sleep 999 1> /tmp/good 2>&1 --在四个终端运维命令

     

    # pgrep -x sleep --在另外二个极端,搜索sleep 的过程ID

    管道:前几个限令的输出,作为后四个下令的输入

    # lsof -anop 16715 -d 0,1,2 --查看该进度所打开的文本

    命令1 | 命令2 | 命令3 ...

    9、验证重定向发生的时机

     

    # vim file

    echo "First love is only a little foolishness and a lot of curiosity." | tr 'a-z' 'A-Z'

    # cat -n file > file --期待cat 会在每一行前面加上行号,然后把结果重定向保存回原本的文书file 中

    echo "redhat" | passwd --stdin hive

    # cat file --为空了

    cat /etc/passwd | sort 

    缘由:shell 推行命令从前,会先实施重定向操作,在第 2 条命令中,先实行 > file,那么些重定向操作会把文件file 的剧情清空。当重定向操作把file 文件清空之后,再cat 该公文,自然就看不到任何内容了

    cut -d : -f 1 /etc/passwd | sort -n | tr 'a-z' 'A-Z'

    $ sudo ls /root > /root/ls.log --该例子中,客商并未有机缘输入密码,因为重定向操作先推行,当前顾客是普通客商,不能在路径/root/ls.log 中创制文件,shell 出错并脱离:bash: /root/ls.log: Permission denied。此时还从未实行命令sudo,所以也就从未时机输入密码

    ls /var | tr 'a-z' 'A-Z'

     

    wc -l /etc/passwd | cut -d' ' -f 1

    二、<(cmd);>(cmd)

     

    1、<(cmd)

    tee :从正式输入读取,写入到正规输出,并保存到文件中

    用经过置换的方法重定向规范输入

    echo "First love is only a little foolishness and a lot of curiosity." | tee  /tmp/test.out

    2、>(cmd)

     

    用经过置换的办法重定向标准输出

    练习:

    3、进度置换

    1.总结/usr/bin目录下的文书个数;

    过程的行业内部输出存到三个有的时候文件中,重临有时文件的路子<(),当须要动用程序的出口,然而又不想生成贰在那之中等文件时,能够设想使用过程置换

     #ls /usr/bin | wc -l

    # paste <(seq $(wc -l /etc/passwd | cut -d" " -f1)) <(awk -F: '{print $1}' /etc/passwd)

    2.抽出当前系统上享有客户的shell,每一种shell只浮现二回,且按梯次展现;

    # paste <(seq 26) <(awk -F: '{print $1}' /etc/passwd) --可将该两条命令进行对照

    # /etc/passwd 保存shell

     

    #cut -d : -f 7 /etc/passwd |sort -u

    三、>;<;>>;<<;>>>;<<<

    3.哪些展示/var/log目录下种种文件的剧情类型?

    1、> --输出重定向,创设(存在则覆盖)

    #file /var/log/*

    # echo 'hello world' > test -- 不设有 test 则创建,存在则覆盖里面内容

    4.收取/etc/inittab文件的第6行;

    2、< --输入重定向,来源于文件

    # head -6 /etc/inittab | tail -1

    # less < /etc/passwd --将 /etc/passwd 里面的内容输入到工具 less

    5.抽出/etc/passwd文件中尾数第9个客商的客户名和shell,显示到显示器上并将其保存至/tmp/users文件中;

    # cat < <(ls /) --这里运用到命令置换

    # tail -9 /etc/passwd | head -1 | cut -d : -f 1,7 | tee /tmp/users

    # wc -l < $(echo /etc/passwd)

    6.显示/etc目录下全数以pa最早的文本,并计算其个数;

    # wc -l < <(cat /etc/passwd) --这里运用到进程置换

    #  ls -d /etc/pa* | wc -l

    3、>> --重定向到文件,创立(存在则加多到文件末尾)

    7.不使用文本编辑器,将alias cls=clear一行内容增添至当下客户的.bashrc文件中。

    # echo 'hello george' >> george -- 不设有 george 则创立,存在则扩展内容至文件末尾

    # echo "alias cls=clear" >> ~/.bashrc

    4、<< --重定向,用于Here document

     

    新葡亰496net,4.1、Here Document

    是在Linux Shell 中的一种极其的重定向格局,它的大旨的格局如下:

    cmd << delimiter

    Here Document Content

    delimiter

    : << delimiter --shell批量注释

    Here Document Content

    delimiter

    效果:将五个 delimiter 之间的内容(Here Document Content) 传递给 cmd 作为输入参数

    4.2、终端

    # cat << EOF

    > one

    > two

    > three

    > EOF

    EOF --只是贰个标记而已,能够替换到率性的法定字符

    > --这几个标志是终点发生的提示输入新闻的标志符

    delimiter -- 必须要顶格写,前边前面无法有另外字符,蕴涵空格

    4.3、shell

    # vim here.sh --注:还可在内部使用变量

    #!/bin/bash

    cat << EOF > output.sh

    echo "hello"

    echo "world"

    echo $1

    EOF

    # chmod a x here.sh

    # ./here.sh george

    # cat output.sh --查看里面内容;在此间 $1 被开展成为了本子的参数

    在意:若不想拓宽这一个变量,则需采用双引号将首个EOF 引起来。

    4.4、<<-

    Here Document 还或然有叁个用法正是将 '<<' 变为 '<<-'。 使用 <<- 的独一变化正是Here Document 的剧情部分每行后边的 tab (制表符)将会被删除掉,这种用法是为着编制Here Document的时候能够将内容部分开展缩进,方便阅读代码

    5、<<< --重定向,用于Here string

    # wc -l <<< "$(ls -l /home)"

    # while read x; do echo "hello";done <<< "$(seq 5)"

    # bc <<< "2 ^ 10"

    # vim string.sh

    #!/bin/bash

    while read line

    do

    新葡亰496net:基础知识。if [ "${line#ftp:}" != "$line" ];then

    awk -F: '{print $6}' <<< $line

    break

    fi

    done < /etc/passwd

    评释:循环读取/etc/passwd 文件中的每一行,假诺是ftp 客商,就打字与印刷出其家目录,并退出循环

    ${line#ftp:}:某行开端匹配到了 ftp: ;则只取该行未相称部分

    # chmod a x string.sh

    # ./string.sh

     

    四、文本管理_1:cat;head;tail;cut;wc;sort;uniq;tr;tac;rev

    文本管理是每一个系统管理员都会反复接触的职务,其焦点内容是辅车相依工具的运用,关键要点在于灵活地整合多少个工具去做到职责

    1、cat --concatinate,把叁个只怕四个文本的內容按順序連接起來,輸出到专门的工作輸出

    # cat -n /etc/passwd --展现文件内容,并且增进行号

    # cat -A /etc/passwd --打印出部分不可知的字符和职位标识

    # cat 1.txt 2.txt > test.txt --合併文件

    2、head --读取文件底部

    # head -n 3 /etc/passwd --读取文件/etc/passwd 的前头三行

    # head -n -1 file --甩掉 file 的末梢一行

    # head -c 3 /etc/passwd --读取文件/etc/passwd 的前边三個字节

    # head -c -3 file --丢弃 file 的最后 3 个字节

    # head -c 10m /dev/urandom > big --创设二个10M的公文

    3、tail --读取文件尾部

    # tail -n 3 /etc/passwd --读取文件 /etc/passwd 后边三行

    # tail -n 28 /etc/passwd --从第28行开头读取,直到文件尾巴部分;抛弃底部的27行

    # tail -c 3 /etc/passwd --读取文件 /etc/passwd 的末尾三個字节

    # tail -c 28 /etc/passwd --从第28字节起始读取,直到文件尾部;遗弃尾部的27字节

    # tail -f /etc/passwd --跟踪文件后面部分内容的更换,常用來视察日志文件的变化化,特别实用

    4、cut --作用类似于awk,不过尚未awk那么强劲和复杂性,当要对数据做分列输出时,平日采纳awk,用cut的时候相当少

    常用选项:

    -d --定义分隔符

    -b --输出内定地方的字节(byte)

    -c --输出钦定地方的字符(character)

    # echo "a;b;c d;e" | cut -d ";" -f1,3,4 -- -d 定义分隔符( 暗许是 TAB );-f 定义输出对应字段

    # cat -n /etc/passwd | cut -d $'n' -f1,3-5,7 -- 使用换行符做分隔符

    # echo 作者是礼仪之邦人 | cut -b1-3 -- -b 输出钦定地方的字节(byte);多少个utf8 的普通话字占用3个字节

    # echo 笔者是中中原人民共和国人 | cut -c2-4 -- -c 输出钦赐地方的字符(character);与-b 的差异表现在拍卖非阿拉伯语字符时

    # echo 做个大胆的神州人 | cut -b1-2,9 --会输出三个 ”假“ 字

    # echo -n 做个大胆的华夏人 | xxd --会开采 1,2,9 那多个字节为:e581 87

    # echo -n 假 | xxd --而 ”假“ 也是

    5、wc --总结数据的字节数,字符数,单词数,行数

    常用选项:

    -c --总结字节数

    -m --总计字符数

    -w --总结词数

    -l --总计行数

    # echo -n 作者是炎黄种人 | wc -c -- -c 计算字节数,5个utf8粤语占17个字节

    # echo -n 小编是神州人 | wc -m -- -m 计算字符数,与-c 的区别表今后管理非乌克兰语字符时,类似于命令cut

    # echo -n 小编是中中原人 | wc -w -- -w 总结词数,未有分开符分开,5个汉语算八个词,那与汉语所谓的“词”是不一致的

    # echo -n Uppercase CHINESE | wc -w --两个词

    # echo -n Uppercase CHINESE | wc -c --拾九个荷兰语字节,没有 -n 就有20个(因为还会有八个换行符)

    # echo -n Uppercase CHINESE | wc -m --16个德语字符,未有 -n 就有贰十个(因为还大概有一个换行符)

    # wc -l /etc/passwd -- -l 计算行数

    6、sort --按行对文件进行排序

    常用选项:

    -t --钦赐分割符

    -k --钦命排序的字段

    -u --去除重复的行

    -n, -h --依据数值排序

    -r --反过来排序

    # cut -d ":" -f7 /etc/passwd | sort -u -- -u 去除重复行

    # echo -e "1n2n10" | sort

    # echo -e "1n2n10" | sort -n -- -n 按数值排序,不可能处理K, M, G 等单位字符

    # ls -lh | tail -n 2 | sort -k5,5n -- -k 钦点排序的字段

    # ls -lh | tail -n 2 | sort -k5,5h -- -h 根据数值排序时,能管理K, M, G 等单位字符

    # head -4 /etc/passwd | sort -t: -k7,7 -- -t 以冒号 : 作为字段分割符,按第7字段排序

    # head -4 /etc/passwd | sort -t: -k7,7 -k3,3n --先按第7字段排序,若第7字段有同等的,则按第3字段排序

    # echo -e "1n2n3" | sort -nr -- -r 对排序反转

    # head -4 /etc/passwd | sort -t: -k7,7 -k3,3nr --至反转第3字段排序,也可同有的时候候对五个字段反转

    7、uniq --去除三番五次的重复行

    常用选项:

    -c --总括重复行的数码

    # echo -e "1n1n2n1" | uniq -- 结果中仍有多个1,因为那八个1是不总是的

    # echo -e "1n1n2n1" | sort -u -- sort 去除重复则毫不总是

    # cut -d: -f7 /etc/passwd | sort | uniq -c -- 在sort命令例子的底子上,总结区别的报到shell出现的次数

    8、tr --调换,删除,缩减一样字符

    常用选项:

    -d --删除,删除相称到的享有字母

    -s --缩减,缩减一样字符

    格式: tr SET1 SET2

    在意: 把集结1里面包车型的士字符调换来会集第22中学对应位置的字符,所以原则上七个聚众中的字符数目应该亦然,但是,纵然七个汇聚中的字符数不等于,程序也不会出错,请当心这种气象下的结果。要点:

    a、 tr 不关怀四个聚众中是怎么字符,它只是简短地把对应地点的字符每一种做替换而已、

    b、 tr 做的是单个字符的更迭,不能够替换字符串

    # echo abc | tr a-z A-Z --把三十多个小写字母调换到相呼应的大写字母

    # echo abc | tr ab BA --把 a 和 b,分别转变为 B 和 A

    # echo 好人做好事 | tr 好 坏 -- “好” 转变为 “坏”

    # echo abcdefg | tr a-z AB --集合2极短,程序自动用会集第22中学最终二个字符来扩展集结2

    # echo abcdefg | tr a-b A-Z --集结2较长,程序自动把群集2切短

    # echo Abc | tr a-zA-Z A-Za-z --完毕朝鲜语字母大小反转

    # echo hello world | tr -d ow -- -d 删除,匹配到的有着字母

    # echo 0123456789 | tr -d 13579

    # tr -d '12' < /etc/passwd -- 删除文件/etc/passwd 中的换行符,tr 可用八进制表示一个字符

    # echo aabbaacc | tr -s a -- -s,将每种连在一起的多少个 a 缩减至三个

    # echo aabbaacc | tr -s a A -- 集中之后再做调换

    9、tac --把三个只怕七个文件的內容按順序連接起來,輸出到標準輸出,各个文件中,内容按行号反序打字与印刷

    # echo -e "111111111n2222222" > f1

    # echo -e "333333333n4444444" > f2

    # tac f2 f1

    10、rev --把公文中的行左右反转

    # echo -e "1234567nabcdefg" > test

    # rev test

     

    五、扩展

    1、cat,md5sum

    # echo file1 > file1

    # echo file2 > file2 --创立多个文本

    # md5sum file1 file2 --比较他们的 md5 值是还是不是一律

    # head -c 10m /dev/urandom > bigfile --使用随机设备创设二个 10M 的文本

    # head -c 3m bigfile > file1 --将前 3M 数据导入 file1

    # tail -c 4m bigfile > file3 --将后 3M 数据导入 file3

    # head -c 6m bigfile | tail -c 3m > file2 --将中等 4M 数据导入 file2

    # ls -lh file*

    # cat file1 file2 file3 > newbigfile --使用 cat 将八个文本合併到多少个新大文件中

    # md5sum newbigfile bigfile --在用命令比较旧大文件与新大文件的 md5sum 值

    本文由新葡亰496net发布于电脑系统,转载请注明出处:新葡亰496net:基础知识

    关键词: