Shell 基础大全

轉:http://blog.sina.com.cn/s/blog_4b427acf01018j75.html

Shell操作命令分类

Shell操作命令有目录操作命令,文件操作命令,用户操作命令,状态操作命令和压缩命令共5类,各类命令请看如下详解;

1.     目录操作命令:

pwd命令

  命令:pwd(print working directory)

  格式:pwd

  功能:显示出用户当前工作目录的全路径名

cd  命令

  命令:cd(change directory)

  格式:cd directory_name

  功能:改变当前工作目录

  注释:目录名选项有:

Ø  目录名,转到当前目录下的子目录。

Ø  .. 表示转到当前目录的父目录。

Ø  / 表示转到根目录。

Ø  没有选项时,转到用户的主目录。

Ø  例如:cd directory

mkidr命令

  命令:mkdir(make directory)

  格式:mkdirdirectory_name

  功能:建立新目录

  选项:

Ø  -m设定权限<模式>

Ø  -p  需要时创建上层目录

Ø  例如:mkdir directory

rmdir命令

  命令:rmdir (remove directory)

  格式:rmdirdirectory_name

  功能:删除不存在文件的子目录名。

  注释:删除子目录时,要求被删除的目录中不存在文件或子目录,否则无法删除。

  选项:

Ø  -p删除<目录>,然后尝试删除指定路径中的所有上层目录。

Ø  例如:rmdir directory

2.     文件操作命令

rm命令

  命令:rm (remove)

  格式:rm filename

  功能:删除指定的文件或一个目录中的文件。

  选项:

Ø  -f  略过不存在的文件,不显示任何信息

Ø  -i  进行任何删除操作前必须先确认

Ø  -r  同时删除该目录下的所有目录层以及文件

Ø  例如:rm filename

ls命令

  命令:ls (list)

  格式:ls [option] directory_name

  功能:列出指定目录中的文件名和子目录名。

  选项:

Ø  -a 列出所有文件,包括以点开头的隐含文件

Ø  -R 列出包括子目录下所有文件

Ø  -F 加上文件类型的指示符号

Ø  -t 按文件生成日期排序

Ø  -l按长格式列出文件名,包括文件类型标识,权限,链接数,文件主名,文件组名,字节数,日期。

Ø  例如:ls -la

cat 、more、 less 命令

  命令:cat 、more 、less

  格式:cat/more/less filename

  功能:显示出文件的内容。

 注释:在屏幕显示过程中有功能键、空格键和继续下一屏的输出;回车键查看下一行的输出;q键跳出查看状态。

Ø  例如:more filename

head 、tail 命令

  命令:head 、tail

  格式:head/tail [option] filename

  功能:显示文件的头[尾]部

  选项:缺省显示文件的头[末]10行

Ø  -i 显示文件的开始[最后]i行

Ø  例如:head/tail filename

cp、mv 命令

  命令:cp (copy)、mv (move) 

  格式:cp(mv) [option] filename1 filename2

 功能:把一个文件的全部内容拷贝(剪切)到另一个文件,也可将一个或多个文件拷贝(剪切)到另一个目录中。

  选项:

Ø  -i 覆盖文件前需要确认

Ø  -p 按原文件日期进行拷贝。(cp)

Ø  -r 对子目录下所有文件进行拷贝。(cp)

Ø  例如:cp filename1 filename2

mv filename1 filename2

ln命令

  命令:ln (link)

  格式:ln [选项]... 目标[链接名]

  功能:为文件或目录建立一个链接。

  选项:

Ø  -s 为文件或目录建立符号链接。

Ø  -f 强迫删除任何已存在的目的地文件

Ø  注释:硬连接不能跨越文件系统,不能连接目录。

Ø  例如:ln -s filename linkname

chown命令

  chown (change owner)

  格式:chown username filename

  功能:改变文件或目录的所有权

  选项:-R 将改变目录中所有文件及目录的拥有者

Ø  例如:chown username filename

chmod命令

  命令:chmod (change mode)

  格式:chmod {u|g|o|a}{+|-|=}{r|w|x} filename

  chmod [who][op][mode] directory

  功能:改变文件的读写和执行权限,有符号法和八进制数字法

  选项:

Ø  -R 以递归方式更改所有的文件及子目录

Ø  使用方法:

Ø  符号法:

