3、基本命令-2

基本命令-2

压缩和归档

打包:即归档,类似于旅游之前收拾行李

压缩:为了减少占用的磁盘空间,可以做备份,在网络上传输时节省网络带宽。

打包压缩软件

windows:winrar 360压缩 好压 7zip winzip

linux:压缩格式:gz ,bz2,xz,zip,Z 压缩算法不同,导致压缩比不同

压缩软件 gzip bzip2 xz zip 既能打包又能压缩的软件:tar *一、zip:

压缩后的文件一般以.zip结尾,可以压缩目录

压缩的语法: zip filename.zip file1 file2 ...

zip 压缩后的文件名 待压缩文件

压缩后不删除原文件

例如 [root@server150 acltest]# zip com.zip com.txt

adding:com.txt (deflated 99%)

解压缩:unzip

-d:指定解压路径

二、gzip

1)gzip /path/to/somefile 默认会删除原文件

-d 解压缩

-#: 指定压缩比,压缩比越小,速度越大

2)gunzip /path/to/some_compress_file

3)zcat some_compress_file 不解压的情况下查看文本的压缩文件

例子:#cp /var/log/messages ./

gzip messages 默认后缀名:.gz

gzip压缩时,原文件消失,生成压缩文件

解压:gunzip

gzip的压缩包,在解压后,压缩包消失,解压后的文件出现。

压缩其实是有级别的:1~9 1级别最低,速度最快,效率最低;9级别最高,速度最慢,效率最高。

默认级别是6。

三、bzip2 默认情况下,压缩完成,

原文件也是消失的,压缩包必须以.bz2结尾的

通常能够生成比使用gzip压缩更小的文件(压缩比较高)

1)bzip2 /path/to/somefile

-d:解压

-#:指定压缩比

-k:保留原文件

2)bunzip2 /path/to/somefile

3)bzcat /path/to/some_compress_file 不解压查看

解压缩:bunzip2 四. xz 压缩比更大

1)压缩 xz somefile

2)解压

unxz 或 xzdec

-d:解压

-k:保留原文件

-c:输入到屏幕

3)xzcat 不解压查看

以后常见的压缩包的格式

.zip .tar.gz .tar.bz2

五、tar 既可以打包,又可以压缩

tar 选项 包名 打包的文件或目录 //切记:一定要注意语法格式,先是打包后的名字,然后才是要打包的东西

tar: 归档工具, .tar 例如:tar -cf

-c: 创建归档文件

-f FILE.tar: 操作的归档文件

-x: 展开归档

--xattrs: 归档时,保留文件的扩展属性信息

-t: 不展开归档,直接查看归档了哪些文件

-C:解压时指定路径

-r:向包中追加文件

-p:保留权限信息

-v:显示详细过程

-zcf: 归档并调用gzip压缩

-zxf: 调用gzip解压缩并展开归档,-z选项可省略

-jcf: bzip2

-jxf:

-Jcf: xz

-Jxf:

1)打包压缩同时进行

-z:表示使用gzip压缩方式压缩或者解压缩

-j:表示使用bzip2压缩方式压缩或者解压缩

-c:表示创建 --create

-v:显示详细过程

-f:指定文件,一般后面跟包名

-zcvf zcvf .tar.gz

-jcvf jcvf .tar.bz2

tar zcvf com.tar.gz com.txt

com.txt

ll

total 67968

-rw-r--r-- 1 root root 367957 Jul 30 09:24 com.tar.gz

tar zcvf /tmp/acltest.tar.gz /acltest/

2)解包 .tar.gz .tar.bz2

-zxvf zxvf

-jxvf jxvf

-C:指定解压路径

tar zxvf com.tar.gz -C /usr/local/src/

ls /usr/local/src/

com.txt vmware-tools-distrib

3)其他选项

-t:不解包查看包中的内容

tar -tf /tmp/acltest.tar.gz

acltest/

acltest/f1

acltest/com.txt

acltest/f3

acltest/f2

acltest/com.zip

acltest/com.tar.gz

-r:向包中追加文件,不能追加压缩的文件

tar -rf 包名 追加的文件

三.文件搜索

which:用来查找命令的绝对路径

-- 显示shell命令的绝对路径

-- 仅仅会在PATH变量中搜索要查找的命令

-- 搜索时先查找别名,然后从PATH中查找

1、查看用户的PATH变量:命令的搜索路径

