鸟哥的linux私房菜吧 哪些内容要看

下次自动登录
现在的位置:
& 综合 & 正文
鸟哥的linux私房菜 —- 笔记
1,chgrp/chown groupname/username filename
2,chown 777 filename
chown u/go/a+/-/= r/w/x filename(+/-/=号后面不要有空格)(不常用)
6.2.3目录属性的意义
r:具有读取目录结构清单的权限(可以用ls列出来)
w:拥有更改该目录结构清单的权限(增,删,改,移动)
x:能否进入该目录
对于文件则是可读,可写,可执行
6.2.4文件类型和扩展名
1)纯文本文件(ASCII)
2)二进制文件(binary) 3)数据文件(data)
链接文件 [l]
又分为硬链接和软链接
设备和设备文件
块设备文件[b]
字符设备文件 [c]串行端口的接口设备
套接字 [s] 用于网络设备链接
管道 [p] 用于防止同时访问一个文件
6.3 linux的目录配置
6.3.1 linux目录配置标准FHS(Filesystem Hierarchy standard)
1,把128页的图标给复制下来
7.3查看文件内容
最常用的显示问价内容的命令是cat,more和less。 查看一个大型文件时用cat,tac
cat由第一行开始显示内容
tac从最后一行开始显示
nl显示的时候输出行号
more 一页一页的显示文件内容
less 与more一样,但是它可以向前翻页
head 只看前面几行
tail 只看最后几行
od 以二进制的格式显示文件内容
7.3.5 修改文件时间与创建文件:touch
*modification time(mtime,修改时间)
*status time(ctime,状态时间,更改了权限或属性)
*access time(atime,访问时间)
touch [-acdmt] filename
-a:仅修改accesstime
-c:仅修改时间
-d:后面可以接日期
-m:仅修改mtime
-t:后面可以接时间时间
ll filename
ll --time=atime filename;
ll--time=ctime filenma显示ctime
7.4.1文件默认权限:umask
umask or umask -S 查看创建文件时的默认权限
umask 设置默认权限
7.4.4文件类型:file
查看文件文件类型file filename
7.5 搜索文件
1,which 寻找执行文件
which [-a] command
// -a 将所有可能找到的命令都列出来,不仅仅是第一条
2,whereis 寻找特定文件 whereis[-bmsu] finename
-b:只找二进制文件
-m:只找帮助文件
-s:只找源文件
3,locatefilename , 查找数据库,放在/var/lib/slocate/
4, find [path] [option] [action]
5, grep [选项] 基本正则表达式 [文件]
8.2文件系统的简单操作
当建立ext2的文件系统时,它拥有超级块/组模块/块位图/indoe位图/inode表/数据块等区域。在建立每一个ext2的文件系统时,会按照分区的大小,确定数个块组,每个块组都有上述这些部分。
8.2.1磁盘与目录的容量
1,df[-ahikHTm] dirname/filename 查看磁盘分区情况
-a:列出所有的文件系统
-h:GB、MB、KB格式显示
-T:显示该分区的文件系统名称
2,du [-ahskm] 文件或目录名称
查看目录或文件的容量
-a:列出所有文件与目录容量
8.2.2连接文件:ln
ln [-sf] 不加参数连接则为硬连接,加-s为软连接,-f如果目标文件存在则删除
8.3.1分区:fdisk
fdisk [-l] 设备名称
输出后面接的设备的所有分区内容。
删除分区和修改分区(书的155页)
8.3.2磁盘格式化
mke2fs [-bicLj] 设备名词
mkfs [-t type] 设备名词 [size]
8.3.3磁盘检验:fsck,badblock [书的160页]
8.5 建立虚拟内存 [书170页]
9.2Linux系统常见的压缩命令
tar [-cxtzjvfpPN] 文件或目录 -z gz格式(gzip),-jbz(bzip2)格式
dd可以读取整个设备内容,然后将设备备份为一个文件
dd if="inputfile"of="outputfile" bs="blocksize" count="number"//count为多少个bs
tar用来备份关键数据,dd用来备份整个分区或磁盘
10.3.2 多文件编辑
:n 编辑下一个文件
:N 编辑上一个文件
:files 列出当前打开的文件
10.3.3 多窗口功能
vim filename 后 输入 :sp another filename
ctrl+w切换
11.2.3 环境变量 env 和 export(系统默认的变量) set(所有变量)
大写的系统环境变量
11. 变量键盘读取、数组与声明:read, array, declare
read [-pt] variable
// -p 后面可接提示符, -t 后面接等待的秒数
声明数组: var[index]=content , 读取 echo ${var[1]}
11.3.1 命令别名设置: alias、unalias
11.3.2 历史命令:history
history n(最近的n行)
history -rw historyfiles ; -r 将historyfiels的内容读入shell; -w将hostory写入file中
!number:执行number行命令; !command:由最近命令开始搜索commang并执行
11.4.3 环境设置文件 (页222)
11.4.8 命令执行的判断根据: ;、&&、||
&& 前面的执行结果为正确时再执行下去
||当前面的执行结果不正确时才执行下去
11.5.2 排序命令 sort、wc、uniq
1.sort 可以根据不同的数据类型来排序。
sort [-fbMnrutk]
-f 忽略大小写差异
-b 忽略前面的空格
-M 以月份的名字来排序
-n 使用“纯数字”排序
-r 反向排序
-t 分割符
like -t ':'
-k 按哪个字段来进行排序
2.uniq 将重复的数据仅显示一次
uniq [-ic]
-i 忽略大小写
-c进行计数
3.wc [-lwm] -l 仅显示行, -w仅显示字(英文单词) -m多少字符
11.5.3 双向重导向:tee
tee [-a] file
同时将数据流分送到文件和屏幕。 -a:以累加的方式
12章 正则表达式 (在页243)
12.4 格式化显示: printf
12.5 sed和awk 工具
13章 shell脚本 (在页263)
第14章 linux帐号和身份管理
1.4.1.2 用户帐号:/etc/passwd存放用户信息, /etc/shaow存放密码
1.4.1.3 关于用户组:/etc/group(用户组名词:用户组密码:GID:支持的帐号名称)
, /etc/gshadow
有效用户组和初始用户组:使用groups来查看有效用户组,用newgrp users来修改有效用户组。初始化用户组为当前用户登录时就关联到的这个用户组
14.2 账号管理
1. useradd [-u UID] [-ginitial_group] [-G other_group] -[Mm] [-d home] [-s shell] username
-u:后面接UID,是一组数字
-g:后面接用户组名称
-G:后面接的用户名称是这个帐号还可以支持的用户组。
-M:强制不要建立用户家目录
-m:强制建立用户家目录
-d:指定某个目录为家目录。
-r:建立一个系统帐号
-s:后面接一个shell
2.passwd [useraccount] 给转户设置密码.(root用户可以为任何用户修嘎imima。普通用户只需输入passwd).
3. usermod [-cdegGls] username
-c:后面接帐号的说明
-d:后面接帐号的目录
-e:后面接日期
-g:后面接groupname,
-s:后面接shell的实际文件
4. userdel [-r] username
-r:连同用户的家目录一起删除
14.2.2 用户功能:chfn,chsh(一般用户使用的管理指令,前面的指令都是管理员的)
chsh [-ls]
-l:列出当前系统上可用的shell;-s设置修改自己的shell
chfn [-foph] 修改个人信息
id [username] 查询某人相关的UID/GID
14.2.3 新增与删除用户组
14.3 切换用户身份
1、su [-lcm][username]
-, 变换身份成root,且使用root的环境设置参数文件
-l, 后面接username,可使用变换身份者的所有相关环境设置文件。
-m,-m和-p一样,表示使用当前环境设置,而不重新读取新用户的设置文件
-c,仅进行一次命令,所以-c后可以加上命令。
当用户执行sudo是,系统会中东去寻找/etc/sudoers文件,判断该用户是否有执行sudo的权限。
确认用户具有可执行sudo的权限后,便让用户“输入用户自己的密码”确认
若密码输入成功,边开始执行sudo后续的命令
sudo [-u [username|#uid]] command (-u, 后面接帐号名称或者UID)
example: sudo mkdir /root/aaa 以root身份在root目录建立一个目录。前提是需要去设置/etc/sudoers,用visudo编辑。
14.4 用户的特诉shell与PAM模块 p306
14.5 查询用户:w、who、last、lastlog
第15章 Linux磁盘配额 p336
第16章 例行性命令的建立
第17章 程序与资源管理
17.1.1 进程与程序
17.2 作业管理:&、[ctrl]+z、jobs、fg、bg、kill
1.直接将命令放到后台执行: &
2.将当前作业防盗后台暂停: [ctrl]-z
3.观察当前后台作业状态:jobs
jobs [-lrs]
-l:除了列出作业号外,同时列出PID
-r:仅列出后台运行作业,run
-s:仅列出后台暂停作业,stop
在输出的信息上,有(+ -)号,(+)表示默认作业。
4.将后台作业拿到前台处理: fg
fg %jobnumber (作业的号码)
5.让作业在后台运行:bg
find / -parm 7000, 按下ctrl+z,bg %1; jobs
暂停的find可以在后台运行
6.kill -signal %jobnumber
参数 -l:列出当前kill能够使用的信号
signal:便是给后面的作业什么指示
-1:重新读取一次参数的设置文件
-2:表示与由键盘输入ctrl+c同样的动作
-9:立即强制删除一个作业
-15:以正常的程序方式终止一项作业
(用于删除不正常的作业)
17.3进程的管理
1.ps 静态的查看系统上正在运行的进程
参数: -A:所有的进程均进程均显示出来,与-e具有同样的作用
-a:与终端无关的所有进程
-u:有效用户的相关进程
x:通常与a一起使用,列出较详细的信息
输出格式: l:较长、较详细的显示该PID的信息
j:作业的格式
-f:更为完整的输出
2.top 动态的查看系统上正在运行的进程
tp [-d] | top [-bnp]
参数 -d:后面接秒数,整个进程画面更新的秒数。默认是5S
-b:以批处理的方式执行top
-n:与-b搭配,意义是,需要进行几次top的输出结果
-p:指定某些哥PID来进行关擦监测
pstree [-Aup]
各进程树以ASCII字符来链接
同时列出每个进程的PID
-u 同时列出每个进程的所属帐号名称
17.3.2 进程的删除
kill可以帮我们将信号传送给某个作业(%jobnumber)或者是某个PID(直接输入数字),也就是说,kill后面直接加数字与加上%的情况是不同的。用kill -l可以查看信号。
killall [-iIe] {command name}
-i interactive的意思,交互式的,会出现提示
-e exact的意思,表示后面接的command name要一致
-I 命令名称(可能包含参数)忽略大小写
17.3.3 系统资源的观察
Display amount of free and used memory in thesystem
free [-b|-k|-m|-g] [-t]
前面的参数代表也什么单位显示, -t 在输出的最终结果总显示物理内存和swap的总量
Print system information
uname [-asrmpi]
-a 所有系统相关的信息
-s 系统哦你核心名称
-r 核心的版本
-m 笨系统的硬件名称
-p CPU的类型
-i 硬件的平台
3.uptime 显示当前系统哦你已开始时间
常用在网络的监控方面
-a 将当前系统上所有的联机、监听、套接字数据都列出来
-t 列出tcp网络包的数据
-u 列出udp网络包的数据
-l 列出当前正在网络监听的服务
-p 列出该网络服务的进程PID
17.4 进程的执行顺序
PRI(Priority),NI(nice),它们凑一起才产生当前的PRI的值
nice [-n] command 建立命令的时候就分配nice值
-n 后面接一个数值
renice [number] PID 给一个进程重新分配nice值
&&&&推荐文章:
【上篇】【下篇】有没有比《鸟哥的Linux私房菜》更好的书? - 知乎825被浏览130539分享邀请回答/然而我是个archlinux用户, archwiki是个宝库啊. 3378 条评论分享收藏感谢收起billie66.github.io/TLCL/book/index.html另外也可以参考之前的回答10110 条评论分享收藏感谢收起查看更多回答5 个回答被折叠()& 2005-, all rights reserved 北京豆网科技有限公司《鸟哥的linux私房菜》基本命令笔记
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私房菜》
看过本文的人也看了:
我要留言技术领域:
取消收藏确定要取消收藏吗?
删除图谱提示你保存在该图谱下的知识内容也会被删除,建议你先将内容移到其他图谱中。你确定要删除知识图谱及其内容吗?
删除节点提示无法删除该知识节点,因该节点下仍保存有相关知识内容!
删除节点提示你确定要删除该知识节点吗?}

我要回帖

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

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信