Ø  u (user) 表示用户本人。

Ø  g (group) 表示同组用户。

Ø  o (oher) 表示其他用户。

Ø  a (all) 表示所有用户。

Ø  + 用于给予指定用户的许可权限。

Ø  - 用于取消指定用户的许可权限。

Ø  = 将所许可的权限赋给文件。

Ø  r (read) 读许可,表示可以拷贝该文件或目录的内容。

Ø  w (write) 写许可,表示可以修改该文件或目录的内容。

Ø  x (execute)执行许可,表示可以执行该文件或进入目录

Ø  (2)八进制数字法:

Ø 此方法用三位八进制数作任选项,每位数字分别表示用户本人、同组用户、其他用户的权限,其中:

Ø  4 (100) 表示可读。

Ø  2 (010) 表示可写。

Ø  1 (001) 表示可执行。

Ø  例如:chmoda+rx filename让所有用户可以读和执行文件filename。

Ø  chmod go-rx filename取消同组和其他用户的读和执行文件filename的权限。

Ø  chmod 741 filename让本人可读写执行、同组用户可读、其他用户可执行文件filename。

find 命令

  命令:find

  格式:find pathname [option] expression

  功能:在所给的路经名下寻找符合表达式相匹配的文件。

  选项:

Ø  -name 表示文件名

Ø  -user 用户名,选取该用户所属的文件

Ø  -group 组名,选取该用户组属的文件

Ø  -newer fn选取比文件名为fn更晚修改的文件

Ø  例如:find . -name '*abc*

comm命令

  命令:comm (common)

  格式:comm [-123] filename1 filename2

  功能:比较两个文件或目录(diff)的不同

Ø  例如:comm file1 file2

diff file1 file2

vi 命令

  命令:vi(visual)

  格式:vi filename

  功能:编辑文件内容

  工作方式:

Ø  命令方式/编辑方式:当前键入的字符都作为命令。

Ø  插入方式:当前键入的字符都被插入到文件缓冲区的当前光标位置。

Ø  转义方式/末行模式:进行查找、退出等特殊操作。

Ø  例如:vi file1

file 命令

  命令:file

  格式:file filename ...

  功能:按文件内容来推测文件类型,如ascii,C,executable。

Ø  例如:file *

touch 命令

  命令:touch

  格式:touch filenae

  功能:改变文件的日期,不对文件的内容做改动,若文件不存在则建立新文件。

  选项:

Ø  -t 使用[[CC]YY]MMDDhhmm[.ss] 格式的时间而非目前的时间

Ø  例如:touch file

wc命令

  命令:wc (word characters)

  格式:wc [option] filename

  功能:统计文件中的文件行数、字数和字符数。

  选项:

Ø  -l 统计文件的行数

Ø  -w 统计文件的字数

Ø  -c 统计文件的字符数

Ø  注释:若缺省文件名则指标准输入

Ø  例如:wc file

3.     用户操作命令:

su命令

  命令:su

  格式:su [option] username

  功能:切换用户

  选项:

Ø  - 执行新用户环境设置

Ø  例如:su – root

useradd命令

  命令:useradd

  格式:useradd [option] username

  功能:添加用户。

  与用户相关的文件

Ø  /etc/passwd:记录用户的账号等信息。

Ø  /etc/shadow:记录用户的密码信息。

Ø  /etc/group:记录工作组的信息。

Ø  $HOME:用户主目录(登录后所在的原始目录)

  用户分类

Ø  管理员UID= 0 GID= 1

Ø  普通用户UID >= 100

Ø  系统用户UID:1—100

  选项:

Ø  -u 指定用户ID号

Ø  -g 制定所在组

Ø  -d 指定用户目录

Ø  -s 制定用户SHELL

Ø  -c 用户的注释

Ø  -m 建立用户目录

Ø  例如:useradd –u 1024 –d /export/home/mpf –m –gdba  –c “描述字符串”–s /bin/cshmpf

passwd命令

  命令:passwd

  格式:passwd [option] username

  功能:为用户设置密码

  选项:

Ø  -S  报告口令状态

Ø  -l  锁定口令,即禁用帐号

Ø  -n 设置两次修改口令的最小期限

Ø  -d 使帐号无口令,即删除口令

Ø  -w 提醒用户口令存活期将尽的天数

Ø  -x 设置口令存活期

