Linux文本查看工具

[TOC] 在Linux系统中,一个核心理念就是:一切皆文件。正确的对系统中文本的编辑配置与管理是Linux系统得以稳定运行的一个重要大前提。 因此Linux系统中的文件与管理特别重要,下面简单说一下在对文件处理过程中经常用到的一些工具。 文本查看命令:cat,tac,rev,more,less cat [option]...[file]... -E:显示行结束符$ -n:显示行号 -A:显示所有控制符eg:tab键就显示为 ^I -b:非空行编号,即空行不显示行号,略过 -s:压缩连续的空行成一行 tac [option]...[file]... -b, --before 在行前而非行尾添加分隔标志【默认换行】 -r, --regex 将分隔标志视作正则表达式来解析 -s, --separator=字符串 使用指定字符串代替换行作为分隔标志 -s="#" rev [options] [file ...] reversing the order of characters in every line:将每一行的显示翻转过来 注意这里tac和rev不同的地方是,tac是将整个文档以行为单位翻转,而rev是以每一个字符为单位,在一行的范围内翻转。ABC-->CBA 而tac 是 ABC 【第一行】 123【第二行】 -->123【第一行】ABC【第二行】 more [options] file [...] 翻到底自动退出 less [options] file [...] 翻到底不会自动退出(man帮助查看就是用的less用法) head [OPTION]... [FILE]... -c # :指定获取前#个字节 -n # 或 -# : 指定获取行数 tail [OPTION]... [FILE]... -c # :指定获取前#个字节 -n # 或 -# : 指定获取行数 -f :跟踪显示文件新追加的内容,常用语日志监控 cut [OPTION]... [FILE]... -d : 指明分隔符,默认tab 。eg:-d" ",以空格为分割 -f FILEDS: #: 第#个字段 #,#[,#]:离散的多个字段,例如1,3,6 #-#:连续的多个字段, 例如1-6 混合使用:1-3,7 -c按字符切割 cut -c 1-10 anaconda-ks.cfg --output-delimiter=STRING指定输出分隔符 paste 合并两个文件同行号的列到一行 paste [OPTION]... [FILE]... -d 分隔符:指定分隔符,默认用TAB -s : 所有行合成一行显示 paste f1 f2 paste -s f1 f2 先合并成一行,在追加。n个文件就显示n行。 wc [OPTION]... [FILE]... -c, --bytes 显示 字节数 -m, --chars 显示 字符数 -l, --lines 显示 行号 sort [OPTION]... [FILE]... -r执行反方向(由上至下)整理 -n执行按数字大小整理 默认是按字符排序,即1,11,12...19,2,21... -f选项忽略(fold)字符串中的字符大小写 -u选项(独特,unique)删除输出中的重复行 uniq[OPTION]... [FILE]... -c: 显示每行重复出现的次数 -d: 仅显示重复过的行 -u: 仅显示不曾重复的行 【连续且完全相同方为重复】 diff foo.conf-brokenfoo.conf-works 比较两个文件的不同

August 1, 2015

Linux用户和组

[TOC] 1、用户 个人理解的是,给使用者一个在系统中使用的身份,即用户。 用户分两种:管理员和普通用户。 而每一个用户都有一些属性,每一个属性都是用冒号分割开来。配置文件存储在【/etc/passwd】中。 例如,sarash:x:507:508::/home/sarash:/bin/nologin 他们分别是,用户名,密码,ID号,主组ID号,注释,家目录,默认登录shell 用户名是用来登录的账号,密码位置并没有存储真正的密码在这里,只是一个占位符。如果的确想要看到密码存储结果,可以使用命令:pwunconv。 其中 pwconv, pwunconv, grpconv, grpunconv - convert to and from shadow passwords and groups 就是用户密码隐藏 显示 组密码隐藏显示的命令 增加用户的常用命令是: useradd [options] login -u UID: [UID_MIN, UID_MAX]定义在/etc/login.defs -o 配合-u 选项,不检查UID的唯一性 -g GID:指明用户所属基本组,可为组名,也可以GID -c "COMMENT":用户的注释信息 -d HOME_DIR:以指定的路径(不存在)为家目录 -s SHELL: 指明用户的默认shell程序 在/etc/shells文件中有系统可用shell -G GROUP1[,GROUP2,...]:为用户指明附加组,组必须事先存在 -N 不创建私用组做主组,使用users组做主组 -r: 创建系统用户CentOS 6: ID<500,CentOS 7: ID<1000 userdel [options] LOGIN -f, –force 删除用户的主目录和邮箱,即使用户登录中,或者邮箱公用 -r 删除用户家目录及邮箱 【注意】:在新建服务型用户的时候(例如MySQL),由于这些用户不需要登录(/bin/nologin),也不需要家目录,所以定义成系统用户最好。可以防止恶意的登录。 一般来说, 199 会保留给系统预设的帐号,另外 100499 则保留给一些服务来使用。centos7 就加倍。 ...

