设为首页 收藏本站
查看: 982|回复: 0

shell基础 4月8日课程笔记

[复制链接]

尚未签到

发表于 2018-8-29 09:58:51 | 显示全部楼层 |阅读模式
  shell基础
  1. shell特性
  查看命令历史
  history
  重复上一个命令
  !!
  !$
  执行命令历史中第多少条命令
  !n
[root@web ~]# !154  执行命令历史中以某个字符开头的命令
  !字符
  [root@web ~]# !c #执行命令历史中以c开头的命令
  Tab 键可以补全文件路径或者命令
  设置别名
  alias  a=“b”
  取消别名
  unalias a
  *:通配符,匹配零个或多个字符
  ?:匹配一个字符
  >:输入重定向
[root@web chen]# cat /etc/passwd >1.txt  >>:追加
[root@web chen]# echo "123456">>1.txt  把123456追加到1.txt中
  :错误定向
[root@web chen]# cat wang >2.txt 2>3.txt  
[root@web chen]# cat 3.txt
  如果cat这个命令执行正确就把结果定向到2.txt,如果不正确就是定向到3.txt中。就是执行cat wang这个命令的
  时候不让他出现任何的提示,把所有的提示都全部重定向到对的和错的中去
  2>>:错误追加
  |:管道符号
  就是把管道前面的命令输出作为管道后面命令的输入
[root@web ~]# cat /etc/passwd|less  作业控制
  sleep:制定暂停的时间
  sleep 100:休眠100秒
  ctrl+z:暂停作业
  jobs:查看被暂停或者在后台的运行的任务
  fg:恢复暂停或者休眠的任务
  当有多个任务的时候,在fg后面更数字几就表示恢复第几个任务,默认是恢复优先级搞的
  也就是任务前面带有“+”号的
  bg:把暂停的任务放在后台运行起来
  2. 变量
  系统变量名都是大写,echo 可以查看变量名
  env 可以列出当前用户的所有环境变量以及用户自定义全局变量
  set命令可以把所有变量列出来包括系统的和自定义的全局变量以及当前shell自定义变量,自定义的变量只能在当前shell中生效
  linux下设置自定义变量规则:
  (1)格式为 “a=b”, 其中a为变量名,b为变量的内容,等号两边不能有空格;
  (2)变量名只能由英、数字以及下划线组成,而且不能以数字开头;
  (3)当变量内容带有特殊字符(如空格)时,需要加上单引号;
  (4)如果变量内容中需要用到其他命令运行结果则可以使用反引号;
  (5)变量内容可以累加其他变量的内容,需要加双引号;
  export:声明变量
  全局变量,就是系统内所有用户登录后都能使用该变量
  具体设置:
  (1)在/etc/profile文件的末尾加入export a=cheng
  (2)运行source /etc/profile永久生效
  用户变量,就是指只对当前用户生效和使用的变量
  具体设置:
  (1)在用户的主目录下的.bashrc文件末尾加上export a=cheng
  (2)运行source .bashrc 生效
  export a=cheng是全局变量,export 不加任何选项表示,声明所有的环境变量以及用户自定义变量
  取消用户自定义变量
  unset 变量名
  取消a的变量
[root@web ~]# unset a  3. 系统和个人环境变量的配置文件
  /etc/profile文件中预设的变量:
  PATH, USER, LOGNAME, MAIL, INPUTRC, HOSTNAME, HISTSIZE, umask等
  /etc/bashrc:这个文件主要预设umask和PS1
  [root@web ~]# echo $PS1
  [\u@\h \W]\$
  \u:用户
  \h:主机名
  \W:当前目录
  \$:指的是这个”#$“中的一个
  PS1可以指定更改这个"[root@web ~]#"的显示
  现在更改一下:
  PS1='[\h@\u \W] \$'
[root@web ~]#PS1='[\h@\u \W] \$'  
[web@root ~] #
  注意看“[root@web ~]#”和“[web@root ~] #”的区别,这个就是PS1的作用吧
  恢复就这样子写:
