Linux 新手的学习笔记

时间:2023-03-08 21:50:53

系统分区:

  MBR分区(主分区不超过4个,单个分区不超过2TB)

    fdisk -l

    fdisk /dev/sdb

    n(添加一个分区)p(添加一个主分区,主分区)e(添加一个扩展分区)l(添加一个逻辑分区,从5开始)d(删除一个分区)w(保存分区)

  GPT分区(yum install parted)

    parted

    select /dev/sdb

    mklable msdos(gpt)

    print (all)

    mkpart

      Partition name? []?

      File system type? [ext2]?

      Start? 1  从第1M开始,避免出现对齐问题,提高硬盘性能

      End?到第几M结束

    或者 mkpart test(名称,不能省略) 2000 3000

    rm (分区编号)

    unit GB (用G做单位)

    quit

   格式化

    mkfs.ext3 /dev/设备名 或者 mkfs -t ext4 /dev/设备名

   SWAP分区

      >>建立一个普通的linux分区

      >>修改分区类型的16进制编码 t(),分区编号,L(查看所有进制)w(保存)

      >>格式化交换分区 mkswap /dev/设备名

      >>启用交换分区 swapon /dev/设备名   swapoff /dev/设备名为停止使用swap

      free查看是否已经启用成功

目录处理:

  mkdir -p (新建文件用touch)

  cd 目录 (~ 代表家目录 - 代表上一次目录)

  pwd

  rmdir

  rm -rf (-r代表删除目录,-f标识强制)

  cp [源文件或目录] [目标目录](-r 代表目录 -p 连带文件属性一起复制,比如时间 -d 如果文件是链接文件,则复制链接属性 -a 等同于-pdr)

  ll (ls -l的别名,查看隐藏文件请用ls -a)

  mv [源文件或目录]  [目标目录] (既是剪切,也是重命名)

  ln -s [源文件] [目标文件]

    硬链接:拥有相同的i节点和block块,不能跨分区,不能针对目录使用

    软连接:类似windows快捷方式,软连接拥有自己的i节点和block块,修改一个另外一个也改变,删除源文件软链接不能再使用

搜索命令

  文件搜索:locate [文件名] (新建的文件搜索不到,只是搜索后台数据库文件/var/lib/mlocate,这个数据库一天已更新,如实时更新,需updatedb),如果没有此命令,yum install mlocate,/etc/updatedb.conf配置文件配置规则

  命令搜索命令: whereis和which(whereis搜索命令所在路径及帮助文档所在位置 -b只查找命令文件 -m之查找帮助文档,which除了搜索命令的路径 还会列出命令的别名)

  文件搜索:find [搜索范围] [搜索条件]  (文件名是精确匹配,可以使用通配符,*?[])

    -name 、-inname(不区分大小写)、-user root(按照所有者搜索)、-nouser(查找没有所有者的文件)、 -mtime|atime|ctime+10(10天前修改的文件 -10为10天内 10为10天当天)、-size +25k、-inum 1000(i节点是1000的文件)、-a(逻辑and)、-o(逻辑or)、-exec|-ok命令{} \(对搜索结果进行操作)

  字符串搜索命令:grep [选项] 字符串 文件名 (选项:-i忽略大小写 -v排除指定字符串)

帮助命令

  man命令(如果没有,择yum install man) -f(相当于whatis命令,查看级别) -k(相当于apropos命令 ,查看和包含关键字命令相关的所有帮助)

其他帮助命令

  --help

