# 文件和目录

  • cd /home 进入 '/ home' 目录'
    • cd .. 返回上一级目录
    • cd - 返回上次所在的目录
  • pwd 显示工作路径
  • ls -lrt --time-style=full-iso 显示文件夹时间并排序
  • ls 查看目录中的文件
    • ls -F 查看目录中的文件
    • ls -l 显示文件和目录的详细资料
    • ls --full-time 显示文件详细时间
    • ls -a 显示隐藏文件
    • ls *[0-9]* 显示包含数字的文件名和目录名
    • ls -l /file/ | awk '/^d/ {print $NF}' 查看指定目录下的文件列表名称
  • tree 显示文件和目录由根目录开始的树形结构
  • mkdir dir1 创建一个叫做 'dir1' 的目录'
    • mkdir dir1 dir2 同时创建两个目录
    • mkdir -p /tmp/dir1/dir2 创建一个目录树
  • touch file 创建一个文件
  • rm -f file1 删除一个叫做 'file1' 的文件'
    • rmdir dir1 删除一个叫做 'dir1' 的目录'
    • rm -rf dir1 删除一个叫做 'dir1' 的目录并同时删除其内容
    • rm -rf ./dir1/* 删除 'dir1' 目录下的所有内容
  • mv dir1 new_dir 重命名/移动 一个目录
  • cp file1 file2 复制一个文件
    • cp dir/* . 复制一个目录下的所有文件到当前工作目录
    • cp -a /tmp/dir1 . 复制一个目录到当前工作目录
    • cp -a dir1 dir2 复制一个目录
  • ln -s file1 lnk1 创建一个指向文件或目录的软链接 'file1' 为源文件 'lnk1' 为目标文件
    • ln file1 lnk1 创建一个指向文件或目录的物理链接(和源文件大小相同)
  • rsync -auvrtzopgP -L --progress /sourceDir /targetDir同步 'sourceDir' 目录下文件到 'targetDir' 目录

# 用户和群组

  • su root 是切换到其他用户,但是不切换环境变量
    • su - root su - 是完整的切换到一个用户环境 (用export命令查看一下,就知道两个命令的区别了)
    • groupadd group_name 创建一个新用户组
    • groupdel group_name 删除一个用户组
    • groupmod -n new_group_name old_group_name 重命名一个用户组
  • useradd -c "Name Surname " -g admin -d /home/user1 -s /bin/bash user1 创建一个属于 "admin" 用户组的用户
  • useradd user1 创建一个新用户
    • userdel -r user1 删除一个用户 ( '-r' 排除主目录)
    • usermod -c "User FTP" -g system -d /ftp/user1 -s /bin/nologin user1 修改用户属性
  • passwd 修改口令
    • passwd user1 修改一个用户的口令 (只允许root执行)
  • chage -E 2005-12-31 user1 设置用户口令的失效期限
  • newgrp group_name 登陆进一个新的群组以改变新创建文件的预设群组
  • cat /etc/passwd 查看文件中否有你的账号,如果没有无法登录,如果有的话将 /etc/passw d和 /etc/shadow 解析

# 文件搜索

  • find / -name file1 从 '/' 开始进入根文件系统搜索文件和目录
  • find / -user user1 搜索属于用户 'user1' 的文件和目录
  • find /home/user1 -name \*.bin 在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件
  • find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件
  • find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件
  • find / -name \*.rpm -exec chmod 755 '{}' \; 搜索以 '.rpm' 结尾的文件并定义其权限
  • find / -xdev -name \*.rpm 搜索以 '.rpm' 结尾的文件,忽略光驱、捷盘等可移动设备
  • cat file | awk -F\" '{print $2}' | sort | uniq -c | sort -rn | head -10 查看某列重复次数最多的前 10 条记录
  • find . -maxdepth 2 -name '*.zip' -exec rm -f {} \; 查找当前目录层级最大深度 2 级包含 zip 的文件删除
  • find . -maxdepth 2 -wholename '*关键字/api' -type d -exec rm -rf {} \; 查找当前目录层级最大深度 2 级的目录删除

# 磁盘空间

  • df -h 显示已经挂载的分区列表
  • ls -lSr | more 以尺寸大小排列文件和目录
  • du -sh dir1 估算目录 'dir1' 已经使用的磁盘空间'
  • du -h --max-depth=1 dir 查看当前文件夹下面所有一级文件列表
  • du -sk * | sort -rn 以容量大小为依据依次显示文件和目录的大小
  • rpm -q -a --qf '%10{SIZE}t%{NAME}n' | sort -k1,1n 以大小为依据依次显示已安装的rpm包所使用的空间 (fedora, redhat类系统)
  • dpkg-query -W -f='${Installed-Size;10}t${Package}n' | sort -k1,1n 以大小为依据显示已安装的deb包所使用的空间 (ubuntu, debian类系统)

# 挂载一个文件系统

  • mount -l 查看磁盘列表
  • mount /dev/hda2 /mnt/hda2 挂载一个叫做hda2的盘 - 确定目录 '/ mnt/hda2' 已经存在
  • umount /dev/hda2 卸载一个叫做hda2的盘 - 先从挂载点 '/ mnt/hda2' 退出
  • fuser -km /mnt/hda2 当设备繁忙时强制卸载
  • umount -n /mnt/hda2 运行卸载操作而不写入 /etc/mtab 文件- 当文件为只读或当磁盘写满时非常有用
  • mount /dev/fd0 /mnt/floppy 挂载一个软盘
  • mount /dev/cdrom /mnt/cdrom 挂载一个cdrom或dvdrom
  • mount /dev/hdc /mnt/cdrecorder 挂载一个cdrw或dvdrom
  • mount /dev/hdb /mnt/cdrecorder 挂载一个cdrw或dvdrom
  • mount -o loop file.iso /mnt/cdrom 挂载一个文件或ISO镜像文件
  • mount -t vfat /dev/hda5 /mnt/hda5 挂载一个Windows FAT32文件系统
  • mount /dev/sda1 /mnt/usbdisk 挂载一个usb 捷盘或闪存设备
  • mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share 挂载一个windows网络共享

# 文件的权限设置 "+" 设置 "-" 取消

  • ls -lh 显示权限
  • chown -R 777 dir 递归修改文件权限
  • chmod ugo+rwx directory1 设置目录的所有人(u)、群组(g)以及其他人(o)以读(r )、写(w)和执行(x)的权限
  • chmod go-rwx directory1 删除群组(g)与其他人(o)对目录的读写执行权限
  • chown user1 file1 改变一个文件的所有人属性
  • chown -R user1 directory1 改变一个目录的所有人属性并同时改变改目录下所有文件的属性
  • chown user1:group1 file1 改变一个文件的所有人和群组属性

# 打包和压缩文件

  • tar -cvfz archive.tar.gz dir1 创建一个gzip格式的压缩包
  • tar -zxvf archive.tar.gz 解压一个gzip格式的压缩包
  • zip file1.zip file1 创建一个zip格式的压缩包
  • zip -r file1.zip file1 file2 dir1 将几个文件和目录同时压缩成一个zip格式的压缩包
  • unzip file1.zip 解压一个zip格式压缩包
  • rar a file1.rar test_file 创建一个叫做 'file1.rar' 的包
  • rar a file1.rar file1 file2 dir1 同时压缩 'file1', 'file2' 以及目录 'dir1'
  • rar x file1.rar 解压rar包
  • unrar x file1.rar 解压rar包
  • tar -zcvf file.tar.gz fileName 压缩
  • tar -xzvf ksp-rank.tar.gz 解压

# 查看文件内容

  • cat file1 从第一个字节开始正向查看文件的内容
  • tac file1 从最后一行开始反向查看一个文件的内容
  • more file1 查看一个长文件的内容
  • less file1 类似于 'more' 命令,但是它允许在文件中和正向操作一样的反向操作
  • head -2 file1 查看一个文件的前两行
  • tail -2 file1 查看一个文件的最后两行
  • tail -f /var/log/messages 实时查看被添加到一个文件中的内容

# 文本处理

  • grep Aug /var/log/messages 在文件 '/var/log/messages'中查找关键词"Aug"
  • grep ^Aug /var/log/messages 在文件 '/var/log/messages'中查找以"Aug"开始的词汇
  • grep [0-9] /var/log/messages 选择 '/var/log/messages' 文件中所有包含数字的行
  • grep Aug -R /var/log/* 在目录 '/var/log' 及随后的目录中搜索字符串"Aug"
  • grep -C 10 'str' 打印匹配行的前后 10 行
  • grep -A 10 'str' 打印匹配行的后 10 行
  • grep -B 10 'str' 打印匹配行的前 10 行
  • sed 's/stringa1/stringa2/g' example.txt 将example.txt文件中的 "string1" 替换成 "string2"
  • sed '/^$/d' example.txt 从example.txt文件中删除所有空白行
  • sed '/ *#/d; /^$/d' example.txt 从example.txt文件中删除所有注释和空白行
  • echo 'esempio' | tr '[:lower:]' '[:upper:]' 合并上下单元格内容
  • sed -e '1d' result.txt 从文件example.txt 中排除第一行
  • sed -n '/stringa1/p' 查看只包含词汇 "string1"的行
  • sed -e 's/ *$//' example.txt 删除每一行最后的空白字符
  • sed -e 's/stringa1//g' example.txt 从文档中只删除词汇 "string1" 并保留剩余全部
  • sed -n '1,5p;5q' example.txt 查看从第一行到第5行内容
  • sed -n '5p;5q' example.txt 查看第5行
  • sed -e 's/00*/0/g' example.txt 用单个零替换多个零
  • cat -n file1 标示文件的行数
  • cat example.txt | awk 'NR%2==1' 删除example.txt文件中的所有偶数行
  • echo a b c | awk '{print $1}' 查看一行第一栏
  • echo a b c | awk '{print $1,$3}' 查看一行的第一和第三栏
  • paste file1 file2 合并两个文件或两栏的内容
  • paste -d '+' file1 file2 合并两个文件或两栏的内容,中间用"+"区分
  • sort file1 file2 排序两个文件的内容
  • sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份)
  • sort file1 file2 | uniq -u 删除交集,留下其他的行
  • sort file1 file2 | uniq -d 取出两个文件的交集(只留下同时存在于两个文件中的文件)
  • comm -1 file1 file2 比较两个文件的内容只删除 'file1' 所包含的内容
  • comm -2 file1 file2 比较两个文件的内容只删除 'file2' 所包含的内容
  • comm -3 file1 file2 比较两个文件的内容只删除两个文件共有的部分

