shell学习笔记1-基本shell命令

ls

  • linux文件类型有七种
    d  目录。 
l 符号链接(指向另一个文件)。
s 套接字文件。
b 块设备文件。
c 字符设备文件。
p 命名管道文件。
- 普通文件,或者更准确地说,不属于以上几种类型的文件。
  • 目录的读权限位意味着可以列出其中的内容;写权限位意味着可以在该目录中创建文件;执行权限位则意味着搜索和访问该目录

chmod

  • chmod命令的一般格式为: chmod [who] operator [permission] filename (chmod go+x myfile赋予同组用户和其他用户执行权限)
  • chmod命令绝对模式的一般形式为: chmod [mode] file (chmod 744 myfile 赋予文件属主读、写和执行的权限,所有其他用户读的权限)
  • 设置suid,就将权限位之前的那一位设置为4;设置guid,就将权限位之前的那一位设置为2;两者都置,权限位之前的那一位设置为4+2。(chmod 4755 文文件被设置了suid,文件属主具有读、写和执行的权限,所有其他用户具有读和执行的权限)
  • suid意味着如果某个用户对属于自己的shell脚本设置了这种权限,那么其他用户在执行这一脚本时也会具有其属主的相应权限。同样的原则也适用于guid,执行相应脚本的用户将具有该文件所属用户组中用户的权限。

umask

  • umask命令允许你设定文件创建时的缺省模式,对于文件来说,umask数字的最大值分别是 6。系统不允许你在创建一个文本文件时就赋予它执行权限。目录则允许设置执行权限,这样针对目录来说,umask中各个数字最大可以到7
  • umask是从权限中“拿走”相应的位。

find

  • find pathname -options [-print -exec -ok] : pathname find命令所查找的目录路径;-print find命令将匹配的文件输出到标准输出; -exec find命令对匹配的文件执行该参数所给出的 shell命令。相应命令的形式为 'command' {} /;(注意{}和/;之间的空格)。
  • 按更改时间来查找文件,可以用mtime选项, 减号-来限定更改时间在距今n日以内的文件,而用加号+来限定更改时间在距今n 日以前的文件。(find /var/adm -mtime +3 -print : 在/var /adm 目录下查找更改时间在3日以前的文件)
  • 按照文件长度来查找文件使用size选项, 文件长度既可以用块(512c)来计量,也可以用字节来计量。以字节计量文件长度的表达形式为 Nc;以块计量文件长度只用数字表示即可。(find . -size +1000000c -print : 为了在当前目录下查找文件长度大于 1M字节的文件)
  • 在当前的文件系统中查找文件(不进入其他文件系统),使用mount选项。(find logs -type f -mtime +5 -exec rm {} /; : 在/logs 目录中查找更改时间在5 日以前的文件并删除它们)
  • find命令把匹配到的文件传递给xargs命令,xargs命令每次只获取一部分文件而不是全部(find . -name "core" -print | xargs echo "" >/tmp/core.log : 查找内存信息转储文件(core dump), 然后把结果保存到/tmp/core.log 文件中)

crontab

  • crontab的调度信息格式:分< >时< > 日< >月< >星期< >要运行的命令, 其中< >表示空格。
  • 在这些域中,可以用横杠-来表示一个时间范围; 使用逗号“,”表示几个值; 用星号* 表示时间的域没有特别的限定,每一个条目必须含有5个时间域,而且每个域之间要用空格分隔。所有的注释行要在行首用#来表示。
  • (0,30 18-23 * /apps/bin/dbcheck.sh : 每天18:00至23:00之间每隔30分钟运行/apps/bin 目录下的dbcheck.sh。)
  • 使用crontab运行shell脚本时,要由用户来给出脚本的绝对路径,设置相应的环境变量。

at

  • at命令的基本形式为:at [-f script] [-m -l -r] [time] [date]
    -f script 是所要提交的脚本或命令。
-l 列出当前所有等待运行的作业。atq命令具有相同的作用。
-r 清除作业。为了清除某个作业,还要提供相应的作业标识(I D);有些U N I X变体只接受atrm作为清除命令。
-m 作业完成后给用户发邮件。
  • at命令的时间格式非常灵活:可以是H、HH.HHMM、HH:MM或H:M,其中H和M分别是小时和分钟。还可以使用a.m.或p.m. 。
  • 在a t命令后面跟上日期/时间并回车,然后就进入了at命令提示符。(一般来说在提交若干行的系统命令时,使用at命令提示符方式,而在提交shell脚本时,使用命令行方式。)
  • 还可以使用echo命令向at命令提交作业:( echo find /etc -name "passwd" -print | at now +1 minute )

