- 文件管理概述
- 系统目录结构
- 文件路径定位
- 系统文件管理
- 系统文件查看命令
- 文件上传下载命令
- 文件查找命令
- 字符处理命令
- 习题:
-曾老湿, 江湖人称曾老大。
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
文件管理概述
Bash Shell对文件进行管理 |
---|
谈到Linux文件管理,首先我们需要了解的就是,我们要对文件做些什么事情?
无非就是对文件进行以下操作:
创建 复制 移动 查看 编辑 压缩 查找 删除 等等
例如:当我们想配置一下网卡信息,修改IP是否应该知道文件在哪,才能去修改。
内容摘要 |
---|
1.系统目录结构 2.文件路径定位 3.文件管理命令 4.文件类型file 5.链接文件ln 6.文件编辑vim
系统目录结构
几乎所有的计算机操作系统都是使用目录结构组织文件。具体来说就是在一个目录中存放子目录和文件,而在子目录中又会进一步存放子目录和文件,以此类推形成一个树状的文件结构,由于其结构很像一棵树的分支,所以该结构又被称为目录树
。
windows:一多根的方式组织文件C: D:
Linux:以单根的方式组织文件 /

目录层次的标准FHS |
---|
FHS全称(Filesystem Hierarchy Standard),中文意思是目录层次标准,是Linux的目录规范标准。 FHS定义了两次规范:
1.“/”目录下的各个目录应该放什么文件数据。 2.针对/usr 和 /var 这两个目录的子目录来定义。

Linux系统中也沿用了这种文件结构, 所有目录和文件都在 "根目录"下, 目录名为"/"。FHS(文件系统层次标准)定义了在根目录下的主要目录以及每个目录应该存放什么文件。