echo $PATH

/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin

command not found可能原因:

1)敲错了

2)命令没有安装

3)命令所在路径没在PATH变量的定义中

cp which vim /tmp/vim2

vim2 /etc/passwd

bash: vim2:command not found

/tmp/vim2 /etc/passwd //绝对路径执行

2、添加路径到PATH

1)临时修改PATH值

PATH=$PATH:/tmp //$PATH:保留变量原有值

echo $PATH

/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin:/tmp

2)永久修改PATH值 工作中一定会用的

/etc/profile //全局配置文件,对所有用户生效

~username/.bash_profile //局部配置文件,只对特定用户生效

vim /root/.bash_profile

PATH=$PATH:$HOME/bin:/tmp 上述文件不是即时生效的,正常情况下,它是用户登录时执行的。

source /root/.bash_profile //重新读取配置文件,使修改生效

echo $PATH

/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin:/root/bin:/tmp

弊端:每次新开启一个终端或标签,都需要执行# source /root/.bash_profile 如果想一劳永逸,那么需要退出系统,重新登录,即注销。

System ——> Log out root ——> Log out

echo $PATH

/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin:/tmp

which ls

alias ls='ls --color=auto'

/bin/ls

which vim

/usr/bin/vim 命令的别名: alias

1、查看当前系统中有哪些别名(root用户和普通用户的别名可能不一样)

alias

2、设置命令的别名

1)临时

alias vi='vim'

vi /etc/passwd //执行vi时候,实际上执行的是vim

2)永久,改文件

(1)/root/.bashrc cp rm mv (2) /etc/profile.d

colorls.sh

which2.sh

3、取消别名

[ profile.d]# unalias vi

[ profile.d]# vi /etc/passwd //没颜色了

locate

-- 通过文件名检索文件,检索速度最快

-- 所有能够检索的东西,都是存放在数据库中的

-- locate局限性,有的文件系统、有的文件及有的目录默认是不会搜索的

1、假设我知道网卡配置文件的名字,但是不知道具体路径:

locate ifcfg-eth0

/etc/sysconfig/network-scripts/ifcfg-eth0

locate ifcfg

/etc/dbus-1/system.d/nm-ifcfg-rh.conf

/etc/sysconfig/network-scripts/ifcfg-eth0

/etc/sysconfig/network-scripts/ifcfg-lo

/sbin/ifcfg

/usr/lib64/NetworkManager/libnm-settings-plugin-ifcfg-rh.so

/usr/share/man/man8/ifcfg.8.gz

/var/log/anaconda.ifcfg.log

2、手动更新数据库

cp which vim /root/vim3

locate vim3 //未查询到结果

原因:因为locate的数据库是一天一更新,不是实时更新的。

updatedb

locate vim3

/root/vim3 数据库文件:/var/lib/mlocate/mlocate.db

---------------------------------------------------------- 报错:

1)数据库文件不存在

2)手动生成它

updatedb

3、locate数据库配置文件

vim /etc/updatedb.conf

ls /tmp/vim2

/tmp/vim2

locate vim2 //搜索不到,因为/tmp在排除列表中

find *****

-- 全局性搜索文件

-- 工作方式:沿着文件的层次结构依次向下搜索,找到符合条件的,打印或者是执行相应的操作

一、语法格式

find 要搜索路径 条件(选项) [动作]

1、基本例子

find /etc/ -name network

/etc/vmware-tools/scripts/vmware/network

/etc/sysconfig/network

/etc/rc.d/init.d/network 一般情况下,查找范围越大,目录层级越深,查找速度就越慢。

mkdir -p /q/w/e/r/t/y/u/i/o/p/a/s/d/f/g/h/j/k/l/z/x/c/v/b/n/m

touch /q/w/e/r/t/y/u/i/o/p/a/s/d/f/g/h/j/k/l/z/x/c/v/b/n/m/test.txt

time find / -name test.txt

/q/w/e/r/t/y/u/i/o/p/a/s/d/f/g/h/j/k/l/z/x/c/v/b/n/m/test.txt

/acl/test.txt

/tmp/test.txt

real 0m3.188s

user 0m0.061s

sys 0m2.953s 练习:

查找/etc目录下名字为config的文件

find /etc -name config

/etc/vmware-tools/config

/etc/selinux/config

2、按条件查找

1)按照文件名搜索

