Shell编程基础教程1--Shell简介

时间:2022-05-30 11:08:02

1.Shell简介

  1.1.查看你系统shell信息

     cat /etc/shell  命令可以获取Linux系统里面有多少种shell程序

     echo $SHELL  命令可以查看当前你所使用的shell是哪一个

  1.2.查看文件信息,ls

     ls -l  查看文件信息:文件类型、文件权限、文件硬链接数、文件所属用户、文件所属组、文件大小、文件最近修改时间、文件名

  1.3.改变文件权限,chmod

    只有root用户或者文件的所有者能改变文件的权限

    例子: chmod u=rwx,g+w,o+r myfile  这个命令的含义是为myfile文件的所属用户添加rwx权限,为同组的其他用户添加w权限,为不同组的其他用户添加r权限

    例子: chmod 644 myfile  r:4, w:2, x:1  

    ?rwx权限位之外s位和t位具体是什么意思?

  1.4.改变文件的所属用户,chown

    例子 chown owner.group myfile  改变myfile的拥有者为owner,所属组为group

    例子 chown .group myfile  改变myfile的所属组为group

    要想同时改变目录以及该目录下所有文件的所属用户/组,用-R, 例如 chmod -R owner.group mydir;如果不用-R参数,那么只能更改该目录的所属用户/组,而不会对该目录下的其他文件或目录产生影响

  1.5.改变文件的所属组,chgrp

    例子 chgrp group myfile  改变myfile的所属组为group

  1.6.查看或更改生成文件的默认权限,umask

    例子,查看生成文件的默认权限 umask  如果输出结果是022,就表明用户在创建一个文件后,该文件默认的权限是644,也就是rw-r--r--;创建的目录的权限是755,也就是rwx-r-xr-x,可以看下面的表格给出的规则

umask 0 1 2 3 4 5 6 7
文件 6 5 4 3 2 1 0 0
目录 7 6 5 4 3 2 1 0

    例子,更改生成文件的默认权限 umask 000,就是改为000,具体规则参照上面的表格。

    其实umask的值是在/etc/profile这个配置文件里设置的,对于特定的用户,可以在$HOME/.profile或者$HOME/.bash_profile设置自己的umask

  1.7.符号链接,ln

    硬链接, ln resource destination

    软链接, ln -s resource destination

  1.8.学习shell脚本的原因

    shell脚本功能强大,比如对于一些重复性较多的操作,完全可以将个人解放出来,让计算机去做那些复杂的、重复的、浪费时间的、没有创造力的工作,而我们个人应该去做那些创新性的工作,不要傻不拉几地重复劳动

  1.9.shell脚本的基本元素

    #!/bin/bash  是shell脚本的第一行

    #  表示注释

    变量

    流量控制结构

  1.10.下面给出一个简单的shell脚本的例子,保存为hello.sh

