压缩解压

tar -c|x|u|r|t[z|j][v] -f <归档文件> [未打包文件]

将多个文件打包为一个归档文件,可以在打包的同时进行压缩。支持的格式为tar(归档)、gz(压缩)、bz2(压缩率更高,比较耗时)

        -c 创建
        -x 解包
        -u 更新
        -r 添加
        -t 查看
        -d 比较压缩包内文件和文件
        -A 将tar文件添加到归档文件中
        -z 使用gz压缩格式
        -j 使用bz2压缩格式
        -v 显示过程
        -f <文件名> 归档文件的文件名
        -C <解压路径> 将压缩包中的文件解压到指定目录

            [未打包文件] 创建、更新时必须填写

        示例:

        tar -zcvf xxx.tar.gz xxx/ xxx1 xxx2 xxx3 多个待打包文件以空格分隔
        tar -zcvf xxx.tar.gz /home/user/xxx/  使用绝对路径打包,解包也使用绝对路径
        tar -zxvf xxx.tar.gz 按相对路径解包到当前目录下,或按绝对路径解包
        tar -zcvf xxx.tar.gz xxx | split -b 1m 打包后,使用split分割为1m大小的多个文件

    其它参数

        -P 使用绝对路径压缩时,保留根目录“/”
        -W 校验
        -p 还原文件权限
        -w 询问用户
        --totals 统计
        -T <表达式> 处理符合条件的文件
        -X <表达式> 排除符合条件的文件

zip [参数] <压缩包> <源文件>

使用zip格式打包文件
    -r 递归,将指定目录下的所有文件和子目录一并处理
    -S 包含系统和隐藏文件
    -y 直接保存符号连接,而非该连接所指向的文件
    -X 不保存额外的文件属性
    -m 将文件压缩并加入压缩文件后,删除源文件
    -<压缩级别> 1~9,数字越大,压缩率越高
    -F 尝试修复已损坏的压缩文件
    -T 检查备份文件内的每个文件是否正确无误
    -q 不显示指令执行过程
    -g 将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件
    -u 更新压缩包内文件
    -f 更新压缩包内文件。如果符合条件的文件没有包含在压缩包中,则压缩后添加
    -$ 保存第一个被压缩文件所在磁盘的卷标
    -j 只保存文件名称及其内容
    -D 压缩文件内不建立目录名称
    -i <表达式> 压缩目录时,只压缩符合条件的文件
    -x <表达式> 排除符合条件的文件
    -n <文件名后缀> 排除指定文件名后缀的文件
    -b <缓存路径> 指定临时文件目录
    -d <表达式> 从压缩文件内删除指定的文件
    -t <日期时间> 把压缩文件的日期设成指定的日期
    -o 以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同
    -A 调整可执行的自动解压缩文件
    -c 替每个被压缩的文件加上注释
    -z 替压缩文件加上注释
    -k 使用MS-DOS兼容格式的文件名称。
    -l 压缩文件时,把LF字符置换成LF+CR字符。
    -ll 压缩文件时,把LF+CR字符置换成LF字符。

unzip [参数] <压缩文件> [压缩包中将被释放的文件]

解压zip压缩包文件
    -P <密码> zip压缩包的密码
    -d <路径> 指定解压路径
    -n 解压缩时不覆盖原有文件
    -f 覆盖原有文件
    -o 不经询问,直接覆盖原有文件
    -u 覆盖原有文件,并将压缩文件中的其他文件解压缩到目录中
    -l 显示压缩文件内所包含的文件
    -t 检查压缩文件是否正确
    -z 显示压缩包注释
    -Z unzip -Z等于执行zipinfo指令
    -j 不处理压缩文件中原有的目录路径
    -C 压缩文件中的文件名称区分大小写
    -L 将压缩文件中的全部文件名改为小写
    -s 将文件名中的空格转换下划线
    -X 解压缩时保留文件原来的UID/GID
    -q 执行时不显示任何信息
    -v 执行是时显示详细的信息
    -c 将解压缩的结果显示到屏幕上,并对字符做适当的转换
    -p 与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换
    -a 对文本文件进行必要的字符转换
    -b 不要对文本文件进行字符转换
    -x <表达式> 处理里排除压缩包中的指定文件
    -M 将输出结果送到more程序处理

