免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: compare2000
打印 上一主题 下一主题

Linux常用命令及基础知识介绍 [复制链接]

论坛徽章:
3
天秤座
日期:2013-12-27 13:44:58射手座
日期:2014-05-22 16:52:43天蝎座
日期:2014-08-13 16:03:21
53 [报告]
发表于 2011-02-25 13:55 |只看该作者
8        Shell基础知识
8.1        Shell简介
Shell是一种具备特殊功能的程序, 它是介于使用者和linux 操作系统之核心程序(kernel)间的一个接口。为什么我们说 shell 是一种介于系统核心程序与使用者间的中介者呢?读过操作系统概论的读者们都知道操作系统是一个系统资源的管理者与分配者,当您有需求时,您得向系统提出;从操作系统的角度来看,它也必须防止使用者因为错误的操作而造成系统的伤害?众所周知,对计算机下命令得透过命令(command) 或是程序(program);程序有编译器(compiler)将程序转为二进制代码,可是命令呢?
其实shell 也是一支程序,它由输入设备读取命令,再将其转为计算机可以了解的机械码,然后执行它。
各种操作系统都有它自己的 shell,以 DOS 为例,它的 shell 就是 command.com文件,Linux 下的shell主要有下列几种,Suse8.0下缺省的shell是Bash,并且可以看到sh是链接到bash的,所以使用sh和bash效果相同。

Shell        系统中的位置        程序名
Bourne        /bin/sh        sh
Bourne Again        /bin/bash        bash
C shell        /bin/csh        csh
TC shell        /bin/tcsh        tcsh
Korn shell        /bin/ksh        ksh
Z shell        /bin/zsh        zsh

8.2        Bash简介
Bash不仅仅是一个命令解析程序。它本身拥有一种程序设计语言,使用这种语言,可以编写shell脚本来完成各种各样的工作,而这些工作是使用现成的命令所无法完成的,Bash脚本可以使用if-then-elif-else-fi语句, for语句,while语句,until语句,break和continue命令,以及case语句,结合Bash中各种各样的条件测试语句,从而动态决定你的脚本实际运行的分支及动作,达到灵活及强大的处理功能。

论坛徽章:
3
天秤座
日期:2013-12-27 13:44:58射手座
日期:2014-05-22 16:52:43天蝎座
日期:2014-08-13 16:03:21
52 [报告]
发表于 2011-02-25 13:55 |只看该作者
7.2        常用正则表达式举例
语法        作用
^        行首
$        行尾
^[the]        以the开头行
[Ss]ignal[lL]        匹配单词signal,signaL,Signal,SignaL
[Ss]ignal[lL]\.        同上,但加一句点
[mayMAY]        包含may大写或小写字母的行
^USER$        只包含USER的行
[tty]$        以tty结尾的行
\.        带句点的行
^d..x..x..x        对用户,用户组及其他用户组成员有可执行权限的目录
^[^l]        排除关联目录的目录列表
[.*0]        0之前或之后加任意字符
[000*]        000或更多个
[iI]        大写或小写I
[iI][nN]        大写或小写i或n
[^$]        空行
^......$        包括6个字符的行
[a-zA-Z]        任意单字符
[a-z][a-z]*        至少一个小写字母
[^0-9\$]        非数字或美元标识
[^0-9A-Za-z]        非数字或字母
[123]        1到3中一个数字
[Dd]evice        单词device或Device
De..ce        前两个字母为De,后跟两个任意字符,最后为ce
\^q        以^q开始的行
^.$        仅有一个字符的行
^\.[0-9][0-9]        以一个句点和两个数字开始的行
‘”Device”’        单词device
De[Vv]ice\.        单词device或deVice
[0-9]\{2\}-[0-9]\{2\}-[0-9]{4\}        日期格式dd-mm-yyyy
[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}        IP地址格式nnn.nnn.nnn.nnn
[^.*$]        匹配任意行

