Linux系统运维常用(1)

113 阅读8分钟

1、文件、目录操作命令(18个) ls 即list:列出目录的内容及其内容属性信息。 主要参数: -a:显示隐藏文件 -l:是以更详细的列表形式显示-S:

drwxr-xr-x (也可以用二进制表示 111 101 101 --> 755)

d:标识节点类型(d:文件夹 -:文件 l:链接)

r:可读 w:可写 x:可执行

第一组rwx: ## 表示这个文件的拥有者对它的权限:可读可写可执行

第二组r-x: ## 表示这个文件的所属组用户对它的权限:可读,不可写,可执行

第三组r-x: ## 表示这个文件的其他用户(相对于上面两类用户)对它的权限:可读,不可写,可执行

以下命令参数只截取部分,不全;

eg1:

ls -F 查看目录中的文件

ls *[0-9]* 显示包含数字的文件名和目录名

ls /tmp | pr -T5 -W$COLUMNS 将终端划分成5栏显示 1 2 3 4 5 cd 即change directory:从当前工作目录切换到指定的工作目录 cd - //返回上次所在的目录 1 cp 全拼为copy,功能为复制文件或目录。 eg1: 复制目录及其下隐藏文件到目标------>2种方法: 1)方法一:

cp -rf ls -A1 --color=never 目标目录 1 其中:–color=never选项是为了关闭ls的彩色显示,一般都是打开的,如果打开了,会包含彩色显示的转义字符,cp命令会提示找不到文件。-1选项,让ls一行只显示一个文件或目录名,仅是为看着舒服,这里加不加都不影响。如果已经将非隐藏的文件或目录复制过去了,仅想复制隐藏的文件和目录,执行以下命令:

cp -urf ls -A1 --color=never 目标目录 1 其中:-u参数,只会复制目标目录下不存在的文件;或者目标目录下存在,但当前目录下更新的文件。 2)方法二:

cp -rf ls -d .[^.]* --color=never 目标目录 1 其中:-d 不展开目录显示,.[^.]*匹配当前目录下以.开头的文件和目录。

tree 显示文件和目录由根目录开始的树形结构 lstree 显示文件和目录由根目录开始的树形结构 tree -d //树状显示目录 1 2 find 查找,用于查找目录及目录下文件。 语法:find [path…] [expression_list]

【工作原理】

其中,expression分为三种:options、test、action。对于多个表达式,find是从左向右处理的,所以表达式的前后顺序不同会造成不同的搜索性能差距。find命令默认递归遍历所指定的目录树,针对每个文件依次执行find命令中的表达式,表达式首先根据逻辑运算符进行结合,然后依次从左至右对表达式求值。

find首先对整个命令行进行语法解析,并应用给定的options,然后定位到搜索路径path下开始对路径下的文件或子目录进行表达式评估或测试,评估或测试的过程是按照表达式的顺序从左向右进行的(此处不考虑操作符的影响),如果最终表达式的表达式评估为true,则输出(默认)该文件的全路径名。

对于find来说,一个非常重要的概念:find的搜索机制是根据表达式返回的true/false决定的,每搜索一次都判断一次是否能确定最终评估结果为true,只有评估的最终结果为true才算是找到,并切入到下一个搜索点。 eg1:find /tmp -type f -name “*.log” -exec ls ‘{}’ ; -print,##该find中给定了两个test,两个action,它们之间从前向后按顺序进行评估

表达式优先级如下:

其中,-regex:这个参数和 -name 有类似的作用,都是通过文件的名字进行匹配,但是二者的不同的点是:

1)-name 只是对文件的名称做匹配,而-regex 是对文件的路径做匹配;-regex不是匹配文件名,而是匹配完整的文件名(包括路径)。例如,当前目录下有一个文件"abar9",如果你用"ab.*9"来匹配,将查找不到任何结果,正确的方法是使用".*ab.9"或者"./ab.*9"来匹配。 2) 在需要用正则表达式的时候,-regex 会比 -name方便很多, -name 是不支持正则表达式的,name 选项只支持通配符 * ? [],正则表达式有不同的标准,所以在find命令中可以通过 -regextype 来指定采用的正则表达式规范 , 从而让 -regex 按照指定的正则表达式规范工作,默认是 emacs 规范;另外有posix-awk, posix-basic, posix-egrep and posix-extended四种,可在man中获取得到。

用法:find dir -regextype "type" -regex "pattern"