-name:按名字查找 *****

-iname:忽略大小写

find /etc -name networkmanager

find /etc -iname networkmanager

/etc/rc.d/init.d/NetworkManager

/etc/NetworkManager

通配符:* 代表任意字符

? 代表单个字符

查找/etc目录下,所有以.conf结尾的文件

find /etc/ -name *.conf 查找/etc/目录下,以.conf结尾,名称是5个字符的

find /etc/ -name "?????.conf" 练习:

查找/etc目录下,名字为ntp.conf的文件

find /etc -name ntp.conf

/etc/ntp.conf 查找 / 目录下,名字为passwd的文件

find / -name passwd

2)按照文件类型查找 -type

f:普通文件

b c d l s p

find /var -type l //查找/var目录下类型是软链接的文件

ll find /var -type l //验证是否查找到的都是软链接

find /tmp/ -type f

-type 后面只能跟一个字母

----------------------- 练习: 查找系统中类型是套接字的文件

find / -type s 查找的时候,可能会遇到No such file or directory的错误提示,是正常的,若不想看到可以将错误重定向到“黑洞”(/dev/null)

find / -type s 2> /dev/null

3)按照时间查找 (笔试题)

-atime n 以天为单位

-ctime n

-mtime n

-amin n 以分钟为单位

-cmin n

-mmin n

n为数字,前面可以带+或者-号 -mtime n

+n:n+1天之前

n:n到n+1天之间

-n:n天以内

以n等于7为例:

搜索最近七天内被访问过的所有文件

find . -type f -atime -7 搜索恰好在七天前被访问过的所有文件

find . -type f -atime 7 搜索超过七天内被访问过的所有文件

find . -type f -atime +7 搜索访问时间超过10分钟的所有文件

find . -type f -amin +10 找出比file.log修改时间更长的所有文件

find . -type f -newer file.log

---------------------------------------------------------------------- 插曲:

查看文件的属性信息? stat 文件名

stat passwd

File: `passwd'

Size: 1030 Blocks: 8 IO Block: 4096 regular file

Device: 802h/2050d Inode: 917613 Links: 1

Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)

Access: 2015-08-08 20:38:22.080984537 +0800 Modify: 2015-08-08 20:38:22.080984537 +0800

Change: 2015-08-08 20:38:22.080984537 +0800 一个文件有三个时间:

atime:访问时间,cat more less ... ...

mtime:文件的内容发生变化的时间 vim ... ... (也是 ll 所显示的时间)

ctime:文件的属性发生变化的时间 比如:权限改变、大小改变、所有者、所属组等改变

例子:

echo hello > file

stat file

File: `file'

Size: 6 Blocks: 8 IO Block: 4096 regular file

Device: 802h/2050d Inode: 917619 Links: 1

Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)

Access: 2015-08-13 12:16:19.494018488 +0800 Modify: 2015-08-13 12:16:19.495018470 +0800

Change: 2015-08-13 12:16:19.495018470 +0800

cat file

hello

stat file

File: `file'

Size: 6 Blocks: 8 IO Block: 4096 regular file

Device: 802h/2050d Inode: 917619 Links: 1

Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)

Access: 2015-08-13 12:17:32.381018468 +0800 Modify: 2015-08-13 12:16:19.495018470 +0800

Change: 2015-08-13 12:16:19.495018470 +0800

chmod +x file

stat file

File: `file'

Size: 6 Blocks: 8 IO Block: 4096 regular file

Device: 802h/2050d Inode: 1197781 Links: 1

Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)

Access: 2015-08-13 12:17:32.381018468 +0800 Modify: 2015-08-13 12:16:19.495018470 +0800

Change: 2015-08-13 12:21:55.563018148 +0800 //ctime发生变化

echo hahaha >> file

stat file