July 30, 2015

Linux系统grep的使用

[TOC] grep: Global search REgular expression and Print out the line . 文本过滤工具,根据用户指定的模式对目标文本进行匹配检查;打印匹配到的行。过滤即不改变原来文本数据。这对于在输出较多信息或者文本内容较多的信息中寻找指定信息很有帮助. 比如想查看文件ifcfg-eth0中配置的网络是多少,你只需要显示有IPADDR这一行: #grep IPADDR ifcfg-eth0 IPADDR=172.16.10.18 这样,就会显示ifcfg-eth0 文件中包含有IPADDR的行. 当然grep还有很多参数可以帮助我们更精确的找到想要的内容,下面列举几个最常用的参数 grep [options] PATTERN [file...] --color=auto: 对匹配到的文本着色显示 -v:显示不被pattern匹配到的行 -i:忽略大小写 #上面的就可以写成 grep -i ipaddr ifcfg-eth0 -n:显示匹配的行号 -c:统计匹配的行数 -o:仅显示匹配到的字符串 -q:静默模式,不输出任何模式 -A #:after,后#行一并显示 -B #:before,前#行一并显示 -C #:context,前后#行一并显示 -e:实现多个选择间的逻辑或关系--> grep -e ‘cat’ -e ‘dog’ file grep的PATTERN 支持正则表达式,支持正则表达式的还有 vim,less,nginx等 grep还可以配合管道命令使用: [root@node7 ~]#lspci | grep -i network #lspci的结果直接通过grep过滤显示 81:00.0 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01) 81:00.1 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01) 正则表达式 regexp,由一类特殊字符及文本字符所编写的模式,其中有些字符不表示字符字面意义,而表示控制或通配的功能.比如: ...

July 28, 2015

Linux awk

[TOC] awk介绍 awk是Linux三剑客中功能最强大,使用最复杂的命令。强大到awk都成为一种语言了,它适合文本处理和报表生成,其语法较为常见,借鉴了某些语言的一些精华,如 C 语言等。在 linux 系统日常处理工作中,发挥很重要的作用,掌握了 awk将会使你的工作变的高大上。 awk 是三剑客的老大,利剑出鞘,必会不同凡响。 awk基本用法 输入awk就可以看到awk简要帮助,下面就结合我自己查找资料和使用之后的一个总结: awk基本用法 awk [options] 'program' var=value file… awk [options] -f programfile var=value file… 'program' = 'BEGIN{ action;… } pattern{ action;… } END{ action;… }' options(选项): -f progfile --file=progfile #从文件中读取program语法 -F fs --field-separator=fs #字段分隔符,默认空格 -v var=val --assign=var=val #自定义变量 #官方简单例子,将/etc/passwd以冒号":"分隔,将得到的的第一列打印 #gawk -F: '{ print $1 }' /etc/passwd root bin daemon ... 1.分隔符.域和记录 awk执行时,参数-F 的值就是分隔符,不写默认为空格. 分割出来的字段就是域,从前往后一次标记为$1,$2,$3...$n 称为域标示.$0为所有域. 文件的每一行称为一条记录. 2.awk语法 program: 'BEGIN{ action;… } pattern{ action;… } END{ action;… }' pattern和action: pattern部分决定动作语句何时触发及触发事件(BEGIN,END 也是属于pattern中的特殊部分吧) action statements对数据进行处理,放在{}内指明 (print, printf) 3.awk工作过程 awk的工作过程: 第一步: 执行 BEGAIN{action;…} 语句块中的语句,如果没有就跳过此步骤. 第二步: 从文件和标准输入读取一行(就是一条记录),然后按照pattern中匹配中了就执行后面的 { action;… } ,然后读取下一条记录匹配执行,重复这个过程知道文件全部读取完毕. 第三步: 执行 END{ action;… } 语句块中的语句,如果没有就跳过此步骤. ...

July 25, 2015

Linux磁盘管理

