鸟哥癿 linux 私房菜的linux私房菜 正则表达式 有个例子似乎结果不正确

君,已阅读到文档的结尾了呢~~
鸟哥的linux私房菜(基础学习篇)
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
鸟哥的linux私房菜(基础学习篇)
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口鸟哥的私房菜linux全套视频教程
软件大小:600 MB
软件语言:简体中文
软件类型:
软件授权:免费软件
更新时间:
开 发 商:Home Page
应用平台:Win7/Vista/Win2003/WinXP
网友评分:3
同类人气软件
鸟哥的私房菜linux全套视频教程下载地址
鸟哥的私房菜linux全套视频教程来自互联网, 如有侵犯您的版权, 请与我们
* 想展现您的技术风采吗,我们这个大舞台给您机会!有奖投稿方法:
* 站内软件和教程仅供技术研究,请于下载后24小时内自行删除,请勿用于非法用途否则后果自负!
* 站内软件和教程均由网友发布,切莫轻信软件和教程里的广告信息以防上当受骗
* 站内所有软件和教程已经通过本站检测安全,若您依然发现存在安全问题,敬请来信通知我们!3475人阅读
读书笔记(8)
1.以前没注意过的,略写的命令option后面只能空格后加参数,而标准option即可以空格也可以等号后跟着参数,如date命令,date -; date --; date --reference=filename 都是正确的。
如果文件以 - 开头,很多命令会失效,比如想删除可以这样:rm -- &-2012.log
2.对于目录来说,即使有r,没有X,也不能进入目录。
对于文件来说,x表示这个文件可以被用户执行,但能不能执行成功,当然得看本身里面的内容了。
-bash: /dev/null: Permission denied
rm /dev/ mknod -m 666 /dev/null c 1 3
3.文件种类:
普通文件 -
纯文本ASCII 文件,可以使用cat查看的都算
二进制文件,Linux的可执行文件,举例来说,cat命令本身就是个二进制文件,或者使用cat查看一些二进制文件时是乱码
数据格式的文件,如登录记录的数据,使用cat查看也是乱码,但可以使用last读出
连接文件 l &硬连接与软连接
块设备 b 如硬盘
字符设备 c 如串行接口的键盘和鼠标
4.只要开头不是/ 就是相对路径的写法,相对路径是以“当前路径的相对位置”来表示的
&./表示当前路径
../表示上一层路径
建议在写shell 时使用绝对路径,因为绝对不会出错。
5.根目录下最好不要直接有文件,只有目录,且/etc,/dev,/bin/,/sbin,/lib等5个子目录只能跟在/ 下面,不能独立分区。建议独立的分区如/home,/usr,/var,/tmp等
6.挂载的概念:物理的设备挂到目录树上,如/dev/sda2 挂载到/boot上。 另如将window 分区挂载进来时,一般挂在/media/XXX &... 光盘呢一般在/mnt/cdrom。
7.目录的相关操作
. 表示当前目录
.. 表示上一层目录
- 表示前一个工作目录
~ 表示“当前用户”所在的家目录
~account 表示account用户的家目录
注意simba的家目录是/home/simba,root的家目录是/root
groupadd test&
-g test simba -d /data/simba -s /bin/sh
8.pwd -P &不会以连接文件的数据显示,而是显示正确的完整路径
mkdir -p 可以递归建立目录
mkdir -m &711 &test 可以设置属性,否则使用默认属性。
rmdir 只能删除空目录(即目录内不能有其他目录或者文件),即需要一层层地删除,可以加 -p 递归删除上层空目录,如果要将所有目录下的东西都删除,使用 rm -rf test (危险)
cp -a 将文件属性一起复制,且递归复制,相当于 -pdr
cp -u 在目标文件与源文件有差异时才复制,常用于备份。
9.查看文件内容
cat: 从第一行开始显示,-A 显示换行符 $ ,-T 显示tab键(^I),-n 显示行号
tac:从最后一行开始显示
nl:显示的时候,输出行号
more:一页一页地显示文件内容
less:与more类似,但可以向前翻页
shuf:打乱文件内容顺序
tail:只看最后几行
head:只看前面几行
& & & & & 显示~/.bashrc 的第11到第20行
& & & &head -n 20 &| tail -n 10
sort -nr file:sort lines of text files
sort -k6nr -k5n file.txt:假设先按第6列数字倒序,在此基础上再按第5列顺序排列
od:以二进制方式读取文件内容
more,less可以使用 /字符串 进行查找
split -l $line -d $file seq_ & &将文件 $file 分割成 以 seq_ 为前缀的文件,-d 表示以数字为后缀,如 seq_00&
建立一个空文件
将某个文件日期修改为当前日期(atime和mtime)
atime是访问时间,mtime是修改时间,ctime是状态改变时间(属性与权限)
10.一般用户的umask为0002,第一个数为特殊权限所用,root默认umask为0022
建立文件时默认权限为 &(-rw-rw-rw-) &~ (-----w--w-) &==& -rw-r--r--
建立目录时默认权限为(drwxrwxrwx) &~ (d----w--w-) ==& drwxr-xr-x
11.chattr +i 可以让一个文件不能被删除修改写入等 &+a表示只能增加数据,不能被删除。
&lsattr可以查看文件的隐藏属性
12. 查找文件
which -a &执行文件
whereis -bmsu &文件名或者目录名
locate filename
find &path &-option -action
-atime n &在n天之前的“一天之内”访问过的文件
-name filename
-size &+50k & &#比50k大的文件
-type &TYPE
-exec command &#处理搜索处理的结果,一定以; 结束
如find / -name simba -exec ls -l {} \ &;
不知道全名时可以使用通配符*
find . -name '*.[ch]' | xargs wc -l & 统计当前目录下.c .h 文件的代码行数
find . -name '*.[ch]' -exec wc -l {} \;&
find $cgi_dir -name &luascan_cgi_after_rewrite_*& -exec 'cat' {} \; & $merged_file & 将目录下所有命中特征的文件的内容输出合并到一个文件
stat cutting_board | grep Modify | awk '{print $2}' &得到目录的修改时间
cut :remove sections from each line of files
cut -d '分隔符' -f fields & &cut -d ':' -f 3, 5
cut -c 字符范围 & cut -c 12-20
ps aux | grep client.py | grep -v 'grep' | cut -c 9-15 | xargs kill -9 &# 进程 pid 是 9 ~ 15 字符串
ps -ef | grep client.py | grep -v 'grep' | awk '{print $2 }' | xargs kill -9
13. export命令输出环境变量
无论是在系统环境变量追加路径如#export PATH=$PATH:$HOME/bin:/usr/local/mysql/bin
&还是将自定义变量使用export name=simba 进行输出,注销再次登陆后这些路径和变量都将不再存在,即export只对当前登录有效。如果想永久保存路径或者变量应在文件中设置,如
系统设置文件 /etc/profile &所有用户都会使用到这个文件
个人设置值 ~/.bash_profile &只在登录时读取一次
个人设置值 ~/.bashrc 每次执行脚本都会读取
上述三个文件读取顺序由上到下,故~/.bashrc 是最终读取的设置值,可将个人设置放于此。
另外不要与/etc/bashrc混淆,这个文件是确定umask的功能。
中间一行 . ~/.bashrc & &小数点表示可以将设置文件的内容读进当前的shell环境,使用source也可以实现。
若增加一个用户后,登录前缀提示符类似为 bash-4.1$,可以把 root 的 .bash_profile 和 .bashrc 拷贝到用户家目录下,并 chown 权限为用户。
14.命令的执行
执行命令无外乎两种形式,一种以绝对路径给出命令,如./name.pl ,/usr/bin/name.pl;另一种则因为设置了环境变量PATH的路径而可以在任何路径执行命令,这两种情况都需要 文件有 x 权限。当然也可以如 perl name.pl (当前目录下), &此时即告诉系统,要直接以/bin/perl 的功能来执行 name.pl 文件内的命令,此时 name.pl 只需要 r 权限即可。
15.系统和文件的编码
查看系统当前编码 locale
查看系统支持的编码 iconv -l
查看文件的编码 &file -i &(注意与type不同,查看命令的类型)
如windows文件转到Linux下,如果使用dos2unix之后(一般只是去掉换行^M而已)还会乱码,则可以 iconv -f GBK -t UTF-8 file1 -o file2
出现乱码时解决思路:
系统设置的编码格式
文件创建时的编码格式
编辑器打开时使用的编码格式
终端包括连接的如putty的编码格式
16.特殊权限介绍
特殊权限介绍
&&SBIT(粘滞位)
set&user&id
set&groud&id
&&sticky&bit
以文件属主用户身份运行
&获得文件属组权限
对于目录而言,这一位可以理解为防止删除里面的文件和目录
chmod 4551 filename // 权限: r-sr-x--x & &放在数字第一位
chmod 2551 filename // 权限: r-xr-s--x
chmod 1551 filename // 权限: r-xr-x--t
如果本来在x位上已经设置了x的时候,设置这些位将会显示小写的(s,s,t),否则会显示为大写的(S,S,T)。这三位如果转化为8进制表示的话,分别对应的是4(SUID),2(SGID),1(sticky bit)。
17.find 常用表达式
find命令的主要作用是对树形目录层次结构进行彻底检查。
find命令的一般格式:
& & find pathname -expressions
选项表达式,用来防止find命令的搜索范围超出当前文件系统的边界。返回值常为真。
-group grp
条件表达式,检查当前的文件是否具有与grp相同的GID或组名。如果两者一致,返回真值,否则返回假值。
-name pattern
条件表达式,检查文件名是否和模式pattern相同。pattern可以用正则表达式给出。必要时使用引号。当文件名与pattern一致时.返回真值.否则为假。
条件表达式,检查当前文件的类型是否是t。对目录讲,t值可以是d。对普通文件讲,t值可以是f,对连接讲,t值可以是l 等等。如果当前的文件的类型是t,返回真值,否则为假。
条件表达式,检查当前的文件的所有者或UID是否是usr。如果两者一致,返回真值,否则为假。
操作表达式,用来执行cmd命令。如果要将当前的文件名传送给命令,应该加{}标记,分号用来表示cmd的结束,并和后面可能出现的表达式分开。如果成功地执行了cmd命令,返回真值,否则为假。
操作表达式,将当前的文件名送到标准输出设备显示,返回值常为真。
find . &-name ‘abc*’-print
find . &-user root -print
find . &-group root -exec echo {} \; -print
find . &-type f -group root -exec rm -f &{} \; -print
find . &-type f -mtime 4 –print
find . &-size +5000k -exec ls -lh {} \;
find . &\( -name& &[Aa]*&-o -name &*[Aa]&\)& -print &// &-o & -a
统计在/etc/为起点的目录树中,文件中包含字符串“telnet”(不区分大小写)的文件的数目。请写出这条命令
find /etc –type f &-exec grep &-il &‘telnet’ {} \; | wc -l
18.grep 搜索指定字符串
grep是通用正则表达式分析程序(General Regular Expression Parser)的缩写。&
grep命令可以在它的输入中搜索指定的字符串模式(Pattern)。grep命令的输出是包含输入中指定的字符串模式的行。
grep命令的一般格式:
& & & & & & & & grep [option] pattern file
用扩充正则表达式进行模式匹配
不区分大小写
在每一输出行前显示文件内的行号
与其他命令一起使用时,抑止输出显示
抑止文件的出错信息
返回匹配到的文件名称
grep ^public t1.txt
grep public$ t1.txt
grep -n ^$ t1.txt & //查找空行
grep -n '\.$' t1.txt &// 查找以小数点结束的那一行
grep -n \&public t1.txt //查找存在 &public 的行
grep -n ‘\&public’ t1.txt &// 查找存在 public是单词开头的 &行
grep -n ‘public\&’ t1.txt
grep -n “\\\\” t1.txt // 查找存在 \ 的行
grep -n ‘\\’ t1.txt & &// 查找存在 \ 的行
grep -E go+d t1.txt
grep -En 10\{2,4\}A t1.txt
grep -En '10{2,4}A'&t1.txt
grep -En '11A|11B' t1.txt
egrep -n 'g(la|oo)d' t1.txt &// glad 或 good
grep -En net\(works\)* t1.txt
egrep 'A(xyz)+C' &t1.txt & // () 中表示成为一个表达式整体
grep&public&
*.txt &// *是通配符
ps aux | grep &ssh&&|&grep
–v&&grep& &//反向匹配
grep&-rn &&telnet &/etc &//&递归搜索目录中的所有文件
注意:grep表达式先给shell处理再给grep处理,而双引号能够阻止shell对大部分特殊字符进行解析,但不会阻止对\, $, ` 等的解析,
单引号可以阻止shell对所有特殊字符进行解析。
此外,如果shell变量值中出现空格,可以使用双引号或单引号将变量内容括起来,但要注意,双引号内的特殊字符可以保持变量特性,但单引号内的特殊字符则仅为一般字符。
很常见的一个组合是grep -oP,-o是只输出正则匹配部分的字符,-P(大写)则是启用PCRE兼容的正则表达式,两者结合起来使用往往事半功倍(grep
-oE 也不错,-E 支持扩展的正则表达式,比如 [:space:] 表示空格),再巧妙利用正则表达式去做日志分析、文本处理,基本上工作中遇到的类似需求不会有什么大问题,善用shell里面的awk,grep,sed,find几个神器,会对很多linux批量处理任务大有帮助。
有时它也会把txt文件误当做二进制文件,这时如果匹配成功,grep或许只给你一个“Binary
file XXX matches”的信息,而你明明知道这是个txt文件,这时就可以用-a选项,或--binary-files=text.
19. 正则表达式
在每行的开始进行匹配
在每行的末尾进行匹配
在单词的开始进行匹配
在单词的末尾进行匹配
对单个任意字符进行匹配(除换行符)
对str中的任意单个字符进行匹配
对任意不在str中的单个字符进行匹配
对a到b之间的任何字符进行匹配
抑止后面的一个字符的特殊含义
对前一项(item)进行0次或多次重复匹配
对前一项进行1次或多次重复匹配
对前一项进行0次或1次重复匹配
对前一项进行j次重复匹配
对前一项进行j次或更多次重复匹配
对前一项最多进行k次重复匹配
对前一项进行j到k次重复匹配
匹配s项或t项中的一项
将exp作为单项处理
匹配字母或数字或下划线或汉字
匹配任意的空白符,包括换行
匹配单词的开始或结束
匹配任意不是字母,数字,下划线,汉字的字符
匹配任意不是空白符的字符
匹配任意非数字的字符
匹配不是单词开头或结束的位置
更改点 (.) 的含义,使它与每一个字符匹配(而不是与除 \n 之外的每个字符匹配)。
更改 ^ 和 $ 的含义,使它们分别在任意一行的行首和行尾匹配,而不仅仅在整个字符串的开头和结尾匹配。
忽略大小写
指定不区分大小写的匹配。
注:正则表达式与通配符与特殊字符是不同的,有些工具如ls 是不支持正则表达式的。下面列举:
(1)通配符和特殊字符中! 表示逻辑上的非;而正则表达式中使用 ^ 表示。
(2) $ 表示变量引用;表示行尾。
(3)* 表示任意0或多个字符;表示重复0个或多个字符。
(4)?表示一定有一个字符;表示重复0次或1次。
(5)需要注意的是#,! 在正则表达式中没有特殊的含义,故在vim 中当做字符查询时无需使用转义字符\ 进行转义, $ 需要转义。
grep ‘^#' &t1.txt &// 查找行首以 # 开始的一行
grep '!$' &t1.txt &// 搜索行尾为!的一行
(6)[ ] 行为一致
正则表达式在vi 中的使用:
在当前行中删除从aa到zz的所有字符。
:s/aa.*zz//
在整个文件用and代替所有的&字符。
:1,$s/&/and/g & // g是全局替换,也就是一行中多次出现都要替换
:1,$s/\$/and/ // $是特殊字符
在每一行的行首插入字符串new
:1,$s/^/new/
在第2行到第5行的行尾插入字符串@@
:2,5s/$/@@/g & &
去掉行首的所有数字字符
:s/^[0-9][0-9]*//
:1,$s/?.*// &只保留 url 中的 uri 部分
:g!/dd/d 删除不含字符串'dd'的行
:g!/\&dd/d 删除不含以'dd'开头字符串的行
删除空白行
提取分组 \1, \2 ...
20. 命令重定向
比如./tesh.sh & output,其中& file &等价于 1& file,就是把输出重定向到文件中。
对应的,2&&1 是把标准错误重定向到标准输出
而 && file 是把标准输出和标准错误重定向到file
注意 : 即使是后台进程,如果没有重定向输出且没有将日志打印在 log ,那还是会将输出和错误打印在标准输出.
./run.sh & run.log &2&&1 // 前台进程,重定向输出
./run.sh & run.log 2 & &1 & // 后台进程,重定向输出
./run.sh & // 后台进程,里面可以将日志打印在 log.
21 .&UNIX时间戳与时间字符串的转换命令
#UNIX的时间戳转换为时间字符串
SELECT FROM_UNIXTIME( , '%Y-%m-%d' );&
date -d ' UTC
date -d +10hour +&%Y-%m-%d %H:%M:%S&
date -d +1day +&%Y%m&
#时间字符串转换为UNIX的时间戳
date -d & 00:00:00& +%s
&#转化为天
date -d ' UTC 15988 days'
Thu Oct 10 08:00:00 CST 2013
&#计算距离1970-01-01到现在的天数
echo $(($(date +%s)/86400))&&
22. 数据同步、自动登录
rsync/scp/ftp(&Add&/usr/sbin/nologin&in
the&/etc/shells/)、expect
23. crontab 需要注意的一些问题
脚本中涉及文件路径时全部写绝对路径;
脚本执行要用到java或其他环境变量时,通过source命令引入环境变量,如:
$ cat start_cbp.sh
&#!/bin/bash
source /etc/profile & & & &# 引入 profile环境变量
export RUN_CONF=/home/d139/conf/platform/cbp/cbp_jboss.conf
/usr/local/jboss-4.0.5/bin/run.sh -c mev &
当手动执行脚本OK,但是crontab 不执行时或者执行失败(如 python import module 失败)。这时可以大胆怀疑是环境变量惹的祸,并可以尝试在crontab中直接引入环境变量解决问题。如:
0 * * * * . /etc/ /bin/sh /var/www/java/audit_no_count/bin/restart_audit.sh
《鸟哥的linux私房菜》
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1235956次
积分:17921
积分:17921
排名:第544名
原创:248篇
评论:581条
study@Jnu/EE
work@Tencent/SEC
加入小密圈一起交流
文章:20篇
阅读:77154
文章:52篇
阅读:196950
文章:39篇
阅读:275803
文章:38篇
阅读:204055
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'

我要回帖

更多关于 linux鸟哥私房菜 pdf 的文章

 

随机推荐