File: `file'

Size: 13 Blocks: 8 IO Block: 4096 regular file

Device: 802h/2050d Inode: 1197781 Links: 1

Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)

Access: 2015-08-13 12:17:32.381018468 +0800 Modify: 2015-08-13 12:23:54.286017831 +0800

Change: 2015-08-13 12:23:54.286017831 +0800 笔试题

1、打印文件的数字权限

stat -c %a file

755

2、打印文件的字母权限

stat -c %A file

-rwxr-xr-x

---------------------------------------------------------------------- 按时间查找小例子

mkdir /find

date

Thu Aug 13 14:22:43 CST 2015

cd /find/

[ find]# touch -t 08131425.30 f0813 //-t:指定文件的创建时间 MMDDHHmm.SS

[ find]# touch -t 08121425.50 f0812

[ find]# touch -t 08111426.30 f0811

[ find]# touch -t 08101426.30 f0810

[ find]# ll f*

-rw-r--r-- 1 root root 0 Aug 10 14:26 f0810

-rw-r--r-- 1 root root 0 Aug 11 14:26 f0811

-rw-r--r-- 1 root root 0 Aug 12 14:25 f0812

-rw-r--r-- 1 root root 0 Aug 13 14:25 f0813

-- 查找/find下修改时间在24小时(1天)之内的文件

[ find]# find . -mtime -1

.

./f0813

-- 查找/find下修改时间在2天前的普通文件

[ find]# find . -type f -mtime +1

./f0810

./f0811

4)按照用户和组查找

-user 用户名

-group 组名

-uid uid

-gid gid

-nouser:孤儿文件 没有所有者的文件

-nogroup:没有所属组的文件

--查找系统中所有者是quota2的文件

[ home]# find / -user quota2 -type f

[ home]# find / -user quota2 -type f 2>/dev/null

-- 查找系统中的孤儿文件

[ home]# userdel quota2

[ home]# find . -type f -nouser

./quota2/.bash_history

./quota2/.bashrc

./quota2/.bash_profile

./quota2/.bash_logout

[ home]# ll find . -type f -nouser

-rw------- 1 502 quota2 29 Aug 11 10:16 ./quota2/.bash_history

-rw-r--r-- 1 502 quota2 18 Aug 29 2012 ./quota2/.bash_logout

-rw-r--r-- 1 502 quota2 176 Aug 29 2012 ./quota2/.bash_profile

-rw-r--r-- 1 502 quota2 124 Aug 29 2012 ./quota2/.bashrc

-- 查找系统中所有者不是root的普通文件 ! 或者 -not

[ home]# find / ! -user root -type f 或者 -or 或者 -o

-- 查找系统中所有者不是root或者类型是套接字的文件

[ home]# find / ! -user root -o -type s

5)按照权限查找 -perm

+222 或者 (用户可写or组可写or其他人可写) 二进制中有1的位置,只要满足其中一个位就可以

-222 并且 (用户可写and组可写and其他人可写) 二进制中有1的位置必须都要有1

rm -f /find/*

cd /find/

[ find]# touch p{r,w,x}_{1,2,3}

[ find]# chmod 400 pr_1

[ find]# chmod 440 pr_2

[ find]# chmod 444 pr_3

[ find]# chmod 200 pw_1

[ find]# chmod 220 pw_2

[ find]# chmod 222 pw_3

[ find]# chmod 100 px_1

[ find]# chmod 110 px_2

[ find]# chmod 111 px_3

[ find]# ll find ./ -perm +020 -type f

--w--w---- 1 root root 0 Aug 13 15:13 ./pw_2

--w--w--w- 1 root root 0 Aug 13 15:13 ./pw_3

[ find]# ll find ./ -perm -020 -type f

--w--w---- 1 root root 0 Aug 13 15:13 ./pw_2

--w--w--w- 1 root root 0 Aug 13 15:13 ./pw_3 当权限位只有一位的时候,+和-是一样的。

[ find]# ll find ./ -perm -222 -type f

--w--w--w- 1 root root 0 Aug 13 15:13 ./pw_3

[ find]# ll find ./ -perm +222 -type f

--w------- 1 root root 0 Aug 13 15:13 ./pw_1

--w--w---- 1 root root 0 Aug 13 15:13 ./pw_2

--w--w--w- 1 root root 0 Aug 13 15:13 ./pw_3 思考:查找系统中拥有suid权限的文件

6)按照文件大小查找 -size

大于

小于

直接数字 等于

‘b’ for 512-byte blocks (this is the default if no suffix is used) //0.5KB

‘c’ for bytes

‘w’ for two-byte words

‘k’ for Kilobytes (units of 1024 bytes)

‘M’ for Megabytes (units of 1048576 bytes)

‘G’ for Gigabytes (units of 1073741824 bytes)

[ find]# rm -f /find/*

[ find]# dd if=/dev/zero of=f1M bs=1M count=1

[ find]# dd if=/dev/zero of=f2M bs=1M count=2

[ find]# dd if=/dev/zero of=f3M bs=1M count=3

[ find]# dd if=/dev/zero of=f4M bs=1M count=4

[ find]# find . -type f -size -3M

./f2M

./f1M

[ find]# find . -type f -size 3M

./f3M

[ find]# find . -type f -size +3M

./f4M

3、动作

-exec 动作 -- 找到结果之后直接执行动作

-ok 动作 -- 执行动作之前先提示,即需要交互

[ find]# find . -type f -size +3M -exec ls -l {} \;

-rw-r--r-- 1 root root 4194304 Aug 13 15:51 ./f4M

{} —— 用来代替找到的结果

\; —— 表示结束标志

[ find]# find . -type f -size +3M -ok ls -l {} \;

< ls ... ./f4M > ? y

-rw-r--r-- 1 root root 4194304 Aug 13 15:51 ./f4M

[ find]# find . -type f -size +3M -ok ls -l {} \;

< ls ... ./f4M > ? n 练习:

1、查找/find目录下,类型是 普通文件的文件将其移动到/test目录下

[ find]# find . -type f -exec mv {} /test \;

[ find]# ls /test/

f1M f2M f3M f4M 或者

[ find]# mv find . -type f /test

2、查找/test目录下类型为普通文件的文件,对其进行备份,备份文件的后缀名为.bak

[ find]# find /test -type f -exec cp {} {}.bak \;

[ find]# ls /test/

f1M f1M.bak f2M f2M.bak f3M f3M.bak f4M f4M.bak

3、删除/test目录下修改时间在一天以内的普通文件

[ find]# find /test/ -type f -mtime -1 -exec rm {} \;

grep文本过滤

一.grep:目的是过滤出用户感兴趣的内容 ***

语法:grep [选项] 模式或关键字 文件列表

简单例子:

[ loring ~]# grep root /etc/passwd

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

1、--color 带颜色显示匹配到的关键字

[ loring ~]# grep --color root /etc/passwd

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

2、-i 忽略大小写

[ loring tmp]# grep --color -i root /find/passwd

Root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

3、-v 取反

过滤出不包含nologin的行

[ loring tmp]# grep -v nologin /etc/passwd

4、^ 以某关键字开头

显示/root/.bashrc文件中的非注释行

[ loring tmp]# grep -v ^# /root/.bashrc

5、$ 以某关键字结尾

显示passwd文件中以sh结尾的行

[ loring tmp]# grep sh$ /etc/passwd

6、^$ 空行

显示/root/.bashrc文件中的非注释行和非空行

[ loring tmp]# grep -v ^# /root/.bashrc | grep -v ^$

7、-c count,统计匹配到的行数

[ loring tmp]# grep -c root /etc/passwd

2

8、 -l 一般和-r联用,只显示包含关键字的文件的名字,而不是显示文件内容

9、-r 递归检索

显示test目录下文件内容中含有root的文件名

[ loring tmp]# grep -rl root /test

10、-q quiet 静默输出 一般在写脚本时候用

[ loring tmp]# grep -q root /etc/passwd

[ loring tmp]# echo $? //$?表示上一条命令的执行结果

0 返回结果为0:表示上一条命令的执行时成功的

返回结果非0:表示上一条命令执行失败

[ loring tmp]# grep -q jsjdjjdfhfh /etc/passwd

[ loring tmp]# echo $?

1

[ loring tmp]# grep -q root /asdaf

grep: /asdaf: No such file or directory

[ loring tmp]# echo $? //文件不存在返回2

2

11、-n 显示匹配行的行号

[ loring tmp]# grep -n root /etc/passwd

1:root:x:0:0:root:/root:/bin/bash

11:operator:x:11:0:operator:/root:/sbin/nologin

grep练习:

1、显示/etc/group文件中含有root的行

[ loring test]# grep root /etc/group

2、显示/etc/passwd文件中以rp开头的行

[ loring test]# grep ^rp /etc/passwd

3、显示/etc/group文件中不以:为结尾的行

[ loring test]# grep -v :$ /etc/group

4、显示/etc/rc.local文件中的空行,要求带行号

[ loring test]# grep -n ^$ /etc/rc.local

6:

5、显示仅/mnt/cdrom目录下的文件类型为目录的文件(前提是光盘已挂载,且不使用find)

[ loring test]# ll /mnt/cdrom/ | grep ^d 二、cut:就是截取的意思,它的处理对象是“一行”文本,可以从中选取出用户所需要的部分,不影响原文件

可以指定分隔符,然后打印出以分隔符隔开的具体某一列或某几列

语法:cut -f 指定的列 -d ‘分隔符’

-d:指定字段分隔符

-f:指定要输出的区域,多个之间用逗号分隔

-c:指定列的字符

显示/etc/passwd文件中的用户名和uid字段

[ loring test]# cut -d: -f1,3 /etc/passwd

[ loring test]# head -5 /etc/passwd | cut -d: -f1,3

root:0

bin:1

daemon:2

adm:3

lp:4

[ loring test]# head -5 /etc/passwd > t1

[ loring test]# vim t1

:%s/:/ /g

[ loring test]# cat t1

root x 0 0 root /root /bin/bash

bin x 1 1 bin /bin /sbin/nologin

daemon x 2 2 daemon /sbin /sbin/nologin

adm x 3 4 adm /var/adm /sbin/nologin

lp x 4 7 lp /var/spool/lpd /sbin/nologin 以空格为分隔,取出第一个字段

[ loring test]# cut -d" " -f1 t1

root

bin

daemon

adm

lp

取出/etc/group文件中组名的字段

cut -d: -f1 /etc/group 打印/etc/passwd 文件中每行的第1-5个字符,以及第7-10个字符的内容

[root@web test]# cat /etc/passwd | cut -c 1-5,7-10

三、sort 排序

-t:指定字段分隔符

-k:指定第几个字段

-n:按照数字顺序排序

-r:反向排序 reverse

-u:排序后重复行只打印一次 unique

[root@web test]# cat sort.txt

b:3

c:2

a:4

e:5

d:1

f:11 对输出内容直接排序,默认按照每行的第一个字符进行排序

[root@web test]# cat sort.txt | sort

a:4

b:3

c:2

d:1

e:5

f:11 对输出内容进行反向排序

[root@web test]# cat sort.txt | sort -r

f:11

e:5

d:1

c:2

b:3

a:4使用“:”做分隔符,对第2个字段进行排序

[root@web test]# cat sort.txt | sort -t ":" -k 2

d:1

f:11

c:2

b:3

a:4

e:5使用“:”做分隔符,对第2个字段进行排序,按照数字大小排序

[root@web test]# cat sort.txt | sort -t ":" -k 2 -n

d:1

c:2

b:3

a:4

e:5

f:11 对/etc/passwd文件按照uid来排序

[ loring test]# sort -t ":" -k 3 -n /etc/passwd

对passwd文件按照uid由大到小的顺序排序

[ loring test]# sort -t ":" -k 3 -nr /etc/passwd

按照gid由小到大的顺序打印/etc/group

[ loring test]# sort -t: -k 3 -n /etc/group

四、 uniq 去重,唯一

去除相邻重复行

-c: 显示重复的行数

-i: 忽略大小写

[ loring test]# uniq num.txt

111

222

333

444

222

555 使用uniq时,一般先排序,再去重

[ loring test]# sort num.txt | uniq

111

222

333

444

555

[ loring test]# sort num.txt | uniq -c

1 111

3 222

2 333

1 444

1 555 五、tr 主要作用在于文本转换或者删除。

将/etc/passwd文件中的小写字母转换成大写字母

[root@web test]# cat /etc/passwd | tr '[a-z]' '[A-Z]' 将/etc/passwd文件中的“:”删除掉

[root@web test]# cat /etc/passwd | tr -d ":" 六、paste 文本合并。将文件按照行进行合并,中间使用tab隔开。

[root@web test]# cat a.txt

1

2

3

4

5

[root@web test]# cat b.txt

a

b

c

d

e按照行合并文件

[root@web test]# paste a.txt b.txt

1 a

2 b

3 c

4 d

5 e 也可以使用-d指定合并文件时行间的分隔符

[root@web test]# paste -d:a.txt b.txt

1:a

2:b

3:c

4:d

5:e

[root@web test]#

练习:

统计/etc/passwd文件中一共有几种shell,并显示每种shell有几个用户

[ loring test]# cut -d: -f7 /etc/passwd | sort | uniq -c

linux取反格式,linux基本命令总结(二)相关推荐

  1. linux 常用压缩格式,Linux常见压缩格式之压缩与解压

    Linux常见压缩格式之压缩与解压 zip格式 压缩:zip -r [目标文件名].zip [原文件/目录名] 解压:unzip [原文件名].zip 注:-r参数代表递归 # Extract arc ...

  2. linux 判断字符串格式,shell基础(二)字符子串及类型判断符

    一.变量子串 [root@mycentos shell_dir]# old="hello,world" [root@mycentos shell_dir]# echo $old h ...

  3. linux 计划任务格式,linux crontab 定时任务格式和使用方法2019-01-13

    前一天学习了 at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,linux系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个 ...

  4. linux v4l2 反操作,Linux下V4L2编程小结--吴老师

    作者:武汉华嵌-嵌入式培训中心  吴老师 Linux下V4L2编程小结 一.设置采集方式,格式 常用命令标志 打开视频设备后,可以设置该视频设备的属性,例如裁剪.缩放等.这一步是可选的.在Linux编 ...

  5. linux命令last格式,Linux中aulast命令起什么作用呢?

    摘要: 下文讲述Linux中aulast的功能说明,如下所示: aulast是一个程序,它的功能类似last和lastb命令 aulast命令功能: 用于输出上次登录用户列表 aulast命令运行原理 ...

  6. windows和linux共同分区格式,Linux和Windows共存的模式下分区要小心

    Linux和Windows共存的模式下分区要小心 2007-09-26 eNet&Ciweek 电脑分区情况如下,主分区三个,一个是winxp的c盘,一个是扩展分区,所有linux分区也在这里 ...

  7. linux常见分区格式,linux 分区格式

    一.分区与格式化的原理 二.使用linux中的fdisk分区 三.使用mkfs创建文件系统 四.硬盘分区的挂载: 一.分区原理 1.主分区表(64byte):记录分区的起始与结束柱面.主分区个数.主分 ...

  8. linux 常用压缩格式,Linux下常用压缩格式的压缩与解压方法

    Linux下常用压缩格式的压缩与解压方法 --------------------------------------------- .tar 打包:tar cvf *.tar *.*(原文件或目录) ...

  9. linux if else 格式,linux shell中 if else以及大于、小于、等于逻辑表达式

    在linux shell编程中,大多数情况下,可以使用测试命令来对条件进行测试,这里简单的介绍下,方便需要的朋友 比如比较字符串.判断文件是否存在及是否可读等,通常用"[]"来表示 ...

  10. linux服务器磁盘格式,linux下查看磁盘分区的文件系统格式

    df -T 只可以查看已经挂载的分区和文件系统类型. Filesystem Type 1K-blocks Used Available Use% Mounted on /dev/sda1 ext4 2 ...

最新文章

  1. N-GRAM模型的概率公式
  2. 《智能网联汽车技术路线图 2.0》重磅发布
  3. 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-基于接口驱动的数据层...
  4. HTML制作搞笑照片,40张创意搞笑的照片PS效果
  5. easyui datebox时间控件如何只显示年月
  6. the job was canceled什么意思_什么第三人称单数形式?怎么用?
  7. python学习笔记(15)循环设计
  8. BGP—— Confederation联邦(讲解+配置)
  9. linux桌面xfce美化_使用Xfce Linux桌面环境的8个理由
  10. 努比亚Z40 Pro定档2月25日:业界唯一定制35mm主摄+首发索尼IMX787
  11. php7.2连接mysql8_兼容 php 7.2 及 mysql 8
  12. 一款优秀的前端JS框架—AngularJS
  13. 六个国外免费的DNS服务-做英文与外贸必备
  14. 商人的盈利方式非你所想
  15. pytorch查看模型weight与grad
  16. Linux视频教程—笔记(全)
  17. 我和我的项目之整合腾讯云短信SDK
  18. java关联vss 80020009_Eclipse结合VSS方法
  19. MIDAS分布应用程序中的几个问题
  20. 熵的性质:可加性和强可加性

热门文章

  1. 12. MySQL 函数
  2. Hadoop报错 Failed to locate the winutils binary in the hadoop
  3. Go Node.js 生成的exe公布成windows服务
  4. Django——日志
  5. 第十一篇:Mysql系列
  6. 使用xmodmap修改键盘映射
  7. 【Tyvj】1473校门外的树3 线段树/树状数组 区间修改+单点访问
  8. 如何打开chrome中flash debug player
  9. 将集合类转换成DataTable
  10. winsock错误一览表