[TOC] 在系统中,常见的硬盘接口有分两类:并行的和串行的 并行: IDE: 133MB/s SCSI: 640MB/s 串行: SATA: 6Gbps SAS: 6Gbps USB: 480MB/s 存储设备的设备文件命名方式大致为:/dev/DEV_FILE IDE: /dev/hd# #-->0,1,2,3 SCSI,SATA,SAS,USB: /dev/sdx x表示a-z eg:/dev/sda,/dev/sdb 光盘中显示的是 /dev/sr0,/dev/sr1... 同一设备上的不同分区:1,2,3... eg:/dev/sda1,/dev/sda2... 想要使用一块没有用过的磁盘,需要做一下几部: 1、设备识别,即首先要讲磁盘接入设备中,在系统中能够看到设备(/dev/DEV_FILE) 2、设备分区,全新的磁盘是没有分区的 3、创建文件系统,主要明确在设备上存储的数据是什么格式的.(ext3,ext4,NTFS...) 4、标记文件系统 5、在/etc/fstab文件中创建条目 6、挂在新的文件系统 磁盘分区: 磁盘分区的理由: 1、优化i/o性能 2、实现磁盘空间配额限制 3、提高修复速度 4、隔离系统和程序 5、安装多个OS 6、采用不同文件系统 两种分区方式:MBR,GPT MBR: master boot record ,使用32位表示山区数,分区不超过2T,按柱面分区 在0磁道0扇区的512bytes中,前446bytes:BootLoader,64bytes:分区表(其中16byte表示一个分区,因此主分区+扩展分区<=4)最后2byte:55AA GPT:GUID(global unique identifiers) partition table 支持128个分区,使用64位,支持8Z(512byte/block) 64Z(4096byte/block) 使用128位UUID(universally unique identifier )表示磁盘和分区,GPT分区表自动备份在头和尾两份,并有CRC校验位 管理分区: 列出块设备:lsblk 创建分区:fdisk(MBR),gdisk(GPT),parted 高级分区操作(创建,复制,调整大小等) partprobe 重新设置内存中的内核分区表版本 fdisk gdisk命令类似,下面主要介绍fdisk的使用 fdisk [options] <disk> change partition table fdisk [options] -l <disk> list partition table(s) 交互式fdisk命令其实更适合使用,分区之后可查看,可修改,只有在保存的时候才会真正的自该磁盘的分区。 子命令: p 分区列表 t 更改分区类型 n 创建分区 d 删除分区 w 保存并退出 q 不保存退出 m 查看帮助,打印菜单选择项 在修改分区完成之后,可查看内核是否已经识别新的分区 cat /proc/partations 如果内核没有识别到新的分区,可通过命令是内核重新读取硬盘分区表 在 centos 6 上 partx -a -n M:N /dev/DEVICE 或者 kpartx -a /dev/DEVICE 删除分区:partx -d -n M:N /dev/DEVICE 在centos 5,7上面直接使用partprobe 就可以了 partprobe [/dev/DEVICE] 文件系统: ...

July 20, 2015

Linux压缩和解压

