基础练习:
1.将命令历史写入到root用户家目录的普通文件exercise中。
[root@localhost ~]# history
1 2
2 5
3 3
4 6
5 4
6 history
[root@localhost ~]# history > exercise
[root@localhost ~]# cat exercise
1 2
2 5
3 3
4 6
5 4
6 history
7 history > exercise
[root@localhost ~]#
history : 命令历史
[root@localhost ~]# history | tee exercise
1 2
2 5
3 3
4 6
5 4
6 history
7 history > exercise
8 cat exercise
9 rm -f exercise
10 ll
11 history | tee exercise
[root@localhost ~]#
管道符 | : 管道符左边命令的输出作为管道符右边命令的输入。
tee命令 : 在输出到文件的同时输出到屏幕
2.截取当前日期的年月日将其写入文件tim.txt中?
[root@localhost ~]# date | cut -d ' ' -f 2,3,6 > time1.txt
[root@localhost ~]# cat time1.txt
Mar 20 2019
[root@localhost ~]#
————————————
[root@localhost ~]# date +%Y-%m-%d > time2.txt
[root@localhost ~]# cat time2.txt
2019-03-20
[root@localhost ~]#
————————————
[root@localhost ~]# date +%y/%m/%d > time3.txt
[root@localhost ~]# cat time3.txt
19/03/20
[root@localhost ~]#
3.统计当前系统有多少用户
[root@localhost ~]# wc -l /etc/passwd
44 /etc/passwd
[root@localhost ~]#
文本统计:wc
显示文件行数、单词数、字节数和文件名:wc 文件名
统计当前目录下的文件数:wc -l
只显示单词数:wc -w 文件名
只显示字节数:wc -c 文件名
只显示行数:wc -l 文件名
只显示字符数:wc -m 文件名
显示最长的一行的字符数(不包括断行符):wc -L 文件名
注:在UTF-8编码格式里面,显示时一个字符占一个字节,一个中文字占用3个字节
4.有一个文件叫lianxi.txt,文件内容为排序过的/etc/passwd内容的第三列和第三列的行数。
[root@localhost ~]# cut -d : -f 3 /etc/passwd | sort -n | tee lianxi.txt | wc -l >> lianxi.txt
[root@localhost ~]# cat lianxi.txt
0
1
2
3
4
5
6
7
8
11
12
14
27
29
32
38
42
59
70
72
74
75
81
89
99
107
113
170
171
172
173
989
990
991
992
993
994
995
996
997
998
999
1000
65534
44
[root@localhost ~]#
排序显示(默认根据字符在ASCII码中的升序排序):sort 文件名
按照数值大小排序:sort -n 文件名
排序并去掉重复的:sort -u 文件名
逆序排序:sort -r 文件名
进阶练习:
1.在/home下创建普通文件file1,在/下给它创建一个硬链接文件为file1.bak,在root用户的家目录下给file1.bak文件创建一个硬链接为file1.bak.bak,给file1.bak.bak创建一个软链接为f1。
[root@localhost ~]# touch /home/file1
[root@localhost ~]# ln /home/file1 /file1.bak
[root@localhost ~]# ln /file1.bak file1.bak.bak
[root@localhost ~]# ln -s file1.bak.bak f1
[root@localhost ~]# ll /home
total 4
-rw-r--r--. 3 root root 0 Mar 20 23:50 file1
drwx------. 14 redhat redhat 4096 Mar 14 23:22 redhat
[root@localhost ~]# ll /
total 32
lrwxrwxrwx. 1 root root 7 Mar 6 05:26 bin -> usr/bin
dr-xr-xr-x. 3 root root 4096 Mar 14 23:21 boot
drwxr-xr-x. 19 root root 3240 Mar 20 23:49 dev
drwxr-xr-x. 138 root root 8192 Mar 21 2019 etc
-rw-r--r--. 3 root root 0 Mar 20 23:50 file1.bak
drwxr-xr-x. 3 root root 31 Mar 20 23:50 home
lrwxrwxrwx. 1 root root 7 Mar 6 05:26 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Mar 6 05:26 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 May 25 2015 media
drwxr-xr-x. 2 root root 6 May 25 2015 mnt
drwxr-xr-x. 3 root root 15 Mar 6 05:33 opt
dr-xr-xr-x. 486 root root 0 Mar 21 2019 proc
dr-xr-x---. 13 root root 4096 Mar 20 23:51 root
drwxr-xr-x. 38 root root 1140 Mar 20 23:49 run
lrwxrwxrwx. 1 root root 8 Mar 6 05:26 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 May 25 2015 srv
dr-xr-xr-x. 13 root root 0 Mar 21 2019 sys
drwxrwxrwt. 25 root root 4096 Mar 20 23:50 tmp
drwxr-xr-x. 13 root root 4096 Mar 6 05:26 usr
drwxr-xr-x. 20 root root 4096 Mar 21 2019 var
[root@localhost ~]# ll
total 8
-rw-------. 1 root root 1632 Mar 6 05:37 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 Mar 14 23:23 Desktop
drwxr-xr-x. 2 root root 6 Mar 14 23:23 Documents
drwxr-xr-x. 2 root root 6 Mar 14 23:23 Downloads
lrwxrwxrwx. 1 root root 13 Mar 20 23:51 f1 -> file1.bak.bak
-rw-r--r--. 3 root root 0 Mar 20 23:50 file1.bak.bak
-rw-------. 1 root root 1725 Mar 5 21:46 initial-setup-ks.cfg
drwxr-xr-x. 2 root root 6 Mar 14 23:23 Music
drwxr-xr-x. 2 root root 6 Mar 14 23:23 Pictures
drwxr-xr-x. 2 root root 6 Mar 14 23:23 Public
drwxr-xr-x. 2 root root 6 Mar 14 23:23 Templates
drwxr-xr-x. 2 root root 6 Mar 14 23:23 Videos
[root@localhost ~]#
创建软链接文件 :ln -s 原文件 链接文件
软链接记录的是它所连接的文件的路径
————————————
创建硬链接文件 : ln 原文件 新文件
硬链接记录的是目标的inode
2.找出root用户的家目录下以f开头的文件。
[root@localhost ~]# ls f*
f1 file1.bak.bak
[root@localhost ~]#
3.写出一个永久生效的命令别名为cha,该命令别名可以显示出以上四个文件的详细属性和inode号
[root@localhost ~]# vim ~/.bashrc
alias cha='ll -i /home/file1 /file1.bak /root/file1.bak.bak /root/f1'
ls -i 显示文件索引节点号(inode)一个索引节点代表一个文件,在linux中保存在磁盘分区中的文件都给它分配一个编号,称为索引节点号inode
Esc
ZZ
[root@localhost ~]# source ~/.bashrc
[root@localhost ~]# cha
19969981 -rw-r--r--. 3 root root 0 Mar 22 19:16 /file1.bak
19969981 -rw-r--r--. 3 root root 0 Mar 22 19:16 /home/file1
35700377 lrwxrwxrwx. 1 root root 13 Mar 20 23:51 /root/f1 -> file1.bak.bak
19969981 -rw-r--r--. 3 root root 0 Mar 22 19:16 /root/file1.bak.bak
[root@localhost ~]#
4.将/etc/passwd的内容添加到file1.bak文件中,保留file1.bak文件中前9行的内容,删除其他行的内容。
[root@localhost ~]# head -9 /etc/passwd >> /file1.bak
head /etc/passwd :默认查看文件前10行
head -9 /etc/passwd :指定查看前9行
[root@localhost ~]# cat -n /file1.bak
cat :连接并显示文件内容到标准输出
cat -n 文件名 :显示文件内容并显示行号
1 root:x :0:0:root:/root:/bin/bash
2 bin:x :1:1:bin:/bin:/sbin/nologin
3 daemon:x :2:2:daemon:/sbin:/sbin/nologin
4 adm:x :3:4:adm:/var/adm:/sbin/nologin
5 lp:x :4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x :5:0:sync:/sbin:/bin/sync
7 shutdown:x :6:0:shutdown:/sbin:/sbin/shutdown
8 halt:x :7:0:halt:/sbin:/sbin/halt
9 mail:x :8:12:mail:/var/spool/mail:/sbin/nologin
[root@localhost ~]#
5.查找出file1.bak的路径。
[root@localhost ~]# find / -name file1.bak
/file1.bak
[root@localhost ~]#
6.将file1.bak文件的第一列和最后一列输入到文件/root/zuoye。
[root@localhost ~]# cat /file1.bak | cut -d : -f 1,7 >> /root/zuoye
[root@localhost ~]# cat /root/zuoye
root:/bin/bash
bin:/sbin/nologin
daemon:/sbin/nologin
adm:/sbin/nologin
lp:/sbin/nologin
sync:/bin/sync
shutdown:/sbin/shutdown
halt:/sbin/halt
mail:/sbin/nologin
cut -d 指定分隔符 -f 指定第几列 被切割文件
-f 1,3第一列和第三列
-f 1-3第一列到第三列
-c 1-4 指定第一到第四个字符
7.将file1.bak.bak文件的第一行和最后一行输入到文件/test。
[root@localhost ~]# head -1 /root/file1.bak.bak >> /test && tail -1 /root/file1.bak.bak >> /test
[root@localhost ~]# cat /test
root:x :0:0:root:/root:/bin/bash
mail:x :8:12:mail:/var/spool/mail:/sbin/nologin
[root@localhost ~]#
默认查看后10行:tail /etc/passwd
查看后5行:tail -5 /etc/passwd
8.有一个文件叫lianxi.txt,文件内容为排序过的file1.bak内容的第三列和第三列的行数。
[root@localhost ~]# cut -d : -f 3 /file1.bak | sort -n | tee lianxi.txt | wc -l >> lianxi.txt
[root@localhost ~]# cat lianxi.txt
0
1
2
3
4
5
6
7
8
9
[root@localhost ~]#