Ø  例如:passwdmpf

userdel命令

  命令:userdel

  格式:userdel [option] username

  功能:为用户设置密码

  选项:

Ø  -r 把用户的家目录以及mail信息一同删除

Ø  例如:userdel -r mpf

4.     状态信息命令

whoami命令

  命令:whoami/who/w

  格式:whoami/who/w [option] [username]

  功能:显示出当前终端上使用的用户

Ø  例如:w

date命令

  命令:date

  格式:date -u mmddHHMM[[cc]yy].ss

  功能:显示或设置日期和时间

  选项:

Ø  -u 显示或设置日期以及时间(GMT)

Ø  注释:只有超级用户有权设置日期

Ø  例如:

Ø  # date -u 1128153006.15

 

cal命令

  命令:cal (calendar)

  格式:cal [month] year

  功能:显示某年内指定的日历

Ø  例如:cal 1752

hostname 命令

  命令:hostname

  格式:hostname

  功能:显示或设置主机名

  注释:只有超级用户才能设置主机名

Ø  例如:hostname

ps命令

  命令:ps

  格式:ps [option]

  功能:显示系统中进程的信息。包括进程ID、控制进程终端、执行时间和命令。

  选项:

Ø  -a 列出当前系统中所有进程的信息

Ø  -l 显示一个长列表

Ø  -e 显示当前运行的每一个进程信息

Ø  -f 显示一个完整的列表

Ø  例如:ps –ef

df命令

  命令:df (disk free)

  格式:df [option]

 功能:显示磁盘空间的使用情况,包括文件系统安装的目录名、块设备名、总字节数、已用字节数、剩余字节数占用百分比。

  选项:

Ø  -k 显示磁盘空间的使用信息

Ø  例如:df -o i

 

du 命令

  命令:du (disk usage)

  格式:du [option] [filename]

  功能:显示目录或文件所占磁盘空间大小

  选项:

Ø  -a 显示所有文件的大小

Ø  -s 显示制定目录所占磁盘大小

Ø  例如:du -sk

man命令

  命令:man (manual)

  格式:man command_name

  功能:显示参考手册,提供联机帮助信息。

Ø  例如:man who

 

5. 压缩命令

tar命令

  命令:tar

  格式:tar [option] filename.tar [filename]

  功能:打包归档或者解包分离文件

  选项:

Ø  -c:创建新的tar文件

Ø  -t:列出tar文件的内容

Ø  -x:从tar文件中分离文件

Ø  -v:在详细模式下执行tar命令,将输出写到标准输出上去

Ø  -f:定义归档文件或磁带设备.

Ø  例如: tar -cvf files.tar file1 file2 file3

tar -xvf files.tar

gzip、zcat命令

  命令:gzip、zcat

  格式:gzip [option] filename

  功能:压缩以及解压文件

  选项:

Ø  -d:解压缩的参数。

Ø  -t:可以用来检验一个压缩档的一致性,看看文件有无错误。

Ø  -#:压缩等级,-1 最快,但是压缩比最差!-9 最慢,但是压缩比最好!预设是-6。

Ø  例如:gziphttp.conf

                                    gzip -d http.conf.gz  gunzip http.conf.gz

bzip2、bzcat命令

  命令:bzip2, bzcat

  格式:bzip2 [option] filename

  功能:压缩以及解压文件

  选项:

Ø  -d:解压缩的参数

Ø  -z:压缩的参数

Ø  -#:与gzip同样的,都是在计算压缩比的参数,-9 最佳,-1 最快!

Ø  例如:bzip2 -d http.conf.bz2

compress 命令

  命令:compress

  格式:compress [option] filename

  功能:压缩以及解压文件

  选项:

Ø  -d :用来解压缩的参数

Ø  例如:compress -d http.conf.Z

uncompresshttp.conf.Z

 

zip命令

  命令:zip

  格式:zip [option] filename

  功能:压缩以及解压文件

  选项:

Ø  -r:用来压缩目录的参数

Ø  例如:zip http.conf.zip http.conf

unzip http.conf.zip

grep命令

  命令:grep

  格式:grep [option] filter

  功能:行内容过滤

  选项:

Ø  -v:非操作