[TOC] 在Linux系统中压缩、解压以及归档的工具主要有一下几种: file-roller : 这个工具适合在桌面系统下进行解压操作。 compress/uncompress :这是一个比较老的解压工具,压缩后会添加.Z为后缀 gzip/gunzip : .gz结尾 bzip2/bunzip2 : .bz2 xz/unxz : .xz zip/unzip .zip tar cpio 主要命令参数介绍 compress [-dvc] [file...] -d: 解压,相当于uncompress -c: 解压结果标准输出,不删除源文件 -v: 显示详情 zcat file.Z -->不解压的情况下查看文件 zcat file.Z >file -->解压保留源文件 gzip [-dc#] file... -d:解压缩 =gunzip -c:标准输出 -#:1-9,指定压缩比,默认为6 zcat file.gz -->不解压的情况下查看文件 zcat file.gz >file -->解压保留源文件 bzip2 [-kd#] file... -k:keep,即保留源文件 -d:解压缩=bunzip2 -#:指定压缩比,默认6 bzcat :不解压下查看文件内容 xz [-kd#] file... -k:keep,即保留源文件 -d:解压缩=unxz -#:指定压缩比,默认6 xzcat :不解压下查看文件内容 zip -r : 递归压缩,文件及目录 zip –r /testdir/sysconfig.zip /etc/sysconfig/ ... -d :删除压缩文件中指定的文件 -m :添加 zip -d myfile.zip old.txt zip -m myfile.zip new.txt unzip -p message.zip > message tar [] tape archive 磁带 归档 -c create -f file.tar -v 可视化 -x 解包 -r add追加 -t 预览文件名 -C 展开到指定目录 -z 归档后压缩成 .tar.gz -j .tar.bz2 -J .tar.xz -T 指定输入文件 -X 指定要排除文件 常用组合 tar -cvf archive.tar file ... 归档 tar -tvf archive.tar 查看归档文件名列表 tar -xvf archive.tar 解包 cpio: copy input output,可解压以.cpio 或者.tar结尾的文件 cpio [option] > file or devicename cpio [option] < file.cpio or devicename -o :打包生成file.cpio -i :从cpio中解包 -t :预览文件名 -v :显示过程 -d :解包生成目录 常用组合 find ./etc |cpio -ov > etc.cpio cpio -tv < etc.cpio cpio -iv < etc.cpio cpio -idv < etc.cpio

July 18, 2015

Linux程序包管理器

[TOC] 源代码命名方式,name-version.tar.gz|bz2|xz, –>version:major.minor.release 要将一个源代码程序安装到Linux系统上,一般有两个方法。 1.找到源代码,手动编译安装。解压,./configure --> make --> make install 2.使用软件包管理器(程序包管理器) 3.直接解压做好的二进制包后使用 1.程序包管理器: 将编译好的应用程序文件打包成一个或者几个,从而方便快捷的实现程序包的安装,卸载,查询,升级和校验等管理操作。 Linux系统不同版本有不同的程序包管理器。目前主要分两类 1、debian:deb文件,dpkg包管理器 2、RedHat:rpm文件,rpm包管理器,RPM:RedHat package manager(原名),现在已是 RPM package manager 递归缩写 2.RPM包命名方式: name-version-release.arch.rpm -->version:major.minor.release -->release:release.os eg:bash-4.2.46-19.el7.x86_64.rpm 常见arch:x86,x86_64,PowerPC 或者noarch() 3.RPM包的分类和拆包 Application-VERSION-ARCH.rpm: 主包 Application-devel-VERSION-ARCH.rpm开发子包 Application-utils-VERSION-ARHC.rpm其它子包 Application-libs-VERSION-ARHC.rpm其它子包 包与包之间可能存在依赖关系,甚至循环依赖。解决方法:yum(RedHat,centos) 4.RPM包文件组成 a、RPM包内的文件。 b、RPM包的元数据,如名称,版本,依赖性,描述等。 c、安装或者卸载时运行的脚本。 5.获取程序包的途径方法: 1、系统发版的光盘或者官方服务器; CentOS镜像 http:www.centos.org/download/ http://mirror.aliyun.com(阿里云) 搜狐 163等 2、项目官方站点 3、第三方组织 Fedora-EPEL: Extra Packages for Enterprise Linux Rpmforge:RHEL推荐,包很全 搜索引擎: http://pkgs.org http://rpmfind.net http://rpm.pbone.net https://sourceforge.net/ 4、自己制作 注意:非官方下载的程序包要检查其合法性:来源的合法以及程序包的完整性 6.库文件 程序的运行需要依赖库文件 ldd /path/to/binary_file 可以查看二进制程序所依赖的库文件 库文件的配置文件:/etc/ld.so.conf /etc/ld.so.conf.d/*.conf 即ld.so.conf 文件和 /etc/ld.so.conf.d/ 目录下所有以 .conf结尾的文件

July 15, 2015

Linux安装命令rpm的使用

[TOC] rpm命令,安装(-i,–install)、卸载、升级(-U,-F)、查询(-q,–query)、校验(-V,–verify)、数据库维护 1.安装: rpm {-i|--install} [install-options] PACKAGE_FILE… v:可视化 h:以#显示进度 rpm -ivh package_file [install-options] --test:测试安装 --nodeps:忽略依赖关系 --replacepkgs |replacefiles --nosignalture:不检查来源合法性 --noscripts:不执行程序包脚本 --nopre,--nopost,--nopreun,--nopostun 安装前后,卸载前后 2.查询: rpm {-q|--query} [select-options][query-options] [select-options] -a:所有包 -f:查看指定文件有那个程序安装包生成 -p rpmfile:正对尚未安装的程序包做查询操作 --whatprovides capability:查看指定的capability由哪个包所提供 3.卸载: rpm {-e|--erase} [--allmatches][--nodeps] [--noscripts][--notriggers] [--test] PACKAGE_NAME ... 4.包校验: rpm {-V|--verify} [select-options][verify-options] S file Size differs M Mode differs (includes permissions and file type) 5 digest (formerly MD5 sum) differs D Device major/minor number mismatch L readLink(2) path mismatch U User ownership differs G Group ownership differs T mTimediffers P capabilities differ 5.导入所需要公钥: rpm -K|checksig rpmfile检查包的完整性和签名 rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 CentOS 7发行版光盘提供:RPM-GPG-KEY-CentOS-7 rpm -qagpg-pubkey* 6.常用 rpm -ivh package_file rpm -ql app_name rpm -qf file rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

July 13, 2015