示例:find . -regextype grep -regex “.*/[0-9]{4}$” | head //查找文件名称是4个数字构成的文件,然后取结果的前10行,其中-regex 采用的是 和 grep 命令相同的正则表达式规范;-regex 表达式忽略了文件的路径“./”,需在启后指定路径。

如果用name: find . -name “[0-9][0-9][0-9][0-9]” | head

-name 选项:按照文件名模式来匹配文件,若匹配则返回true,否则返回false。最好用引号将文件名模式引起来,防止shell自己解析要匹配的字符串。(可以用单引号也可以用双引号,单引号和双引号在shell环境中的区别,后者内不全是普通字符,前者特殊字符会被shell识别)-name对大小写字母敏感,如果想匹配时不考虑大小写可以使用-iname测试项.

find . -name "[A-Za-b]*" -print //当前目录及子目录中查找文件名以一个大写字母开头或者以小写a或b开头的文件

find . -name "[^A-Z][a-z][0-9][0-9].txt" -print //当前目录查找文件名不以大写字母开头,之后跟一个小写字母,再之后是两个数字,最后是.txt的文件;注意,此处的模式匹配并不符合正则表达式。

find . -size +0c -wholename "e[0-9]*" -o ! /( -name "." -o -name "phone" /) -prune -name ".c" -user xixi -o -name "*phone" //-prune是一个动作项,它表示当文件是一个目录文件时,不进入此目录进行搜索。-prune经常和-path或-wholename一起使用,以避开某个目录,常见的形式是:

find PATH (-path <don't want this path #1> -o -path <don't want this path #2>) -prune -o -path //注意:如果同时使用-depth设置项,那么-prune将被find命令忽略。

find . -maxdepth 1 -name *.jpg -print -exec convert "{}" -resize 80x60 "thumbs/{}" ; #批量调整当前目录中的文件大小并将它们发送到指定的缩略图目录

find / -user user1 搜索属于用户 ‘user1’ 的文件和目录 find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件 find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件 find / -name \*.rpm -exec chmod 755 '{}' ; 搜索以 ‘.rpm’ 结尾的文件并定义其权限 find / -xdev -name *.rpm 搜索以 '.rpm' 结尾的文件,忽略光驱、捷盘等可移动设备

更多参考:参考1;参考2

locate *.ps 寻找以 ‘.ps’ 结尾的文件 - 先运行 ‘updatedb’ 命令 whereis halt 显示一个二进制文件、源码或man的位置 which halt 显示一个二进制文件或可执行文件的完整路径

vim/vi 文本编辑器: 1)常用快捷键:(在一般模式下使用):

a :在光标后一位开始插入

A 在该行的最后插入

I 在该行的最前面插入

gg 直接跳到文件的首行

G 直接跳到文件的末行

dd 删除一行;3dd 删除3行;yy 复制一行;3yy 复制3行;p 粘贴;u:即undo撤销操作;

v :进入字符选择模式,选择完成后,按y复制,按p粘贴

ctrl+v 进入块选择模式,选择完成后,按y复制,按p粘贴

shift+v 进入行选择模式,选择完成后,按y复制,按p粘贴

2)查找并替换

1 显示行号 :set nu

2 隐藏行号::set nonu

3 查找关键字 :/you ## 效果:查找文件中出现的you,并定位到第一个找到的地方,按n可以定位到下一个匹配位置(按N定位到上一个)

4 替换操作 :s/sad/bbb 查找光标所在行的第一个sad,替换为bbb

:%s/sad/bbb 查找文件中所有sad,替换为bbb

其他: mkdir 全拼为make directories,其功能是创建目录。-p:创建多级目录; mv 全拼为move,其功能是移动或重命名文件。 pwd 全拼为print working directory,功能是显示当前工作目录的绝对路径。 rename 用于重新命名文件。 rm 全拼为remove,其功能是删除一个或多个文件或目录。 rmdir 全拼为remove empty directories,功能是删除空目录。 touch 创建个空文件,改变已有文件的时间戳属性。 tree 功能是以树形结构显示目录下的内容。 basename 显示文件名或着目录名。 dirname 显示文件或着目录路径。 chattr 改变文件扩展属性。 lsattr 查看文件扩展属性。 file 显示文件类型。 md5sum 计算和校验文件的MD5值。 rmdir dir1 删除一个叫做 ‘dir1’ 的目录’ rm -rf dir1 删除一个叫做 ‘dir1’ 的目录并同时删除其内容 rm -rf dir1 dir2 同时删除两个目录及它们的内容 ln -s file1 lnk1 创建一个指向文件或目录的软链接 ln file1 lnk1 创建一个指向文件或目录的物理链接 touch -t 0712250000 file1 修改一个文件或目录的时间戳 (格式:YYMMDDhhmm) file file1 文件类型查看 iconv -l 列出已知的编码