nohup

  • 使用nohup命令。该命令可以在你退出帐户之后继续运行相应的进程。
  • 如果使用nohup命令提交作业,那么在默认情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中。

shell 元字符

  • * 匹配文件名中的任何字符串,包括空字符串。
  • ? 匹配文件名中的任何单个字符。
  • [...] 匹配[ ]中所包含的任何字符。
  • [!...] 匹配[ ]中非感叹号!之后的字符。

read

  • read语句的一般形式为:read varible1 varible2 ...
  • 如果只指定了一个变量,它将被赋予直至回车之前的所有内容;如果指定了多个变量,shell将用空格作为变量之间的分隔符;如果输入文本域过长,Shell将所有的超长部分赋予最后一个变量。

cat

  • cat显示文件内容,创建文件,还可以显示控制字符(-v)。
  • cat不会在文件分页符处停下来。如显示一页,把cat命令的输出通过管道传递到具有分页功能的命令中。:$ cat myfile | more
  • cat myfile1 myfile2 myfile3 > bigfile : 创建一个名为bigfile的文件,该文件包含三个文件的内容。

管道|

  • 管道把一个命令的输出传递给另一个命令作为输入。一般形式为:命令1 |命令2,其中|是管道符号。

tee

  • tee命令把输出的一个副本输送到标准输出,另一个副本拷贝到相应的文件中。一般形式为:tee -a files其中,- a表示追加到文件末尾。

标准输入输出和错误

  • shell执行命令时,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件。
                 输入文件―标准输入                             0
输出文件―标准输出 1
错误输出文件―标准错误 2
  • 标准输入是文件描述符0。它是命令的输入,缺省是键盘,也可以是文件(如cat,sort的参数)或管道的输出。
  • 标准输出是文件描述符1。它是命令的输出,缺省是屏幕,也可以是文件(如tee的参数)。
  • 标准错误是文件描述符2 。这是命令错误的输出,缺省是屏幕,同样也可以是文件。
  • 执行命令时,可以指定命令的标准输入、输出和错误,实现这一点就需要使用文件重定向。下面列出了最常用的重定向组合:
    command > filename        把标准输出重定向到新文件中等同于command 1> fielname 
command >> filename 把标准输出重定向到文件中(追加)
command > filename 2>&1 把标准输出和标准错误一起重定向到文件中
command 2>&1 1>filename 把标准错误重定向到控制台,把标准输出重定向到文件中。注意于上面的不同shell 从左向右执行)。
command 2> filename 把标准错误重定向到一个文件中
command 2>> filename 把标准输出重定向到一个文件中(追加)
command >> filename 2>&1 把标准输出和标准错误一起重定向到一个文件中 (追加)
command < filename >filename2 command命令以filename文件作为标准输入,以filename2文件作为标准输出
command < filename command命令以filename文件作为标准输入
command << delimiter 从标准输入中读入,直至遇到delimiter分界符
command <&m 把文件描述符m作为标准输入
command >&m 把标准输出重定向到文件描述符m中
command <&- 关闭标准输入
  • 如果想创建一个长度为0的空文件,可以用'>filename'
  • 重定向操作符command << delimiter被称为“此处”文挡。使用时shell将分界符delimiter之后直至下一个同样的分界符之前的所有内容都作为输入。这一命令对于自动或远程的例程非常有用。
  • 在合并标准输出和标准错误的时候,切记shell是从左至右分析相应的命令的。

exec

  • exec命令用来替代当前shell;它并没有启动子shell。当使用这一命令时任何现有环境都将会被清除,并重新启动一个shell 。它的一般形式为:exec command。
  • 描述exec命令最贴切的说法就是:它践踏了你当前的shell 。
  • 可以使用exec命令通过文件描述符打开和关闭文件。并且exec在对文件描述符进行操作的时候(也只有在这时),它不会覆盖你当前的shell 。

命令执行控制

  • 命令1 && 命令2:&&左边的命令(命令1)返回真(即返回0,成功被执行)后,&&右边的命令(命令2 )才能够被执行。
  • 命令1 || 命令2:如果 ||左边的命令(命令 1)未执行成功,那么就执行 ||右边的命令(命令2 )。
  • 命令组合: 一组命令,用命令分隔符隔开每一个命令,并把所有的命令用圆括号()或者{}括起来。一般形式为:(命令1;命令2;...),或者{命令1;命令2;...};
  • 使用()时,相应的命令将在当前shell中作为一个整体被执行,
  • 使用{}时,相应的命令将在子shell中作为一个整体被执行。
  • 只要在所有命令的输出作为一个整体被重定向时,其中的命令才被放到子shell中执行使用{}组合,否则在当前shell执行,使用()组合。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值