7z|7za <子命令> [参数] <压缩包> [文件]

    子命令
        a 添加
        d 删除
        e 解压
        x 带路径解压
        l 列表查看
        t 测试
        u 更新
    参数
        -m<压缩方式>
        -m0=<压缩算法> 默认使用lzma
        -mx=<1~9> 压缩级别
        -mfb=64 number of fast bytes for LZMA = 64
        -md=<字典大小> 设置字典大小,例如 -md=32m
        -ms=<on|off> 是否固实压缩
        -o<输出目录> 设置输出目录
        -p[密码] 使用密码
        -r[数字] 递归,使用数字定义递归子目录的深度
        -sfx[<模块名称>] 使用自解压模块
        -si 从标准输入设备读入数据
        -so 将数据写入标准输出设备
        -y 所有询问均回答Yes
        -w<工作目录>

rar <子命令> [参数] <压缩包> [文件|文件列表|路径]

    子命令
        x 带路径解压
        e 解压到当前目录
        a 将文件添加到压缩包内
        d 从压缩包中删除文件
        u 更新压缩包内文件
        f 更新压缩包内文件,并添加压缩包内不存在的文件
        m 添加并删除源文件
        r 修复
        l 列表查看压缩包内文件信息 lt 更详细信息 lb 简短信息
        c 添加压缩包注释
        cf <文件名> 将文件内容添加为注释
        cw <文件名> 将注释保存为文件
        t 测试压缩包
        rr 添加恢复纪录
        rv 恢复到文件
    参数
        -p<密码> 设置密码
        -m<0~5> 设置压缩级别,数字越大,压缩级别越高

搜索

whereis <程序名称>

查找软件的安装路径
    -b 只查找二进制文件
    -m 只查找帮助文件
    -s 只查找源代码
    -u 排除指定类型文件
    -f 只显示文件名
    -B <目录> 在指定目录下查找二进制文件
    -M <目录> 在指定目录下查找帮助文件
    -S <目录> 在指定目录下查找源代码

locate <文件名称>

在文件索引数据库中搜索文件
    -d <数据库路径> 搜索指定数据库

updatedb 更新文件索引数据库

find [路径] <表达式>

查找文件
    -name <表达式> 根据文件名查找文件
    -iname <表达式> 根据文件名查找文件,忽略大小写
    -path <表达式> 根据路径查找文件
    -ipath <表达式> 根据路径查找文件,忽略大小写
    -amin <分钟> 过去N分钟内访问过的文件
    -atime <天数> 过去N天内访问过的文件
    -cmin <分钟> 过去N分钟内修改过的文件
    -ctime <天数> 过去N天内修改过的文件
    -anewer <参照文件> 比参照文件更晚被读取过的文件
    -cnewer <参照文件> 比参照文件更晚被修改过的文件
    -size <大小> 根据文件大小查找文件,单位b c w k M G
    -type <文件类型> 根据文件类型查找文件。b 块设备 c 字符设备 d 目录 p 管道文件 f 普通文件 l 链接 s 端口文件
    -user <用户名> 按归属用户查找文件
    -uid <uid> 按UID查找文件
    -group <群组名> 按归属群组查找文件
    -gid <gid> 按GID查找文件
    -empty 查找空文件

grep <字符串>|"<正则表达式>" [文件名]

在文件中搜索内容

其它

echo <字符串>

回显。较复杂的字符串,可以使用 " 括起来。

        -n 输出内容不换行
        -E 不解析脱字符
        -e 解析脱字符

    控制字符
        \ 反斜线
        a 警告
        b 退格
        n 换行
        r 回车
        t 水平制表符

clear

消除屏幕

alias <输入内容> <实际内容>

别名,为命令指定一个别名,以简化输入。例如:

    alias ls='ls --color=auto'
    alias ls="l -CF"

    可以将您的定义保存在 ~/.bashrc 文件中。

export <变量名称>

将变量导出为环境变量,常写变量赋值一同使用,例如:

    export PATH="$PATH:xxx"

    其中 $PATH 表示变量 PATH 原值

shutdown