2、查看文件、内容处理命令(21个) at 全拼为concatenate,功能是用于连接多个文件并且打印到屏幕输出或重定向到指定文件中。 tac tac是cat的反向拼写,因此命令的功能为反向显示文件内容。 more 分页显示文件内容。 less 分页显示文件内容,more命令的相反用法。

head 显示文件内容头部。 head -10 install.log 查看文件头部的10行

tail 显示文件内容尾部。 tail -10 install.log 查看文件尾部的10行

tail +10 install.log 查看文件 10–>末行

tail -f install.log 小f跟踪文件的唯一inode号,就算文件改名后,还是跟踪原来这个inode表示的文件

tail -F install.log 大F按照文件名来跟踪

cut: 将文件的每一行按指定分隔符分割并输出。 split 分割文件为不同的片段。 paste 按行合并文件内容。 sort 对文件的文本内容排序。 uniq 去除掉重复行。 wc 统计文件行数、单词数或是字节数。 iconv 转换文件编码格式。 dos2unix 将DOS格式文件转换成UNIX格式。 diff 全拼为difference,比较文件差异,用于文本文件。 vimdiff 命令行可视化文件比较工具,用于文本文件。 rev 反向输出文件内容。 grep/egrep 常用于过滤字符串。 join 按两个文件的相同字段合并。 tr 替换、删除字符。 vi/vim 命令行文本编辑器。

3、搜索文件命令(4个) which 查找二进制文件的命令,按环境变量PATH路径查找。 which ls //查找可执行的命令所在的路径

find 从磁盘遍历查找文件或目录。 find / -name "hadooop*" -ok rm {} ;

find / -name "hadooop*" -exec rm {} ; find /home -user hadoop -type d -ls ##查找用户为hadoop的文件夹

whereis 查找二进制文件的命令,按环境变量PATH路径查找。 相对于which,whereis 查找可执行的命令和帮助的位置;

locate 从数据库/var/lib/mlocate/mlocate.db中查找命令,使用updatedb更新库。 4、文件压缩及解压缩命令(4个) tar 打包压缩。 tar -cvzf bak.tar ./aaa

将/etc/password追加文件到bak.tar中(r)

tar -rvf bak.tar /etc/password tar -xvf bak.tar 解压到/usr/下:tar -zxvf a.tar.gz -C /usr 查看压缩包内容tar -ztvf a.tar.gz

tar -cvf archive.tar file1 创建一个非压缩的 tarball tar -cvf archive.tar file1 file2 dir1 创建一个包含了 'file1', 'file2' 以及 'dir1'的档案文件 tar -tf archive.tar 显示一个包中的内容 tar -xvf archive.tar 释放一个包 tar -xvf archive.tar -C /tmp 将压缩包释放到 /tmp目录下 tar -cvfj archive.tar.bz2 dir1 创建一个bzip2格式的压缩包 tar -xvfj archive.tar.bz2 解压一个bzip2格式的压缩包 tar -cvfz archive.tar.gz dir1 创建一个gzip格式的压缩包 tar -xvfz archive.tar.gz 解压一个gzip格式的压缩包

unzip 解压和zip压缩文件。 zip file1.zip file1 创建一个zip格式的压缩包 zip -r file1.zip file1 file2 dir1 将几个文件和目录同时压缩成一个zip格式的压缩包 unzip file1.zip 解压一个zip格式压缩包

gzip 压缩工具。 gunzip a.txt.gz或gzip -d a.txt.gz gunzip file1.gz 解压一个叫做 'file1.gz'的文件 gzip file1 压缩一个叫做 'file1'的文件 gzip -9 file1 最大程度压缩

bzip2和bunzip2解压缩 bunzip2 a.bz2

bzip2 -d a.bz2

打包并压缩成bz2 : tar -jcvf a.tar.bz2------>解压:tar -jxvf a.tar.bz2 bunzip2 file1.bz2 解压一个叫做 'file1.bz2’的文件 bzip2 file1 压缩一个叫做 ‘file1’ 的文件

rar压缩和unrar解压缩 rar a file1.rar test_file 创建一个叫做 'file1.rar' 的包 rar a file1.rar file1 file2 dir1 同时压缩 'file1', 'file2' 以及目录 'dir1' rar x file1.rar 解压rar包 unrar x file1.rar 解压rar包