论坛徽章:
3
天秤座
日期:2013-12-27 13:44:58射手座
日期:2014-05-22 16:52:43天蝎座
日期:2014-08-13 16:03:21
51 [报告]
发表于 2011-02-25 13:53 |只看该作者
6.2        管道
Linux系统允许一条命令的标准输出成为另外一条命令的标准输入。通过下面的命令句法,可以用管道字符“|”来实现。
语法:command1 | command2 | command3 | ... | commandN
目的:“命令1”的标准输出连接到“命令2”的标准输入,“命令2”的标准输出连接到“命令3”的标准输入,......,“命令N-1”的标准输出连接到“命令N”的标准输入。
所以管道允许用户将一条命令的标准输出作为另外一条命令的标准输入。用管道连接的那些命令叫做过滤器(filter)。一个过滤器是一组Linux的命令,它们从标准输入中得到输入,经过一系列指定方式的处理,将结果送到标准输出。一些经常用到的过滤器是:cat、compress、crypt、grep、gzip、lp、pr、sort、tr、uniq和wc。
7        正则表达式介绍
正则表达式,是linux操作系统比起windows操作系统,在操作易用性方面,占有优势的为数不多的几个特性之一,使用正则表达式的工具有:awk,ed,egrep,grep,sed和vi。不过这些工具对正则表达式的支持程序不尽相同,其中awk和egrep能较好地支持正则表达式,grep对正则表达式的支持则较少,了解正则表达式的定义,不仅可以在实际操作中,减少重复的工作量,在读别人开发的shell脚本时,也有很大的帮助。
7.1        基本元字符集及其含义
名称        操作符        使用举例        意义        支持的工具
析取        |        x|y|z        x、y或者z        awk,egrep
任意字符        .        /L..e/        Love,Live,Lose        所有工具
字符串首字符        ^        ^x        以字符x开始的串        所有工具
连接                xyz        xyz        所有工具
字符串尾字符        $        x$        以字符x结束的串        所有工具
转义字符        \        \*        *        ed,sed,vi
组合        ()或者\(\)        (xy)+        xy,xyxy,xyxyxy,...        所有工具
可选        ?        xy?        x,xy,xyy,xyyy,...        awk,egrep
重复(零次或更多)        *        xy*        xy,xyy,xyyy,...        所有工具
重复(一次或更多)        +        xy+        xy,xyy,xyyy,        所有工具
集合        []        [Hh]ello        Hello,hello        所有工具
补集        [^]        [^A-KM-Z]ove        Love        所有工具
        pattern\{n\}                用来匹配前面pattern出现次数。n为次数        所有工具
        pattern\{n,\}m                含义同上,但次数最少为n        所有工具
        pattern\{n,m\}                含义同上,但pattern出现次数在n和m之间        所有工具
注:其中集合类操作符[],表示匹配[]内任何字符。可以是一个单字符,也可以是字符序列。也可以使用-表示[]内字符序列范围,如用[1-5]代替[12345]。