[web@root ~] #PS1='[\u@\h \W]\$'  
[root@web ~]#
  umask :以后如果设置umask修改 /etc/profile 不要改这个文件
  .bash_profile :用户自己的环境变量
  .bashrc  :当用户登录时以及每次打开新的shell时, 执行该文件
  .bash_history :记录命令历史用的
  .bash_logout :当退出shell时,会执行该文件。
  4. shell中的特殊符号
  * :匹配符号,零个或多个任意字符
  ? :匹配符号,1个任意的字符
  # :注视说明用的,使后面的内容失去原本的意义
  \ :脱义字符,将特殊字符还原为普通字符
  |:将符号前面命令的结果丢给符号后面的命令,一般针对文档操作的命令比较常用,
  例如cat, less, head, tail, grep, cut, sort, wc, uniq, tee, tr, split, sed, awk等等
  $:引用变量,还有 !$
  ; :分号,多条命令写一行时,分隔命令
  ~ :用户家目录
  & :放到命令最后面,让命令在后台运行
  >, >>, 2>, 2>>  [错误]重定向,追加[错误]重定向
  [ ] 中括号,中间为字符组合,代表中间字符中的任意一个 ls 1[23a].txt
  5. 常用命令:
  1)cut
  语法: cut -d ‘分隔字符’ [-cf] n 这里的n是正整数
  -d 后面指定分隔符,用单引号引起来-f 指定第几段
  [root@web ~]#cut -d ':'  -f 1 /etc/passwd |head -n 5
  root
  bin
  daemon
  adm
  lp
  这个是把passwd文件以冒号(:)作为分隔符,显示第一段,然后使用管道来显示前面的5行
  -c 后面只有一个数字表示截取第几个字符
  head -n2 /etc/passwd|cut -c2
[root@web ~]#head -n2 /etc/passwd|cut -c2  
o
  
i
  显示passwd文件的前两行的第2个字符
  -c 后面跟一个数字区域,表示截取从几到几
  head -n2 /etc/passwd|cut -c2-5
[root@web ~]#head -n2 /etc/passwd|cut -c2-5  
oot:
  
in:x
  显示passwd文件的前两行的第2个字符到第5个字符
  2)sort用作排序
  语法: sort [-t 分隔符] [-kn1,n2] [-nru]  (n1,比重定向多了一个功能,在把文件写入后面所跟的文件中的同时,
  还显示在屏幕上,不过tee常用语管道“|”后面。
[root@web chen]#echo "1111" |tee 1.txt  
1111
  6)tr 用来替换字符
  最常用的就是大小写转换:
  head -n2 /etc/passwd |tr '[a-z]' '[A-Z]'
[root@web ~]# head -n2 /etc/passwd |tr '[a-z]' '[A-Z]'  
ROOT:X:0:0:ROOT:/ROOT:/BIN/BASH
  
BIN:X:1:1:BIN:/BIN:/SBIN/NOLOGIN
  把passwd文件中的小写字母全部换成大写
  tr 替换一个字符也是可以的
  grep 'root' /etc/passwd |tr 'r' 'R'
[root@web ~]# grep 'root' /etc/passwd |tr 'r' 'R'  
Root:x:0:0:Root:/Root:/bin/bash
  
opeRatoR:x:11:0:opeRatoR:/Root:/sbin/nologin
  把passwd文件中的r小写字母换成大写R
  7)split 切割大文件用的
  默认会以xaa, xab, …这样的形式定义分隔后的文件名
  -b : 按大小来分割单位为byte
  split -b50 passwd
[root@web chen]#split -b50 passwd  
[root@web chen]#ls
  
passwd  xab  xad  xaf  xah  xaj  xal  xan  xap  xar  xat  xav  xax  xaz
  
xaa     xac  xae  xag  xai  xak  xam  xao  xaq  xas  xau  xaw  xay
  指定文件名
  split -b50 1.txt 123
[root@web chen]#split -b50 passwd 123  
[root@web chen]#ls
  
123aa  123ac  123ae  123ag  123ai  123ak  123am  123ao  123aq  123as  123au  123aw  123ay  passwd
  
123ab  123ad  123af  123ah  123aj  123al  123an  123ap  123ar  123at  123av  123ax  123az
  -l : 按行数分隔
  split -l10 file
[root@web chen]#split -l10 passwd  
[root@web chen]#ls
  
passwd  xaa  xab  xac
  以10行为一块来分passwd文件
  6. && 和 ||
  command1 ; command2  前面命令是否执行完成都会执行后面命令
  command1 && command2 只有前面命令执行成功才会执行后面命令
  command1 || command2  只有前面命令不成功再去执行后面命令
  小白学习笔记,不足之处还请大神指正!!



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-558033-1-1.html 上篇帖子: Linux Shell常用技巧(三) sed 下篇帖子: shell批量处理图片服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表