# crontab 定时执行任务命令详解

  • cron服务
crontab -l // 查看所有任务列表
crontab -e // 编辑
ctrl + x  // 退出
service crond start    //启动服务
service crond stop     //关闭服务
service crond restart  //重启服务
service crond reload   //重新载入配置
service crond status   //查看服务状态 
// 查看任务时区,测试可以改为 1 分钟检测一次
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
timedatectl status
timedatectl set-timezone "Asia/Shanghai"
  • /etc/crontab 这个文件负责安排由系统管理员制定的维护系统以及其他任务的crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
  • crontab用法
月的某一天 年的某一月 周的某一天 执行命令
00-59 00-23 01-31 01-12 0-6 0 is sunday
# ps. 除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。
  • 时间设置
    • 0 6 * * * 每天早上6点
    • 0 */2 * * * 每两个小时
    • 0 23-7/2,8 * * * 晚上11点到早上8点之间每两个小时和早上八点
    • 0 11 4 * 1-3 每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
    • 0 4 1 1 * 1月1日早上4点
    • 01 * * * * 每小时执行
    • 22 4 * * 0 每星期执行
    • 42 4 1 * * 每月去执行
    • 00 15 * * 1,3,5 每周一,三,五的下午3:00
    • 10,40 * * * * 每小时的10分,40分执
    • 1 * * * * 每小时的1分
    • 20 3 * * * 每天早晨三点二十分

# APT 软件工具

  • apt-get install package_name 安装/更新一个 deb 包
  • apt-cdrom install package_name 从光盘安装/更新一个 deb 包
  • apt-get update 升级列表中的软件包
  • apt-get upgrade 升级所有已安装的软件
  • apt-get remove package_name 从系统删除一个deb包
  • apt-get check 确认依赖的软件仓库正确
  • apt-get clean 从下载的软件包中清理缓存
  • apt-cache search searched-package 返回包含所要搜索字符串的软件包名称

# 修改静态 ip

  • cd /etc/netplan/file.yaml 修改配置
  • netplan apply 修改配置后重启