文件系统的概述
文件系统的LHS
文件系统相关的命令
时间、开机、关机、登陆用户、终端、命令路径
文件管理
文件内容类型、元数据、内容查看、文本处理、文本编辑、字符串的显示
目录管理
pwd,cd,ls,cp,mv,mkdir,tree,rmdir
前言:
写这篇完之前,发现管道、引用、...都没有提出,这里居然在引用,定的什么靳羽西,所以下篇"谢烟客---------Linux之Bash基础特性"用于补全读懂此篇的基础,然而对于有基础的同学,可以忽略,....。
文件系统
一种逻辑上存储和组织数据的方式,文件系统使用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念
由索引和索引能够定位的编址方式组成
文本内容类型
ASCII
directory
symbolic
ELF
block
character
socket
sticky
文件的数据类型
数据(data):文件的内容
元数据(metadata):文件的属性信息
文本文件查看工具对数据操作时,都必须将数据从磁盘加载至内存中
文件名特性:
1、区分大小写. file1, File1, FILE1是不同的文件
2、不能使用特殊字符,/ 表示根
3、字符不能超过255个字符
[root@izpo45bh60h6bsz ~]# mkdir cjwRbtslPbQJdQSSEhXHyzdoNIrqUTsGQHObbNfOZyuFrhwKMZpsZFNmedOhWIclBdkWzcYzpaaDDUiRrbJepwPhrfoMACtADSvFpNKABxUIeCItFLiJZUYSpCbqVXxLzdUbhLOSkUeGnDCiIDINbCIwthNBcbWpWTJEyQOQFkeglwCeUkbYSKooIxdBsoGzMeMcvCOVzIRPKgVtckHWrIqwnlZHmTFpDOLHKISXPDJwZAAGzZeEYnyBHFtSMUPk mkdir: cannot create directory ‘cjwRbtslPbQJdQSSEhXHyzdoNIrqUTsGQHObbNfOZyuFrhwKMZpsZFNmedOhWIclBdkWzcYzpaaDDUiRrbJepwPhrfoMACtADSvFpNKABxUIeCItFLiJZUYSpCbqVXxLzdUbhLOSkUeGnDCiIDINbCIwthNBcbWpWTJEyQOQFkeglwCeUkbYSKooIxdBsoGzMeMcvCOVzIRPKgVtckHWrIqwnlZHmTFpDOLHKISXPDJwZAAGzZeEYnyBHFtSMUPk’: File name too long
4、以.开头的文件,均为隐藏文件
路径
绝对路径:从根目录起始的路径
对路径:从当前位置起始的路径
工作目录:当前目录
当前位置:用 . 号表示
上一级目录:用 .. 号表示
LSB (Linux Standard Base) Linux的标准规范
LSB组织定义了Linux发行版必须遵循的规则,FHS (filesystem heirarchy structure)
参考网址: http://www.geeksforgeeks.org/linux-file-hierarchy-structure/
/boot: 引导加载程序文件,例如,内核,initrd,grub
[root@localhost ~]# ls /boot config-2.6.32-696.el6.i686 grub lost+found System.map-2.6.32-696.el6.i686 efi initramfs-2.6.32-696.el6.i686.img symvers-2.6.32-696.el6.i686.gz vmlinuz-2.6.32-696.el6.i686
/bin: 供所有普通用户使用的基本命令,系统启动即会用到的命令。
[root@localhost ~]# ls /bin alsaunmute cp dbus-send ed gettext kbd_mode mail nano raw sed tar umount zcat
/sbin: 管理类的基本命令,系统启动即会用到的命令。
[root@localhost ~]# ls /sbin accton ctrlaltdel fsck.cramfs installkernel logsave mingetty plymouthd service umount.hal
/lib: 基本的共享库及内核模块文件(/lib/modules); 启动过程中的程序依赖的库。
[root@localhost ~]# ls -ld /lib/modules/ dr-xr-xr-x. 3 root root 4096 Jul 18 13:06 /lib/modules/
/etc: 配置文件目录(纯文本文件)
opt 为安装在/opt下的第三方软件提供配置
[root@localhost ~]# ls -ld /etc/opt drwxr-xr-x. 2 root root 4096 Sep 23 2011 /etc/opt
X11 为x protocol(gnome,kde的图形显示基础),提供配置
[root@localhost ~]# ls /etc/X11/ # x protocol,x manager, x program(gnome,kde,xfce) applnk fontpath.d prefdm
sgml 为sgml标记语言
xml 为xml标记语言
/home/USERNAME: 普通用户家目录 用户的家目录为与用户名同名的目录
[root@localhost ~]# ls /home jerry lost+found tom
/root: 管理员的家目录; 有些发行版没有/root目录,因为管理员权限过大,不应该登陆系统(sudo)
/media: 便携性移动设备挂载点
cdrom: 挂载光盘
usb: 挂载U盘
/mnt: 临时文件系统挂载点
/dev: 特殊文件和设备文件存放目录
特殊文件:软件模拟的设备,/dev/zero,/dev/null
设备文件
块设备: block device 随机访问
brw-rw---- 1 root disk 8, 0 Jul 18 22:19 sda
字符设备: character device 线性访问:时序性
crw-rw-rw- 1 root root 1, 5 Jul 18 13:19 zero
通常用于独立分区的目录:/boot,/home,/usr,/var
/usr: universal shared read only data,全局共享"只读"数据
[root@izpo45bh60h6bsz usr]# ls -l total 124 dr-xr-xr-x. 2 root root 36864 Jul 28 15:44 bin drwxr-xr-x. 2 root root 4096 Aug 12 2015 etc drwxr-xr-x. 2 root root 4096 Aug 12 2015 games drwxr-xr-x. 46 root root 4096 Jun 14 16:17 include dr-xr-xr-x. 34 root root 4096 Jun 22 10:09 lib dr-xr-xr-x. 59 root root 36864 Jul 28 15:44 lib64 drwxr-xr-x. 25 root root 4096 Jul 9 19:01 libexec drwxr-xr-x. 14 root root 4096 May 15 22:08 local dr-xr-xr-x. 2 root root 20480 Jul 9 19:01 sbin drwxr-xr-x. 109 root root 4096 Jul 28 15:44 share drwxr-xr-x. 4 root root 4096 Feb 24 10:58 src lrwxrwxrwx. 1 root root 10 Feb 24 10:58 tmp -> ../var/tmp
bin:所有用户使用,保证系统拥有完整功能提供的应用程序,配置文件/etc
sbin:管理员使用,保证系统拥有完整功能提供的应用程序,配置文件/etc
lib: 为/usr/bin,/usr/sbin提供库
lib64: 专用于x86_64位系统上
include: C程序的头文件(header files), 描述库文件的调用方式
share: 结构化独立的数据
man
doc
桌面的背景图片
src: 手动编译源码时,源码的存放路径
local:本地层级结构,取代opt的第三方应用程序的安装位置
/var: 可变数据文件
cache: 应用程序缓存数据目录,varnish,memcache
lib: 应用程序的状态信息
local: 为/usr/local下的第三方程序存储可变数据
lock: 应用程序的锁文件
log: 日志目录及文件
opt: 专用于/opt下的第三方程序存储可变数据
run: 与运行中的进程相关的数据,通常用于存放进程的pid文件
spool: 应用程序的缓冲池
tmp: 保存系统再次重启之间产生的临时数据
mail: 邮箱
文件系统相关的命令
命令:
首先如何获取命令使用方法:
由前面所讲:不同的命令类型,获取帮助的方法各有不同,
1)获取命令的类型
2)依据前面所讲的方法获取文件的帮助
3)时间命令的格式
4)时间命令的语法
时间相关的命令
系统时间和硬件时间和网络时间服务器的区别:
1)系统时钟:由石英晶体驱动,每秒振动几百万次,并且这个速度永远不会改变,通过这个振动记录处理器操作的时间。
2)硬件时钟:主板上由电池供电的那个主板硬件时钟,这个时钟可以在BIOS的“Standard BIOS Feture”项中进行设置。
3)网络时间服务器:一种小型的、可独立工作的基于NTP/SNTP协议的时间服务器,可以从GPS地球卫星上获取标准时钟信号信息,将这些信息在网络中传输。
date命令
[root@izpo45bh60h6bsz ~]# type date date is /usr/bin/date #外部命令 [root@izpo45bh60h6bsz ~]# date --help Usage: date [OPTION]... [+FORMAT] or: date [MMDDhhmm[[CC]YY][.ss]] Display the current time in the given FORMAT, or set the system date. ..... FORMAT controls the output. Interpreted sequences are: %a locale's abbreviated weekday name (e.g., Sun) %A locale's full weekday name (e.g., Sunday) %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005) %D date; same as %m/%d/%y %F full date; same as %Y-%m-%d、 %T time; same as %H:%M:%S %Y year %m month (01..12) %d day of month (e.g., 01) %H hour (00..23) %M minute (00..59) %S second (00..60) %s seconds since 1970-01-01 00:00:00 UTC
使用示例:
查看系统时间:
[root@izpo45bh60h6bsz ~]# date Sat Jul 29 09:14:48 CST 2017 [root@izpo45bh60h6bsz ~]# date +"%Y %m %d %H %M %S %s" 2017 07 29 09 15 27 1501290927
设定系统时间:
[root@izpo45bh60h6bsz ~]# date 0101120016.30 Fri Jan 1 12:00:30 CST 2016 [root@izpo45bh60h6bsz ~]# date Fri Jan 1 12:00:33 CST 2016
hwclock命令
[root@izpo45bh60h6bsz ~]# type hwclock hwclock is /usr/sbin/hwclock [root@izpo45bh60h6bsz ~]# hwclock --help Usage: hwclock [function] [option...] Functions: -s, --hctosys set the system time from the hardware clock -w, --systohc set the hardware clock from the current system time
使用示例:
查看硬件时间
[root@izpo45bh60h6bsz ~]# hwclock Sat 29 Jul 2017 09:20:16 AM CST -0.850814 seconds
将系统时间同步到硬件时间
[root@izpo45bh60h6bsz ~]# date Fri Jan 1 12:03:56 CST 2016 [root@izpo45bh60h6bsz ~]# hwclock -w [root@izpo45bh60h6bsz ~]# hwclock Fri 01 Jan 2016 12:04:46 PM CST -0.302054 seconds
将硬件时间同步到系统时间
[root@izpo45bh60h6bsz ~]# date Thu Jan 1 10:00:31 CST 2015 [root@izpo45bh60h6bsz ~]# hwclock Fri 01 Jan 2016 12:05:22 PM CST -0.268483 seconds [root@izpo45bh60h6bsz ~]# hwclock -s [root@izpo45bh60h6bsz ~]# hwclock Fri 01 Jan 2016 12:05:35 PM CST -0.229454 seconds
cal命令
[root@izpo45bh60h6bsz ~]# type cal cal is /usr/bin/cal [root@izpo45bh60h6bsz ~]# cal --help Usage: cal [[[day] month] year]
使用示例:
[root@izpo45bh60h6bsz ~]# cal 1 6 1990 June 1990 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
开机、关机
halt,poweroff,reboot和shutdown命令的区别
shutdown命令是一种较为安全的关机或重启方式,在关机前,可以提醒别的终端用户,并自动将内存中的数据写入磁盘中。
halt,poweroff,reboot用法
halt,poweroff,reboot -f,force 意味着不在调用shutdown安全关机或重启,它们都默认调用shutdown命令完成关机或重启 -p 关机后,断掉电源
shutdown用法
shutdown [OPTIONS...] TIME [MESSAGE] -h: halt,关机后切断电源 -r: reboot,关机不切断电源,重启 -c: cancel, 取消关机或重启操作 TIME: now:立刻 +m:从命令提交开始,向后多少分钟 hh:mm: 绝对时间表示法,明确指明具体时间
登陆用户、终端、命令路径
who,whoami,w,whereis,which,whatis,mkwhatis,tty
whoami 显示当前登陆的有效用户 who 显示系统当前所有的登陆会话:用户、时间、关联的终端、主机 w 显示系统当前所有的登陆会话及所做的操 which 显示命令对应的程序文件路径 --skip-alias 禁止显示别名 whereis 定位二进制,源文件,手册页的路径 whatis 从whatis的数据库搜索命令的帮助手册路径 mkwhatis:当前系统上所有的帮助手册及与之对应关键字创建为一个数据库 tty 显示当前终端的文件名
文件管理类命令
文件内容类型、元数据、内容查看、文本处理、文本编辑、字符串的显示
文件内容类型显示,file命令
[root@izpo45bh60h6bsz ~]# file /lib64/libgpgme.so.11.8.1 /lib64/libgpgme.so.11.8.1: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=fb5883bd42777a17af017e4b9cbf58cc1ea22693, stripped
文件的元数据,stat,touch命令
stat命令
[root@izpo45bh60h6bsz ~]# type stat stat is /usr/bin/stat [root@izpo45bh60h6bsz ~]# stat --help Usage: stat [OPTION]... FILE... 显示文件当前的状态 File: ‘文件名’ Size: 文件的大小(bytes) Blocks: 数据块 IO Block: IO块 文件类型 Device: fd01h/64769 Inode: Inode号码 Links: 硬链接次数 Access: (文件的权限) Uid: (属主及UID) Gid: (基本组及ID) Access: 文件最近一次访问的时间 Modify: 文件最近一次修改的时间 Change: 文件最近一次元数据改变的时间 Birth: -
touch命令
[root@izpo45bh60h6bsz ~]# type touch touch is /usr/bin/touch [root@izpo45bh60h6bsz ~]# touch --help Usage: touch [OPTION]... FILE... -c, --no-create 文件存在时,改变所有文件的元数据 -a 只改变最近一次访问的时间,但访问时间的改变会引起元数据的改变 -m 只改变最近一次修改的时间,但访问时间的改变会引起元数据的改变 -t STAMP 使用[[CC]YY]MMDDhhmm[.ss] 代替当前的时间,不会引起元数据的改变
文件查看工具:cat,tac,more,less,tail,head命令
cat命令
[root@izpo45bh60h6bsz ~]# type cat cat is /usr/bin/cat [root@izpo45bh60h6bsz ~]# cat --help Usage: cat [OPTION]... [FILE]... 连接文件输出至标准输出 -n, --number 为显示的行编号,并非改变文本内容 -E, --show-ends 显示行结束符
连接文件: [root@izpo45bh60h6bsz ~]# file /etc/fstab /etc/fstab: ASCII text [root@izpo45bh60h6bsz ~]# file /etc/issue /etc/issue: ASCII text [root@izpo45bh60h6bsz ~]# cat /etc/fstab /etc/issue # # /etc/fstab # Created by anaconda on Fri Feb 24 02:58:22 2017 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=07151862-c2b9-45dc-bf7a-af8d2a6fa6c1 / ext3 defaults 1 1 \S Kernel \r on an \m
[root@izpo45bh60h6bsz ~]# cat -nE /etc/fstab 1 $ 2 #$ 3 # /etc/fstab$ 4 # Created by anaconda on Fri Feb 24 02:58:22 2017$ 5 #$ 6 # Accessible filesystems, by reference, are maintained under '/dev/disk'$ 7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info$ 8 #$ 9 UUID=07151862-c2b9-45dc-bf7a-af8d2a6fa6c1 / ext3 defaults 1 1$
tac命令 同cat用法,反向显示
[root@izpo45bh60h6bsz ~]# tac /etc/fstab UUID=07151862-c2b9-45dc-bf7a-af8d2a6fa6c1 / ext3 defaults 1 1 # # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # Accessible filesystems, by reference, are maintained under '/dev/disk' # # Created by anaconda on Fri Feb 24 02:58:22 2017 # /etc/fstab #
more命令
[root@izpo45bh60h6bsz ~]# type more more is /usr/bin/more [root@izpo45bh60h6bsz ~]# more --help more: unknown option -help Usage: more [options] file... Options: -d display help
less命令
[root@izpo45bh60h6bsz ~]# type less less is /usr/bin/less [root@izpo45bh60h6bsz ~]# less --help 同man的使用
tail命令
[root@izpo45bh60h6bsz ~]# type tail tail is /usr/bin/tail [root@izpo45bh60h6bsz ~]# tail --help Usage: tail [OPTION]... [FILE]... Print the last 10 lines of each FILE to standard output. -c, --bytes=K 显示文件后K个字节 -f, --follow[={name|descriptor}] 显示文件后10行,不退出等待追加内容 -n, --lines=K 显示文件后K行
使用示例
1)默认显示后10行
[root@izpo45bh60h6bsz ~]# tail /etc/fstab # # /etc/fstab # Created by anaconda on Fri Feb 24 02:58:22 2017 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=07151862-c2b9-45dc-bf7a-af8d2a6fa6c1 / ext3 defaults 1 1
2)显示 后10个字节
[root@izpo45bh60h6bsz ~]# tail -c 10 /etc/fstab 1 1
3)显示后1行
[root@izpo45bh60h6bsz ~]# tail -n 1 /etc/fstab UUID=07151862-c2b9-45dc-bf7a-af8d2a6fa6c1 / ext3 defaults 1 1
3)显示后,不退出,等待追加内容
head命令
[root@izpo45bh60h6bsz ~]# type head head is /usr/bin/head [root@izpo45bh60h6bsz ~]# head --h Usage: head [OPTION]... [FILE]... Print the first 10 lines of each FILE to standard output. -c, --bytes=K 显示文件前K个字节 -n, --lines=K 显示文件前K行
使用示例
1)默认显示前10行
[root@izpo45bh60h6bsz ~]# head /etc/init.d/functions # -*-Shell-script-*- # # functions This file contains functions to be used by most or all # shell scripts in the /etc/init.d directory. # TEXTDOMAIN=initscripts # Make sure umask is sane umask 022
2)显示文件前K个字节
[root@izpo45bh60h6bsz ~]# head -c 100 /etc/init.d/functions # -*-Shell-script-*- # # functions This file contains functions to be used by most or all # shell s[root@izpo45bh60h6bsz ~]#
3)显示文件前K行
[root@izpo45bh60h6bsz ~]# head -n 2 /etc/init.d/functions # -*-Shell-script-*- #
文本处理命令,wc,cut,sort,uniq,tr
wc命令
[root@izpo45bh60h6bsz ~]# type wc wc is /usr/bin/wc [root@izpo45bh60h6bsz ~]# wc --h Usage: wc [OPTION]... [FILE]... 统计指定行的行数、单词数、字节数 -l, --lines 仅显示行数 -w, --words 仅显示单词数 -c, --bytes 仅显示字节数
使用示例
1)统计指定文件的行数、单词数、字节数
[root@izpo45bh60h6bsz ~]# wc /etc/fstab 9 42 313 /etc/fstab
2)行数显示
[root@izpo45bh60h6bsz ~]# wc -l /etc/fstab 9 /etc/fstab
3)单词数显示
[root@izpo45bh60h6bsz ~]# wc -w /etc/fstab 42 /etc/fstab
4)字节数显示
[root@izpo45bh60h6bsz ~]# wc -c /etc/fstab 313 /etc/fstab
5)注意如果不显示后面的文件可用管道命令
[root@izpo45bh60h6bsz ~]# cat /etc/fstab | wc -l 9 [root@izpo45bh60h6bsz ~]# cat /etc/fstab | wc -w 42 [root@izpo45bh60h6bsz ~]# cat /etc/fstab | wc -c 313
cut命令
[root@izpo45bh60h6bsz ~]# type cut cut is /usr/bin/cut [root@izpo45bh60h6bsz ~]# cut --h Usage: cut OPTION... [FILE]... Print selected parts of lines from each FILE to standard output. -d, --delimiter=DELIM 用DELIM指定字段分隔符,默认为空白 -f, --fields=LIST 显示字段的列表 A A-B A-B,C --output-delimiter=STRING 用STRING指明输出字段分隔符,不给出时,默认为输入分隔符
使用示例
1)从标准输出挑选行的部分字段
[root@izpo45bh60h6bsz ~]# cut -d':' -f1-3,5 /etc/passwd root:x:0:root bin:x:1:bin .....
2)输出分隔符给定,缺省为空白
[root@izpo45bh60h6bsz ~]# cut -d':' -f1-3,5 --output-delimiter=' ' /etc/passwd root x 0 root bin x 1 bin daemon x 2 daemon adm x 3 adm lp x 4 lp sync x 5 sync ....
sort命令
[root@izpo45bh60h6bsz ~]# type sort sort is /usr/bin/sort [root@izpo45bh60h6bsz ~]# sort --h sort: option '--h' is ambiguous; possibilities: '--human-numeric-sort' '--help' Try 'sort --help' for more information. [root@izpo45bh60h6bsz ~]# sort --help Usage: sort [OPTION]... [FILE]... Write sorted concatenation of all FILE(s) to standard output. -r: 逆序排列 -f: 忽略字符的大小写 -n: 以数值大小排序 -t'分隔符' -kFILEDS 以指定字段为标准排序 -u: 先排序,后去重。uniq唯一的,去重的,连续且相同,只保留一个. 注意:默认排序,依据ASCII码表排序
使用示例
1)默认比较每一行的第一个字母,按照字符在ASCII码表中以字符排列
[root@izpo45bh60h6bsz ~]# cat a.txt #原文件内容 11 1 0 3 34 12 16 18 22 23 90 28 [root@izpo45bh60h6bsz ~]# sort a.txt #排序后的结果 0 1 11 12 16 18 22 23 28 3 34 90
2)以数值大小排序
[root@izpo45bh60h6bsz ~]# sort -n a.txt 0 1 3 11 12 16 18 22 23 28 34 90
3)逆序排列
[root@izpo45bh60h6bsz ~]# sort -r a.txt #以ASCII码表,逆序 90 34 3 28 23 22 18 16 12 11 1 0 [root@izpo45bh60h6bsz ~]# sort -r -n a.txt #以数值排序,逆序 90 34 28 23 22 18 16 12 11 3 1 0
4)忽略字符的大小写
[root@izpo45bh60h6bsz ~]# sort b.txt a A b B c C [root@izpo45bh60h6bsz ~]# sort -f b.txt A a B b C c
5)-t,-k使用,以字段分隔符分隔,仅对某字段排列
[root@izpo45bh60h6bsz ~]# cat b.txt a 1 b c c 3 b c d 10 c e o 110 d f l 2 f s E 99 A D A 77 D 1 SD 45 DF DF ASDFDF 66 AD OOO [root@izpo45bh60h6bsz ~]# sort -t' ' -k2 b.txt #以ASCII码排序第二个字段 d 10 c e o 110 d f a 1 b c l 2 f s c 3 b c SD 45 DF DF ASDFDF 66 AD OOO A 77 D 1 E 99 A D [root@izpo45bh60h6bsz ~]# sort -n -t' ' -k2 b.txt #以数值排序第二个字段 a 1 b c l 2 f s c 3 b c d 10 c e SD 45 DF DF ASDFDF 66 AD OOO A 77 D 1 E 99 A D o 110 d f
6)排序后去重。
[root@izpo45bh60h6bsz ~]# sort a.txt 11 11 11 11 [root@izpo45bh60h6bsz ~]# sort -u a.txt 11
uniq命令
uniq 命令: 去重的, 重复:“连续且完全相同方为重复” uniq [OPTIONS...] FILE -c: count 统计每一行重复的次数 -d: 仅显示重复出现的行,至少2次。 -u: 仅显示未曾重复的行
1)去重
[root@izpo45bh60h6bsz ~]# cat d.txt #不连续 whatis whatis whereis whereis which which which whereis which which who which who which who yum who yum which yum [root@izpo45bh60h6bsz ~]# sort d.txt #经过排序,使之连续 whatis whatis whereis whereis whereis which which which which which which which which who who who who yum yum yum [root@izpo45bh60h6bsz ~]# sort d.txt | uniq #去重 whatis whereis which who yum
2) 统计每一行重复的次数
[root@izpo45bh60h6bsz ~]# sort d.txt | uniq -c 1 2 whatis 3 whereis 8 which 4 who 3 yum
3) 仅显示重复出现的行,至少2次。
[root@izpo45bh60h6bsz ~]# sort d.txt | uniq -c 1 2 whatis 3 whereis 8 which 4 who 3 yum [root@izpo45bh60h6bsz ~]# sort d.txt | uniq -d whatis whereis which who yum
4)显示不重复的行
[root@izpo45bh60h6bsz ~]# sort d.txt | uniq -u
tr命令
[root@izpo45bh60h6bsz ~]# type tr tr is /usr/bin/tr [root@izpo45bh60h6bsz ~]# tr --help tr命令:转换或删除字符 tr [OPTIONS...] SET1 [SET2] 将SET1,SET2进行对位转换 -d 删除指定字符 tr -d 'SET1' -dc 保留指定字符 tr -dc 'SET1' -s 去重 tr -s 'SET1'
1)转换,SET1,SET2进行对位转换
[root@izpo45bh60h6bsz ~]# tr 'abc' 'CBA' abc CBA CBA CBA
2)删除指定字符
[root@izpo45bh60h6bsz ~]# tr -d 'a' a pig pig bar br case cse
2)保留指定字符
[root@izpo45bh60h6bsz ~]# echo 'abccd' | tr -dc 'c' cc
3)去重
[root@izpo45bh60h6bsz ~]# echo 'aaaaabbbbbbbbbccccccdddd' | tr -s 'bcda' abcd
文本编辑命令,nano
^G Get Help ^O WriteOut 保存 ^R Read File ^Y Prev Page ^K Cut Text 剪切 ^C Cur Pos ^X Exit 退出 ^J Justify ^W Where Is 搜索 ^V Next Page ^U UnCut Text
字符串的显示命令,echo,printf
[root@izpo45bh60h6bsz ~]# type echo echo is a shell builtin [root@izpo45bh60h6bsz ~]# help echo echo: echo [-neE] [arg ...] Write arguments to the standard output. -n 不追加新街 -e 让逃逸符生效 \b backspace \n new line \t horizontal tab \v vertical tab
使用示例:
1)不换行
[root@izpo45bh60h6bsz ~]# echo "hello" hello [root@izpo45bh60h6bsz ~]# echo -n "hello" hello[root@izpo45bh60h6bsz ~]# [root@izpo45bh60h6bsz ~]# printf "hello" hello[root@izpo45bh60h6bsz ~]# printf "hello\n" hello
2)转义符
[root@izpo45bh60h6bsz ~]# echo -e 'helloworld' helloworld [root@izpo45bh60h6bsz ~]# echo -e 'hello\tworld' #打印横向制表符 hello world [root@izpo45bh60h6bsz ~]# echo -e 'hello\vworld' #打印垂直制表符 hello world [root@izpo45bh60h6bsz ~]# echo -e 'hello\bworld' #退格键 hellworld [root@izpo45bh60h6bsz ~]# echo -e 'hello\nworld' #换行 hello world
目录管理命令:pwd,cd,ls,mkdir,rmdir,mv,cp
pwd命令
[root@izpo45bh60h6bsz ~]# type pwd pwd is a shell builtin [root@izpo45bh60h6bsz ~]# help pwd pwd: pwd Print the name of the current working directory. 显示当前目录的名字
使用示例:
[root@izpo45bh60h6bsz ~]# pwd /root [root@izpo45bh60h6bsz ~]# cd /etc [root@izpo45bh60h6bsz etc]# pwd /etc
cd命令
[root@izpo45bh60h6bsz etc]# type cd cd is a shell builtin [root@izpo45bh60h6bsz etc]# help cd cd: cd [dir] Change the shell working directory.
使用示例:
[root@izpo45bh60h6bsz ~]# pwd #当前目录 /root [root@izpo45bh60h6bsz ~]# cd ~tom #切换至tom用户 [root@izpo45bh60h6bsz tom]# pwd #当前目录为tom的家目录 /home/tom [root@izpo45bh60h6bsz tom]# cd ~ #切换至当前用户的家目录 [root@izpo45bh60h6bsz ~]# pwd #当前目录为root的家目录 /root [root@izpo45bh60h6bsz ~]# cd /etc #切换至/etc/目录 [root@izpo45bh60h6bsz etc]# pwd #当前目录为/etc目录 /etc [root@izpo45bh60h6bsz /]# cd /etc/sysconfig/network-scripts/ #切换至指定目录 [root@izpo45bh60h6bsz network-scripts]# pwd /etc/sysconfig/network-scripts [root@izpo45bh60h6bsz network-scripts]# cd . #切换为当前目录 [root@izpo45bh60h6bsz network-scripts]# pwd /etc/sysconfig/network-scripts [root@izpo45bh60h6bsz network-scripts]# cd .. #切换为上一级目录 [root@izpo45bh60h6bsz sysconfig]# pwd /etc/sysconfig [root@izpo45bh60h6bsz sysconfig]# cd - #切换为上次所在的目录 /etc/sysconfig/network-scripts [root@izpo45bh60h6bsz network-scripts]# pwd /etc/sysconfig/network-scripts [root@izpo45bh60h6bsz network-scripts]# cd - /etc/sysconfig [root@izpo45bh60h6bsz sysconfig]# pwd /etc/sysconfig [root@izpo45bh60h6bsz sysconfig]# cd #切换为当前登陆用户的家目录 [root@izpo45bh60h6bsz ~]# pwd /root
ls命令
[root@izpo45bh60h6bsz ~]# type ls ls is aliased to `ls --color=auto' [root@izpo45bh60h6bsz ~]# ls --help Usage: ls [OPTION]... [FILE]... Mandatory arguments to long options are mandatory for short options too. -a, --all do not ignore entries starting with . -A, --almost-all do not list implied . and .. -d, --directory list directories themselves, not their contents -h, --human-readable with -l, print sizes in human readable format -l use a long listing format -i, --inode print the index number of each file -r, --reverse reverse order while sorting -R, --recursive list subdirectories recursively -Z, --context Display security context so it fits on most
示例:
1)显示所有文件,包括隐藏文件
[root@izpo45bh60h6bsz tmp]# ls a b c d e f fe s [root@izpo45bh60h6bsz tmp]# ls -a . .. a b c d e .ea f fe .font-unix .ICE-unix s .Test-unix .X11-unix .XIM-unix
2)显示所有文件,包括隐藏文件,除了. ..
[root@izpo45bh60h6bsz tmp]# ls -A a b c d e .ea f fe .font-unix .ICE-unix s .Test-unix .X11-unix .XIM-unix
3)详细信息
[root@izpo45bh60h6bsz tmp]# ls -l total 24 -rw-r--r-- 1 root root 313 Jan 1 14:35 fstab -rw-r--r-- 1 root root 13948 Jan 1 14:36 functions -rw-r--r-- 1 root root 23 Jan 1 14:35 issue
4)人类易懂
[root@izpo45bh60h6bsz tmp]# ls -lh total 24K -rw-r--r-- 1 root root 313 Jan 1 14:35 fstab -rw-r--r-- 1 root root 14K Jan 1 14:36 functions -rw-r--r-- 1 root root 23 Jan 1 14:35 issue
5)只显示目录
[root@izpo45bh60h6bsz tmp]# ls -d . [root@izpo45bh60h6bsz tmp]# ls -dl drwxrwxrwt. 7 root root 4096 Jan 1 14:36 .
6)显示inode号
[root@izpo45bh60h6bsz tmp]# ls -i 819202 a 819208 b 819209 c 819210 d 819211 e 819212 f 819217 fe 819219 fstab 819221 functions 819220 issue 819218 s [root@izpo45bh60h6bsz tmp]# ls -il total 24 819219 -rw-r--r-- 1 root root 313 Jan 1 14:35 fstab 819221 -rw-r--r-- 1 root root 13948 Jan 1 14:36 functions
7)显示安全上下文
[root@izpo45bh60h6bsz tmp]# ls -Zl total 24 -rw-r--r-- 1 ? root root 313 Jan 1 14:35 fstab -rw-r--r-- 1 ? root root 13948 Jan 1 14:36 functions -rw-r--r-- 1 ? root root 23 Jan 1 14:35 issue
8)逆序显示
[root@izpo45bh60h6bsz tmp]# ls #ASCII码 a b c d e f fe fstab functions issue s [root@izpo45bh60h6bsz tmp]# ls -r #逆序 s issue functions fstab fe f e d c b a
10)递归
[root@izpo45bh60h6bsz tmp]# ls -R .: fstab functions issue
mkdir命令
[root@izpo45bh60h6bsz ~]# type mkdir mkdir is /usr/bin/mkdir [root@izpo45bh60h6bsz ~]# mkdir --help Usage: mkdir [OPTION]... DIRECTORY... Create the DIRECTORY(ies), if they do not already exist. -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
1)创建目录,指定权限
[root@izpo45bh60h6bsz tmp]# mkdir test1 [root@izpo45bh60h6bsz tmp]# mkdir -m 000 test2 [root@izpo45bh60h6bsz tmp]# ls -l total 8 drwxr-xr-x 2 root root 4096 Jan 1 14:42 test1 d--------- 2 root root 4096 Jan 1 14:43 test2
2)创建目录,如果父目录不存在,自动创建
[root@izpo45bh60h6bsz tmp]# mkdir a/b/c mkdir: cannot create directory ‘a/b/c’: No such file or directory [root@izpo45bh60h6bsz tmp]# mkdir -p a/b/c [root@izpo45bh60h6bsz tmp]# tree a a └── b └── c 2 directories, 0 files
3)创建目录,显示创建的过程
[root@izpo45bh60h6bsz tmp]# mkdir -pv b/c/a/d/e mkdir: created directory ‘b’ mkdir: created directory ‘b/c’ mkdir: created directory ‘b/c/a’ mkdir: created directory ‘b/c/a/d’ mkdir: created directory ‘b/c/a/d/e’ [root@izpo45bh60h6bsz tmp]# tree b b └── c └── a └── d └── e 4 directories, 0 files
rmdir命令
[root@izpo45bh60h6bsz tmp]# type rmdir rmdir is /usr/bin/rmdir [root@izpo45bh60h6bsz tmp]# rmdir --h Usage: rmdir [OPTION]... DIRECTORY... Remove the DIRECTORY(ies), if they are empty. -p, --parents remove DIRECTORY and its ancestors; e.g., 'rmdir -p a/b/c' is similar to 'rmdir a/b/c a/b a' -v, --verbose output a diagnostic for every directory processed
1)如果删除当前空目录后,父目在为空,则递归删除
[root@izpo45bh60h6bsz tmp]# rmdir -p a/b/c [root@izpo45bh60h6bsz tmp]# ls b test1 test2
2)显示删除的过程
[root@izpo45bh60h6bsz tmp]# rmdir -pv b/c/a/d/e rmdir: removing directory, ‘b/c/a/d/e’ rmdir: removing directory, ‘b/c/a/d’ rmdir: removing directory, ‘b/c/a’ rmdir: removing directory, ‘b/c’ rmdir: removing directory, ‘b’ [root@izpo45bh60h6bsz tmp]# ls test1 test2
mv命令
[root@izpo45bh60h6bsz tmp]# type mv mv is aliased to `mv -i' [root@izpo45bh60h6bsz tmp]# mv --h Usage: mv [OPTION]... [-T] SOURCE DEST or: mv [OPTION]... SOURCE... DIRECTORY or: mv [OPTION]... -t DIRECTORY SOURCE... -f, --force do not prompt before overwriting -i, --interactive prompt before overwrite
使用示例:
1)单源文件,目标不存在:重命名文件
[root@izpo45bh60h6bsz tmp]# file /tmp/fstab /tmp/fstab: ASCII text [root@izpo45bh60h6bsz tmp]# ls /tmp/abc ls: cannot access /tmp/abc: No such file or directory [root@izpo45bh60h6bsz tmp]# mv /tmp/fstab /tmp/abc [root@izpo45bh60h6bsz tmp]# ls /tmp/ abc test1 test2
2)单源目录,目标不存在:重命令目录
[root@izpo45bh60h6bsz tmp]# file /tmp/test1 /tmp/test1: directory [root@izpo45bh60h6bsz tmp]# ls /tmp/test3 ls: cannot access /tmp/test3: No such file or directory [root@izpo45bh60h6bsz tmp]# mv /tmp/test1 /tmp/test3 [root@izpo45bh60h6bsz tmp]# ls /tmp/ abc test2 test3
3)单源文件,目录存在为目录或文件
[root@izpo45bh60h6bsz tmp]# cat abc #第一个文件 # # /etc/fstab # Created by anaconda on Fri Feb 24 02:58:22 2017 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=07151862-c2b9-45dc-bf7a-af8d2a6fa6c1 / ext3 defaults 1 1 [root@izpo45bh60h6bsz tmp]# cat b #第二个文件 1 [root@izpo45bh60h6bsz tmp]# mv abc b #文件存在时,提示是否覆盖 mv: overwrite ‘b’? y [root@izpo45bh60h6bsz tmp]# ls #覆盖后,原文件消失 b test2 test3 [root@izpo45bh60h6bsz tmp]# cat b #目标文件的内容为原文件的内容 # # /etc/fstab # Created by anaconda on Fri Feb 24 02:58:22 2017 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=07151862-c2b9-45dc-bf7a-af8d2a6fa6c1 / ext3 defaults [root@izpo45bh60h6bsz tmp]# cat b #文件b # # /etc/fstab # Created by anaconda on Fri Feb 24 02:58:22 2017 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=07151862-c2b9-45dc-bf7a-af8d2a6fa6c1 / ext3 defaults 1 1 [root@izpo45bh60h6bsz tmp]# file test3 #存在的目录 test3: directory [root@izpo45bh60h6bsz tmp]# ls test3 #目录下无任何文件 [root@izpo45bh60h6bsz tmp]# mv b test3 # [root@izpo45bh60h6bsz tmp]# ls test3 #移到后目录下为原文件 b [root@izpo45bh60h6bsz tmp]# ls /tmp #移动后原文件消失 test2 test3
4)多源文件,目标存在为目录
[root@izpo45bh60h6bsz tmp]# ls #当前目录下的内容 fstab issue test2 test3 [root@izpo45bh60h6bsz tmp]# ls test2 #目标目录下无任何文件 [root@izpo45bh60h6bsz tmp]# mv fstab issue test2 #移动 [root@izpo45bh60h6bsz tmp]# ls #移动后原文件消失 test2 test3 [root@izpo45bh60h6bsz tmp]# ls test2 #目标目录下为原文件 fstab issue
cp命令用法同mv,只是移动变复制,原文件保留
rm命令
[root@izpo45bh60h6bsz tmp]# type rm rm is aliased to `rm -i' [root@izpo45bh60h6bsz tmp]# rm --h Usage: rm [OPTION]... FILE... Remove (unlink) the FILE(s). -f, --force ignore nonexistent files and arguments, never prompt -i prompt before every removal -r, -R, --recursive remove directories and their contents recursively
示例:
1)删除文件
[root@izpo45bh60h6bsz test2]# pwd #当前所在的目录 /tmp/test2 [root@izpo45bh60h6bsz test2]# ls #目录下的文件 fstab issue [root@izpo45bh60h6bsz test2]# file fstab #fstab为文件 fstab: ASCII text [root@izpo45bh60h6bsz test2]# rm fstab #交互式:删除时,提示是否删除 rm: remove regular file ‘fstab’? ^C [root@izpo45bh60h6bsz test2]# rm -f fstab #非交互式:删除时,不提示是否删除 [root@izpo45bh60h6bsz test2]# ls #目录下的文件被删除 issue
2)删除目录:-r
[root@izpo45bh60h6bsz tmp]# pwd #当前所在的目录 /tmp [root@izpo45bh60h6bsz tmp]# ls #目录下存在的文件 fstab issue test2 test3 [root@izpo45bh60h6bsz tmp]# rm test2 #删除目录,提示不能删除 rm: cannot remove ‘test2’: Is a directory [root@izpo45bh60h6bsz tmp]# rm -r test2 #递归删除目录选项,提示是否删除 rm: descend into directory ‘test2’? ^C [root@izpo45bh60h6bsz tmp]# rm -rf test2 #非交互式删除目录 [root@izpo45bh60h6bsz tmp]# ls #删除成功 fstab issue test3
tree命令
[root@izpo45bh60h6bsz tmp]# type tree tree is /usr/bin/tree [root@izpo45bh60h6bsz tmp]# tree --help usage: tree [-acdfghilnpqrstuvxACDFQNSUX] [-H baseHREF] [-T title ] [-L level [-R]] [-P pattern] [-I pattern] [-o filename] [--version] [--help] [--inodes] [--device] [--noreport] [--nolinks] [--dirsfirst] [--charset charset] [--filelimit[=]#] [--si] [--timefmt[=]<f>] [<directory list>] -d 仅显示目录及子目录 -P pattern 显示指定目录下符合指定模式的文件 -L # 限制显示目录的层级
1)仅显示目录及子目录,默认显示文件和目录
[root@izpo45bh60h6bsz ~]# tree -d /root /root ├── bin ├── gentoo │ └── hello ├── link_test1 -> test1 ├── manifests ├── slackware ├── test1 ├── tmpfile ├── tomcat └── tomcat1 10 directories
2)显示指定目录下符合指定模式的文件
3)限制目录层级
[root@izpo45bh60h6bsz ~]# tree -L 1 /root /root ├── a.txt ├── bin ├── b.sh ├── b.txt ├── c.sh [root@izpo45bh60h6bsz ~]# tree /root /root ├── a.txt ├── bin │ ├── addusers.sh │ └── hello
转载于:https://blog.51cto.com/sonlich/1951918