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

摘要:
/Bin/bash是shell脚本#的第一行,指示注释变量流控制结构1.10。下面是一个简单的shell脚本示例,保存为hello。sh#/Bin/shell#这是一个shell脚本,用于打印helloworld printchar=“helloworl”echo$printchar;首先,执行命令chmodu+xhello.sh以使文件的所有者具有可执行权限。

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,可以看下面的表格给出的规则

umask01234567
文件65432100
目录76543210

    例子,更改生成文件的默认权限 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简介》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇30 约束(Constraint)office2007 密钥(key、注册码) 激活方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Metasploit入门用法

1、 使用nmap进行端口扫描2、 使用search命令查找相关模块3、 使用use调度模块4、 使用info查看模块信息5、 选择payload作为攻击6、 设置攻击参数7、 渗透攻击 如果第二次看我文章,建议通过以上七个步骤回忆操作,实在记不住再看后面步骤详解,以达到掌握的效果。 详解: 首先是安装metasploit和nmap(后期也会出一个这个工...

erlang局域网内节点通信——艰难四步曲

http://blog.chinaunix.net/uid-22566367-id-382011.html 在Programming Erlang这本书中,在写到第十章中,主要实现的是不同节点之间的通信,书上列出了四步,其中的第一步很容易实现,依葫芦画瓢,很容易实现同一台机子上,不同节点之间的通信,运行结果和书上的完全一致。当你急切地去尝试第二步(在局域网...

Docker 常用命令与操作

介绍 此命令集合版本为 1.11.1 及以上 基础类 查看docker信息 # 查看docker版本 docker version # 显示docker系统的信息 docker info # 日志信息 docker logs # 故障检查 service docker status # 启动关闭docker sudo service d...

【DNS域名解析命令】 dig

dig - DNS lookup utility dig 命令主要用来从 DNS 域名服务器查询主机地址信息。 Dig (domain information groper 域名信息搜索)是一个灵活的命令行工具, 它可以用来从域名系统服务器中收集信息。 Dig 有两种模式: 简单交互模式用于简单的查询 批处理模式则可以对包含多个查询条目的列表执行查询。...

redis info详解

192.168.64.102:9021> info all# Server(服务器信息)redis_version:3.0.0                              #redis服务器版本redis_git_sha1:00000000                  #Git SHA1redis_git_dirty:0    ...

chapter11:认识与学习bash之(1)认识shell与shell的变量功能

  使用终端的命令行就是通过bash 环境变量来处理的,bash还包括变量的设置与使用,bash操作环境的构建,数据流的重定向和管道等。 一,认识bash这个shell 1.什么是shell   我们一般通过shell来和内核进行通信,因为内核是要保护的。也就是说通过shell将我们的命令与内核通信,好让崔可以控制硬件来完成工作。   其实shell只是提...