摘要
1、描述Linux上的文件管理类命令并详解。
2、描述用户管理。
一、文本查看及处理工具命令
cut:文本截取工具 语法:
cut OPTION... [FILE]...
命令选项:
-d CHAR:以指定的字符为分隔符;
-f FIELDS:挑选出的字段;
#:指定的单个字段;
#-#:连续的多个字段;
#,#:离散的多个字段;
例如:
[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologi
[root@localhost ~]# cut -d: -f1,2-4,7 /etc/passwd
root:x:0:0:/bin/bash
bin:x:1:1:/sbin/nologin
daemon:x:2:2:/sbin/nologin
adm:x:3:4:/sbin/nologin
lp:x:4:7:/sbin/nologin
sync:x:5:0:/bin/sync
shutdown:x:6:0:/sbin/shutdown
wc : 字符统计 语法:
wc [OPTIONS].. [FILE]...
命令选项:
-l :lines 统计行数
-w:words统计单词个数
-c:character 统计字符个数
sort: 排序命令,对内部文件不造成影响,以ascii排序 语法:
sort [OPTION]... [FILE]...
命令选项:
-n:基于数值大小而非字符进行排序;
-t CHAR:指定分隔符;
-k #:用于排序比较的字段;
-r:逆序排序;
-f:忽略字符大小写
-u:重复的行只保留一份;
复复行:连续且相同;
例如:
[root@localhost ~]# cut -d: -f1,7 /etc/passwd |sort -k2 -n
aaa:/bin/bash
abrt:/sbin/nologin
adm:/sbin/nologin
avahi-autoipd:/sbin/nologin
[root@localhost ~]# cut -d: -f1,7 /etc/passwd |sort -k2 -n |wc -l
4
uniq:报告或移除重复的行 语法:
uniq [OPTION]... [INPUT [OUTPUT]]
命令选项:
-c:显示每行的重复次数;
-u:仅显示未曾重复过的行;
-d:仅显示重复过的行;
例如:
[root@localhost ~]# cut -d: -f1,7 /etc/passwd |sort -k2 -n | uniq -c
1 aaa:/bin/bash
1 abrt:/sbin/nologin
1 adm:/sbin/nologin
1 avahi-autoipd:/sbin/nologin
1 bin:/sbin/nologin
1 chrony:/sbin/nologin
diff:compare files line by line 逐行比较两个文件(目录)不同之处的 语法:
diff [OPTION]... FILES
diff /PATH/TO/OLDFILE /PATH/TO/NEWFILE > /PATH/TO/PATCH_FILE
命令选项
-u 更加详细的表示差异 -# +# 差异 有上下文连接,即显示要修改的行的上下文,默认为3行
patch 向文件打补丁 命令选项:
-R 反向打补丁
patch [OPTIONS] -i /PATH/TO/PATCH_FILE /PATH/TO/OLDFILE
patch /PATH/TO/OLDFILE < /PATH/TO/PATCH_FILE
which 显示文件完成路径 which - shows the full path of (shell) commands.
which [options] [--] programname [...]
~]# which which
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
/usr/bin/alias
/usr/bin/which
--COMMAND-alias 忽略别名
whereis 显示文件的路径,手册页,
-b 只看二进制文件路径
-m 只看使用手册文件路径
who 查看登录当前用户的相关信息
-b 显示系统此次启动时间
-d 显示此次死亡进程
-l 显示登录进程
-u 比who多显示端口号
-r 运行级别
w 查看当前用户和其现阶段工作内容
more命令: 正序显示文档内容 mroe [options] file [...]
-d :显示翻页及退出提示
more FILE 翻盘至文件尾部后自动退出
less命令 : 倒序显示文档内容 less FILE
head命令:查看文件前N行 head -n 10 /xxx 默认查看前10行
head [options] ...[FILE]...
-n #:指定获取前#行,也可以用 -#
-c #:指定获取前#字节内容
tail 显示文件后几行内容 tail -n 10 /xxx 默认查看后10行
-f 查看文件尾部结束后不退出,跟随显示新增的行
-n #:指定获取#行,也可以用 -#
-c #:指定获取#字节内容
stat命令 : 显示文件/文件系统的状态
/]# stat /tmp/ks-script-x4E8mp
文件:"/tmp/ks-script-x4E8mp"
大小:813 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:956087 硬链接:1
权限:(0700/-rwx------) Uid:( 0/ root) Gid:( 0/ root)
环境:system_u:object_r:initrc_tmp_t:s0
最近访问:2017-10-15 17:53:52.464998198 +0800
最近更改:2017-10-15 17:53:52.455998198 +0800
最近改动:2017-10-15 17:53:52.455998198 +0800
练习:
1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。
[test1@localhost ~]$ who | cut -d " " -f 1 | sort -u
root
test1
test3
2、取出最后登录到当前系统的用户的相关信息
[test1@localhost ~]$ who
root tty1 2017-12-17 21:36
root pts/0 2017-12-17 21:36 (192.168.23.1)
test3 pts/1 2017-12-17 21:48 (192.168.23.1)
test1 pts/2 2017-12-17 21:49 (192.168.23.1)
[test1@localhost ~]$ who | tail -1
test1 pts/2 2017-12-17 21:49 (192.168.23.1)
3、取出当前系统上被用户当作其默认shell的最多的那个shell
[test1@localhost ~]$ cat /etc/passwd |cut -d : -f 7 | uniq -c | sort -r | tail -1
17 /sbin/nologin
4、将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中
[test1@localhost ~]$ cat /etc/passwd |sort -t : -k3 -n |tail -10 | tr 'a-z' 'A-Z' |tee /tmp/maxusers.txt
AVAHI-AUTOIPD:X:170:170:AVAHI IPV4LL STACK:/VAR/LIB/AVAHI-AUTOIPD:/SBIN/NOLOGIN
ABRT:X:173:173::/ETC/ABRT:/SBIN/NOLOGIN
CHRONY:X:997:996::/VAR/LIB/CHRONY:/SBIN/NOLOGIN
LIBSTORAGEMGMT:X:998:997:DAEMON ACCOUNT FOR LIBSTORAGEMGMT:/VAR/RUN/LSM:/SBIN/NOLOGIN
POLKITD:X:999:998:USER FOR POLKITD:/:/SBIN/NOLOGIN
MAGE:X:1000:1001::/HOME/MAGE:/BIN/BASH
AAA:X:1001:1002:AVCA:/HOME/AAA:/BIN/BASH
TEST1:X:1002:1003::/HOME/TEST1:/BIN/BASH
TEST2:X:1003:1004::/HOME/TEST2:/BIN/BASH
TEST3:X:1004:1005::/HOME/TEST3:/BIN/BASH
[test1@localhost ~]$ cat /tmp/maxusers.txt
AVAHI-AUTOIPD:X:170:170:AVAHI IPV4LL STACK:/VAR/LIB/AVAHI-AUTOIPD:/SBIN/NOLOGIN
ABRT:X:173:173::/ETC/ABRT:/SBIN/NOLOGIN
CHRONY:X:997:996::/VAR/LIB/CHRONY:/SBIN/NOLOGIN
LIBSTORAGEMGMT:X:998:997:DAEMON ACCOUNT FOR LIBSTORAGEMGMT:/VAR/RUN/LSM:/SBIN/NOLOGIN
POLKITD:X:999:998:USER FOR POLKITD:/:/SBIN/NOLOGIN
MAGE:X:1000:1001::/HOME/MAGE:/BIN/BASH
AAA:X:1001:1002:AVCA:/HOME/AAA:/BIN/BASH
TEST1:X:1002:1003::/HOME/TEST1:/BIN/BASH
TEST2:X:1003:1004::/HOME/TEST2:/BIN/BASH
TEST3:X:1004:1005::/HOME/TEST3:/BIN/BASH
5、取出当前主机的IP地址,提示:对ifconfig命令的结果进行切分
[test3@localhost ~]$ ifconfig eno16777736 | head -2 | tail -1
inet 192.168.23.128 netmask 255.255.255.0 broadcast 192.168.23.255
6、列出/etc目录下所有以.conf结尾的文件的文件名,并将其名字转换为大写后保存至/tmp/etc.conf文件中
[test3@localhost ~]$ ls /etc/*.conf |tr 'a-z' 'A-Z' | tee /tmp/etc.conf
/ETC/ASOUND.CONF
/ETC/CHRONY.CONF
/ETC/DNSMASQ.CONF
/ETC/DRACUT.CONF
/ETC/E2FSCK.CONF
7、显示/var目录下一级子目录或文件的总个数
[test3@localhost ~]$ ls /var/ | wc -w
29
8、取出/etc/group文件中第三个字段数值最小的10个组的名字
[test3@localhost ~]$ cat /etc/group | sort -t : -k3 -n | head -10 | cut -d : -f 1
root
bin
daemon
sys
adm
tty
disk
lp
mem
kmem
9、将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中
[test3@localhost ~]$ cat /etc//fstab /etc/issue > /tmp/etc.txt