论坛徽章:
3
天秤座
日期:2013-12-27 13:44:58射手座
日期:2014-05-22 16:52:43天蝎座
日期:2014-08-13 16:03:21
50 [报告]
发表于 2011-02-25 13:53 |只看该作者
6.2        管道
Linux系统允许一条命令的标准输出成为另外一条命令的标准输入。通过下面的命令句法,可以用管道字符“|”来实现。
语法:command1 | command2 | command3 | ... | commandN
目的:“命令1”的标准输出连接到“命令2”的标准输入,“命令2”的标准输出连接到“命令3”的标准输入,......,“命令N-1”的标准输出连接到“命令N”的标准输入。
所以管道允许用户将一条命令的标准输出作为另外一条命令的标准输入。用管道连接的那些命令叫做过滤器(filter)。一个过滤器是一组Linux的命令,它们从标准输入中得到输入,经过一系列指定方式的处理,将结果送到标准输出。一些经常用到的过滤器是:cat、compress、crypt、grep、gzip、lp、pr、sort、tr、uniq和wc。
7        正则表达式介绍
正则表达式,是linux操作系统比起windows操作系统,在操作易用性方面,占有优势的为数不多的几个特性之一,使用正则表达式的工具有:awk,ed,egrep,grep,sed和vi。不过这些工具对正则表达式的支持程序不尽相同,其中awk和egrep能较好地支持正则表达式,grep对正则表达式的支持则较少,了解正则表达式的定义,不仅可以在实际操作中,减少重复的工作量,在读别人开发的shell脚本时,也有很大的帮助。
7.1        基本元字符集及其含义
名称        操作符        使用举例        意义        支持的工具
析取        |        x|y|z        x、y或者z        awk,egrep
任意字符        .        /L..e/        Love,Live,Lose        所有工具
字符串首字符        ^        ^x        以字符x开始的串        所有工具
连接                xyz        xyz        所有工具
字符串尾字符        $        x$        以字符x结束的串        所有工具
转义字符        \        \*        *        ed,sed,vi
组合        ()或者\(\)        (xy)+        xy,xyxy,xyxyxy,...        所有工具
可选        ?        xy?        x,xy,xyy,xyyy,...        awk,egrep
重复(零次或更多)        *        xy*        xy,xyy,xyyy,...        所有工具
重复(一次或更多)        +        xy+        xy,xyy,xyyy,        所有工具
集合        []        [Hh]ello        Hello,hello        所有工具
补集        [^]        [^A-KM-Z]ove        Love        所有工具
        pattern\{n\}                用来匹配前面pattern出现次数。n为次数        所有工具
        pattern\{n,\}m                含义同上,但次数最少为n        所有工具
        pattern\{n,m\}                含义同上,但pattern出现次数在n和m之间        所有工具
注:其中集合类操作符[],表示匹配[]内任何字符。可以是一个单字符,也可以是字符序列。也可以使用-表示[]内字符序列范围,如用[1-5]代替[12345]。

论坛徽章:
3
天秤座
日期:2013-12-27 13:44:58射手座
日期:2014-05-22 16:52:43天蝎座
日期:2014-08-13 16:03:21
49 [报告]
发表于 2011-02-25 13:51 |只看该作者
6        重定向和管道
6.1        重定向

操作符        作用
< file        输入重定向到文件file
> file        输出重定向到文件file
>> file        追加标准输出到文件file;如果文件不存在,就新建它
0 < file        输入重定向到文件file
1 > file        输出重定向到文件file
2 > file        错误重定向到文件file
1 >> file        追加标准输出到文件file
2 >> file        追加标准错误到文件file
<& m        关联标准加入到文件描述符m
>& m        将标准输出关联到文件描述符m
m >& n        关联文件描述符m到文件描述符n
<&-        关闭标准输入
>&-        关闭标准输出
m <&或m >&-        将文件描述符m关闭
> &file        标准输出和出错输出重定向到文件file
>| file        忽略noclobber变量将标准输出送到文件file
n >| file        忽略noclobber变量将文件描述符n强制输出到文件file
<> file        将标准输入和输出都分配给文件file
n < file        将文件file设为文件描述符n
n > file        将文件描述符n指向文件file
cmd1 | cmd2        将命令“cmd1”的输出送到命令“cmd2”的输入中

例如,如果要将编译和连接TestMap.cpp文件的正常结果输出到result.txt文件,而将编译时产生的错误输出到error.txt文件中,可以使用以下语句:
g++ -g TestMap.cpp -o TestMap 1> result.txt 2> error.txt