#!/bin/shell
#这是一个打印hello world的shell脚本
printchar="hello world"
echo $printchar;

    首先执行命令 chmod u+x hello.sh,让文件所属者有可执行权限。如果没有可执行权限,那么就不能执行这个脚本。

    输出命令 ./hello.sh就可以执行这个shell脚本

  1.11.shell的特性

    别名;管道;命令替换;重定向;后台处理;模式匹配;变量;特殊字符;

  1.12.别名

    例子, alias  就是输出命令的别名,比如 cp 命令的别名就是 cp -i ,也就是在命令行输出 cp 命令的时候,也就等价于运行 cp -i 这个命令

    例子, alias ll='ls -alh'  就是改变 ll 的别名为 ls -alh ,

    一般别名的配置在 $HOME/.bashrc这个配置文件里,所以每个用户可以自定义自己习惯的别名

  1.13.命令替换

    比如myfile文件的内容是“myfile2”,那么$ cat myfile的结果就会输出“myfile2”,如果再执行命令 ls `cat myfile ` -al,就相当于执行 ls myfile2 -al 命令,注意是使用的反引号

  1.14.后台处理

    例如,输入命令 nohup tar -czf file.tar.gz file & ,那么这条tar -czf file.tar.gz file的命令就会在后台运行,就可以在前台继续工作,不会影响前台工作

    输入命令 jobs -l ,可以查看后台的程序运行情况

  1.15.变量

    变量用来在运行过程中存储信息

  1.16.管道

    管道就是将一个命令的输出连接到另一个命令的输出

    例如,输入命令 ls | sort ,就会对ls的输出的每行结果按字母顺序进行排序后在输出到命令行窗口中

  1.17.重定向

    与管道相关,可以改变程序运行的输入来源和输出地点

    例如,本来 sort <myfile.txt >myfile_sort.txt, 就会将myfile.txt的内容作为输入传给sort程序,进行排序,并将结果输出到myfile_sort.txt的文件中

  1.18.模式匹配

    例如,输入命令 ls *.txt,就是查找并输出当前目录下所有以 .txt 结尾的文件或目录名称

    学习正则表达式

  1.19.特殊字符

    双引号("):用来使shell无法认出空格、制表符和其他大多数特殊字符,这样的"David Jobs"表示一个值,而不是2个同样的"David < Jobs"表示一个值

    单引号('):用来使shell无法认出所有特殊字符

    反引号(`):用来替换命令

    反斜杠(\):转义

    分号(;):允许一个行上放多个命令

    &:命令后台执行

    ():创建成组的命令

    {}:创建命令块

    |:管道表示符

    <>&:表示重定向

    *?[]!:表示模式匹配

    $:变量名的开头

    #:表示注释(第一行除外)

    空格、制表符、换行符:当做空白

Shell编程基础教程1--Shell简介的更多相关文章

  1. Shell编程基础教程6--shell函数

    6.shell函数    6.1.定义函数        简介:            shell允许将一组命令集或语句形成一个可用块,这些块成为shell函数        定义函数的格式      ...

  2. 【shell编程基础1】shell变量篇

    Bash shell bash shell 是bourne shell 的升级版,“bourne again shell”.ubuntu的默认shell. 预备知识 1. "#!" ...

  3. Shell编程基础教程5--文本过滤、正则表达式、相关命令

    5.文本过滤.正则表达式.相关命令    5.1.正则表达式(什么是正则表达式?正则表达式怎么进行匹配?常用命令)        简介:            一种用来描述文本模式的特殊语法      ...

  4. Shell编程基础教程4--控制流结构

    4.控制流结构    4.1.控制结构            4.2.if then else语句        格式: if 条件1 //如果条件1为真 then 命令1 //那么,执行命令1 el ...

  5. Shell编程基础教程3--Shell输入与输出

    3.Shell输入与输出    3.1.echo        echo命令可以显示文本行或变量,或者把字符串输出到文件        echo [option] string             ...

  6. Shell编程基础教程2--变量和运算符

    2.变量和运算符 2.1.变量的类型 本地变量:环境变量:变量替换(显示变量):位置变量:标准变量:特殊变量: 2.2.本地变量 本地变量在用户现在的shell生命周期的脚本中使用 在命令行, LOC ...

  7. Shell编程基础教程7--脚本参数的传递

    7.脚本参数的传递    7.1.shift命令        简介:            shift n        每次将参数位置向左偏移n位        例子 #!/bin/bash us ...

  8. 【shell编程基础2】shell组合应用之一:重定向和逻辑

    这篇主要讲下 数据的重定向,在shell脚本中有些重要的输出重定向为文件的形式输出来 逻辑方式的多个命令组合,可以很方便的进行一些判断 数据流重定向 数据流重定向:大致上的意思就是本该输出到屏幕上的数 ...

  9. 【shell编程基础3】shell编程的组合应用之二:管道及其命令

    预备知识: 管道:它是一个单向的,可以把前一个的数据输出导向到下一个命令的工具,这样可以实现多个命令组合处理一套数据. 它的符号是  "|"    管道只能处理经过前面一个命令传过 ...

随机推荐

  1. flex4

    今天发现了一个问题:昨天把序列号输入之后可以用了,但是再次打开软件之后还是要求输序列号的.遇到这种情况的朋友可以这样操作.打开C:\WINDOWS\system32\drivers\etc这个目录,修 ...

  2. 【C】 05 - 声明和定义

    仅从形式上看,C程序就是由各种声明和定义组成的.它们是程序的骨架和外表,不仅定义了数据(变量),还定义了行为(函数).规范中的纯语言部分,声明和定义亦花去了最多的篇幅.完全说清定义的语法比较困难,这里 ...

  3. java学习资源汇总

    http://www.tutorialspoint.com/jsp/jsp_standard_tag_library.htm

  4. 再起航,我的学习笔记之JavaScript设计模式13&lpar;装饰者模式&rpar;

    装饰者模式 装饰者模式(Decorator): 在不改变原对象的基础上,通过对其进行过包装拓展(添加属性高或者方法)使原有对象可以满足用户的更复杂需求. 如果现在我们有个需求,需要做一个提交表单,当我 ...

  5. springmvc &plus;mybatis 配置多数据源

    1.数据源配置: jdbc_multiple.properties: # MySQL #======================================================== ...

  6. ANDROID 中设计模式的采用--创建型模式

     所谓模式就是在某一情景下解决某个问题的固定解决方案. 所有的创建型模式都是用作对象的创建或实例化的解决方案. 1 简单工厂模式 创建对象的最简单方法是使用new来创建一个对象,如果只创建一种固定 ...

  7. day20 hashlib、hmac、subprocess、configparser模块

    hashlib模块:加密 import hashlib# 基本使用cipher = hashlib.md5('需要加密的数据的二进制形式'.encode('utf-8'))print(cipher.h ...

  8. Nginx详解十三:Nginx场景实践篇之防盗链

    防盗链: 目的:防止资源被盗用 防盗链设置思路 首要方式:区别哪些请求是非正常的用户请求 基于http_refer防盗链配置模块(判断refer(上一步的链接)信息是否为允许访问的网站) 配置语法:v ...

  9. Xcode - 因为证书问题经常报的那些错

    1.确认下证书是不是开发证书,如果是发布证书就会出现这样的提示. 2.证书失效了,去开发者中心重新生成一个. 3.包标识符不与描述文件包含的包标识符不一致,按照它的提示换一下就好了,最好不要点 Fix ...

  10. &lbrack;Educational Round 3&rsqb;&lbrack;Codeforces 609F&period; Frogs and mosquitoes&rsqb;

    这题拖了快一周_(:з」∠)_就把这货单独拿出来溜溜吧~ 本文归属:Educational Codeforces Round 3 题目链接:609F - Frogs and mosquitoes 题目 ...