Ø  例如:grep –v ccc ./*.sh

crontab命令

  命令:crontab

  格式:grep [option] filename

  功能:设置定时任务

  选项:

Ø  -r:停止crontab任务

Ø  -l:列出crontab任务

Ø  -e:编辑定时任务

Ø 例如:crontabcrontab.crn(把crontab.crn的内容设置为定时任务)

 

二、正则表达式

1.   基本语法

我们知道C的变量和Shell脚本变量的定义和使用方法很不相同,表达能力也不相同,C的变量有各种类型,而Shell脚本变量都是字符串。同样道理,各种工具和编程语言所使用的正则表达式规范的语法并不相同,表达能力也各不相同,有的正则表达式规范引入很多扩展,能表达更复杂的模式,但各种正则表达式规范的基本概念都是相通的。

字符类

字符

含义

举例

.

匹配任意一个字符

abc.可以匹配abcd、abc9等

[]

匹配括号中的任意一个字符

[abc]d可以匹配ad、bd或cd

-

在[]括号内表示字符范围

[0-9a-fA-F]可以匹配一位十六进制数字

^

位于[]括号内的开头,匹配除括号中的字符之外的任意一个字符

[^xy]匹配除xy之外的任一字符,因此[^xy]1可以匹配a1、b1但不匹配x1、y1

[[:xxx:]]

grep工具预定义的一些命名字符类

[[:alpha:]]匹配一个字母,[[:digit:]]匹配一个数字

 

数量限定符

字符

含义

举例

?

紧跟在它前面的单元应匹配零次或一次

[0-9]?\.[0-9]匹配0.0、2.3、.5等,由于.在正则表达式中是一个特殊字符,所以需要用\转义一下,取字面值

+

紧跟在它前面的单元应匹配一次或多次

[a-zA-Z0-9_.-]+@[a-zA-Z0-9_.-]+\.[a-zA-Z0-9_.-]+匹配email地址

*

紧跟在它前面的单元应匹配零次或多次

[0-9][0-9]*匹配至少一位数字,等价于[0-9]+,[a-zA-Z_]+[a-zA-Z_0-9]*匹配C语言的标识符

{N}

紧跟在它前面的单元应精确匹配N次

[1-9][0-9]{2}匹配从100到999的整数

{N,}

紧跟在它前面的单元应匹配至少N次

[1-9][0-9]{2,}匹配三位以上(含三位)的整数

{,M}

紧跟在它前面的单元应匹配最多M次

[0-9]{,1}相当于[0-9]?

{N,M}

紧跟在它前面的单元应匹配至少N次,最多M次

[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}匹配IP地址

 

再次注意grep找的是包含某一模式的行,而不是完全匹配某一模式的行。再举个例子,如果文本文件的内容是

aaabc

aad

efg

查找a*这个模式的结果是三行都被找出来了

$ egrep 'a*' testfile

aabc

aad

efg

a*匹配0个或多个a,而第三行包含0个a,所以也包含了这一模式。单独用a*这样的正则表达式做查找没什么意义,一般是把a*作为正则表达式的一部分来用。

位置限定符

字符

含义

举例

^

匹配行首的位置

^Content匹配位于一行开头的Content

$

匹配行末的位置

;$匹配位于一行结尾的;号,^$匹配空行

\<

匹配单词开头的位置

\<th匹配...this,但不匹配ethernet、tenth

\>

匹配单词结尾的位置

p\>匹配leap ...,但不匹配parent、sleepy

\b

匹配单词开头或结尾的位置

\bat\b匹配... at ...,但不匹配cat、atexit、batch

\B

匹配非单词开头和结尾的位置

\Bat\B匹配battery,但不匹配... attend、hat ...

 

位置限定符可以帮助grep更准确地查找,例如上一节我们用[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}查找IP地址,找到这两行

192.168.1.1

1234.234.04.5678

如果用^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$查找,就可以把1234.234.04.5678这一行过滤掉了。

其它特殊字符

字符

含义

举例

\

转义字符,普通字符转义为特殊字符,特殊字符转义为普通字符

普通字符<写成\<表示单词开头的位置,特殊字符.写成\.以及\写成\\就当作普通字符来匹配

()

将正则表达式的一部分括起来组成一个单元,可以对整个单元使用数量限定符

([0-9]{1,3}\.){3}[0-9]{1,3}匹配IP地址

|

连接两个子表达式,表示或的关系

n(o|either)匹配no或neither

 





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值