论坛徽章:
3
天秤座
日期:2013-12-27 13:44:58射手座
日期:2014-05-22 16:52:43天蝎座
日期:2014-08-13 16:03:21
48 [报告]
发表于 2011-02-25 13:51 |只看该作者
3、        在目录栈中漫游
pushd +2 (或者pushd -0,直接切换到~/a1/a2/a3目录中)
pwd (这时当前目录为)
输出示例:
/home/p40068/a1/a2/a3
dirs -l –v (查看目录栈)
输出示例:
0  /home/p40068/a1/a2/a3
1  /home/p40068/c1/c2/c3/c4
2  /home/p40068/b1/b2/b3/b4/b5
pushd (再次切换到~/c1/c2/c3/c4目录中)
pwd (这时当前目录为)
输出示例:
/home/p40068/c1/c2/c3/c4
dirs -l –v(查看目录栈)
输出示例:
0  /home/p40068/c1/c2/c3/c4
1  /home/p40068/a1/a2/a3
2  /home/p40068/b1/b2/b3/b4/b5
popd (或者使用别名“-”,将当前目录从栈中弹出,并进行栈中下一目录)
pwd (这时当前目录为)
输出示例:
/home/p40068/a1/a2/a3
dirs -l –v(查看目录栈)
输出示例:
0  /home/p40068/a1/a2/a3
1  /home/p40068/b1/b2/b3/b4/b5
popd (或者使用别名“-”,将当前目录从栈中弹出,并进行栈中下一目录)
pwd (这时当前目录为)
输出示例:
/home/p40068/b1/b2/b3/b4/b5
dirs -l –v(查看目录栈)
输出示例:
0  /home/p40068/b1/b2/b3/b4/b5

论坛徽章:
3
天秤座
日期:2013-12-27 13:44:58射手座
日期:2014-05-22 16:52:43天蝎座
日期:2014-08-13 16:03:21
47 [报告]
发表于 2011-02-25 13:49 |只看该作者
5.5.2        pushd
指令名称:        pushd
使用权限:        所有使用者
使用方式:        pushd [-n] [directory]
pushd [-n] [+N][-N]
说    明:        第一条语法:将directory压入目录堆栈;如果不带参数,则交换栈顶的两个目录项
第二条语法:循环移动目录堆栈,将第n项移到栈顶
参    数:        +N 循环移动堆栈,把从栈顶算起的第n项移到栈顶(栈顶项的索引号为0)
-N 循环移动堆栈,把从栈底算起的第n项移到栈顶(栈底项的索引号为0)
-n 不让新压入的目录成为当前目录
范    例:        参见5.5.4范例



5.5.3        popd
指令名称:        popd
使用权限:        所有使用者
使用方式:        popd[-n][+N][-N]
说    明:        从目录堆栈中删除目录,并进入到新的栈顶目录,如果不带参数,则删除栈顶目录
参    数:        +N 从目录堆栈中删除第n项目录(栈顶项的索引号为0)
-N从目录堆栈中删除第n项目录(栈底项的索引号为0)
-n 不改变当前目录
范    例:        参见5.5.4范例

5.5.4        范例
1、        创建以下目录
cd (不带参数,直接进入主目录)
mkdir -p a1/a2/a3
mkdir -p b1/b2/b3/b4/b5
mkdir -p c1/c2/c3/c4
2、        依次进入以下目录,并将目录压入栈中
cd a1/a2/a3
pushd . (或者使用别名“+”)
cd ~/b1/b2/b3/b4/b5
pushd . (或者使用别名“+”)
cd ~/c1/c2/c3/c4
pwd (这时当前目录为)
输出示例:
/home/p40068/c1/c2/c3/c4
dirs -l –v (查看目录栈)
输出示例:
0  /home/p40068/c1/c2/c3/c4
1  /home/p40068/b1/b2/b3/b4/b5
2  /home/p40068/a1/a2/a3

