Linux基础命令(一)
文章目录
- 1、时间命令:date
- 2、日历命令:cal
- 3、计算器程序:bc
- 4、基础组合键
- 5、正确的关机指令使用
- 5.1 将数据同步写入硬盘中的指令: sync
- 5.2 惯用的关机指令: shutdown
- 5.3 重新开机,关机: reboot, halt, poweroff
- 5.4 管理工具 systemctl 关机
- 6、改变文件属性
- 6.1 改变所属群组: chgrp
- 6.2 改变文件拥有者: chown
- 6.3 改变文件权限:chmod
- 6.3.1 数字类型改变文件权限
- 6.3.2 符号类型改变文件权限
- 7、复制、删除与移动
- 7.1 复制文件或目录:cp
- 7.2 移除文件或目录:rm
- 7.3 移动文件与目录或更名:mv
- 8、创建目录和文件
- 8.1 创建目录
- 8.2 创建文件
- 9、查看文件命令:cat
- 10、文件目录种类
- 11、文件目录操作
- 11.1 变换目录:cd
- 11.2 显示目前的目录:pwd
- 11.3 创建一个新的目录:mkdir
- 11.4 删除一个空的目录:rmdir
- 11.5 文件与目录的检视:ls
- 12、获取文件名称和文件路径
- 12.1 获取文件名称:basename
- 12.2 获取文件路径:dirname
- 13、查阅文件内容
- 13.1 直接查看文件内容(常用)
- 13.1.1 查看文件内容1:cat
- 13.1.2 查看文件内容2:tac
- 13.1.3 查看文件内容3:nl
- 13.2 可翻页查看文件内容(常用)
- 13.2.1 一页一页翻动1:more
- 13.2.2 一页一页翻动2:less
- 13.3 只查看部分文件内容(常用)
- 13.3.1 取出前几行:head
- 13.3.2 取出后面几行:tail
- 13.3.3 取出指定段内的几行:head和tail组合(常用)
- 13.4 查看非纯文本文件(不常用)
- 14、修改文件时间
- 15、指令与文件的搜寻
- 15.1 指令文件名的搜寻:which
- 15.2 文件文件名的搜寻:whereis,locate,find
- 15.2.1 在特定目录中寻找文件名:whereis
- 15.2.2 数据库中寻找文件名:locate / updatedb
- 15.2.3 硬盘中寻找文件名:find
- 16、文件系统操作命令
- 16.1 磁盘与目录容量操作
- 16.1.1 查看文件系统的整体磁盘使用量:df
- 16.1.2 查看文件系统的磁盘使用量:du
- 17、链接文件操作
- 18、常用压缩和解压文件命令
- 18.1 单一文件压缩和解压命令:gzip/bzip2/xz
- 18.1.1 压缩和解压文件:gzip(查看压缩文件命令:zcat/zmore/zless/zgrep)
- 18.1.2 压缩和解压文件:bzip2(查看压缩文件命令:bzcat/bzmore/bzless/bzgrep)
- 18.1.3 压缩和解压文件:xz(查看压缩文件命令:xzcat/xzmore/xzless/xzgrep)
- 18.2 多文件压缩和解压命令:tar
1、时间命令:date
date 格式化输出命令:+%Y/%m/%d或+%H:%M:%S
[test@test log]$ date
2022年 12月 29日 星期四 16:55:41 CST
[test@test log]$ date +%Y/%m/%d
2022/12/29
[test@test log]$ date +%H:%M:%S
16:55:55
2、日历命令:cal
cal:直接下达指令,显示当前月份日历
cal [year] :指定年份所有月份的日历
cal [month] [year]:指定年月的日历
注意:某些指令有特殊的参数存在,若输入错误的参数,则该指令会有错误讯息的提示,通过这个提示我们可以借以了解指令下达错误之处;
[test@test logs]$ cal十二月 2022
日 一 二 三 四 五 六1 2 34 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 31
[test@test logs]$ cal 5 2022五月 2022
日 一 二 三 四 五 六1 2 3 4 5 6 78 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
3、计算器程序:bc
bc:进入计算程序
quit:退出程序
[test@test logs]$ bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
1+2
3
2*3
6
quit
4、基础组合键
Ctrl + c :停止当前正在运行的指令
Ctrl + d:退出当前用户,等同于exit
shift + pageUp | pageDown:翻页
5、正确的关机指令使用
5.1 将数据同步写入硬盘中的指令: sync
5.2 惯用的关机指令: shutdown
[root@study ~]# /sbin/shutdown [-krhc] [时间] [警告讯息]
选项与参数:
-k : 不要真的关机,只是发送警告讯息出去!
-r : 在将系统的服务停掉之后就重新开机(常用)
-h : 将系统的服务停掉后,立即关机。 (常用)
-c : 取消已经在进行的 shutdown 指令内容。
时间 : 指定系统关机的时间!时间的范例下面会说明。若没有这个项目,则默认 1 分钟后自动进行。
范例:
[root@study ~]# /sbin/shutdown -h 10 'I will shutdown after 10 mins'
Broadcast message from root@study.centos.vbird (Tue 2015-06-02 10:51:34 CST):
I will shutdown after 10 mins
The system is going down for power-off at Tue 2015-06-02 11:01:34 CST![root@study ~]# shutdown -h now
立刻关机,其中 now 相当于时间为 0 的状态
[root@study ~]# shutdown -h 20:25
系统在今天的 20:25 分会关机,若在21:25才下达此指令,则隔天才关机
[root@study ~]# shutdown -h +10
系统再过十分钟后自动关机
[root@study ~]# shutdown -r now
系统立刻重新开机
[root@study ~]# shutdown -r +30 'The system will reboot'
再过三十分钟系统会重新开机,并显示后面的讯息给所有在线上的使用者
[root@study ~]# shutdown -k now 'This system will reboot'
仅发出警告信件的参数!系统并不会关机啦!吓唬人!
shutdown -c ”来取消这次的关机指令。而如果你什么参数都没有加,单纯执行 shutdown 之后, 系统默认会在 1 分钟后进行“关机”的动作喔!
5.3 重新开机,关机: reboot, halt, poweroff
在默认的情况下, 这几个指令都会完成一样的工作!全部的动作都是去调用 systemctl 这个重要的管理命令!
[root@study ~]# halt # 系统停止~屏幕可能会保留系统已经停止的讯息!
[root@study ~]# poweroff # 系统关机,所以没有提供额外的电力,屏幕空白!
5.4 管理工具 systemctl 关机
[root@study ~]# systemctl [指令]
指令项目包括如下:
halt 进入系统停止的模式,屏幕可能会保留一些讯息,这与你的电源管理模式有关
poweroff 进入系统关机模式,直接关机没有提供电力喔!
reboot 直接重新开机
suspend 进入休眠模式
[root@study ~]# systemctl reboot # 系统重新开机
[root@study ~]# systemctl poweroff # 系统关机
6、改变文件属性
6.1 改变所属群组: chgrp
使用说明:这个指令就是change group的缩写,chgrp [-R] dirname/filename
-R : 进行递回(recursive)的持续变更,亦即连同次目录下的所有文件、目录都更新成为这个群组之意。常常用在变更某一目录内所有的文件之情况
[root@study ~]# chgrp users log.log
[root@study ~]# ls -l
-rw-r--r--. 1 root users 1864 May 4 18:01 log.log
6.2 改变文件拥有者: chown
使用说明:这个指令就是change owner的缩写,chown [-R] dirname/filename
-R : 进行递回(recursive)的持续变更,亦即连同次目录下的所有文件、目录都更新成为这个拥有者。常常用在变更某一目录内所有的文件之情况
[root@study~]#chown [-R] 帐号名称 文件或目录
[root@study~]#chown [-R] 帐号名称:群组名称文件或目录
范例:将initial-setup-ks.cfg的拥有者改为bin这个帐号:
[root@study~]#chown bin initial-setup-ks.cfg
[root@study~]#ls -l
-rw-r--r--. 1 bin users 1864 May 4 18:01 initial-setup-ks.cfg
范例:将initial-setup-ks.cfg的拥有者与群组改回为root:
[root@study~]#chown root:root initial-setup-ks.cfg
[root@study~]#ls -l
-rw-r--r--. 1 root root 1864 May 4 18:01 initial-setup-ks.cfg
408page
6.3 改变文件权限:chmod
6.3.1 数字类型改变文件权限
Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限,文件的权限字符为:“-rwxrwxrwx”, 这九个权限是三个一组的!可以使用数字来代表各个权限,各权限的分数对照 r:4 w:2 x:1
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx—] 分数则是:
owner = rwx = 4+2+1 = 7 group = rwx = 4+2+1 = 7 others= — = 0+0+0 = 0
使用说明: chmod [-R] xyz 文件或目录
选项与参数:
xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
-R : 进行递回(recursive)的持续变更,亦即连同次目录下的所有文件都会变
[root@study ~]# ls -al log.log
-rw-r--r--. 1 root root 176 Dec 29 2013 log.log
[root@study ~]# chmod 777 log.log
[root@study ~]# ls -al .bashrc
-rwxrwxrwx. 1 root root 176 Dec 29 2013 log.log
6.3.2 符号类型改变文件权限
九个权限分别是(1)user (2)group (3)others三种身份,由u, g, o来代表三种身份的权限,a则代表 all 即全部的身份;
修改命令 | 权限命令 | 符号 linux权限 | 文件或目录 |
---|---|---|---|
chmod | u\g\o\a | +-= r\w\x | 文件或目录 |
● (1)设置权限,使用"=“符号;
● (2)增加权限,使用”+“符号;
● (3)减少权限,使用”-"符号;
[root@study ~]# chmod u=rwx,go=rx .bashrc
[root@study ~]# ls -al .bashrc
-rwxr-xr-x. 1 root root 176 Dec 29 2013 .bashrc只想要增加.bashrc这个文件的每个人均可写入的权限
[root@study ~]# ls -al .bashrc
-rwxr-xr-x. 1 root root 176 Dec 29 2013 .bashrc
[root@study ~]# chmod a+w .bashrc
[root@study ~]# ls -al .bashrc
-rwxrwxrwx. 1 root root 176 Dec 29 2013 .bashrc拿掉全部人的可执行权限
[root@study ~]# chmod a-x .bashrc
[root@study ~]# ls -al .bashrc
-rw-rw-rw-. 1 root root 176 Dec 29 2013 .bashrc
7、复制、删除与移动
7.1 复制文件或目录:cp
使用说明1: cp [-adfilprsu] 来源文件(source) 目标文件(destination)
使用说明2: cp [options] source1 source2 source3 … directory
选项与参数:
-a :相当于 -dr --preserve=all 的意思,至于 dr 请参考下列说明;(常用)
-d :若来源文件为链接文件的属性(link file),则复制链接文件属性而非文件本身;
-f :为强制(force)的意思,若目标文件已经存在且无法打开,则移除后再尝试一次;
-i :若目标文件(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
-l :进行硬式链接(hard link)的链接文件创建,而非复制文件本身;
-p :连同文件的属性(权限、用户、时间)一起复制过去,而非使用默认属性(备份常用);
-r :递回持续复制,用于目录的复制行为;(常用)
-s :复制成为符号链接文件 (symbolic link),亦即“捷径”文件;
-u :destination 比 source 旧才更新 destination,或 destination 不存在的情况下才复制。
–preserve=all :除了 -p 的权限相关参数外,还加入 SELinux 的属性, links, xattr 等也复制了。
最后需要注意的,如果来源文件有两个以上,则最后一个目的文件一定要是“目录”才行!
//范例一:用root身份,将主文件夹下的 .bashrc 复制到 /tmp 下,并更名为 bashrc
[root@study ~]# cp ~/.bashrc /tmp/bashrc
[root@study ~]# cp -i ~/.bashrc /tmp/bashrc
cp: overwrite `/tmp/bashrc'? n <==n不覆盖,y为覆盖# 重复作两次动作,由于 /tmp 下面已经存在 bashrc 了,加上 -i 选项后,
# 则在覆盖前会询问使用者是否确定!可以按下 n 或者 y 来二次确认呢!//范例二:变换目录到/tmp,并将/var/log/wtmp复制到/tmp且观察属性:
[root@study ~]# cd /tmp
[root@study tmp]# cp /var/log/wtmp . <==想要复制到目前的目录,最后的 . 不要忘
[root@study tmp]# ls -l /var/log/wtmp wtmp
-rw-rw-r--. 1 root utmp 28416 Jun 11 18:56 /var/log/wtmp
-rw-r--r--. 1 root root 28416 Jun 11 19:01 wtmp
# 注意上面的特殊字体,在不加任何选项的情况下,文件的某些属性/权限会改变;
# 这是个很重要的特性!要注意喔!还有,连文件创建的时间也不一样了!
# 那如果你想要将文件的所有特性都一起复制过来该怎办?可以加上 -a 喔!如下所示:
[root@study tmp]# cp -a /var/log/wtmp wtmp_2
[root@study tmp]# ls -l /var/log/wtmp wtmp_2
-rw-rw-r--. 1 root utmp 28416 Jun 11 18:56 /var/log/wtmp
-rw-rw-r--. 1 root utmp 28416 Jun 11 18:56 wtmp_2
# 瞭了吧!整个数据特性完全一模一样ㄟ!真是不赖~这就是 -a 的特性!//范例三:复制 /etc/ 这个目录下的所有内容到 /tmp 下面
[root@study tmp]# cp /etc/ /tmp
cp: omitting directory `/etc' <== 如果是目录则不能直接复制,要加上 -r 的选项
[root@study tmp]# cp -r /etc/ /tmp
# 还是要再次的强调喔! -r 是可以复制目录,但是,文件与目录的权限可能会被改变
# 所以,也可以利用“ cp -a /etc /tmp ”来下达指令喔!尤其是在备份的情况下!//范例四:将范例一复制的 bashrc 创建一个链接文件 (symbolic link)
[root@study tmp]# ls -l bashrc
-rw-r--r--. 1 root root 176 Jun 11 19:01 bashrc <==先观察一下文件情况
[root@study tmp]# cp -s bashrc bashrc_slink
[root@study tmp]# cp -l bashrc bashrc_hlink
[root@study tmp]# ls -l bashrc*
-rw-r--r--. 2 root root 176 Jun 11 19:01 bashrc <==与原始文件不太一样了!
-rw-r--r--. 2 root root 176 Jun 11 19:01 bashrc_hlink
lrwxrwxrwx. 1 root root 6 Jun 11 19:06 bashrc_slink -> bashrc//范例五:将主文件夹的 .bashrc 及 .bash_history 复制到 /tmp 下面
[root@study tmp]# cp ~/.bashrc ~/.bash_history /tmp
# 可以将多个数据一次复制到同一个目录去!最后面一定是目录!
7.2 移除文件或目录:rm
使用说明: rm [-fir] 文件或目录
选项与参数:
-f :就是 force 的意思,忽略不存在的文件,不会出现警告讯息;
-i :互动模式,在删除前会询问使用者是否动作
-r :递回删除!最常用在目录的删除了!这是非常危险的选项!!!
//范例一:将刚刚在 cp 的范例中创建的 bashrc 删除掉!
[root@study ~]# cd /tmp
[root@study tmp]# rm -i bashrc
rm: remove regular file `bashrc'? y
# 如果加上 -i 的选项就会主动询问喔,避免你删除到错误的文件名!//范例二:通过万用字符*的帮忙,将/tmp下面开头为bashrc的文件名通通删除:
[root@study tmp]# rm -i bashrc*
# 注意那个星号,代表的是 0 到无穷多个任意字符喔!很好用的东西!//范例三:将 cp 范例中所创建的 /tmp/etc/ 这个目录删除掉!
[root@study tmp]# rmdir /tmp/etc
rmdir: failed to remove '/tmp/etc': Directory not empty <== 删不掉啊!因为这不是空的目录!
[root@study tmp]# rm -r /tmp/etc
rm: descend into directory `/tmp/etc'? y
rm: remove regular file `/tmp/etc/fstab'? y
rm: remove regular empty file `/tmp/etc/crypttab'? ^C <== 按下 [crtl]+c 中断
# 因为身份是 root ,默认已经加入了 -i 的选项,所以你要一直按 y 才会删除!
7.3 移动文件与目录或更名:mv
使用说明1: mv [-fiu] source destination
使用说明2: mv [options] source1 source2 source3 … directory
选项与参数:
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会更新 (update)
//范例一:复制一文件,创建一目录,将文件移动到目录中
[root@study ~]# cd /tmp
[root@study tmp]# cp ~/.bashrc bashrc
[root@study tmp]# mkdir mvtest
[root@study tmp]# mv bashrc mvtest
# 将某个文件移动到某个目录去,就是这样做!//范例二:将刚刚的目录名称更名为 mvtest2
[root@study tmp]# mv mvtest mvtest2 <== 这样就更名了!简单~
# 其实在 Linux 下面还有个有趣的指令,名称为 rename ,
# 该指令专职进行多个文件名的同时更名,并非针对单一文件名变更,与mv不同。请man rename。//范例三:再创建两个文件,再全部移动到 /tmp/mvtest2 当中
[root@study tmp]# cp ~/.bashrc bashrc1
[root@study tmp]# cp ~/.bashrc bashrc2
[root@study tmp]# mv bashrc1 bashrc2 mvtest2
# 注意到这边,如果有多个来源文件或目录,则最后一个目标文件一定是“目录!”
# 意思是说,将所有的数据移动到该目录的意思!
8、创建目录和文件
8.1 创建目录
使用说明:mkdir 目录
[root@study tmp]# mkdir testing
8.2 创建文件
使用说明:touch 文件
[root@study tmp]# touch testing/testing
9、查看文件命令:cat
使用说明:cat 文件名
[test@testapi]$ cat test.log
test
10、文件目录种类
. 代表此层目录
… 代表上一层目录
- 代表前一个工作目录
~ 代表“目前使用者身份”所在的主文件夹
~account 代表 account 这个使用者的主文件夹(account是个帐号名称)
11、文件目录操作
11.1 变换目录:cd
[dmtsai@study ~]$ su - # 先切换身份成为 root 看看!
[root@study ~]# cd [相对路径或绝对路径]
# 最重要的就是目录的绝对路径与相对路径,还有一些特殊目录的符号啰!
[root@study ~]# cd ~dmtsai
# 代表去到 dmtsai 这个使用者的主文件夹,亦即 /home/dmtsai
[root@study dmtsai]# cd ~
# 表示回到自己的主文件夹,亦即是 /root 这个目录
[root@study ~]# cd
# 没有加上任何路径,也还是代表回到自己主文件夹的意思喔!
[root@study ~]# cd ..
# 表示去到目前的上层目录,亦即是 /root 的上层目录的意思;
[root@study /]# cd -
# 表示回到刚刚的那个目录,也就是 /root 啰~
[root@study ~]# cd /var/spool/mail
# 这个就是绝对路径的写法!直接指定要去的完整路径名称!
[root@study mail]# cd ../postfix
# 这个是相对路径的写法,我们由/var/spool/mail 去到/var/spool/postfix 就这样写!
11.2 显示目前的目录:pwd
使用说明: pwd [-P]
选项与参数:
-P :显示出确实的路径,而非使用链接 (link) 路径。
范例:单纯显示出目前的工作目录:
[root@study ~]# pwd
/root <== 显示出目录啦~
范例:显示出实际的工作目录,而非链接文件本身的目录名而已
[root@study ~]# cd /var/mail <==注意,/var/mail是一个链接文件
[root@study mail]# pwd
/var/mail <==列出目前的工作目录
[root@study mail]# pwd -P
/var/spool/mail <==怎么回事?有没有加 -P 差很多~
[root@study mail]# ls -ld /var/mail
lrwxrwxrwx. 1 root root 10 May 4 17:51 /var/mail -> spool/mail
# 看到这里应该知道为啥了吧?因为 /var/mail 是链接文件,链接到 /var/spool/mail
# 所以,加上 pwd -P 的选项后,会不以链接文件的数据显示,而是显示正确的完整路径啊!
11.3 创建一个新的目录:mkdir
使用说明:mkdir [-mp] 目录名称
选项与参数:
-m :设置文件的权限喔!直接设置,不需要看默认权限 (umask) 的脸色~
-p :帮助你直接将所需要的目录(包含上层目录)递回创建起来!
范例:请到/tmp下面尝试创建数个新目录看看:
[root@study ~]# cd /tmp
[root@study tmp]# mkdir test <==创建一名为 test 的新目录
[root@study tmp]# mkdir test1/test2/test3/test4
mkdir: cannot create directory ‘test1/test2/test3/test4’: No such file or directory
# 话说,系统告诉我们,没可能创建这个目录啊!就是没有目录才要创建的!见鬼嘛?
[root@study tmp]# mkdir -p test1/test2/test3/test4
# 原来是要建 test4 上层没先建 test3 之故!加了这个 -p 的选项,可以自行帮你创建多层目录!
范例:创建权限为rwx--x--x的目录
[root@study tmp]# mkdir -m 711 test2
[root@study tmp]# ls -ld test*
drwxr-xr-x. 2 root root 6 Jun 4 19:03 test
drwxr-xr-x. 3 root root 18 Jun 4 19:04 test1
drwx--x--x. 2 root root 6 Jun 4 19:05 test2
# 仔细看上面的权限部分,如果没有加上 -m 来强制设置属性,系统会使用默认属性。
11.4 删除一个空的目录:rmdir
使用说明:rmdir [-p] 目录名称
选项与参数:
-p :连同“上层”“空的”目录也一起删除
范例:将于mkdir范例中创建的目录(/tmp下面)删除掉!
[root@study tmp]# ls -ld test* <==看看有多少目录存在?
drwxr-xr-x. 2 root root 6 Jun 4 19:03 test
drwxr-xr-x. 3 root root 18 Jun 4 19:04 test1
drwx--x--x. 2 root root 6 Jun 4 19:05 test2
[root@study tmp]# rmdir test <==可直接删除掉,没问题
[root@study tmp]# rmdir test1 <==因为尚有内容,所以无法删除!
rmdir: failed to remove ‘test1’: Directory not empty
[root@study tmp]# rmdir -p test1/test2/test3/test4
[root@study tmp]# ls -ld test* <==您看看,下面的输出中test与test1不见了!
drwx--x--x. 2 root root 6 Jun 4 19:05 test2
# 瞧!利用 -p 这个选项,立刻就可以将 test1/test2/test3/test4 一次删除~
11.5 文件与目录的检视:ls
[root@study ~]# ls [-aAdfFhilnrRSt] 文件名或目录名称..
[root@study ~]# ls [--color={never,auto,always}] 文件名或目录名称..
[root@study ~]# ls [--full-time] 文件名或目录名称..
选项与参数:
-a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
-A :全部的文件,连同隐藏文件,但不包括 . 与 .. 这两个目录
-d :仅列出目录本身,而不是列出目录内的文件数据(常用)
-f :直接列出结果,而不进行排序 (ls 默认会以文件名排序!)
-F :根据文件、目录等信息,给予附加数据结构,例如:
*:代表可可执行文件; /:代表目录; =:代表 socket 文件; |:代表 FIFO 文件;
-h :将文件大小以人类较易读的方式(例如 GB, KB 等等)列出来;
-i :列出 inode 号码,inode 的意义下一章将会介绍;
-l :长数据串行出,包含文件的属性与权限等等数据;(常用)
-n :列出 UID 与 GID 而非使用者与群组的名称 (UID与GID会在帐号管理提到!)
-r :将排序结果反向输出,例如:原本文件名由小到大,反向则为由大到小;
-R :连同子目录内容一起列出来,等于该目录下的所有文件都会显示出来;
-S :以文件大小大小排序,而不是用文件名排序;
-t :依时间排序,而不是用文件名。
--color=never :不要依据文件特性给予颜色显示;
--color=always :显示颜色
--color=auto :让系统自行依据设置来判断是否给予颜色
--full-time :以完整时间模式 (包含年、月、日、时、分) 输出
--time={atime,ctime} :输出 access 时间或改变权限属性时间 (ctime)
而非内容变更时间 (modification time)
12、获取文件名称和文件路径
12.1 获取文件名称:basename
[root@study ~]# basename /etc/sysconfig/network
network <== 很简单!就取得最后的文件名~
12.2 获取文件路径:dirname
[root@study ~]# dirname /etc/sysconfig/network
/etc/sysconfig <== 取得的变成目录名了!
13、查阅文件内容
● cat:由第一行开始显示文件内容!
● tac:从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
● nl:显示的时候,顺道输出行号!
● more:一页一页的显示文件内容!
● less:与 more 类似,但是比 more 更好的是,他可以往前翻页!
● head:只看头几行!
● tail:只看尾巴几行!
● od:以二进制的方式读取文件内容!
13.1 直接查看文件内容(常用)
13.1.1 查看文件内容1:cat
使用说明: cat [-AbEnTv] 文件
选项与参数:
-A :相当于 -vET 的整合选项,可列出一些特殊字符而不是空白而已; (较常用)
-b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
-E :将结尾的断行字符 $ 显示出来;
-n :打印出行号,连同空白行也会有行号,与 -b 的选项不同;
-T :将 [tab] 按键以 ^I 显示出来;
-v :列出一些看不出来的特殊字符
//范例一:检阅 /etc/issue 这个文件的内容
[root@study ~]# cat /etc/issue
\S
Kernel \r on an \m
//范例二:承上题,如果还要加印行号呢?
[root@study ~]# cat -n /etc/issue
1 \S
2 Kernel \r on an \m
3
# 所以这个文件有三行!看到了吧!可以印出行号呢!这对于大文件要找某个特定的行时,有点用处!
# 如果不想要编排空白行的行号,可以使用“cat -b /etc/issue”,自己测试看看:
//范例三:将 /etc/man_db.conf 的内容完整的显示出来(包含特殊字符)
[root@study ~]# cat -A /etc/man_db.conf
# $
....(中间省略)....
MANPATH_MAP^I/bin^I^I^I/usr/share/man$
MANPATH_MAP^I/usr/bin^I^I/usr/share/man$
MANPATH_MAP^I/sbin^I^I^I/usr/share/man$
MANPATH_MAP^I/usr/sbin^I^I/usr/share/man$
13.1.2 查看文件内容2:tac
使用说明:tac 文件
[root@study ~]# tac /etc/issue
Kernel \r on an \m
\S
# 与刚刚上面的范例一比较,是由最后一行先显示!
13.1.3 查看文件内容3:nl
使用说明: nl [-bnw] 文件
选项与参数:
-b :指定行号指定的方式,主要有两种:
-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
-b t :如果有空行,空的那一行不要列出行号(默认值);
-n :列出行号表示的方法,主要有三种:
-n ln :行号在屏幕的最左方显示;
-n rn :行号在自己字段的最右方显示,且不加 0 ;
-n rz :行号在自己字段的最右方显示,且加 0 ;
-w :行号字段的占用的字符数。
// # 行号加上来啰~那么如果要让行号前面自动补上0
[root@study ~]# nl -b a -n rz /etc/issue
000001 \S
000002 Kernel \r on an \m
000003
// # 嘿嘿!自动在自己字段的地方补上 0 了~默认字段是六位数,如果想要改成 3 位数?
[root@study ~]# nl -b a -n rz -w 3 /etc/issue
001 \S
002 Kernel \r on an \m
003
13.2 可翻页查看文件内容(常用)
13.2.1 一页一页翻动1:more
使用说明:more 文件
空格键 (space):代表向下翻一页;
Enter :代表向下翻“一行”;
/字串 :代表在这个显示的内容当中,向下搜寻“字串”这个关键字;
:f :立刻显示出文件名以及目前显示的行数;
q :代表立刻离开 more ,不再显示该文件内容。
b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
[test@test etc]$ more man.config
#
# If no catdir is given, it is assumed to be equal to the mandir
... 省略 ...
# Certain versions of the FHS recommend putting formatted versions of
# /usr/.../share/man/[locale/]manx/page.x into
# /var/cache/man/.../[locale/]catx/page.x.
# The keyword FHS will cause this behaviour (and overrides FSSTND).
# Explicitly given catdirs override.
#
# FSSTND
FHS
#
--More--(25%)
13.2.2 一页一页翻动2:less
使用说明:
空白键 :向下翻动一页;
[pagedown]:向下翻动一页;
[pageup] :向上翻动一页;
/字串 :向下搜寻“字串”的功能;
?字串 :向上搜寻“字串”的功能;
n :重复前一个搜寻 (与 / 或 ? 有关!)
N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
g :前进到这个数据的第一行去;
G :前进到这个数据的最后一行去 (注意大小写);
q :离开 less 这个程序;
[test@test etc]$ less man.config
#
# If no catdir is given, it is assumed to be equal to the mandir
... 省略 ...
# Certain versions of the FHS recommend putting formatted versions of
# /usr/.../share/man/[locale/]manx/page.x into
# /var/cache/man/.../[locale/]catx/page.x.
# The keyword FHS will cause this behaviour (and overrides FSSTND).
# Explicitly given catdirs override.
#
# FSSTND
FHS
/man
13.3 只查看部分文件内容(常用)
13.3.1 取出前几行:head
使用说明: head [-n number] 文件
选项与参数:
-n :后面接数字,代表显示几行的意思(数字为正数代表显示几行,数字为负数代表末尾后面多少行不显示)
//范例1:# 默认的情况中,显示前面十行!若要显示前 3 行,就得要这样:
[test@test etc]$ head -n 3 man.config
#
# Generated automatically from man.conf.in by the
# configure script.
// 范例2:如果后面100行的数据都不打印,只打印/etc/man_db.conf的前面几行,该如何是好?
[root@study ~]# head -n -100 /etc/man_db.conf
13.3.2 取出后面几行:tail
使用说明: tail [-n number] 文件
选项与参数:
-n :后面接数字,代表显示几行的意思
-f :表示持续侦测后面所接的文件名,要等到按下[ctrl]-c才会结束tail的侦测
[root@study ~]# tail /etc/man_db.conf
//# 默认的情况中,显示最后的十行!若要显示最后的 20 行
[root@study ~]# tail -n 20 /etc/man_db.conf//范例一:如果不知道/etc/man_db.conf有几行,却只想列出100行以后的数据时?
[root@study ~]# tail -n +100 /etc/man_db.conf//范例二:持续侦测/var/log/messages的内容
[root@study ~]# tail -f /var/log/messages
<==要等到输入[crtl]-c之后才会离开tail这个指令的侦测!
13.3.3 取出指定段内的几行:head和tail组合(常用)
1、基于head取文件或查询条件中的前多少行;
2、基于tail取文件或查询条件的后多少行;【tail -n [+]数字】 "+"代表从多少行开始显示
两者结合使用,可自行根据查询条件进行截取中间数据,常用案例如下:
// 案例1:获取指定行数(3754227)后两行数据
[test@test ~]# cat info.log | tail -n +3754227 | head -n 2
3754227 2023-03-02 20:15:32.880 |-INFO 230302201532886 ,, org.OrderServiceImpl [892] -| Info:[{"amount":1,"operate":"fee","max_fee_flag":0}]
3754228 2023-03-02 20:15:32.926 |-INFO 230302201532886 ,, org.impl.OrderServiceImpl [1118] -| <<<<<取XX费用// 案例2:查询日志某关键字前后十行
[test@test ~]# grep -C 10 'Exception' xxx.log xxx为日志文件名称
// 案例3:上面10行
[test@test ~]# grep -B 10 'Exception' xxx.log
// 案例4:下面10行
[test@test ~]# grep -A 10 'Exception' xxx.log
13.4 查看非纯文本文件(不常用)
使用说明: od [-t TYPE] 文件
选项或参数:
-t :后面可以接各种“类型 (TYPE)”的输出,例如:
a :利用默认的字符来输出;
c :使用 ASCII 字符来输出
d[size] :利用十进制(decimal)来输出数据,每个整数占用 size Bytes ;
f[size] :利用浮点数值(floating)来输出数据,每个数占用 size Bytes ;
o[size] :利用八进位(octal)来输出数据,每个整数占用 size Bytes ;
x[size] :利用十六进制(hexadecimal)来输出数据,每个整数占用 size Bytes ;
[test@test]$ od -t a passwd
0000000 del E L F stx soh soh nul nul nul nul nul nul nul nul nul
0000020 etx nul > nul soh nul nul nul P sp nul nul nul nul nul nul
0000040 @ nul nul nul nul nul nul nul 0 q nul nul nul nul nul nul
14、修改文件时间
使用说明: touch [-acdmt] 文件
选项与参数:
-a :仅修订 access time;
-c :仅修改文件的时间,若该文件不存在则不创建新文件;
-d :后面可以接欲修订的日期而不用目前的日期,也可以使用 --date=“日期或时间”
-m :仅修改 mtime ;
-t :后面可以接欲修订的时间而不用目前的时间,格式为[YYYYMMDDhhmm]
使用范围:
(1)创建一个空的文件;
(2)将某个文件日期修订为目前 (mtime 与 atime)
//范例一:新建一个空的文件并观察时间
[dmtsai@study ~]# cd /tmp
[dmtsai@study tmp]# touch testtouch
[dmtsai@study tmp]# ls -l testtouch
-rw-rw-r--. 1 dmtsai dmtsai 0 Jun 16 00:45 testtouch
# 注意到,这个文件的大小是 0 呢!在默认的状态下,如果 touch 后面有接文件,
# 则该文件的三个时间 (atime/ctime/mtime) 都会更新为目前的时间。若该文件不存在,
# 则会主动的创建一个新的空的文件喔!例如上面这个例子!//范例二:将 ~/.bashrc 复制成为 bashrc,假设复制完全的属性,检查其日期
[dmtsai@study tmp]# cp -a ~/.bashrc bashrc
[dmtsai@study tmp]# date; ll bashrc; ll --time=atime bashrc; ll --time=ctime bashrc
Tue Jun 16 00:49:24 CST 2015 <==这是目前的时间
-rw-r--r--. 1 dmtsai dmtsai 231 Mar 6 06:06 bashrc <==这是 mtime
-rw-r--r--. 1 dmtsai dmtsai 231 Jun 15 23:44 bashrc <==这是 atime
-rw-r--r--. 1 dmtsai dmtsai 231 Jun 16 00:47 bashrc <==这是 ctime
15、指令与文件的搜寻
15.1 指令文件名的搜寻:which
使用说明:which [-a] command
选项或参数:
-a :将所有由 PATH 目录中可以找到的指令均列出,而不止第一个被找到的指令名称
[test@test /]$ which -a date
/bin/date
[test@test /]$ which -a ls
alias ls='ls --color=auto'/bin/ls
15.2 文件文件名的搜寻:whereis,locate,find
15.2.1 在特定目录中寻找文件名:whereis
使用说明: whereis [-bmsu] 文件或目录名
选项与参数:
-l :可以列出 whereis 会去查询的几个主要目录而已
-b :只找 binary 格式的文件
-m :只找在说明文档 manual 路径下的文件
-s :只找 source 来源文件
-u :搜寻不在上述三个项目当中的其他特殊文件
说明:whereis 主要是针对 /bin/sbin 下面的可执行文件, 以及 /usr/share/man 下面的 man page 文件,跟几个比较特定的目录来处理;
[test@test]$ whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man5/passwd.5.gz /usr/share/man/man1/passwd.1.gz
15.2.2 数据库中寻找文件名:locate / updatedb
使用说明: locate [-ir] keyword
选项与参数:
-i :忽略大小写的差异;
-c :不输出文件名,仅计算找到的文件数量
-l :仅输出几行的意思,例如输出五行则是 -l 5
-S :输出 locate 所使用的数据库文件的相关信息,包括该数据库纪录的文件/目录数量等
-r :后面可接正则表达式的显示方式
说明:locate 来寻找数据的时候特别的快, 是因为 locate 寻找的数据是由“已创建的数据库 /var/lib/mlocate/” 里面的数据搜索;
缺点:数据库的创建默认是在每天执行一次;
解决办法:
● updatedb:根据 /etc/updatedb.conf 的设置去搜寻系统硬盘内的文件名,并更新 /var/lib/mlocate 内的数据库文件;
● locate:依据 /var/lib/mlocate 内的数据库记载,找出使用者输入的关键字文件名。
//范例一:找出系统中所有与 passwd 相关的文件名,且只列出 5 个
[root@study ~]# locate -l 5 passwd
/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/etc/security/opasswd
/usr/bin/gpasswd//范例二:列出 locate 查询所使用的数据库文件之文件名与各数据数量
[root@study ~]# locate -S
Database /var/lib/mlocate/mlocate.db:
8,086 directories # 总纪录目录数
109,605 files # 总纪录文件数
5,190,295 Bytes in file names
2,349,150 Bytes used to store database
15.2.3 硬盘中寻找文件名:find
使用说明: find [PATH] [option] [action]
选项与参数:
- 与时间有关的选项:共有 -atime, -ctime 与 -mtime ,以 -mtime 说明
-mtime n :n 为数字,意义为在 n 天之前的“一天之内”被更动过内容的文件;
-mtime +n :列出在 n 天之前(不含 n 天本身)被更动过内容的文件文件名;
-mtime -n :列出在 n 天之内(含 n 天本身)被更动过内容的文件文件名。
-newer file :file 为一个存在的文件,列出比 file 还要新的文件文件名。 - 与使用者或群组名称有关的参数:
-uid n :n 为数字,这个数字是使用者的帐号 ID,亦即 UID ,这个 UID 是记录在/etc/passwd 里面与帐号名称对应的数字。
-gid n :n 为数字,这个数字是群组名称的 ID,亦即 GID,这个 GID 记录在/etc/group。
-user name :name 为使用者帐号名称喔!例如 dmtsai
-group name:name 为群组名称喔,例如 users ;
-nouser :寻找文件的拥有者不存在 /etc/passwd 的人!
-nogroup :寻找文件的拥有群组不存在于 /etc/group 的文件!
当你自行安装软件时,很可能该软件的属性当中并没有文件拥有者,就可以使用 -nouser 与 -nogroup 搜寻。 - 与文件权限及名称有关的参数:
-name filename:搜寻文件名称为 filename 的文件;(常用)
范例:找出文件名为 filename 这个文件
eg: find / -name filename
-size [±]SIZE:搜寻比 SIZE 还要大(+)或小(-)的文件。这个 SIZE 的规格有:c: 代表 Byte, k: 代表 1024Bytes。所以,要找比 50KB 还要大的文件,就是“ -size +50k ”
-type TYPE :搜寻文件的类型为 TYPE 的,类型主要有:一般正规文件 (f), 设备文件 (b, c),目录 (d), 链接文件 (l), socket (s), 及 FIFO (p) 等属性。
-perm mode :搜寻文件权限“刚好等于” mode 的文件,这个 mode 为类似 chmod的属性值,举例来说, -rwsr-xr-x 的属性为 4755 !
-perm -mode :搜寻文件权限“必须要全部囊括 mode 的权限”的文件,举例来说,我们要搜寻 -rwxr–r-- ,亦即 0744 的文件,使用 -perm -0744,当一个文件的权限为 -rwsr-xr-x ,亦即 4755 时,也会被列出来,因为 -rwsr-xr-x 的属性已经囊括了 -rwxr–r-- 的属性了。
-perm /mode :搜寻文件权限“包含任一 mode 的权限”的文件,举例来说,我们搜寻-rwxr-xr-x ,亦即 -perm /755 时,但一个文件属性为 -rw-------也会被列出来,因为他有 -rw… 的属性存在! - 额外可进行的动作:
-exec command :command 为其他指令,-exec 后面可再接额外的指令来处理搜寻到的结果。
-print :将结果打印到屏幕上,这个动作是默认动作!
//范例一:将过去系统上面 24 小时内有更动过内容 (mtime) 的文件列出
[root@study ~]# find / -mtime 0
# 那个 0 是重点!0 代表目前的时间,所以,从现在开始到 24 小时前,
# 有变动过内容的文件都会被列出来!那如果是三天前的 24 小时内?
# find / -mtime 3 有变动过的文件都被列出的意思!
//范例二:寻找 /etc 下面的文件,如果文件日期比 /etc/passwd 新就列出
[root@study ~]# find /etc -newer /etc/passwd
# -newer 用在分辨两个文件之间的新旧关系是很有用的//范例三:搜寻 /home 下面属于 dmtsai 的文件
[root@study ~]# find /home -user dmtsai
# 这个东西也很有用的~当我们要找出任何一个使用者在系统当中的所有文件时,就可以利用这个指令将属于某个使用者的所有文件都找出来喔!
//范例四:搜寻系统中不属于任何人的文件
[root@study ~]# find / -nouser
# 通过这个指令,轻易找出那些不太正常的文件。如果有找到不属于系统任何人的文件时,
# 不要太紧张,那有时候是正常的~尤其是你曾经以源代码自行编译软件时。//范例五:找出文件名为 passwd 这个文件
[root@study ~]# find / -name passwd
//范例五-1:找出文件名包含了 passwd 这个关键字的文件
[root@study ~]# find / -name "*passwd*"
# 利用这个 -name 可以搜寻文件名啊!默认是完整文件名,如果想要找关键字,
# 可以使用类似 * 的任意字符来处理
//范例六:找出 /run 目录下,文件类型为 Socket 的文件名有哪些?
[root@study ~]# find /run -type s
# 这个 -type 的属性也很有帮助喔!尤其是要找出那些怪异的文件//范例七:将上个范例找到的文件使用 ls -l 列出来~
[root@study ~]# find /usr/bin /usr/sbin -perm /7000 -exec ls -l {} \;
# 注意到,那个 -exec 后面的 ls -l 就是额外的指令,指令不支持命令别名,
# 所以仅能使用 ls -l 不可以使用 ll 喔!注意注意!
范例九:找出系统中,大于 1MB 的文件
[root@study ~]# find / -size +1M
16、文件系统操作命令
16.1 磁盘与目录容量操作
16.1.1 查看文件系统的整体磁盘使用量:df
使用说明:df [-ahikHTm] [目录或文件名]
选项与参数:
-a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
-k :以 KBytes 的容量显示各文件系统;
-m :以 MBytes 的容量显示各文件系统;
-h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
-H :以 M=1000K 取代 M=1024K 的进位方式;
-T :连同该 partition 的 filesystem 名称 (例如 xfs) 也列出;
-i :不用磁盘容量,而以 inode 的数量来显示
[test@test]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg-lv_root 50G 3.8G 43G 9% /
tmpfs 5.9G 0 5.9G 0% /dev/shm
/dev/sda1 190M 70M 111M 39% /boot
16.1.2 查看文件系统的磁盘使用量:du
使用说明: du [-ahskm] 文件或目录名称
选项与参数:
-a :列出所有的文件与目录容量,因为默认仅统计目录下面的文件量而已。(常用)
-h :以人们较易读的容量格式 (G/M) 显示;
-s :列出总量而已,而不列出每个各别的目录占用容量;
-S :不包括子目录下的总计,与 -s 有点差别。
-k :以 KBytes 列出容量显示;
-m :以 MBytes 列出容量显示;
[test@test]$ du -ah
584K ./error1.log
26M ./error2.log
17、链接文件操作
使用说明:ln [-sf] 来源文件 目标文件
选项与参数:
-s:如果不加任何参数就进行链接,那就是hard link,至于-s就是symbolic link :
-f:如果目标文件存在时,就主动的将目标文件直接移除后再创建!
说明:
符号链接文件:Symbolic link,删除原文件,链接文件失效,无法打开;
实体链接文件:Hard Link 基于inode创建的实体文件,删除源文件,链接文件依旧能打开,但不能对目录创建链接;
// 创建空文件test.log
[test@test]$ touch test.log
// 创建符号链接文件
[test@test]$ ln -s test.log testSymbolic.log
// 创建实体链接文件
[test@test]$ ln test.log testHardLink.log
[test@test]$ ll test*
-rw-rw-r-- 2 posp test 0 2月 3 09:55 testHardLink.log
-rw-rw-r-- 2 posp test 0 2月 3 09:55 test.log
lrwxrwxrwx 1 posp test 8 2月 3 09:55 testSymbolic.log -> test.log
18、常用压缩和解压文件命令
常见压缩文件扩展名:
*.Z: compress程序压缩的文件;
*.zip: zip程序压缩的文件;
*.gz: gzip程序压缩的文件;
*.bz2: bzip2程序压缩的文件;
*.xz: xz程序压缩的文件;
*.tar: tar程序打包的数据,并没有压缩过;
*.tar.gz: tar程序打包的文件,其中并且经过gzip的压缩;
*.tar.bz2: tar程序打包的文件,其中并且经过bzip2的压缩;
*.tar.xz: tar程序打包的文件,其中并且经过xz的压缩;
18.1 单一文件压缩和解压命令:gzip/bzip2/xz
18.1.1 压缩和解压文件:gzip(查看压缩文件命令:zcat/zmore/zless/zgrep)
gzip 是应用度最广的压缩指令了!目前gzip可以解开compress,zip与gzip等软件所压缩的文件。gzip所创建的压缩文件为*.gz的文件名
使用说明:gzip [-cdtv#] 文件名
使用说明:zcat 文件名.gz
选项与参数:
-c:将压缩的数据输出到屏幕上,可通过数据流重导向来处理;
-d :解压缩的参数;
-t:可以用来检验一个压缩文件的一致性~看看文件有无错误;
-v:可以显示出原文件/压缩文件的压缩比等信息;
-#:#为数字的意思,代表压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好
[test@test]$ ls
test.log
// 压缩文件到指定压缩文件名字
[test@test]$ gzip -9 -c test.log > test.gz
[posp@test]$ ls
test.gz test.log
[test@apptest135 tkoFile]$ ls
test.gz test.log
[test@test]$ rm -f test.log
[posp@test]$ ls
test.gz
// 解压文件
[test@test]$ gzip -d test.gz
[test@test]$ ls
test
18.1.2 压缩和解压文件:bzip2(查看压缩文件命令:bzcat/bzmore/bzless/bzgrep)
若说gzip是为了取代compress并提供更好的压缩比而成立的,那么bzip2则是为了取代gzip并提供更佳的压缩比而来的,其压缩比gzip还要好,用法几乎与gzip相同。
使用说明:bzip2 [-cdkzv#] 文件名
使用说明:bzcat 文件名.bz2
选项与参数:
-c:将压缩的数据输出到屏幕上,可通过数据流重导向来处理;(常用压缩)
-d :解压缩的参数;
-t:可以用来检验一个压缩文件的一致性~看看文件有无错误;
-k:保留原始文件,而不会删除原始的文件;
-z:压缩的参数(默认值,可以不加);
-v:可以显示出原文件/压缩文件的压缩比等信息;(压缩)
-#:#为数字的意思,代表压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好
// 压缩文件
[test@test tkoFile]$ bzip2 -9 -c test.log > test.bz2
[test@test tkoFile]$ ll
-rw-rw-r-- 1 test test 54 2月 15 14:22 test.bz2
-rw-rw-r-- 1 test test 11 2月 15 14:21 test.log
// 显示压缩文件信息方式来压缩
[test@test tkoFile]$ bzip2 -v test.log test.log: 0.204:1, 39.273 bits/byte, -390.91% saved, 11 in, 54 out.
[test@test tkoFile]$ ll
-rw-rw-r-- 1 test test 54 2月 15 14:22 test.bz2
-rw-rw-r-- 1 test test 54 2月 15 14:21 test.log.bz2
[test@test tkoFile]$ bzip -d test.log.bz2
-bash: bzip: command not found
[test@test tkoFile]$ bzip2 -d test.log.bz2
[test@test tkoFile]$ ll
-rw-rw-r-- 1 test test 54 2月 15 14:22 test.bz2
-rw-rw-r-- 1 test test 11 2月 15 14:21 test.log
18.1.3 压缩和解压文件:xz(查看压缩文件命令:xzcat/xzmore/xzless/xzgrep)
使用说明:xz [-dtlkc#] 文件名
使用说明:xcat 文件名.xz
选项与参数:
-d:就是解压缩啊!
-t:测试压缩文件的完整性,看有没有错误
-l:列出压缩文件的相关信息
-k:保留原本的文件不删除~
-c:同样的,就是将数据由屏幕上输出的意思!
-#:同样的,也有较佳的压缩比的意思!
// 压缩文件
[test@test tkoFile]$ xz -v xz.log
xz.log (1/1)100.0 % 68 B / 12 B = 5.667
[test@test tkoFile]$ ls -l
总用量 4
-rw-rw-r-- 1 test test 68 2月 15 14:41 xz.log.xz
// 解压文件
[test@test tkoFile]$ xz -d xz.log.xz
[test@test tkoFile]$ ls -l
总用量 4
-rw-rw-r-- 1 test test 12 2月 15 14:41 xz.log
[test@test tkoFile]$ xz -c -9 xz.log > xz.xz
[test@test tkoFile]$ ls -l
总用量 8
-rw-rw-r-- 1 test test 12 2月 15 14:41 xz.log
-rw-rw-r-- 1 test test 68 2月 15 14:45 xz.xz
压缩时间与空间总结:
- gzip时间最短;
- bzip2时间其次,但压缩性能比gzip强;
- xz时间最长,压缩最强,但是压缩性能是最强的;
18.2 多文件压缩和解压命令:tar
使用说明: tar [-z|-j|-J] [cv] [-f 待创建的新文件名] filename… <==打包与压缩
使用说明: tar [-z|-j|-J] [tv] [-f 既有的 tar文件名] <==察看文件名
使用说明: tar [-z|-j|-J] [xv] [-f 既有的 tar文件名] [-C 目录] <==解压缩
选项与参数:
-c :创建打包文件,可搭配 -v 来察看过程中被打包的文件名(filename)
-t :察看打包文件的内容含有哪些文件名,重点在察看“文件名”就是了;
-x :解打包或解压缩的功能,可以搭配 -C (大写) 在特定目录解开
特别留意的是, -c, -t, -x 不可同时出现在一串命令行中。
-z :通过 gzip 的支持进行压缩/解压缩:此时文件名最好为 *.tar.gz
-j :通过 bzip2 的支持进行压缩/解压缩:此时文件名最好为 *.tar.bz2
-J :通过 xz 的支持进行压缩/解压缩:此时文件名最好为 *.tar.xz
特别留意, -z, -j, -J 不可以同时出现在一串命令行中
-v :在压缩/解压缩的过程中,将正在处理的文件名显示出来!
-f filename:-f 后面要立刻接要被处理的文件名!建议 -f 单独写一个选项啰!(比较不会忘记)
-C 目录 :这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。
其他后续练习会使用到的选项介绍:
-p(小写) :保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件
-P(大写) :保留绝对路径,亦即允许备份数据中含有根目录存在之意;
--exclude=FILE:在压缩的过程中,不要将 FILE 打包!
最简单的使用tar就只要记忆下面的方式即可:
压 缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称
查 询:tar -jtv -f filename.tar.bz2
解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录
案例如下:
//案例1:对tkoFile目录进行打包,使用gz语法打包
[test@test]$ tar -zcv -f test.tar.gz ../tkoFile
tar: 从成员名中删除开头的“../”
../tkoFile/
../tkoFile/xz.log
../tkoFile/xz.xz
tar: ../tkoFile: 在我们读入文件时文件发生了变化
[test@test]$ ls -l
-rw-rw-r-- 1 test test 277 2月 27 16:48 test.tar.gz
-rw-rw-r-- 1 test test 12 2月 15 14:41 xz.log
-rw-rw-r-- 1 test test 68 2月 15 14:45 xz.xz// 案例2:对tkoFile目录进行打包,使用bz2语法打包
[test@test tkoFile]$ time tar -jcv -f bak.tar.bz2 ../tkoFile
tar: 从成员名中删除开头的“../”
../tkoFile/
../tkoFile/test.tar.bz2
../tkoFile/xz.log
../tkoFile/test.tar.gz
../tkoFile/xz.xz
tar: ../tkoFile: 在我们读入文件时文件发生了变化real 0m0.334s
user 0m0.006s
sys 0m0.024s
[test@test tkoFile]$ ls -l
总用量 20
-rw-rw-r-- 1 test test 1668 3月 3 17:05 bak.tar.bz2
-rw-rw-r-- 1 test test 723 2月 27 17:12 test.tar.bz2
-rw-rw-r-- 1 test test 277 2月 27 16:48 test.tar.gz
-rw-rw-r-- 1 test test 12 2月 15 14:41 xz.log
-rw-rw-r-- 1 test test 68 2月 15 14:45 xz.xz// 案例3:对bak.tar.bz2解压到指定目录
[test@test tkoFile]$ tar -jxv -f bak.tar.bz2 -C bak
tkoFile/
tkoFile/test.tar.bz2
tkoFile/xz.log
tkoFile/test.tar.gz
tkoFile/xz.xz
// 案例4:对bak.tar.bz2压缩文件进行查询文件
[test@test tkoFile]$ tar -jtv -f bak.tar.bz2
drwxrwxr-x test/test 0 2023-02-27 17:12 tkoFile/
-rw-rw-r-- test/test 723 2023-02-27 17:12 tkoFile/test.tar.bz2
-rw-rw-r-- test/test 12 2023-02-15 14:41 tkoFile/xz.log
-rw-rw-r-- test/test 277 2023-02-27 16:48 tkoFile/test.tar.gz
-rw-rw-r-- test/test 68 2023-02-15 14:45 tkoFile/xz.xz
相关文章:

Linux基础命令(一)
文章目录1、时间命令:date2、日历命令:cal3、计算器程序:bc4、基础组合键5、正确的关机指令使用5.1 将数据同步写入硬盘中的指令: sync5.2 惯用的关机指令: shutdown5.3 重新开机,关机: reboot,…...

RocketMQ Broker消息处理流程剩余源码解析
🍊 Java学习:Java从入门到精通总结 🍊 深入浅出RocketMQ设计思想:深入浅出RocketMQ设计思想 🍊 绝对不一样的职场干货:大厂最佳实践经验指南 📆 最近更新:2023年3月4日 …...

JQuery入门基础
目录 1.初识 下载 使用 JQuery(核心)对象 2.选择器 基础选择器 层次选择器 后代选择器 子代选择器 兄弟选择器 相邻选择器 3.JQuery DOM操作 创建元素 插入元素 删除元素 遍历元素 属性操作 获取属性 设置属性 删除属性 样式操作 …...

kafka 构建双向SSL认证
kafka 安装 以下内容均已完成测试,按照教程搭建你会得到一个双向ssl认证的kafka broker,并能通过ip以及域名访问,笔者能力有限如果文章内容存在问题烦请各位指出。 搭建单机Kafka 需求 centos 7kafka_2.12-2.6.0jdk8(文档中统…...

推荐一个.Net Core开发的Websocket群聊、私聊的开源项目
更多开源项目请查看:一个专注推荐.Net开源项目的榜单 今天给大家推荐一个使用Websocket协议实现的、高性能即时聊天组件,可用于群聊、好友聊天、游戏直播等场景。 项目简介 这是一个基于.Net Core开发的、简单、高性能的通讯组件,支持点对点…...

华为OD机试Golang解题 - 事件推送 | 含思路
华为Od必看系列 华为OD机试 全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典文章目录 华为Od必看系列使用说明本期题目…...

将微信小程序页面转为图片
最近做项目遇到一个需求,那就是要将某个页面转为图片然后传给后端,我仔细找了一圈,发现官方那个Api也就是wx.canvasToTempFilePath生成的图片很有可能为空,太坑了,于是我放弃用它了,选择了用wxml2canvas。 安装wxml2canvas npm init npm install wxml2canvas --save --…...

LINE、SDNE和struc2vec图嵌入算法学习笔记
引言 在cs224w课程中,我先后总结了deepwalk、node2vec,这两种算是最经典也是最主流的做法,而在 图节点嵌入相关算法学习笔记 中,从头至尾,将一些经典算法用wiki的数据集复现了一下,所以本篇博文࿰…...

Buuctf Younger-drive 题解
目录 一.查壳 二.运行缺少dll 三.主函数 四.hObject线程 五.Thread线程 六.judge函数 七.解题脚本 这题的关键在于了解一定的线程相关知识 一.查壳 32位带壳,用upx脱壳 二.运行缺少dll 后续尝试了各种方法修复dll但是还是运行不了 值得一提的是脱壳后的程序不能动态调试…...

数据结构与算法:二叉树专题
数据结构与算法:二叉树专题前言前提条件基础知识二叉树链式存储结构二叉树中序遍历二叉树层序遍历常见编程题把一个有序整数数组放到二叉树中逐层打印二叉树结点数据求一棵二叉树的最大子树和判断两棵二叉树是否相等把二叉树转换为双向链表判断一个数组是否是二元查…...

Cadence Allegro 导出Cadence Schematic Feedback Report详解
⏪《上一篇》 🏡《总目录》 ⏩《下一篇》 目录 1,概述2,Cadence Schematic Feedback Report作用3,Cadence Schematic Feedback Report示例4,Cadence Schematic Feedback Report导出方法4.1,方法1,4.2,方法2,...

《计算机系统基础》—— 运算
文章目录《计算机系统基础》——运算整数按位运算作用操作位移运算作用操作乘法运算除法运算浮点数加减运算乘除运算《计算机系统基础》——运算 🚀🚀本章我们需要介绍的是有关C语言里面的运算,当然了,我们不会是介绍简单的运算&…...

MSTP多进程讲解与实验配置
目录 MSTP多进程 专业术语 MSTP多进程配置 在MSTP域配置 MSTP多进程 多进程的作用 将设备上的端口绑定到不同的进程中,以进程为单位进行MSTP计算,不在同一进程内的端口不参与此进程中的MSTP协议计算,实现各个进程之间的生成树计算相互独立…...

【Python】软件测试必备:了解 fixture 在自动化测试中的重要作用
在自动化软件测试中,fixture 是一种确保测试在一致且受控条件下运行的重要方法。简单来说,fixture 就是一组先决条件或固定状态,必须在运行一组测试之前建立。在测试框架中,fixture 提供了一种方便的方法,用于在每个测…...

DevExpress皮肤引用的办法
1.引用Dll皮肤文件Typeprocedure SetSkin(skinnam:string);procedure TFrmMain.SetSkin(skinnam:string);varHinst:THANDLE;RStream:TResourceStream;beginHinst:Loadlibrary(ALLSK.dll);If Hinst0 ThenExitelsebeginRstream:TResourceStream.Create(Hinst,skinnam,MYSKIN);dxS…...

2023-03-04 区分纳米颗粒核壳原子
声明:未经允许,不得擅自复制、转载。欢迎引用:Laser-Assisted Synthesis of Bi-Decorated Pt Aerogel for Efficient Methanol Oxidation ElectrocatalysisApplied Surface Science ( IF 6.707 ) Pub Date : 2022-04-01 , DOI: 10.1016/j.aps…...

review设备管理
目录 1、设备管理基础知识 (1)、外部设备分类 (2)、注意事项 2、I/O硬件原理 (1)、不同方式对I/O设备分类 (2)、I/O控制方式 (3)、设备控制器 3、I/O软…...

Cadence Allegro 导出Bill of Material Report (Condensed)详解
⏪《上一篇》 🏡《总目录》 ⏩《下一篇》 目录 1,概述2,Bill of Material Report (Condensed)作用3,Bill of Material Report (Condensed)示例4,Bill of Material Report (Condensed)导出方法4.1,方法14.2,方法2,...

B. Sherlock and his girlfriend
Sherlock has a new girlfriend (so unlike him!). Valentines day is coming and he wants to gift her some jewelry. He bought n pieces of jewelry. The i-th piece has price equal to i 1, that is, the prices of the jewelry are 2, 3, 4, ... n 1. Watson…...

Spring SpEL表达式
Java知识点总结:想看的可以从这里进入 目录17、Spring SpEL17.1、简介17.2、配合value使用17.2.1、基本字面值17.2.2、类相关表达式17.2.3、properties17.2.4、T运算符17.2.5、new17.2.6、Elvis运算符17.2.7、运算符17.2、配合XML使用17、Spring SpEL 17.1、简介 S…...

Nginx反向代理原理详解与配置
Nginx反向代理是一种常用的反向代理技术,它允许您将一个或多个Web服务器上的内容公开给Internet上的客户端,而不必暴露您的服务器的IP地址。Nginx反向代理的原理是:客户端发出一个HTTP请求,Nginx服务器收到请求后,将请…...

Happen-Before从入门到踹门
什么是Happen-Before有人翻译为"先行发生原则",其实也没错,但是更准确的说法应该是,前一个操作的值,后一个总能察觉到。Happen-Before的八条规则程序有序性:在前面的代码优先于在后面的代码执行volatile的变…...

电力系统系统潮流分析【IEEE 57 节点】(Matlab代码实现)
👨🎓个人主页:研学社的博客💥💥💞💞欢迎来到本博客❤️❤️💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密…...

Java——N皇后问题
题目链接 leetcode在线oj题——N皇后 题目描述 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ÿ…...

Mybatis一级缓存与二级缓存
一、MyBatis 缓存缓存就是内存中的数据,常常来自对数据库查询结果的保存。使用缓存,我们可以避免频繁与数据库进行交互,从而提高响应速度。MyBatis 也提供了对缓存的支持,分为一级缓存和二级缓存,来看下下面这张图&…...

LQB,手打,PCF8591,ADDA转换,AD1是光敏电阻,AD3是电位器,DA输出
在上述at24c02de 基础上,添加三个函数 一个是读取通道1光敏电阻的数据; 一个是读取通道3的电压; 一个是输出DA的数据。。 5V的AD DA。 如果读入的电压是5V,输入AD,就是255; 如果是0V,就是00000…...

【计组笔记06】计算机组成与原理之控制器和总线结构
这篇文章,主要介绍计算机组成与原理之控制器和总线结构。 目录 一、控制器功能 1.1、控制器组成 1.2、控制单元的输入和输出...

elisp简单实例: auto-save
elisp 能找一个简单又实用的代码很不容易,以下代码不是我的原创,只是结合自己的理解,添加修正了一些注释,荣誉归原作者,感谢原作者的开源精神! 调用说明: 把后面代码存为auto-save.el 在init.el 中写上 (require auto-save) 就可以了. 下面是auto-save.el 内容了. ;; 我…...

写字楼/园区/购物中心空置率太高?快用快鲸智慧楼宇系统
客户租不租你的写字楼,事关区位、交通、环境、价格、面积、装修等诸多因素,但很多招商部对这些影响客户决策的数据并不重视,在客户初次上门看房时仅简单记录姓名、联系方式、需求面积,对其他核心数据熟视无睹,也为日后…...

【JavaSE】数组的定义和使用(上)
数组的定义和使用(上)6-数组的定义与使用1. 数组的基本概念1.1 为什么要使用数组1.2 什么是数组1.3 数组的创建及初始化1.3.1 数组的创建1.3.2 数组的初始化1.4 数组的使用1.4.1 数组中元素的访问1.4.2 遍历数组2. 数组是引用类型2.1 初始JVM的内存分布2…...