关闭计算机,向根进程 init 发送信号,更改 runlevel 为 0 (halt)
    -h 关闭电源
    -r 重启
    -n 强行关机,不向 init进程 发送信号
    -k 模拟关机,向登录者发送关机警告
    -t <秒> N秒后关机
    time <时间> 定时关机
    -c [说明信息] 取消关机
    -f 重启时忽略检测文件系统
    -F 重启时强制检测文件系统

halt

关闭计算机。 调用 shutdown -h ,结束系统进程,同步文件系统,停止内核。
    -n 不同步文件系统
    -w 模拟关机,写 /var/log/wtmp 纪录
    -f 不调用 shutdown ,强行关机
    -p 默认选项,关机时调用 poweroff
    -i 关机前断开网络

reboot

重新启动计算机。参数与 halt 相似

chroot <路径>

Change Root 更改根目录,重新定义会话的运行环境。

用户管理

一些细节

    root 用户为根用户,也就是 系统管理员 拥有全部权限

    一个用户只能拥有一个 GID ,但是还可以归属于其它附加群组


    用户管理的重要配置文件:

    /etc/passwd    用户名 密码位 UID 归属GID 姓名 $HOME目录 登录Shell
    /etc/shadow    用户名 已加密密码 密码改动信息 密码策略
    /etc/group     群组名 密码位 GID 组内用户
    /etc/gshadow   群组密码相关文件,不重要
    /etc/sudoers   用户名 权限定义 权限

    可以使用 pwconv 命令创建影子密码,将 /etc/passwd 文件中的密码转换到 /etc/shadow 文件

su [用户名]

切换到其它用户,默认切换到root用户。提示密码为将切换用户密码
    -f 快速切换,忽略配置文件
    -l 重新登录
    -m ,-p 不更改环境变量
    -c <命令> 切换后执行命令,并退出切换

sudo [命令]

以其它用户的身份执行命令,默认以root的身份执行。提示密码为当前用户密码
    -s 切换为root shell
    -i 切换为root shell,并初始化
    -u <用户名|UID> 执行命令的身份
    -l 显示自己的权限

passwd [用户名]

设定用户密码

        -d 清除密码
        -l 锁定用户
        -e 使密码过期,在下次登录时更改密码
        -S 显示密码认证信息
        -x <天数> 密码过期,最大使用时间
        -n <天数> 冻结密码,最小使用时间
        -s 更改登录Shell
        -f 更改用户信息

    示例:

    $passwd
    Changing password for user
    (current) UNIX password:      原密码
    Enter new UNIX password:      新密码
    Retype new UNIX password:     确认新密码

chsh [-s <Shell>] [用户名]

更改登录Shell

usermod <用户名>

修改用户账号
    -d <目录> 设定$HOME目录
    -m 设定$HOME目录时自动建立
    -s <Shell> 修改用户登录Shell
    -l <新用户名> 修改为新用户名
    -u <UID> 修改用户UID
    -g <群组名> 修改用户归属群组
    -G <群组名> 修改用户归属附加群组
    -L 锁定帐户
    -U 解除锁定
    -e <过期时间> 设定用户账号过期时间
    -f <缓冲天数> 设定密码过期后多长时间关闭账号
    -c <字符串> 修改用户备注

useradd <用户名>

新建用户
    -d <目录> 设定$HOME目录
    -m 自动建立$HOME目录
    -M 不自动建立$HOME目录
    -s <Shell> 修改用户登录Shell
    -l <用户名> 修改为新用户名
    -u <UID> 修改用户UID
    -g <群组名> 修改用户归属群组
    -G <群组名> 修改用户归属附加群组
    -n 不建立以用户名为名称的群组
    -e <过期时间> 设定用户账号过期时间
    -f <缓冲天数> 设定密码过期后多长时间关闭账号
    -c <字符串> 修改用户备注
    -D [表达式] 更改预设值 (预设值保存于 /etc/default/useradd 文件中)

    新建用户规则保存于 /etc/login.defs 文件中

    新建用户默认文件保存于 /etc/skel/ 目录中。新建用户时,系统自动拷贝此目录下的文件至新建用户的 $HOME 目录

userdel <用户名>

删除用户
    -r 删除用户相关文件和目录

id [用户名]

显示用户 UID GID 归属附加群组

finger [用户名]

显示用户信息