压缩命令(http://www.cnblogs.com/yejianfei/p/3351626.html)

  zip [文件名.zip] [文件名或目录名] (-r 压缩目录)

  unzip [文件名.zip]

  gzip [文件名](源文件会消失)

  gzip -c 源文件 > 压缩文件 (源文件保留)

  gzip -r [目录] (压缩目录下的所有子文件,但是不压缩目录)

  gzip -d [压缩文件] (解压缩)

  gunzip [压缩文件] (解压缩)

  bzip2 [源文件](源文件会消失)

  bzip2 -k [源文件](源文件保留)

  bzip2 -d [压缩文件](解压缩)

  bunzip2 [压缩文件](解压缩)

  tar -zcvf [打包文件名.tar.gz] [源文件](-c 打包,-v显示过程,-f指定打包后的文件名)

  tar -zxvf [打包文件名.tar.gz] (-C 指定解压缩的位置)

  tar -ztvf [打包文件名.tar.gz] (不解压,只查看内容)

  tar -jcvf [打包文件名.tar.bz2] [源文件]

  tar -jxvf [打包文件名.tar.bz2]

关机与重启命令

  shutdown [选项] [时间] (选项:-c 取消前一个关机命令 -h 关机 -r 重启)

    shutdown -r 05:30(占用终端)

    shutdown -r 05:30 &(放在后台执行,不占用终端)

  其他关机命令:halt、poweroff、init 0

  其他重启命令:reboot、init 6

  退出登录:logout

  修改登录级别:/etc/inittab (centos7:ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target)

  查看登录级别:runlevel

挂载命令

  mount 查看系统中已经挂载的设备

  mount -a 根据配置文件 /etc/fstab的内容,自动挂载

  mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点

    mount -o remount,noexec /home

  挂载光盘 mount -t iso9660 /dev/sr0 /mnt/cdrom/

  挂载U盘 mount -t vfat /dev/sdb1 /mnt/usb/

  umount [挂载点或设备名]

用户登录查看命令

  w (系统当中已经登录的用户,tty1位本机终端,pts/0为远程终端,LOGIN@为登录时间,IDLE为闲置时间,JCPU和PCPU为进程占用cpu时间,WHAT为当前正在执行的命令)

  who

  su命令(切换登陆用户)

  last(读取/var/log/wtmp文件,查询当前登录和过去登录的用户信息)

  lastlog(读取/var/log/lastlog文件,查看所有用户的最后一次登录时间)

SHELL命令

  查看当前shell echo $SHELL

  /etc/shells,子shell,退出用exit

  echo命令

    -e(支持反斜线控制的字符转换)

    \e[1;31m开启颜色 \e[0m关闭颜色  31m为红色

  #!/bin/bash

  脚本执行

    >>chmod 755 文件名,然后执行

    >>bash 文件名

  命令别名

    alias (查看别名)

    alias ls='ls  --color=never'(设定别名)

    vi ~/.bashrc

    unalias (删除别名)

  快捷键

    ctrl+(c 强制终止当前命令 ,l 清屏,a 光标移到命令行首,e 光标移到命令行尾,u 从光标所在位置删除到行首,z 把命令放到后台,r 在历史命令中搜索)

  历史命令

    history(-c 清空命令 -w 把缓存的历史命令写入到~/.bash_history中)

    上次注销成功后保存的命令存储在~/.bash_history里

    历史命令默认保存1000条,可以在环境变量/etc/profile文件中配置

    上下箭头可以调用历史命令;!n 调用第几条历史命令;!! 重复执行上次命令;!字符串 重复执行最后一条以该字串开头的命令

    输入时tab键补全

  输出重定向

    标准输出重定向(命令 >文件 已覆盖的方式把命令的正确输出输出到指定的文件或设备上,命令 >>文件 以追加的方式)

    标准错误输出重定向(错误命令 2>文件 已覆盖的方式,错误命令 2>>文件 以追加的方式)

    正确输出和错误输出同时保存(命令 >文件 2>&1 已覆盖的方式 同 命令 &>文件,命令 >>文件 2>&1 已追加的方式 同 命令 &>>文件,命令>文件1 2>>文件2 正确的输出到文件1,错误的输出到文件2,命令 &>/dev/null 不输出)

  输入重定向

    wc [选项] [文件名] (-c 统计字节数,-w 统计单词数,-l 统计行数)ctrl+d

  管道符

    多命令顺序执行(;多个命令执行 命令之间没有任何逻辑,&& 前一个命令正确后边的命令才会执行,|| 前一个命令不正缺后边的命令才会执行)

    命令 && echo yes || echo no(用来检测一个命令是否正确执行)

    命令1 | 命令2 (命令1的正确输出作为命令2的操作对象)

    通配符(*?[])

VI编辑器(yum install vim)

  vi编辑器的操作模式(命令模式、输入模式、底行模式)

  vim 文件名(vim + 文件名 打开文件光标定位到最后一行,vim +n 文件名 打开文件光标定位到第n行,vim +/字符串 文件名 打开文件光标定位到字符串第一次出现的行 用n跳转下一个位置,vim aa bb cc 一次创建多个文件,用:n切换下一个 :N上一个)

  底行模式(:w,:q,:q!,:wq,:ls,:n,:N,:数字,/字符串 想后搜索,?字符串 向前搜索)

  命令模式(h,j,k,l,ctrl+f,ctrl+b,ctrl+d,ctrl+u,dd,o,yy,p,P)

磁盘管理

  df(-l 仅显示本地磁盘,-a 显示所有,-h 以1024进制用合适单位显示,-H 以1000进制用合适单位显示,-T 显示磁盘分区类型,-t 显示指定类型文件系统的磁盘分区,-x 不显示指定类型文件系统的磁盘分区)例:df -lhT -t ext4

  du(-b 以byte为单位统计,-k以KB为单位统计,m以MB为单位统计,-h,-H,s指定统计目标 )例:du -sh *.zip

  查看各目录所占用量du . --max-depth=1 -h

用户管理

  /etc/group 存储所有用户组的信息

    Group:        X         : 123    :abc,def,xyz

    组名称  组密码占位符  组编号  组中用户名列表

    编号1-499是为安装软件提供的用户组,用户手动创建的用户组是从500开始的

  /etc/gshadow 存储用户组的密码信息

    Group:        *         :             :abc,def,xyz

    组名称      组密码       组管理者  组中用户名列表

  /etc/passwd  存储所有用户的信息

    user  :   X         :   123   :   456     :  ******    :/home/user :  /bin/bash

    用户名 密码占位符 用户编号 用户组编号 用户注释信息    用户目录        shell类型

  /etc/shadow  存储所有用户的密码信息

    user    :   **** : : : : :

    用户名     密码

  用户和用户组的基本命令

    groupadd 组名

    groupmod  -n 新组名 原组名

    groupmod -g 组编号 组名称

    groupdel 组名称

    useradd -g 组名 -G 附属组1,附属组2 -d 目录名 用户名

    usermod -c 备注内容

    usermod -l 新用户名 原用户名

    usermod -g 新组名 用户名

    userdel  -r 用户名 (-r 删除用户名根目录)

    touch /etc/nologin (阻止用户登录)

  用户和用户组的进阶命令

    passwd -l 用户名 (锁定用户)

    passwd -u 用户名 (解锁用户)

    passwd -d 用户名 (去掉密码,无密码登陆)

    gpasswd -a 用户名 附属组名(给用户添加附属组)

    gpasswd -d 用户名 附属组名 (给用户去掉附属组)

    newgrp 附属组名 (需要输入组密码,临时切换用户至附属组)

    gpasswd 组名 (更改用户组密码)

  其他用户和用户组命令

    su 用户名(切换到其他用户,需输入密码)

    whoami

    id 用户名

    groups 用户名

    chfn 用户名 (设置用户详细资料)

    finger 用户名 (显示用户详细资料)

网络管理

  应用层、表示层(解码转换成二进制、加密)、会话层(判断是本地存储还是网络传输)、传输层(写入发送与接收端口号,选择传输协议,流控)、网络层(封装ip,选路)、数据链路层(封装mac地址,成帧)、物理层(比特流传输)

  IP地址配置

    ifconfig临时配置ip地址 例:ifconfig eth0 192.168.0.2 netmask 255.255.255.0

    setup永久配置ip地址(yum install setuptool、yum install ntsysv、yum install system-config-securitylevel-tui、yum install system-config-network-tui、yum install system-config-keyboard)

    修改网络配置文件

      网卡文件

        vi /etc/sysconfig/network-scripts/ifcfg-eth0

      主机名文件

        vi /etc/sysconfig/network(修改hostname需重新启动计算机,查看hostname用hostname命令)

      DNS配置文件

        vi /etc/resolv.conf

    图形界面配置文件

    重启网络服务 service network restart

    修改UUID

      >>删除ifcfg-eth0中的mac地址行

      >>删除网卡和mac地址绑定文件 rm -rf /etc/udev/rules.d/70-persistent-net.rules

      >>重启系统

  虚拟机网络参数配置

    桥接(占用一个真实网段的ip地址)

    NAT,Host-only(不能与局域网的其他电脑通讯)

网络命令

  网络环境查看命令

    ifconfig

    ifup 启用网卡

    ifdown 禁用网卡

    netstat(-t 列出TCP协议端口,-u 列出UDP协议端口,-n 不使用域名与服务名 使用ip与端口,-l 仅列出在监听状态的网络服务,-a 列出所有的网络连接,-r 列出路由列表 同route)例:netstat -tuln

    route命令 (-n 列出路由列表)route add default gw 192.168.0.1 临时设定网关

    nslookup 域名对应的IP

  网络测试命令

    ping 域名或ip(-c 次数)

    telnet 域名或ip 端口(用来做端口探测)

    traceroute [选项] 域名或ip (-n 使用ip,不使用域名,速度更快)

    wget 下载链接

    tcpdump (-i 指定监听网卡,-nn 将数据包中的域名与服务转为ip和端口,-X 以十六进制和ascii显示数据包内容,port 指定监听端口)

远程登录工具

  ssh原理

    对称加密与非对称加密

  ssh 用户名@ip(下载公钥到当前用户目录下,保存为.ssh文件)

  scp 用户名@ip:文件路径 本地路径(下载文件 -r 代表目录)

  scp 本地文件 用户名@ip:上传路径(上传文件 -r 代表目录)

软件安装

  rpm

    rpm 包默认安装位置

      /etc/、/usr/bin、/usr/lib、/usr/share/doc、/usr/share/man

    rpm包安装完后的启动方式

      /etc/rc.d/init.d/httpd start

      service httpd start(radhat 专有)

    rpm 包全名(-i 安装,-v显示详细信息,-h显示进度,--nodeps不检测依懒性)

    rpm -Uvh 包全名(升级)

    rpm -e 包名(卸载)

    rpm -q 包名

    rpm -qa (查询所有已安装的包)

    rpm -qip(-i 查询软件信息,-p查询未安装软件信息)

    rpm -ql(-l 列表)

    rpm -qf 系统文件名(查询系统文件属于哪个软件包)

    rpm -qR(-R 依懒性)

  yum

    vi /etc/yum.repos.d/CentOs-Base.repo([base] 容器名称,name 容器说明,mirrorlist 镜像站点,baseurl yum源服务器地址,enabled 此容器是否生效,gpgcheck RPM证书是否生效,gpgkey 数字证书公钥的保存位置)

    光盘搭建yum源

      挂载光盘 mount /dev/sr0 /mnt/cdrom

      使网络yum源失效 mv CentOs-Base.repo CentOs-Base.repo.bak

      使光盘yum源生效 vi /etc/yum.repos.d/CentOs-Media.repo 修改baseurl为file:///mnt/cdrom,enabled=1\

    yum list

    yum search 关键字

    yum -y install 包名

    yum -y update 包名

    yum -y remove 包名

    yum grouplist

      LANG=zh_CN.utf8

      LANG=en_US

      永久修改语言,vi /etc/sysconfig/i18n

    yum groupinstall 软件组名

    yum groupremove 软件组名

  源码安装

    源码包安装位置(源码安装一定要指定安装路径,因为源码安装没有类似rpm的卸载命令)

      /usr/local/软件名

    源码安装后的启动方式

      /usr/local/apache2/bin/apachectl start

    安装过程

      安装c语言编译器

      下载源码包

      tar -zxvf

      cd

      ./configure  --prefix=

      make(如果报错,需要make clean,清除一下)

      make install(如果出错,不止make clean,还要删除安装目录)

    卸载(直接删除安装目录即可)

  脚本安装 (需关闭selinux与防火墙)

权限管理

  文件基本权限

    -rw-r--r--(1 文件类型 d 目录 l 链接文件,2-4 所有者u,5-7 所属组g,8-10 其他人o)

    chmod [选项] [模式] 文件名

      选项:-R 递归

       模式:

         [ugoa][+-=][rwx] 多个用逗号隔开

         755(r=4 w=2 x=1)

    权限对文件的作用

      r(cat,more,head,tail)

      w(vi,echo)写权限不包括删除权限,想要删除文件,需要对目录具有w权限

      x(可执行)

    权限对目录的作用

      r(ls)

      w(touch,rm,mv,cp)

      x(cd)

    chown 用户名 文件名    chown 用户名:用户组 文件名

    chgrp 组名 文件名

  文件默认权限

    umask 0022(临时修改)

    vi /etc/profile(永久修改)

    文件的默认权限

      文件默认最大权限为666即rw-rw-rw-,umask为0022即----w--w-,相减得rw-r--r--即644

    目录的最大权限

      目录的最大权限为777

  ACL权限

    针对所有者,所属组,其他人三种类型过于简单的附加,使区别于这三种类型的用户具有文件或目录的权限

    查看是否开启 dumpe2fs -h /dev/sda2(-h 只显示超级块中的信息,而不显示磁盘块组的详细信息)

      开启acl权限 mount -o remount,acl /

    查看acl权限 getfacl 文件名

    设定acl权限 setfacl [选项] 文件名

      选项:(-m 设定acl权限,x 删除指定的acl权限,-b 删除所有的acl权限,-d 设定默认acl权限,-k 删除默认acl权限,-R 递归设定acl权限)

      例:setfacl -m u(g):用户名或组名:权限 /文件或目录

        setfacl -x u:用户名 目录名

        setfacl -b 目录名

    最大有效权限mask(赋予的权限与mask逻辑与,得到的权限才是真正的权限)

      setfacl -m m:权限 目录

    递归acl权限

      setfacl -m u:用户名:权限 -R 目录

    默认acl权限

      setfacl -m d:u:用户名:权限 -R 目录

  sudo权限

    visudo(实际上修改的是/etc/sudoers文件)

      root     ALL=(ALL) ALL

      用户名  被管理主机的地址=(可使用的身份) 授权命令(绝对路径)例子:user1 ALL=(ALL) /sbin/shutdown -r now ;user1 ALL=/usr/sbin/useradd

      %wheel ALL=(ALL) ALL

      用户组

    sudo -l (查看可用的sudo命令)

    sudo 命令

  文件特殊权限

    SetUID(SUID)

      只有可执行的二进制程序才能设定

      命令执行着要对该程序具有X权限

      命令执行者在执行该程序时获得该程序文件的属主身份

      chmod 4755 文件名

      chmod u+s 文件名

    SetGID(SGID) 最典型的例子是 /usr/bin/locate命令

      对执行文件和目录都起作用

      chmod 2755 文件名

      chmod g+s 文件名

    Sticky BIT(SBIT) 设置后只能新建或删除自己的文件,最典型的例子是/tmp文件夹

      只对目录起作用

      目录需要有w和x权限,也就是说把目录给其他人赋予7最大权限

      chmod 1755 文件名

      chmod o+s 文件名

      chmod 0777 文件名(取消)

      chmod o-s 文件名(取消)

  不可改变位权限

    chattr [+-=] [选项] 文件名或目录名

      i:对文件设置后,不允许对文件删除改名添加修改,对目录设置后,允许修改目录下的数据,不允许添加和删除

       a:对文件设置后,只能在文件中添加数据,不能修改和删除,对目录设置后,只允许在目录中建立和修改文件,但不允许删除

服务管理

  crontab

    crontab -l (查看当前用户的crontab文件的详细信息)

    service crond status

    安装cron

      yum install vixie-cron

      yum install crontabs

    crontab -e (编辑当前用户的crontab文件) tail -f 文件名(一直显示文件的后几行)

    第1列分钟1~59 第2列小时1~23(0表示子夜)第3列日1~31 第4列月1~12 第5列星期0~6(0表示星期天)第6列要运行的命令

Shell基础

  变量

    引用变量需要加$符号

    变量叠加:a= "$a"123(+号不具有运算作用,想要求和,需$(($a+$b)))

    set (查看系统运行的所有变量)

      -u(不会输出不存在的变量)

    unset 变量名(删除变量)

  环境变量(本shell和所有子shell中均可以查看,用户自定义变量只能  本  shell查看)

    pstree(查看进程树)

    设置环境变量

      export 变量名= 变量值

    env(查看系统运行的环境变量)

    PATH环境变量

      echo $PATH

      PATH= "$PATH":/root/sh

      修改完修改完成后,source /etc/profile生效

    PS1环境变量

      \d 显示日期,\H 显示完整的主机名,\t 显示24小时制 "HH:MM:SS",\A 显示24小时制"HH:MM",\u 显示当前用户名,\w 显示当前所在目录的完整名称,\W 显示当前所在目录的最后一个目录,\$ 如果为root则显示#,普通用户显示$

    PS2环境变量

      \ 定义换行符

    locale环境变量(系统中所有语系)

      LANG (定义系统主语系的变量)

      LC_ALL(定义整体语系的变量)

    Linux中文支持(安装好中文字体和中文语系)

      第三方远程工具,只要设置好语系,就能支持中文

      纯字符界面,必须使用第三方插件(zhcon等)

  位置参数变量

    ./canshu.sh 11 22(./canshu.sh为$0,11为$1,22为$2)

    $n(n代表第几个参数),$* 、$@ (返回所有参数,$*把参数看成一个整体,$@把每个参数分区对待,可以用for循环来检验,for i in "$*"),$@(返回参数个数)

  预定义变量

    $?(最后一次命令的返回值),$$(当前进程的进程号),$!(后台运行的最后一个进程的进程号)

    接受键盘输入

      read [选项] 变量名(-p 提示信息,-t 等待时间,-n 接受指定字符数执行,-s 隐藏输入的数据)

        read -p "please input your name" -t 30 -s -n 5 name

        echo $name

  运算符

    declare [+/-] [选项] 变量名

      -给变量设定类型,+取消变量的类型,-a数组型,-i整型,-x环境变量(export也是调用的declare命令,只是简化版),-r只读变量,-p显示变量的类型

    定义数组

      array[0]=value1

      declare -a array[1]=value2

    查看数组 echo ${array[0]}

  数值运算方法

    方法1 declare -i a=$b+$c

    方法2 expr或let工具 a= $(expr $b + $c)

    方法3 a= $(($b+$c))

  正则表达式

    字符截取命令

      cut命令(-f 第几列;-d 分隔符,默认是tab) 例:cut -d ":" -f 1,3 /etc/passwd

      printf '输出类型 输出格式' 输出内容

        -%ns 输出字符串 n代表几个字符;-%ni 输出整数;-%m.nf 输出浮点数 %8.2f代表6位整数2位小数

        \a 输出警告声音;\b 输出退格键;\f清除屏幕;\n 换行;\r 回车;\t 水平输出退格键,也就是tab键;\b 垂直输出退格键,也就是tab键

        例: printf '%s' $(cat /etc/passwd) 读取文件内容

      print命令会自动在每行结束后加换行符,而printf不会自动加

      awk '条件1{动作1}条件2{动作2}...' 文件名 FS也就是分隔符,默认是空格;BEGIN 第一行内容存入$1时,先执行这个动作

        例:awk 'printf $2 "\t" $1 "\n"' /etc/passwd ($0为文件名,$1是第一个字段,$2是第二个字段...)

          df -h | grep "/dev/sda1" | awk  '{print $5}' | cut -d '%' -f  1(获取磁盘已用百分比)

          cat /etc/passwd | grep /bin | awk '{FS=":"}{print $1 "\t" $3}'

      sed命令 轻量级流编辑器,文本选区,替换,删除,新增

        sed [选项] '[动作]' 文件名

         选项

          -n 一般sed命令会把所有数据全都输出都屏幕,如果加入此选项,则会把经过处理的行输出到屏幕

          -e 允许对输入数据应用多条sed命令编辑

          -i 用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出

          动作

          a 追加 在当前行后添加一行或多行

          c 行替换

          i 在当前行前添加一个或多行

          d 删除指定行

          p 打印 输出指定航

          s 字符替换,用一个字符串替换另外一个字符串。格式为 “行范围s/旧字串/新字串/g”

      例子:sed -n '2p' /etc/passwd (打印文件第二行)

         sed '2,4d' /etc/passwd (删除第二行到第四行的数据,但不修改数据本身)

         sed -e 's/a/b/g;s/c/d/g' /etc/passwd

    字符串处理命令

      sort [选项] 文件名

        -f 忽略大小写

        -n 以数字型排序,默认一字符串型排序

        -r 反向排序

        -t 指定分隔符 默认分隔符是tab

        -k n[,m] 按照指定的字段范围排序

      例: sort -t ":" -k 3,3 /etc/passwd

    Shell编程之流程控制和条件判断

      按照文件类型判断

        -d 是否存在并且是否是目录

        -e 是否存在

        -f 是否存在并且是否是普通文件

        -L 是否存在并且是否是链接符号

        -s 当file存在文件大小大于0时返回真

      按照文件权限判断

        -r 是否存在并且是否拥有读权限

        -w 是否存在并且是否拥有写权限

        -x 是否存在并且是否拥有执行权限

        -u 是否存在并且是否拥有SUID权限

        -g 是否存在并且是否拥有SGID权限

        -k 是否存在并且是否拥有Sbit权限

      两个文件之间的比较

        文件1 -nt 文件2 文件1的修改时间是否比文件2新,如果新则为真

        文件1 -ot 文件2 文件1的修改时间是否比文件2旧,如果旧则为真

        文件1 -ef  文件2 文件1是否和文件2的Inode号一致,可以理解为两个文件是否为同一个文件。是判断硬链接很好的方法。

      两个整数之间的比较

        -eq 是否相等

        -nq 不相等

        -gt 大于

        -lt 小于

        -ge 大于等于

        -le 小于等于

      字符串判断

        -z 字符串 判断字符串是否为空,为空返回真

        -n 字符串 判断字符串是否非空,非空为真

        字串1 == 字串2

        字串1 != 字串2

      多重条件判断

        判断1 -a 判断2 逻辑与

        判断1 -o 判断2 逻辑或

        ! 逻辑非,使原始的判断式取反

      流程控制语句

        if [ 条件判断式 ];then

          ...

        fi

        if [ 条件判断式 ]

          then

          ...

        fi

        if [ 条件判断式 ];then

          ...

        else

          ...

        fi

        if [ 条件判断式1 ];then

          ...

        elif [ 条件判断式2 ];then

          ...

        else

          ...

        fi

        case $变量名 in

          "值1")

            ...

            ;;

          "值2")

            ...

            ;;

        esac

        for 变量 in 值1 值2 值3

          do

            ...

          done

        for ((初始值;循环控制条件;变量变化))

          do

            ...

          done

        while [ 条件判断式 ]

          do

            ...

          done

        until [ 条件判断式 ]

          do

            ...

          done

附录:

查看文件大小的命令

ls -lht (-t 按时间进行文件的排序 -l列出文件的详细信息,如创建者,创建时间,文件的读写权限列表等等。)

du -sh * (-s 就是summary, 显示该目录占用空间的总和)

w命令查看所有登录的pts

pkill -kill -t pts/0杀掉pts/0这个登录端