文件和目录
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 定时执行任务命令详解
- /etc/crontab 这个文件负责安排由系统管理员制定的维护系统以及其他任务的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
修改配置后重启