“/”根目录 |
---|
/ #第一层次结构的根、整个文件系统层次结构的根目录。
/bin/ #需要在单用户模式可用的必要命令(可执行文件);面向所有用户,例如:cat、ls、cp,和/usr/bin类似。
/boot/ #引导程序文件,例如:kernel、initrd;时常是一个单独的分区[6]
/dev/ #必要设备, 例如:, /dev/null.
/etc/ #特定主机,系统范围内的配置文件。关于这个名称目前有争议。在贝尔实验室关于UNIX实现文档的早期版本中,/etc 被称为/etcetra 目录,[7]这是由于过去此目录中存放所有不属于别处的所有东西(然而,FHS限制/etc存放静态配置文件,不能包含二进制文件)。[8]自从早期文档出版以来,目录名称已被以各种方式重新称呼。最近的解释包括反向缩略语如:"可编辑的文本配置"(英文 "Editable Text Configuration")或"扩展工具箱"(英文 "Extended Tool Chest")。[9]
/etc/opt/ #/opt/的配置文件
/etc/X11/ #X_Window系统(版本11)的配置文件
/etc/sgml/ #SGML的配置文件
/etc/xml/ #XML的配置文件
/home/ #用户的家目录,包含保存的文件、个人设置等,一般为单独的分区。
/lib/ #/bin/ and /sbin/中二进制文件必要的库文件。
/media/ #可移除媒体(如CD-ROM)的挂载点 (在FHS-2.3中出现)。
/lost found #在ext3文件系统中,当系统意外崩溃或机器意外关机,会产生一些文件碎片在这里。当系统在开机启动的过程中fsck工具会检查这里,并修复已经损坏的文件系统。当系统发生问题。可能会有文件被移动到这个目录中,可能需要用手工的方式来修复,或移到文件到原来的位置上。
/mnt/ #临时挂载的文件系统。比如cdrom,u盘等,直接插入光驱无法使用,要先挂载后使用
/opt/ #可选应用软件包。
/proc/ #虚拟文件系统,将内核与进程状态归档为文本文件(系统信息都存放这目录下)。例如:uptime、 network。在Linux中,对应Procfs格式挂载。该目录下文件只能看不能改(包括root)
/root/ #超级用户的家目录
/sbin/ #必要的系统二进制文件,例如: init、 ip、 mount。sbin目录下的命令,普通用户都执行不了。
/srv/ #站点的具体数据,由系统提供。
/tmp/ #临时文件(参见 /var/tmp),在系统重启时目录中文件不会被保留。
/usr/ #默认软件都会存于该目录下。用于存储只读用户数据的第二层次;包含绝大多数的(多)用户工具和应用程序。
/var/ #变量文件——在正常运行的系统中其内容不断变化的文件,如日志,脱机文件和临时电子邮件文件。有时是一个单独的分区。如果不单独分区,有可能会把整个分区充满。如果单独分区,给大给小都不合适。
重点记住
代码语言:javascript复制/etc 系统重要配置文件, 以及常用服务配置文件
/var 存放系统引导启动时产生的可变文件,文件通常动态更改的,例如: 缓存目录,日志文件
/run 系统启动后, 运行的程序产生的运行时数据, 包括进程的pid文件,锁文件等
/home 普通用户的主目录, 普通用户的家目录默认为/HOME/USERNAME
/root 超级管理员的主目录, 普通用户无权操作
/tmp 存放临时文件, 一般存放超过10天以上都会自动删除,可以更改删除临时文件的期限
/boot 存放系统引导时候需要的文件
/dev 存放设备文件
/usr 安装的软件, 共享库, 重要的子目录有
/usr/bin 用户命令目录
/usr/sbin 管理员命令目录
/usr/local 本地自定义安装的软件
//注意:在Linux7系统中, /bin, /sbin, /lib, /lib64都以软链接的形式链接到/usr/目录下,例如:
/bin --> /usr/bin
/sbin --> /usr/sbin
lib -> usr/lib
lib64 -> usr/lib64
/etc/目录 |
---|
特定主机系统范围内的配置文件。
代码语言:javascript复制/etc/rc /etc/rc.d ***** #/etc/rc*.d 启动、或改变运行级时运行的scripts或scripts的目录.
/etc/hosts ***** #本地域名解析文件
/etc/sysconfig/network ***** #IP、掩码、网关、主机名配置
/etc/resolv.conf ***** #DNS服务器配置
/etc/fstab ***** #开机自动挂载系统,所有分区开机都会自动挂载
/etc/inittab ***** #设定系统启动时Init进程将把系统设置成什么样的runlevel及加载相关的启动文件配置
/etc/exports ***** #设置NFS系统用的配置文件路径
/etc/init.d/ ***** #这个目录来存放系统启动脚本
/etc/profile ***** #全局系统环境配置变量
/etc/csh.login, /etc/csh.cshrc
/etc/issue ***** #认证前的输出信息,默认输出版本内核信息
/etc/motd #设置认证后的输出信息
/etc/mtab #当前安装的文件系统列表.由scripts初始化,并由mount 命令自动更新.需要一个当前安装的文件系统的列表时使用,例如df 命令
/etc/group ***** #类似/etc/passwd ,但说明的不是用户而是组.
/etc/passwd ***** #用户数据库,其中的域给出了用户名、真实姓名、家目录、加密的口令和用户的其他信息.
/etc/shadow ****** #在安装了影子口令软件的系统上的影子口令文件.影子口令文件将/etc/passwd 文件中的加密口令移动到/etc/shadow 中,而后者只对root可读.这使破译口令更困难.
/etc/sudoers ***** #可以sudo命令的配置文件
/etc/syslog.conf ***** #系统日志参数配置
/etc/login.defs #设置用户帐号限制的文件
/etc/securetty #确认安全终端,即哪个终端允许root登录.一般只列出虚拟控制台,这样就不可能(至少很困难)通过modem或网络闯入系统并得到超级用户特权.
/etc/printca #类似/etc/termcap ,但针对打印机.语法不同.
/etc/shells #列出可信任的shell.chsh 命令允许用户在本文件指定范围内改变登录shell.提供一台机器FTP服务的服务进程ftpd 检查用户shell是否列在 /etc/shells 文件中,如果不是将不允许该用户登录.
/etc/xinetd.d #如果服务器是通过xinetd模式运行的,它的脚本要放在这个目录下。有些系统没有这个目录,比如Slackware,有些老的版本也没有。在Redhat Fedora中比较新的版本中存在。
/etc/opt/ #/opt/的配置文件
/etc/X11/ #X_Window系统(版本11)的配置文件
/etc/sgml/ #SGML的配置文件
/etc/xml/ #XML的配置文件
/etc/skel/ ***** #默认创建用户时,把该目录拷贝到家目录下
/usr/目录 |
---|
默认软件都会存于该目录下。用于存储只读用户数据的第二层次;包含绝大多数的用户工具和应用程序。
代码语言:javascript复制/usr/X11R6 #存放X-Windows的目录;
/usr/games #存放着XteamLinux自带的小游戏;
/usr/doc #Linux技术文档;
/usr/include #用来存放Linux下开发和编译应用程序所需要的头文件;
/usr/lib #存放一些常用的动态链接共享库和静态档案库;
/usr/man #帮助文档所在的目录;
/usr/src #Linux开放的源代码,就存在这个目录,爱好者们别放过哦;
/usr/bin/ #非必要可执行文件 (在单用户模式中不需要);面向所有用户。
/usr/lib/ #/usr/bin/和/usr/sbin/中二进制文件的库。
/usr/sbin/ #非必要的系统二进制文件,例如:大量网络服务的守护进程。
/usr/share/ #体系结构无关(共享)数据。
/usr/src/ #源代码,例如:内核源代码及其头文件。
/usr/X11R6/ #X Window系统版本 11, Release 6.
/usr/local/ #本地数据的第三层次,具体到本台主机。通常而言有进一步的子目录,例如:bin/、lib/、share/.这是提供给一般用户的/usr目录,在这里安装一般的应用软件;
/var/目录 |
---|
/var 包括系统一般运行时要改变的数据.每个系统是特定的,即不通过网络与其他计算机共享.
代码语言:javascript复制/var/log/message ***** #系统日志信息,按周自动轮询
/var/spool/cron/root ***** #定时器配置文件目录,默认按用户命名
/var/log/secure ***** #记录登陆系统存取信息的文件,不管认证成功还是认证失败都会记录
/var/log/wtmp #记录登陆者信息的文件,last,who,w命令信息来源于此
/var/spool/clientmqueue/ #当邮件服务未开启时,所有应发给系统管理员的邮件都将堆放在此
/var/spool/mail/ #邮件目录
/var/tmp #比/tmp 允许的大或需要存在较长时间的临时文件. (虽然系统管理员可能不允许/var/tmp 有很旧的文件.)
/var/lib #系统正常运行时要改变的文件.
/var/local #/usr/local 中安装的程序的可变数据(即系统管理员安装的程序).注意,如果必要,即使本地安装的程序也会使用其他/var 目录,例如/var/lock .
/var/lock #锁定文件.许多程序遵循在/var/lock 中产生一个锁定文件的约定,以支持他们正在使用某个特定的设备或文件.其他程序注意到这个锁定文件,将不试图使用这个设备或文件.
/var/log/ ***** #各种程序的Log文件,特别是login (/var/log/wtmp log所有到系统的登录和注销) 和syslog (/var/log/messages 里存储所有核心和系统程序信息. /var/log 里的文件经常不确定地增长,应该定期清除.
/var/run #保存到下次引导前有效的关于系统的信息文件.例如, /var/run/utmp 包含当前登录的用户的信息.
/var/cache/ #应用程序缓存数据。这些数据是在本地生成的一个耗时的I/O或计算结果。应用程序必须能够再生或恢复数据。缓存的文件可以被删除而不导致数据丢失。
/proc/目录 |
---|
虚拟文件系统,将内核与进程状态归档为文本文件(系统信息都存放这目录下)。
例如:uptime、 network。在Linux中,对应Procfs格式挂载。该目录下文件只能看不能改(包括root)
代码语言:javascript复制/proc/meminfo ***** #查看内存信息
/proc/loadavg ***** #还记得 top 以及 uptime 吧?没错!上头的三个平均数值就是记录在此!
/proc/uptime ***** #就是用 uptime 的时候,会出现的资讯啦!
/proc/cpuinfo ***** #关于处理器的信息,如类型、厂家、型号和性能等。
/proc/cmdline #加载 kernel 时所下达的相关参数!查阅此文件,可了解系统是如何启动的!
/proc/filesystems #目前系统已经加载的文件系统罗!
/proc/interrupts #目前系统上面的 IRQ 分配状态。
/proc/ioports #目前系统上面各个装置所配置的 I/O 位址。
/proc/kcore #这个就是内存的大小啦!好大对吧!但是不要读他啦!
/proc/modules #目前我们的 Linux 已经加载的模块列表,也可以想成是驱动程序啦!
/proc/mounts #系统已经挂载的数据,就是用 mount 这个命令呼叫出来的数据啦!
/proc/swaps #到底系统挂加载的内存在哪里?呵呵!使用掉的 partition 就记录在此啦!
/proc/partitions #使用 fdisk -l 会出现目前所有的 partition 吧?在这个文件当中也有纪录喔!
/proc/pci #在 PCI 汇流排上面,每个装置的详细情况!可用 lspci 来查阅!
/proc/version #核心的版本,就是用 uname -a 显示的内容啦!
/proc/bus/* #一些汇流排的装置,还有 U盘的装置也记录在此喔!
/dev/目录 |
---|
设备文件分为两种:块设备文件(b)和字符设备文件(c) 设备文件一般存放在/dev目录下,
对常见设备文件作如下说明:
代码语言:javascript复制/dev/hd[a-t] #IDE设备
/dev/sd[a-z] #SCSI设备
/dev/fd[0-7] #标准软驱
/dev/md[0-31] #软raid设备
/dev/loop[0-7] #本地回环设备
/dev/ram[0-15] #内存
/dev/null #无限数据接收设备,相当于黑洞
/dev/zero #无限零资源
/dev/tty[0-63] #虚拟终端
/dev/ttyS[0-3] #串口
/dev/lp[0-3] #并口
/dev/console #控制台
/dev/fb[0-31] #framebuffer
/dev/cdrom #=> /dev/hdc
/dev/modem #=> /dev/ttyS[0-9]
/dev/pilot #=> /dev/ttyS[0-9]
/dev/random #随机数设备
/dev/urandom #随机数设备
命令目录 |
---|
/bin
代码语言:javascript复制[root@db04 ~]# ls /bin/
alsaunmute chgrp cut dbus-send domainname ex gettext ipcalc ln mail mount nisdomainname raw rpm sh tar traceroute unicode_stop zcat
arch chmod dash dbus-uuidgen dumpkeys false grep iptables-xml loadkeys mailx mountpoint ping readlink rvi sleep taskset traceroute6 unlink
awk chown date dd echo fgrep gtar iptables-xml-1.4.7 logger mkdir mv ping6 red rview sort tcsh true usleep
basename cp dbus-cleanup-sockets df ed find gunzip kbd_mode login mknod nano plymouth rm sed stty touch umount vi
bash cpio dbus-daemon dmesg egrep findmnt gzip kill ls mktemp netstat ps rmdir setfont su tracepath uname view
cat csh dbus-monitor dnsdomainname env gawk hostname link lsblk more nice pwd rnano setserial sync tracepath6 unicode_start ypdomainname
/sbin
代码语言:javascript复制[root@db04 ~]# ls /sbin/
accton cbq dosfsck fsck.ext4dev ifdown iptables ldconfig lvmsar mkfs.ext2 partprobe quotaon service tc vgmerge
addpart cfdisk dosfslabel fsck.msdos ifenslave iptables-1.4.7 load_policy lvreduce mkfs.ext3 partx rdisc setfiles telinit vgmknodes
agetty chcpu dracut fsck.vfat ifrename iptables-multi logsave lvremove mkfs.ext4 pccardctl readahead setpci tune2fs vgreduce
alsactl chkconfig dumpe2fs fsfreeze ifup iptables-multi-1.4.7 losetup lvrename mkfs.ext4dev pidof readahead-collector setregdomain udevadm vgremove
arp clock e2fsck fstab-decode init iptables-restore lsinitrd lvresize mkfs.msdos pivot_root reboot setsysfont udevd vgrename
arping consoletype e2image fstrim initctl iptables-restore-1.4.7 lsmod lvs mkfs.vfat plipconfig regdbdump sfdisk umount.hal vgs
audispd crda e2label fuser insmod iptables-save lspci lvscan mkhomedir_helper plymouthd reload sgpio unix_chkpwd vgscan
auditctl cryptsetup e2undo genhostid insmod.static iptables-save-1.4.7 lspcmcia MAKEDEV mkinitrd poweroff resize2fs shutdown unix_update vgsplit
auditd ctrlaltdel ether-wake getkey install-info iptunnel lvchange matchpathcon mkswap ppp-watch restart slattach vconfig vmcore-dmesg
aureport debugfs ethtool grub installkernel iw lvconvert mdadm modinfo pvchange restorecon sln vgcfgbackup weak-modules
ausearch delpart faillock grubby ip iwconfig lvcreate mdmon modprobe pvck rfkill start vgcfgrestore wipefs
autrace depmod fdisk grub-crypt ip6tables iwevent lvdisplay microcode_ctl mount.tmpfs pvcreate rmmod start_udev vgchange
badblocks dhclient findfs grub-install ip6tables-1.4.7 iwgetid lvextend mii-diag nameif pvdisplay rngd status vgck
biosdevname dhclient-script fixfiles grub-md5-crypt ip6tables-multi iwlist lvm mii-tool netreport pvmove route stop vgconvert
blkdeactivate dm_dso_reg_tool fsadm grub-terminfo ip6tables-multi-1.4.7 iwpriv lvmchange mingetty new-kernel-pkg pvremove rsyslogd sulogin vgcreate
blkdiscard dmeventd fsck halt ip6tables-restore iwspy lvmconf mkdosfs nologin pvresize rtmon sushell vgdisplay
blkid dmevent_tool fsck.cramfs hdparm ip6tables-restore-1.4.7 kdump lvmdiskscan mkdumprd pam_console_apply pvs runlevel swapoff vgexport
blockdev dmraid fsck.ext2 hwclock ip6tables-save kexec lvmdump mke2fs pam_tally2 pvscan runuser swapon vgextend
bridge dmraid.static fsck.ext3 ifcfg ip6tables-save-1.4.7 killall5 lvmetad mkfs pam_timestamp_check quotacheck scsi_id switch_root vgimport
busybox dmsetup fsck.ext4 ifconfig ipmaddr kpartx lvmsadc mkfs.cramfs parted quotaoff securetty sysctl vgimportclone
家目录 |
---|
/home
代码语言:javascript复制[root@db04 ~]# pwd
/root
[root@db04 ~]# useradd zls
[root@db04 ~]# ls /home/
zls
/root
代码语言:javascript复制[root@db04 ~]# pwd
/root
系统文件目录 |
---|
代码语言:javascript复制/usr 目录 相当于windows下的 C:Windows目录 /usr/local 软件安装目录 相当于C:Program /usr/bin 普通用户使用的应用程序(重要) /usr/sbin 管理员用户使用的应用程序(重要) /usr/lib 库文件Glibc 32bit /usr/lib64 库文件Glibc 64bit
#查看cp命令依赖的库文件
[root@db04 ~]# ldd /bin/cp
linux-vdso.so.1 => (0x00007fff53397000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00000036b4a00000)
librt.so.1 => /lib64/librt.so.1 (0x0000003cb8a00000)
libacl.so.1 => /lib64/libacl.so.1 (0x0000003cbca00000)
libattr.so.1 => /lib64/libattr.so.1 (0x0000003cba600000)
libc.so.6 => /lib64/libc.so.6 (0x0000003cb7e00000)
libdl.so.2 => /lib64/libdl.so.2 (0x00000036b4200000)
/lib64/ld-linux-x86-64.so.2 (0x0000003cb7600000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003cb8200000)
启动目录 |
---|
代码语言:javascript复制/boot 存放的系统启动相关的文件,例如:kernel,grub(引导装载程序)
[root@db04 ~]# ls -1 /boot/
config-2.6.32-431.el6.x86_64
efi
grub
initramfs-2.6.32-431.el6.x86_64.img
initrd-2.6.32-431.el6.x86_64kdump.img
lost found
symvers-2.6.32-431.el6.x86_64.gz
System.map-2.6.32-431.el6.x86_64
vmlinuz-2.6.32-431.el6.x86_64
配置文件目录 |
---|
/etc 极其重要,后续所有服务的配置都在这个目录中 /etc/sysconfig/network-script/ifcfg- 网卡配置文件 /etc/hostname 系统主机名配置文件 /etc/resolv.conf dns客户端配置文件 /etc/hosts 本地域名解析配置文件
可变的目录与临时目录 |
---|
/var 存放一些变化文件,比如/var/log/下的系统日志文件 /var/tmp 进程产生的临时文件 /tmp 系统临时目录(类似于公共厕所)
设备目录文件 |
---|
代码语言:javascript复制/dev 存放设备文件,比如硬盘,硬盘分区,光驱等 /dev/null 黑洞设备,只进不出,类似于辣鸡回收站 /dev/random 生成随机数的设备 /dev/zero 能远远不断的产生数据,类似于取款机,随时随地取钱 /dev/pts/0 虚拟的Bash Shell终端,提供给远程用户使用,0:一个终端 1:2个终端...
[root@db04 ~]# ls /dev/sda*
/dev/sda /dev/sda1 /dev/sda2
[root@db04 ~]# ls /dev/zero /dev/random /dev/null
/dev/null /dev/random /dev/zero
[root@db04 ~]# ls /dev/cdrom /dev/sr0
[root@db04 ~]# dd if=/dev/zero of=/opt/test.txt bs=1M count=1024
[root@db04 ~]# ls -lh /opt/test.txt
-rw-r--r-- 1 root root 1.0G 5月 31 06:05 /opt/test.txt
[root@db04 ~]# tty
/dev/pts/3
[root@db04 ~]# ps -ef|grep tty
root 6889 1 0 May21 tty1 00:00:00 /sbin/mingetty /dev/tty1
root 6891 1 0 May21 tty2 00:00:00 /sbin/mingetty /dev/tty2
root 6893 1 0 May21 tty3 00:00:00 /sbin/mingetty /dev/tty3
root 6895 1 0 May21 tty4 00:00:00 /sbin/mingetty /dev/tty4
root 6897 1 0 May21 tty5 00:00:00 /sbin/mingetty /dev/tty5
root 6899 1 0 May21 tty6 00:00:00 /sbin/mingetty /dev/tty6
root 21723 21092 0 06:37 pts/3 00:00:00 grep tty
[root@db04 ~]# ps -ef|grep sshd
root 6757 1 0 May21 ? 00:00:00 /usr/sbin/sshd
root 19882 6757 0 May30 ? 00:00:00 sshd: root@pts/2
root 21090 6757 0 05:01 ? 00:00:00 sshd: root@pts/3
root 21725 21092 0 06:38 pts/3 00:00:00 grep sshd
虚拟的文件系统 |
---|
代码语言:javascript复制/proc 反应系统当前进程的实时状态
[root@db04 ~]# cat /proc/meminfo
MemTotal: 1906556 kB
MemFree: 86636 kB
Buffers: 160992 kB
Cached: 1487556 kB
SwapCached: 0 kB
Active: 473468 kB
Inactive: 1197472 kB
Active(anon): 22616 kB
Inactive(anon): 12 kB
Active(file): 450852 kB
Inactive(file): 1197460 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 2031608 kB
SwapFree: 2031608 kB
Dirty: 4 kB
Writeback: 0 kB
AnonPages: 22408 kB
Mapped: 9200 kB
Shmem: 240 kB
Slab: 115316 kB
SReclaimable: 90108 kB
SUnreclaim: 25208 kB
KernelStack: 704 kB
PageTables: 2832 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 2984884 kB
Committed_AS: 90636 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 157472 kB
VmallocChunk: 34359574080 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 6144 kB
DirectMap2M: 1042432 kB
DirectMap1G: 1048576 kB
[root@db04 ~]# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 158
model name : Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz
stepping : 10
cpu MHz : 2591.345
cache size : 9216 KB
fpu : yes
fpu_exception : yes
cpuid level : 22
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc up arch_perfmon xtopology tsc_reliable nonstop_tsc unfair_spinlock pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch arat xsaveopt fsgsbase bmi1 hle avx2 smep bmi2 invpcid rtm
bogomips : 5182.69
clflush size : 64
cache_alignment : 64
address sizes : 43 bits physical, 48 bits virtual
power management:
[root@db04 ~]# ls /proc/
1 12 15 17 2 21704 26 293 314 397 6 6690 6740 6865 6893 718 9 cgroups diskstats filesystems ipmi key-users locks mounts pagetypeinfo self sys tty zoneinfo
10 13 155 18 20 22 27 3 32 4 645 6699 6757 687 6895 719 acpi cmdline dma fs irq kmsg mdstat mpt partitions slabinfo sysrq-trigger uptime
1027 14 156 19 21 23 28 30 33 41 649 6700 6833 6876 6897 73 asound cpuinfo driver interrupts kallsyms kpagecount meminfo mtd sched_debug softirqs sysvipc version
1043 146 157 19882 21090 24 29 31 38 42 657 6729 6840 6889 6899 784 buddyinfo crypto execdomains iomem kcore kpageflags misc mtrr schedstat stat timer_list vmallocinfo
11 147 16 19884 21092 25 291 313 39 5 6661 6732 6857 6891 7 8 bus devices fb ioports keys loadavg modules net scsi swaps timer_stats vmstat
[root@db04 ~]# ps -ef|grep sshd
root 6757 1 0 May21 ? 00:00:00 /usr/sbin/sshd
root 19882 6757 0 May30 ? 00:00:00 sshd: root@pts/2
root 21090 6757 0 05:01 ? 00:00:00 sshd: root@pts/3
root 21706 21092 0 06:25 pts/3 00:00:00 grep sshd
[root@db04 ~]# ls /proc/6757/
以下目录都是被软链接了 |
---|
/bin --> /usr/bin /sbin --> /usr/sbin /lib --> /usr/lib /lib64 --> /usr/lib64
文件路径定位
在我们开始操作文件前,首先需要对文件进行定位,比如: 你要在哪,创建什么文件? 你要将文件复制到什么地方? 你要删除什么地方的文件?
那什么是定位? 比如:/etc/hostname整个文件中包含文件名称以及文件所在的位置,我们将这个叫做路径,那么路径就是怼文件进行定位的一种方式。
例如:下图所示的message所在的路径是?

再举个例子,我想在座的各位男生,应该深有体会,以前网站是不支持在线观看视频,电影之类的,必须要通过迅雷,或者...一些软件,下载下来,然后本地播放器观看,QVOD...等等,那这个小电影,一般来说,都会隐藏的很深很深很深很深。而且目录名字起的,越奇葩越好。

特殊目录“.”和“..” |
---|
在每个目录下, 都会固定存在两个特殊目录, 分别是.
和..
的目录。
一个点代表当的是当前目录, 两个点代表的是当前目录的上层目录。
注意: 在Linux下所有以点开始的文件都是"隐藏文件", 对于这类文件, 只使用命令ls -l
是看不到的, 必须要使用ls -la
才可以看到,如下所示:
[root@db04 ~]# ls -la /
总用量 106
dr-xr-xr-x. 23 root root 4096 5月 21 11:11 .
dr-xr-xr-x. 23 root root 4096 5月 21 11:11 ..
-rw-r--r-- 1 root root 0 5月 21 11:11 .autofsck
-rw-r--r-- 1 root root 0 10月 19 2018 .autorelabel
dr-xr-xr-x. 2 root root 4096 5月 27 03:16 bin
dr-xr-xr-x. 5 root root 1024 5月 21 11:11 boot
drwxr-xr-x 3 root root 4096 4月 8 21:40 data
drwxr-xr-x 19 root root 3740 5月 21 11:11 dev
drwxr-xr-x. 86 root root 4096 5月 30 22:53 etc
drwxr-xr-x. 3 root root 4096 5月 30 22:53 home
dr-xr-xr-x. 13 root root 4096 5月 26 08:53 lib
dr-xr-xr-x. 9 root root 12288 5月 27 03:16 lib64
drwx------. 2 root root 16384 10月 19 2018 lost found
drwxr-xr-x. 2 root root 4096 9月 23 2011 media
drwxr-xr-x. 2 root root 4096 9月 23 2011 mnt
drwxr-xr-x. 3 root root 4096 5月 31 06:05 opt
dr-xr-xr-x 96 root root 0 5月 21 19:11 proc
dr-xr-x---. 3 root root 4096 5月 30 09:05 root
dr-xr-xr-x. 2 root root 12288 5月 27 03:16 sbin
drwxr-xr-x. 2 root root 4096 10月 19 2018 selinux
drwxr-xr-x. 2 root root 4096 9月 23 2011 srv
drwxr-xr-x 13 root root 0 5月 21 19:11 sys
drwxrwxrwt. 3 root root 4096 5月 31 03:44 tmp
drwxr-xr-x. 13 root root 4096 10月 19 2018 usr
drwxr-xr-x. 20 root root 4096 10月 19 2018 var
[root@db04 ~]# ls -la /opt/
总用量 1048592
drwxr-xr-x. 3 root root 4096 5月 31 06:05 .
dr-xr-xr-x. 23 root root 4096 5月 21 11:11 ..
drwxr-xr-x. 2 root root 4096 11月 22 2013 rh
-rw-r--r-- 1 root root 1073741824 5月 31 06:05 test.txt
绝对路径 |
---|
Linux系统采用了目录树的文件组织结构, 在Linux下每个目录或文件都可以从根目录处开始寻找, 比如: /usr/bin
目录。这种从根目录开始的全路径被称为"绝对路径", 绝对路径一定是以 “/” 开头的。
如何确认当前所在的目录, 可以使用pwd
命令查看:
[root@db04 ~]# cd /usr/local/
[root@db04 local]# pwd
/usr/local
就好比,咱们在中国写快递地址的时候 ,如果你往外省邮寄,北京-上海 绝对路径 得写具体地址:上海市/浦东新区/创智良仓/3207 相对路径 那你在叫外卖的时候呢:浦东新区/创智良仓/3207
相对路径 |
---|
相对路径, 关键点在于当前在什么路径下。假设当前目录在/usr/local
下, 那么它的上层目录(/usr目录)可以用../
表示, 而`/usr/local
的下层目录(src)则可以用./src
表示。所谓的(.)和(..)目录实际上也是属于相对路径
#进入/opt目录
[root@db04 ~]# cd /opt/
[root@db04 opt]# ls -la
总用量 1048592
drwxr-xr-x. 3 root root 4096 5月 31 06:05 . //当前目录
dr-xr-xr-x. 23 root root 4096 5月 21 11:11 .. //上层目录
drwxr-xr-x. 2 root root 4096 11月 22 2013 rh
-rw-r--r-- 1 root root 1073741824 5月 31 06:05 test.txt
#进入当前目录
[root@db04 opt]# cd .
[root@db04 opt]# pwd
/opt
#进入当前目录的上层目录
[root@db04 opt]# cd ..
[root@db04 /]# pwd
/
示例:
代码语言:javascript复制[root@db04 /]# useradd oldboy
[root@db04 /]# ls /home/oldboy/
[root@db04 /]# ls ~/
[root@db04 /]# ls ~/file1
[root@db04 /]# ls ~/zls/file1
代码语言:javascript复制[root@db04 /]# ls abc
[root@db04 /]# ls ../abc
[root@db04 /]# ls abc/file1
cd命令常见用法 |
---|
cd
: 切换目录 change directory
. 表示用户所处的当前目录
.. 表示上级目录;
~ 表示当前用户自己的家目录
cd - #切换上次所在目录
cd ~ #切换至当前用户家目录
cd #切换至当前用户家目录
cd . #.代表当前目录,一般在拷贝、移动等情况下使用
cd .. #切换至当前目录的上级目录
系统文件管理
创建目录mkdir |
---|
mkdir
:创建目录 make directory
DESCRIPTION
Create the DIRECTORY(ies), if they do not already exist.
创建目录,如果他们不存在
Mandatory arguments to long options are mandatory for short options too.
-m, --mode=MODE
set file mode (as in chmod), not a=rwx - umask
-p, --parents
no error if existing, make parent directories as needed
-v, --verbose
print a message for each created directory
-Z, --context=CTX
set the SELinux security context of each created directory to CTX
--help display this help and exit
--version
output version information and exit
命令示例:
代码语言:javascript复制#创建目录
[root@db04 ~]# mkdir dir1
#创建目录并给权限
[root@db04 ~]# mkdir -m 777 dir2
#递归创建目录
[root@db04 ~]# mkdir -p dir3/dir4/dir5
#创建目录并显示信息
[root@db04 ~]# mkdir -pv dir4/dir5/dir6
mkdir: 已创建目录 "dir4"
mkdir: 已创建目录 "dir4/dir5"
mkdir: 已创建目录 "dir4/dir5/dir6"
#创建多目录
[root@db04 ~]# mkdir /home/zls/dir1 /home/zls/dir2 /home/zls/dir3
[root@db04 ~]# mkdir /home/zls/{dir4,dir5,dir6}
[root@db04 ~]# mkdir -p /home/zls/{dir7,dir8,dir9}/zenglaoshi
[root@db04 ~]# mkdir -pv /home/zls/{dir10,dir11,dir12}/zenglaoshi
mkdir: 已创建目录 "/home/zls/dir10"
mkdir: 已创建目录 "/home/zls/dir10/zenglaoshi"
mkdir: 已创建目录 "/home/zls/dir11"
mkdir: 已创建目录 "/home/zls/dir11/zenglaoshi"
mkdir: 已创建目录 "/home/zls/dir12"
mkdir: 已创建目录 "/home/zls/dir12/zenglaoshi"
[root@db04 ~]# mkdir /home/{zls/{1,2},oldboyedu}
小练习: 使用一条命令创建出下面的目录 /home/zls /home/zls/test1 /home/zls/test2 /home/oldboy /home/oldboy/test1 /tmp/oldboy /tmp/oldgirl /root/test/test1 /root/test/test2 /root/abc /backup
创建文件touch |
---|
touch
: 创建文件
命令示例:
代码语言:javascript复制[root@db04 ~]# touch file
[root@db04 ~]# touch file1 file2
[root@db04 ~]# touch /home/zls/file3 file4
[root@db04 ~]# touch file{5,6,7}
[root@db04 ~]# touch file{10..100}
注意: 1.创建文件,必须要创建在一个存在的目录中 2.和创建目录不同的是,创建相同的文件不会报错 3.创建相同的文件,源文件内容不会被覆盖 4.在Linux当中一切皆文件
代码语言:javascript复制[root@db04 ~]# echo 123 > file1
[root@db04 ~]# cat file1
123
[root@db04 ~]# touch file1
[root@db04 ~]# cat file1
123
树状显示目录文件结构 |
---|
tree
: 以树状的形式,显示目录和文件
[root@db04 ~]# tree
[root@db04 ~]# tree /
[root@db04 ~]# tree /home
[root@db04 ~]# tree -L 1 /
[root@db04 ~]# tree -L 1 -d
复制命令cp |
---|
cp
: 复制 copy
语法:
代码语言:javascript复制SYNOPSIS
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
命令示例
代码语言:javascript复制[root@db04 ~]# cp file /home/zls
[root@db04 ~]# cp file1 /tmp/test1
[root@db04 ~]# cp -p file1 /tmp/
[root@db04 ~]# cp -r /etc/ /tmp/
[root@db04 ~]# cp -r /etc/* /tmp/
[root@db04 ~]# cp -v /etc/hosts /etc/sysconfig/network /opt/
"/etc/hosts" -> "/opt/hosts"
"/etc/sysconfig/network" -> "/opt/network"
[root@db04 ~]# cp /etc/{hosts,hosts.bak}
[root@db04 ~]# cp /etc/hosts{,.org}
[root@db04 ~]# cp -r file file1 file2 file3 /etc/ /opt/ /usr/local
[root@db04 ~]# cp -t /opt/ /etc/hosts
移动命令mv |
---|
mv
:移动 move
语法:
代码语言:javascript复制mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
命令示例:
代码语言:javascript复制[root@db04 ~]# mv file /tmp/
[root@db04 ~]# mv file1 test1
[root@db04 ~]# mv dir1 /tmp/
[root@db04 ~]# mv dir2 file4 file5 file6 /opt/ /usr/local/
[root@db04 ~]# mv /tmp/dir1 ./
[root@db04 ~]# mv /tmp/dir1 .
[root@db04 ~]# mv /tmp/dir2 ../
[root@db04 ~]# mv -t /tmp/ file1 file2 ./file3
删除命令rm |
---|
rm
:删除 remove
语法:
代码语言:javascript复制用法:rm [选项]... 文件...
删除 (unlink) 文件。
-f, --force 强制删除。忽略不存在的文件,不提示确认
-i 在删除前需要确认
-I 在删除超过三个文件或者递归删除前要求确认。此选项比-i 提
示内容更少,但同样可以阻止大多数错误发生
--interactive[=WHEN] 根据指定的WHEN 进行确认提示:never,once (-I),
或者always (-i)。如果此参数不加WHEN 则总是提示
--one-file-system 递归删除一个层级时,跳过所有不符合命令行参
数的文件系统上的文件
--no-preserve-roo 不特殊对待"/"
--preserve-root 不允许删除"/"(默认)
-r, -R, --recursive 递归删除目录及其内容
-v, --verbose 详细显示进行的步骤
--help 显示此帮助信息并退出
--version 显示版本信息并退出
命令示例:
代码语言:javascript复制[root@db04 ~]# rm file2
rm:是否删除普通空文件 "file2"?y
[root@db04 ~]# rm -f file3
[root@db04 ~]# rm -r /tmp/dir1/
rm:是否删除目录 "/tmp/dir1"?y
[root@db04 ~]# rm -fr dir3
[root@db04 ~]# rm -fr dir4
[root@db04 ~]# mkdir /home/dir
[root@db04 ~]# touch /home/dir/{file2,file3,.file4}
[root@db04 ~]# rm -rf /home/dir/*
[root@db04 ~]# ls /home/dir/ -a
. .. .file4
[root@db04 ~]# touch file{1..10}
[root@db04 ~]# touch {1..10}.pdf
[root@db04 ~]# rm -rf file*
[root@db04 ~]# rm -rf *.pdf
系统文件查看命令
查看命令cat |
---|
cat
:查看文件内容
语法:
代码语言:javascript复制用法:cat [选项]... [文件]...
将[文件]或标准输入组合输出到标准输出。
-A, --show-all 等于-vET
-b, --number-nonblank 对非空输出行编号
-e 等于-vE
-E, --show-ends 在每行结束处显示"$"
-n, --number 对输出的所有行编号
-t 与-vT 等价
-T, --show-tabs 将跳格字符显示为^I
-u (被忽略)
-v, --show-nonprinting 使用^ 和M- 引用,除了LFD和 TAB 之外
--help 显示此帮助信息并退出
--version 显示版本信息并退出
代码语言:javascript复制示例:cat /etc/passwd
示例:cat -n /etc/passwd //-n参数行号
示例:cat >> zls.txt <<EOF //追加数据
test
EOF
[root@db04 ~]# cat >> zls.txt << EOF
> 卧槽
> 作者:曾老湿
> 江山风景美如画,
> 本想吟诗赠天下。
> 奈何自己没文化,
> 一句卧槽风好大。
> 就这么地吧。
> 谢谢大家。
> EOF
[root@db04 ~]# cat zls.txt
卧槽
作者:曾老湿
江山风景美如画,
本想吟诗赠天下。
奈何自己没文化,
一句卧槽风好大。
就这么地吧。
谢谢大家。
示例:tac
查看命令more |
---|
[root@db04 ~]# more /etc/services
查看命令less |
---|
[root@db04 ~]# less /etc/services
查看命令head |
---|
head
:查看文件头部
[root@db04 ~]# head /etc/services
[root@db04 ~]# head -n 5 /etc/services
[root@db04 ~]# head -3 /etc/services
查看命令tail |
---|
tail
:查看文件尾部
[root@db04 ~]# tail /etc/services
[root@db04 ~]# tail -n 5 /etc/services
[root@db04 ~]# tail -5 /etc/services
[root@db04 ~]# tail -f /var/log/messages
[root@db04 ~]# tailf /var/log/messages
过滤文件内容grep |
---|
grep
:过滤
命令示例:
代码语言:javascript复制[root@db04 ~]# grep '风' zls
江山风景美如画,
一句卧槽风好大。
[root@db04 ~]# grep '^江山' zls
江山风景美如画,
[root@db04 ~]# grep '。$' zls
本想吟诗赠天下。
一句卧槽风好大。
就这么地吧。
谢谢大家。
[root@db04 ~]# grep ',$' zls
江山风景美如画,
奈何自己没文化,
[root@db04 ~]# grep '*' zls
[root@db04 ~]# grep '.*' zls
卧槽
作者:曾老湿
江山风景美如画,
本想吟诗赠天下。
奈何自己没文化,
一句卧槽风好大。
江风啦啦啦
就这么地吧。
谢谢大家。
[root@db04 ~]# grep -n '风' zls
3:江山风景美如画,
6:一句卧槽风好大。
[root@db04 ~]# grep -A 1 '风' zls
江山风景美如画,
本想吟诗赠天下。
--
一句卧槽风好大。
就这么地吧。
[root@db04 ~]# grep -nA 1 '风' zls
3:江山风景美如画,
4-本想吟诗赠天下。
--
6:一句卧槽风好大。
7-就这么地吧。
[root@db04 ~]# grep -nB 1 '风' zls
2-作者:曾老湿
3:江山风景美如画,
--
5-奈何自己没文化,
6:一句卧槽风好大。
[root@db04 ~]# grep -nC 1 '风' zls
2-作者:曾老湿
3:江山风景美如画,
4-本想吟诗赠天下。
5-奈何自己没文化,
6:一句卧槽风好大。
7-就这么地吧。
[root@db04 ~]# grep -v '风' zls
卧槽
作者:曾老湿
本想吟诗赠天下。
奈何自己没文化,
就这么地吧。
谢谢大家。
[root@db04 ~]# grep '风景|卧槽' zls
[root@db04 ~]# grep -E '风景|卧槽' zls
卧槽
江山风景美如画,
一句卧槽风好大。
[root@db04 ~]# vim alex.txt
alex is a dsb
ALEX is a DSB
[root@db04 ~]# grep 'alex' alex.txt
alex is a dsb
[root@db04 ~]# grep -i 'alex' alex.txt
alex is a dsb
ALEX is a DSB
文件上传下载命令
代码语言:javascript复制wget //文件下载
-O //指定下载地址,更改名称
-T //超时时间
-q //安静下载(关闭wget输出)
--spider //网络爬虫
示例:wget http://www.baidu.com
curl //文件下载
示例:curl -o http://www.baidu.com
yum install lrzsz
rz //文件上传
sz //文件下载
示例:sz filename
文件查找命令
代码语言:javascript复制locate //查找文件或者目录
示例:locate /etc/sh //搜索含有/etc/sh的目录或文件
[root@db04 ~]# locate /etc/sh
/etc/shadow
/etc/shadow-
/etc/shells
/usr/local/etc/shadow
/usr/local/etc/shadow-
/usr/local/etc/shells
示例:locate -i /etc/sh //忽略大小写
which //查找系统PATH变量目录下的命令(绝对路径)
[root@db04 ~]# which ls
alias ls='ls --color=auto'
/bin/ls
[root@db04 ~]# type -a ls
ls is aliased to `ls --color=auto'
ls is /bin/ls
[root@db04 ~]# which useradd
/usr/sbin/useradd
whereis //查找文件索引数据库下的命令、源文件、man文件。非PATH变量查找,所以查找的面比which要广 -b,-m
[root@db04 man1]# whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1 /usr/share/man/man1p/ls.1p.gz
[root@db04 man1]# whereis -b ls
ls: /bin/ls
字符处理命令
排序命令sort |
---|
在有些情况下,需要对一个无序的文本文件进行数据的排序, 这时就需要用到sort
进行排序了。
语法:
代码语言:javascript复制用法:sort [选项]... [文件]...
或:sort [选项]... --files0-from=F
命令示例:
代码语言:javascript复制[root@db04 ~]# cat >> sort.txt <<EOF
b:3
c:2
a:4
e:5
d:1
f:11
EOF
[root@db04 ~]# sort sort.txt
a:4
b:3
c:2
d:1
e:5
f:11
#可观察到, sort文件具有一个特点, 第一个字符是字母, 第三个字符是数字, 中间是用冒号隔开。
#这样我们可以使用-t指定分隔符, 使用-k指定用于排序的列了。
[root@db04 ~]# sort -t ':' -k 2 sort.txt
d:1
f:11 //为什么11在第二个???
c:2
b:3
a:4
e:5
#-n 按照数字顺序排序
[root@db04 ~]# sort -t ':' -k 2 -n sort.txt
d:1
c:2
b:3
a:4
e:5
f:11
#倒叙
[root@db04 ~]# sort -t ':' -k 2 -n -r sort.txt
f:11
e:5
a:4
b:3
c:2
d:1
#小练习
192.168.3.1 00:0F:AF:81:19:1F
192.168.3.2 00:0F:AF:85:6C:25
192.168.3.3 00:0F:AF:85:70:42
192.168.2.20 00:0F:AF:85:55:DE
192.168.2.21 00:0F:AF:85:6C:09
192.168.2.22 00:0F:AF:85:5C:41
192.168.0.151 00:0F:AF:85:6C:F6
192.168.0.152 00:0F:AF:83:1F:65
192.168.0.153 00:0F:AF:85:70:03
192.168.1.10 00:30:15:A2:3B:B6
192.168.1.11 00:30:15:A3:23:B7
192.168.1.12 00:30:15:A2:3A:A1
192.168.1.1 00:0F:AF:81:19:1F
192.168.2.2 00:0F:AF:85:6C:25
192.168.3.3 00:0F:AF:85:70:42
192.168.2.20 00:0F:AF:85:55:DE
192.168.1.21 00:0F:AF:85:6C:09
192.168.2.22 00:0F:AF:85:5C:41
192.168.0.151 00:0F:AF:85:6C:F6
192.168.1.152 00:0F:AF:83:1F:65
192.168.0.153 00:0F:AF:85:70:03
192.168.3.10 00:30:15:A2:3B:B6
192.168.1.11 00:30:15:A3:23:B7
192.168.3.12 00:30:15:A2:3A:A1
去重操作uniq |
---|
如果文件中有多行完全相同的内容, 当前是希望能删除重复的行,同时还可以统计出完全相同的行出现的总次数, 那么就可以使用uniq
命令解决这个问题(但是必须配合sort
使用)。
语法:
代码语言:javascript复制uniq [OPTION]... [INPUT [OUTPUT]]
命令示例:
代码语言:javascript复制[root@db04 ~]# cat >> uniq.txt <<EOF
abc
123
abc
123
EOF
[root@db04 ~]# uniq uniq.txt
abc
123
abc
123
[root@db04 ~]# sort uniq.txt
123
123
abc
abc
[root@db04 ~]# sort uniq.txt |uniq
123
abc
[root@db04 ~]# sort uniq.txt |uniq -c
2 123
2 abc
#小练习,统计nginx日志访问量,最高的IP前十个
截取命令cut |
---|
语法:
代码语言:javascript复制cut OPTION... [FILE]...
命令示例:
代码语言:javascript复制[root@db04 ~]# cat >> info.txt <<EOF
I'm zls,18 years old QQ 133411023
EOF
[root@db04 ~]# cut -d ' ' -f 2,6 info.txt
zls,18 133411023
[root@db04 ~]# cut -d ' ' -f 2,6 info.txt |cut -d ',' -f 1,2
zls,18 133411023
[root@db04 ~]# cut -d ' ' -f 2,6 info.txt |cut -c 1-3,8-16
zls133411023
注意:其实还有两个牛逼的命令可以处理 awk
(取列)和sed
(取行,替换)
统计命令wc |
---|
语法:
代码语言:javascript复制wc [OPTION]... [FILE]...
命令示例:
代码语言:javascript复制[root@db04 ~]# wc /etc/services
10774 58108 641020 /etc/services
#字节
[root@db04 ~]# wc -c /etc/services
641020 /etc/services
#单词
[root@db04 ~]# wc -w /etc/services
58108 /etc/services
#行数
[root@db04 ~]# wc -l /etc/services
10774 /etc/services
习题:
1.过滤出/etc/passwd以nologin结尾的内容,并统计行数 2.使用ifconfig命令获取当前的IP地址 3.将/etc/sysconfig/selinux文件中的SELINUX=enforcing替换为SELINUX=disabled 4.分析如下日志内容,每个域名被访问次数
代码语言:javascript复制[root@student tmp]# cat web.log
https://blog.driverzeng.com/index.html
https://blog.driverzeng.com/1.html
http://post.driverzeng.com/index.html
http://mp3.driverzeng.com/index.html
https://blog.driverzeng.com/3.html
http://post.driverzeng.com/2.html
5.用普通用户身份登陆虚拟机上完成练习 6.在用户家目录下创建6个文件 song1.mp3 ~ song6.mp3 7.把上题创建的songX.mp3文件移动到Music目录下(不存在则创建) 8.在用户家目录下创建三个目录,分别为 friends,family,work 9.切换到friends目录下,把Music目录下的song1.mp3 ~ song3.mp3 拷贝到当前目录 10.切换到family目录下,把Music目录下的song4.mp3 ~ song6.mp3 移动到当前目录 11.切换到用户主目录 12.删除family目录 13.切换到friends目录,把目录下的所有文件删除 14.切换到主目录,把friends目录删除.