论坛徽章:
3
天秤座
日期:2013-12-27 13:44:58射手座
日期:2014-05-22 16:52:43天蝎座
日期:2014-08-13 16:03:21
46 [报告]
发表于 2011-02-25 13:48 |只看该作者
5.4.2        history扩展
可以使用以下history扩展方法,操纵和重复执行历史命令:
事件指定符        意义        例子
!N        历史命令列表中第N个事件        !8 命令列表中第8个命令
!-N        当前行之前的第N行        !-6 6行之前的命令
!!        上一次执行的命令        !! 上一次执行的命令
!string        最近用到的以string开始的命令        !grep 最近使用的以字符串grep开始的命令(一般是最后使用的grep命令)
!?string[?]        最近使用的包含string的命令        !?cut? 最近使用包含cut字符串的命令
string +[Home]        自动完成该历史命令的输入。        ls再按[Home]键,自动完成以ls为首的最近的历史命令的输入
5.5        目录栈操作
灵活使用目录栈操作,可以在常用的目录之中漫游,减少目录切换时,过多的输入目录路径的工作量。
5.5.1        dirs
指令名称:        dirs
使用权限:        所有使用者
使用方式:        dirs [options][+n][-n]
说    明:        显示目录堆栈,从左到右列出目录椎栈中目录的绝对路径名,第一个是栈顶的目录(当前目录)
参    数:        +N 显示从栈顶算起的第n个目录项(栈顶的目录项索引号为0)
-N 显示从栈底算起的第n个目录项(栈底的目录项索引号为0)
-c 只将当前目录保留在堆栈中,清除目录堆栈中其余的目录项
-l 显示目录的绝对路径名
-v 显示堆栈项,每行一个,带索引号为
范    例:        显示当前的目录栈
dirs

带绝对路径,每行一个,带索引号的显示目录栈
dirs –l –v

论坛徽章:
3
天秤座
日期:2013-12-27 13:44:58射手座
日期:2014-05-22 16:52:43天蝎座
日期:2014-08-13 16:03:21
45 [报告]
发表于 2011-02-25 13:47 |只看该作者
别名        定义        意义
cdbin        cd $IMAP_ROOT/bin/${1+"$@"}        直接进入bin目录
cdcode        cd $IMS_INSTALL_DIR/codes/source/${1+"$@"}        直接进入codes目录
startsvc        svc_adm -cmd startsvc${1+"$@"}        开始某一进程,比如startsvc tm
stopsvc        svc_adm -cmd stopsvc${1+"$@"}        停止某一进程,比如stopsvc tm
status        svc_adm -cmd status        显示所有进程状态
admin        lem_admin        lem_admin别名
pid        svc_adm -cmd status|grep${1+"$@"}        查看某一进程主ID,比如
pid tm
pids        ps -ef|grep${1+"$@"}        查看某一进程所有ID,比如
pids tm
hs        history${1+"$@"}        history命令的别名
pd        pushd${1+"$@"}        pushd命令的别名

5.4        历史命令

5.4.1        history
指令名称:        history
使用权限:        所有使用者
使用方式:        history [选项][文件名]
说    明:        显示或操作历史命令列表
参    数:        N 仅显示历史命令列表中最后N条记录
-c 清空历史命令列表
范    例:        显示完整的历史命令列表
history

显示最后8条命令
history 8

清空历史命令列表
history -c

论坛徽章:
3
天秤座
日期:2013-12-27 13:44:58射手座
日期:2014-05-22 16:52:43天蝎座
日期:2014-08-13 16:03:21
44 [报告]
发表于 2011-02-25 13:47 |只看该作者
5.3.2        SuSE8.0内建别名
别名        定义        意义
+        pushd .        将当前目录压入目录栈中
-        popd        将目录栈底的目录弹出,并进入该目录
..        cd ..        进入上一级目录
...        cd ../..        进入上二级目录
dir        ls -l        以列表方式显示当前目录下的文件和文件夹
md        mkdir -p        以指定的路径名,创建目录
o        less        调用less命令查看文档
rd        rmdir        删除空目录的命令

5.3.3        为ims_omu扩展的别名
以下是为我们项目所建的别名,使用时,只需将这儿提供的.alias文件拷贝到/home/ims_omu/目录下,再重新登录,即可使用这些别名,当然你也可以扩充这儿定义的别名。
.alias文件内容如下:
cdbin  () { cd $IMAP_ROOT/bin/${1+"$@"}; }
cdcode  () { cd $IMS_INSTALL_DIR/codes/source/${1+"$@"}; }
alias startsvc='svc_adm -cmd startsvc${1+"$@"}'
alias stopsvc='svc_adm -cmd stopsvc${1+"$@"}'
alias status='svc_adm -cmd status'
alias admin='lem_admin'
alias pids='ps -ef|grep${1+"$@"}'
alias pid='svc_adm -cmd status|grep${1+"$@"}'
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP