bzip2

bzip2

将文件压缩成bz2格式

补充说明

bzip2命令 用于创建和管理(包括解压缩)“.bz2”格式的压缩包。

bzip2 采用 Burrows-Wheeler 块排序文本压缩算法和 Huffman 编码方式压缩文件。 压缩率一般比基于 LZ77/LZ78 的压缩软件好得多,其性能接近 PPM 族统计类压缩软件。

命令行参数有意设计为非常接近 GNU gzip 的形式,但也不完全相同。

bzip2 从命令行读入文件名和参数。 每个文件被名为 “原始文件名.bz2” 的压缩文件替换。 每个压缩文件具有与原文件相同的修改时间、 权限, 如果可能的话,还具有相同的属主, 因此在解压缩时这些特性将正确地恢复。 在某些文件系统中, 没有权限、 属主或时间的概念, 或者对文件名的长度有严格限制, 例如 MSDOS,在这种情况下,bzip2 没有保持原文件名、 属主、 权限以及时间的机制, 从这个意义上说,bzip2 对文件名的处理是幼稚的。

bzip2 和 bunzip2 在缺省情况下不覆盖已有的文件。 如果想覆盖已有的文件,要指定 -f 选项。

如果未指定文件名, bzip2 将压缩来自标准输入的数据并写往标准输出。在这种情况下, bzip2 会拒绝将压缩结果写往终端,因为这完全无法理解并且是没有意义的。

bunzip2 (以及 bzip2 -d) 对所有指定的文件进行解压缩处理。不是由 bzip2 产生的文件将被忽略,同时发出一个警告信息。 bzip2 按下列方式由压缩文件名确定解压后的文件名:

filename.bz2    解压成   filename
filename.bz     解压成   filename
filename.tbz2   解压成   filename.tar
filename.tbz    解压成   filename.tar
anyothername    解压成   anyothername.out

如果文件名的后缀不是下列之一: .bz2, .bz, .tbz2 或 .tbz, .bzip2 将抱怨无法确定原始文件名,并采用原文件名加 .out 作为解压缩文件名。

2024-08-08    
bzip2recover

bzip2recover

恢复被破坏的.bz2压缩包中的文件

补充说明

bzip2recover命令 可用于恢复被破坏的“.bz2”压缩包中的文件。

bzip2是以区块的方式来压缩文件,每个区块视为独立的单位。因此,当某一区块损坏时,便可利用bzip2recover,试着将文件中的区块隔开来,以便解压缩正常的区块。通常只适用在压缩文件很大的情况。

语法

bzip2recover(参数)

参数

文件:指定要恢复数据的.bz2压缩包。

2024-08-08    
bzless

bzless

增强.bz2压缩包查看器

补充说明

bzless命令 是增强“.bz2”压缩包查看器,bzless比bzmore命令功能更加强大。

语法

bzless(参数)

参数

文件:指定要分屏显示的.bz2压缩包。

2024-08-08    
bzmore

bzmore

查看bzip2压缩过的文本文件的内容

补充说明

bzmore命令 用于查看bzip2压缩过的文本文件的内容,当下一屏显示不下时可以实现分屏显示。

语法

bzmore(参数)

参数

文件:指定要分屏显示的.bz2压缩包。

2024-08-08    
cal

cal

显示当前日历或指定日期的日历

补充说明

cal命令 用于显示当前日历,或者指定日期的日历,如果没有指定参数,则显示当前月份。

一个单一的参数指定要显示的年份 (1 - 9999) ; 注意年份必须被完全地指定: cal 89 不会 显示1989年的日历. 两个参数表示月份 (1 - 12) 和年份. 如果没有指定参数, 则显示当前月份的日历.

一年从Jan 1 (1 月 1 日) 开始.

格里高利历法改革(Gregorian Reformation)被认为发生于 1752 年 9 月 3 日. 在此之前, 多数国家已经认可这项改革(尽管有一些直到 20 世纪初才认可它). 那天之后的 10 天在这项改革被略去了, 所以那个月的日历有点不太寻常.

语法

cal [ -mjy ] [ 月份 ] [ 年份 ]

选项

-l # 显示单月输出;
-3 # 显示临近三个月的日历;
-s # 将星期日作为月的第一天;
-m # 显示星期一作为一周的第一天..  (缺省为星期日.)
-j # 显示儒略历的(Julian)日期 (以 1 为基的天数, 从 1 月 1 日开始计数) .
-y # 显示当前年份的日历..

参数

月:指定月份;
年:指定年份。

实例

单独执行cal命令会打印出日历:

2024-08-08    
cancel

cancel

取消已存在的打印任务

补充说明

cancel命令 用于取消已存在的打印任务。

语法

cancel(选项)(参数)

选项

-a:取消所有打印任务;
-E:当连接到服务器时强制使用加密;
-U:指定连接服务器时使用的用户名;
-u:指定打印任务所属的用户;
-h:指定连接的服务器名和端口号。

参数

打印任务号:指定要取消的打印任务编号。

2024-08-08    
cat

cat

连接多个文件并打印到标准输出。

概要

cat [OPTION]... [FILE]...

主要用途

  • 显示文件内容,如果没有文件或文件为-则读取标准输入。
  • 将多个文件的内容进行连接并打印到标准输出。
  • 显示文件内容中的不可见字符(控制字符、换行符、制表符等)。

参数

FILE(可选):要处理的文件,可以为一或多个。

选项

长选项与短选项等价

-A, --show-all           等价于"-vET"组合选项。
-b, --number-nonblank    只对非空行编号,从1开始编号,覆盖"-n"选项。
-e                       等价于"-vE"组合选项。
-E, --show-ends          在每行的结尾显示'$'字符。
-n, --number             对所有行编号,从1开始编号。
-s, --squeeze-blank      压缩连续的空行到一行。
-t                       等价于"-vT"组合选项。
-T, --show-tabs          使用"^I"表示TAB(制表符)。
-u                       POSIX兼容性选项,无意义。
-v, --show-nonprinting   使用"^""M-"符号显示控制字符,除了LFD(line feed,即换行符'\n')和TAB(制表符)。

--help                   显示帮助信息并退出。
--version                显示版本信息并退出。

返回值

返回状态为成功除非给出了非法选项或非法参数。

例子

# 合并显示多个文件
cat ./1.log ./2.log ./3.log
# 显示文件中的非打印字符、tab、换行符
cat -A test.log
# 压缩文件的空行
cat -s test.log
# 显示文件并在所有行开头附加行号
cat -n test.log
# 显示文件并在所有非空行开头附加行号
cat -b test.log
# 将标准输入的内容和文件内容一并显示
echo '######' |cat - test.log

注意

  1. 该命令是GNU coreutils包中的命令,相关的帮助信息请查看man -s 1 catinfo coreutils 'cat invocation'
  2. 当使用cat命令查看体积较大的文件时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容,为了控制滚屏,可以按Ctrl+s键停止滚屏;按Ctrl+q键恢复滚屏;按Ctrl+c(中断)键可以终止该命令的执行,返回Shell提示符状态。
  3. 建议您查看体积较大的文件时使用lessmore命令或emacsvi等文本编辑器。

参考链接

  1. Question about LFD key
2024-08-08    
cd

cd

切换用户当前工作目录。

概要

cd [-L|[-P [-e]]] [dir]

主要用途

  • 切换工作目录至dir。其中dir的表示法可以是绝对路径或相对路径。
  • 若参数dir省略,则默认为使用者的shell变量HOME
  • 如果dir指定为~时表示为使用者的shell变量HOME.表示当前目录,..表示当前目录的上一级目录。
  • 环境变量CDPATH是由冒号分割的一到多个目录,你可以将常去的目录的上一级加入到CDPATH以便方便访问它们;如果dir/开头那么CDPATH不会被使用。
  • shopt选项cdable_vars打开时,如果dirCDPATH及当前目录下均不存在,那么会把它当作变量,读取它的值作为要进入的目录。

参数

dir(可选):指定要切换到的目录。

选项

-L (默认值)如果要切换到的目标目录是一个符号连接,那么切换到符号连接的目录。
-P 如果要切换到的目标目录是一个符号连接,那么切换到它指向的物理位置目录。
-  当前工作目录将被切换到环境变量OLDPWD所表示的目录,也就是前一个工作目录。

返回值

返回状态为成功除非无法进入指定的目录。

例子

cd    # 进入用户主目录;
cd /  # 进入根目录
cd ~  # 进入用户主目录;
cd ..  # 返回上级目录(若当前目录为“/“,则执行完后还在“/";".."为上级目录的意思);
cd ../..  # 返回上两级目录;
cd !$  # 把上个命令的参数作为cd参数使用。

关于切换到上一个工作目录的说明

cd -
# 命令会首先显示要切换到的目标目录,然后再进入。
cd ${OLDPWD}
# 命令会直接切换到上一个工作目录。

关于CDPATH

# 设置桌面文件夹作为CDPATH的值。
CDPATH='~/Desktop'
# 假设我们接下来要演示涉及到的路径~和~/Desktop下没有test3文件夹,现在新建它们。
mkdir ~/test3
mkdir ~/Desktop/test3
# 进入~目录。
cd ~
# 进入test3目录。
cd test3
# 执行后显示~/Desktop/test3并进入该目录,而不是~目录的test3目录。
# 如果CDPATH存在值,那么优先在CDPATH中查找并进入第一个匹配成功的,如果全部失败那么最后尝试当前目录。

关于cdable_vars

2024-08-08    
cdrecord

cdrecord

Linux系统下光盘刻录功能命令

补充说明

cdrecord命令 用于Linux系统下光盘刻录,它支持cd和DVD格式。linux下一般都带有cdrecord软件。

语法

cdrecord(选项)(参数)

选项

-v:显示刻录光盘的详细过程;
-eject:刻录完成后弹出光盘;
speed=<刻录倍速>:指定光盘刻录的倍速;
dev=<刻录机设备号>:指定使用“-scanbus”参数扫描到的刻录机的设备号;
-scanbus:扫描系统中可用的刻录机。

参数

ISO文件:指定刻录光盘使用的ISO映像文件。

实例

查看系统所有 CD-R(w) 设备:

cdrecord -scanbus
scsibus0:
  0,0,0     0) *
  0,1,0     1) *
  0,2,0     2) *
  0,3,0     3) 'HP      ' 'CD-Writer+ 9200 ' '1.0c' Removable CD-ROM

用iso文件刻录一张光盘:

cdrecord -v -eject speed=4 dev=0,3,0 backup.iso

参数解释

  • -v:显示刻录光盘的详细过程
  • -eject:刻完自动弹出光盘
  • speed=4 dev=0,3,0:四速刻录到HP CD-writer设备上。

擦写光驱:

cdrecord --dev=0,3,0 --blank=fast
2024-08-08    
chage

chage

修改帐号和密码的有效期限

补充说明

chage命令 是用来修改帐号和密码的有效期限。

语法

chage [选项] 用户名

选项

-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M:密码保持有效的最大天数。
-w:用户密码到期前,提前收到警告信息的天数。
-E:帐号到期的日期。过了这天,此帐号将不可用。
-d:上一次更改的日期。
-I:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。

实例

可以编辑/etc/login.defs来设定几个参数,以后设置口令默认就按照参数设定为准:

PASS_MAX_DAYS   99999
PASS_MIN_DAYS   0
PASS_MIN_LEN    5
PASS_WARN_AGE   7

当然在/etc/default/useradd可以找到如下2个参数进行设置:

# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

通过修改配置文件,能对之后新建用户起作用,而目前系统已经存在的用户,则直接用chage来配置。

我的服务器root帐户密码策略信息如下:

chage -l root

最近一次密码修改时间                  : 3月 12, 2013
密码过期时间                         :从不
密码失效时间                         :从不
帐户过期时间                         :从不
两次改变密码之间相距的最小天数          :0
两次改变密码之间相距的最大天数          :99999
在密码过期之前警告的天数               :7

我可以通过如下命令修改我的密码过期时间:

chage -M 60 root
chage -l root

最近一次密码修改时间                  : 3月 12, 2013
密码过期时间                         : 5月 11, 2013
密码失效时间                         :从不
帐户过期时间                         :从不
两次改变密码之间相距的最小天数          :0
两次改变密码之间相距的最大天数          :60
在密码过期之前警告的天数               :9

然后通过如下命令设置密码失效时间:

2024-08-08