linux笔记——初级版本——一看就会

Linux笔记


一、基础知识
  1. Linux分为内核版本和发行版本。

  2. Linux常见的目录结构如下:

    /root linux的超级管理员的家目录
    /home/username linux操作系统所有用户的家目录
    /etc 配置文件
    /bin 二进制文件,一般可以存储shell命令
    
    /opt 用户自己的第三方应用程序
    /usr 英文为unix system resourc 资源目录,头文件 游戏 用户自己的应用程序
    /dev device设备目录,在linux一切都是文件。U盘,显卡
    /mnt 手动挂载目录
    
    /lib 动态库
    /media 外设的自动挂载目录
    /tmp 临时文件,重启就没
    /boot 系统启动项目录
    
  3. 命令行显示:[root@node00 opt]# root当前登录名,@ at在,node00主机名 opt当前文件夹,#为root ;$为普通用户

  4. ll -h 人类查看文件列表

  5. 文件类型

    -	常规文件,即file
    d	目录文件
    b	block device 即块设备文件,如硬盘;支持以block为单位进行随机访问
    l	symbolic link 即符号链接文件,又称软链接文件
    

二、基本操作
  1. 关机和重启:shutdownreboot,其中shutdown也可以执行重启的过程。

    shutdown -h now
    shutdown -r now
    reboot
    
  2. 帮助命令,man操作手册、 info命令注释、 help帮助文档。

    [root@master qsm]# man find
    [root@master qsm]# info find
    [root@master qsm]# find --help
    
  3. 查看,

    cat小文件,
    more,
    less –Nm(功能更加强大,可以向前翻页);
    head -10 qsm.txt ;
    tail -100f qsm.txt 持续等待尾部输出。
    vim 查看也可编辑

  4. 查找

    1、whereis(所有相关的),which(可执行文件),
    2、find(普通查找),locate(按照目录树查找),
    3、过滤grep,若后接文件,则是类似查找,实际上还是过滤文件内的内容。-i,忽略大小写,-o,只展示匹配到的值。vim之后直接输入 / 向后搜索 ? 向前搜索
    4、awk和sed可以查找。

    [root@master ~]# whereis docker
    docker: /usr/bin/docker /etc/docker /usr/share/man/man1/docker.1.gz
    
    [root@master ~]# which docker
    /usr/bin/docker
    
    [root@master ~]# find /root/qsm -name "qsm*"
    /root/qsm
    /root/qsm/qsm.txt
    
    [root@master ~]# updatedb
    [root@master ~]# locate qsm*
    /root/qsm
    /root/qsm.txt
    /root/k8s/qsm
    /root/k8s/qsm/index.html
    /root/k8s/qsm/k8s-nginx.yaml
    /root/qsm/qsm.txt
    /var/lib/docker/volumes/4aa4d336090deb58039b512842860f6b52d253a04fadc34c90efda8ae9cc8c2e/_data/qsmtestfile.txt
    
    [root@master qsm]# grep -i "记者" qsm.txt
    新京报快讯 据商务部网站11月16日消息,商务部新闻发言人就美方禁止美国投资者对部分中国企业进行投资答记者问。
    记者:11月12日,美国政府发布行政令,禁止美国投资者对所谓由中国军方拥有或控制的企业进行投资。请问商务部对此有何回应?
    新京报快讯 据商务部网站11月16日消息,商务部新闻发言人就美方禁止美国投资者对部分中国企业进行投资答记者问
    [root@master qsm]# grep -io "黄鹤楼" qsm.txt
    黄鹤楼
    黄鹤楼
    黄鹤楼
    [root@master qsm]#  sed -n '/Linux/p' qsm2.txt
    Linux 85
    Linux 85
    [root@master qsm]# awk '$2=="95" {print $0}' qsm2.txt
    Hello 95
    Hello 95
    Hello 95
    
  5. history 查看所有之前编写过的命令。history 5 查看历史执行记录最新 5 条。

  6. cd ~ 意思就是到家目录。cd ..是返回上一层目录,cd -,是返回到上一次的工作目录 ;pwd显示目录

  7. mkdir,直接就是创建目录,如果需要多层,且不存在中间某些目录,直接-p

  8. touch 创建文件,不存在则创建,存在则更新时间。vim可以可以创建。

  9. cp 拷贝

  10. mv可以改名或者移动

  11. rm 删除,一般都要加r,递归,-f强制性

  12. 压缩工具tar

    tar -zcvf mingzi.tar.gz 各种想压缩的文件。
    tar –zxvf mingzi.tai.gz -C 想解压到某处的路径
    
  13. vim三种模式,一般模式,编辑模式,底行模式。vim、i、:。查找使用/qsm、保存:wq。不保存:q!。

  14. 用户和用户组

    useradd 新增用户,# useradd -g root tt
    userdel 删除用户
    passwd 修改密码
    usermod 修改用户属性 usermod -aG group qsm
    
    groupadd
    groupdel
    
    id 查看用户信息 uid 组信息等
    
  15. 权限

    //chmod修改文件权限(change mode),r w x 分别为4 2 1 。用户u 用户组g 全部a
    chmod 777 qsm.txt
    chmod ug+w,o-w file1.txt file2.txt
    //chown 修改文件的所有者和所属组 
    chown hn test.txt //将qsm的文件所有者给了hn。 
    chown hn:hngroup test.txt。//将qsm的文件所有者给了hn,组权限交给hngroup
    
    

    权限数字4 2 1的原因在这里插入图片描述

  16. su和sudo

    //su 切换用户,其中-可以直接切换到用户界面
    su - qsm
    su - root
    //sudo 本用户可以执行一些其他用户授权的命令。依赖于/etc/sudoers,其定义了授权给哪个用户可以以管理员的身份能够执行什么样的管理命令。
    sudo shutdown
    //visudo root授权
    visodu
    
  17. uname -a

    uname -a
    uname -r
    
  18. rpm,yum

    wget就是一个下载工具,相当于一个迅雷,可以是tar包,也可以是rpm格式软件包等。	
    yum是一个包管理工具,用于下载rpm格式的包,并且自动下载相关依赖包并且自动安装好软件。
    rpm也是一个包管理工具,仅仅单纯的下载rpm格式的包。rpm -qa查看所有已安装软件
    用法:
    使用wget+地址下载一个 rpm包, 然后用 rpm -ivh xxx.rpm 安装这个软件。
    直接用 yum install XXX来自动下载和安装依赖的rpm软件,例如下载wget插件yum -y install wget
    
  19. scp远程拷贝

    scp local_file remote_username@remote_ip:remote_folder
    例如scp qsm.txt root@1.1.1.1:/root
    
  20. uniq 可检查文本文件中重复出现的行列,-c进行统计

    uniq 用处理于重复,直接使用之前只管自己前后,不管全局,所以最好之前先sort一下。-c可以计数,不加就直接去重显示。
    -c 进行计数,
    [root@master qsm]# uniq -c qsm2.txt
          3 test 30
          4 Hello 95
          2 Linux 85
    [root@master qsm]# sort qsm2.txt | uniq -c  | sort -r
          4 Hello 95
          3 test 30
          2 Linux 85
    
  21. sort排序

    sort可以直接使用,默认按照ASCII来排序
    -r 逆序
    
  22. grep过滤或者查找。

    -i,忽略大小写
    -o,只展示匹配到的值
    
    linux查找某个文件中单词出现的次数
    grep -io wuhan qsm.txt | wc -l
    cat qsm.txt | grep -o wuhan | wc -l
    
  23. sed查找和修改

    sed -n '/qsm/p' qsm.txt   相当于 grep "qsm" qsm.txt
    
    [root@master qsm]#  sed -n '/85/p' qsm2.txt
    Linux 85
    Linux 85
    Linux 85
    Linux 85
    Linux 85
    
    cat /etc/passwd | sed -n 'qsm'
    cat qsm.txt | sed 's/a/xx/'  //修改,展示全部
    cat qsm.txt | sed -n 's/a/xx/p' //展示修改的部分
    
  24. awk强大的文本分析工具,包括查找,分割等

    awk '{print $1}' log.txt
    awk '$1==2 {print $1,$3}' log.txt
    
    cat /etc/passwd | awk -F: '/mac/{print $5}'
    cat /etc/passwd | awk -F: '{print $5}'
    cat b.txt | awk -F "," '{print $1}' | sort | uniq -c | sort -nr | head -5
    cat /etc/passwd |awk  -F ':'  'BEGIN {print "name,shell"}  {print $1","$7} END {print "blue,/bin/nosh"}'
    
  25. xargs,将标准输入作为其指定命令的参数

    标准输入传为命令的参数

    #cat后面直接指定china.txt参数, 可以展示china.txt文件的内容
    [roc@roclinux ~]$ cat china.txt
    hello beijing
    #我们尝试通过标准输入把参数传给cat, 结果却只是显示了文件名而已
    [roc@roclinux ~]$ echo china.txt | cat
    china.txt
    #xargs果然不负众望, 协助cat完成了使命
    [roc@roclinux ~]$ echo china.txt | xargs cat
    hello beijing
    
  26. last用户最近登录信息

    //最近登录的次数最多的前10个人
    last | awk '{print($1)}'|sort|uniq -c|sort -nr|head -10
    last | awk '{print($1)}'|sort|uniq -c|tail -10
    
  27. wc统计

    wc统计单词数,行数,字符数
    wc -l < qsm.txt
    -l 行
    -w 单词
    -m 字符
    
    [root@master qsm]#  wc -l < qsm2.txt
    12
    [root@master qsm]#  wc -l qsm2.txt
    12 qsm2.txt
    
三、进阶操作
  1. 查看进程和线程

    进程
    ps -ef,是一种静态的进程查看命令,比如看到进程号、某个应用是否运行起来,然后kill掉。
    top,是可以动态的查看进程的命令。有5个部分,基本信息之平均负载情况,进程数量以及运行情况,CPU情况,内存和交换分区情况。
    
    线程
    ps -Tf,查看线程。LWP light weight process ID 可以称其为线程ID。还有 ps -efL
    top -H -p 进程号,查看线程信息。
    cat /proc/9094/status, /proc这个文件系统下存放运行时文件的状态信息。Linux系统上的/proc目录是一种文件系统,即proc文件系统。
    
    [root@master ~]# ps -ef | grep rsyslogd
    root       9094      1  0 21:00 ?        00:00:01 /usr/sbin/rsyslogd -n
    root      49476  24874  0 21:50 pts/0    00:00:00 grep --color=auto rsyslogd
    [root@master ~]# ps -efL | grep rsyslogd
    root       9094      1   9094  0    3 21:00 ?        00:00:00 /usr/sbin/rsyslogd -n
    root       9094      1   9098  0    3 21:00 ?        00:00:01 /usr/sbin/rsyslogd -n
    root       9094      1   9099  0    3 21:00 ?        00:00:00 /usr/sbin/rsyslogd -n
    root      49497  24874  49497  0    1 21:50 pts/0    00:00:00 grep --color=auto rsyslogd
    [root@master ~]# cat /proc/9094/status
    Name:   rsyslogd
    Umask:  0066
    State:  S (sleeping)
    Tgid:   9094
    Ngid:   0
    Pid:    9094
    PPid:   1
    #####线程数
    Threads:        3
    #####
    voluntary_ctxt_switches:        26
    nonvoluntary_ctxt_switches:     17
    [root@master ~]# ps -efL | grep rsyslogd | wc -l
    4
    
  2. 网络管理相关命令

    查看ip的命令,ip,ifconfig

    查看路由表,查找下一跳route

    网络连接和端口占用,lsof,netstat

    #查看ip
    [root@master ~]# ip a
    [root@master ~]# ifconfig
    [root@master ~]# route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         192.168.180.2   0.0.0.0         UG    100    0        0 ens33
    10.244.0.0      0.0.0.0         255.255.255.0   U     0      0        0 cni0
    10.244.1.0      10.244.1.0      255.255.255.0   UG    0      0        0 flannel.1
    10.244.2.0      10.244.2.0      255.255.255.0   UG    0      0        0 flannel.1
    172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
    192.168.180.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33
    [root@master ~]# netstat -nltp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
    tcp        0      0 127.0.0.1:10248         0.0.0.0:*               LISTEN      11472/kubelet
    tcp        0      0 127.0.0.1:10249         0.0.0.0:*               LISTEN      21103/kube-proxy
    tcp        0      0 127.0.0.1:2379          0.0.0.0:*               LISTEN      18823/etcd
    tcp        0      0 127.0.0.1:10251         0.0.0.0:*               LISTEN      18600/kube-schedule
    tcp        0      0 127.0.0.1:10252         0.0.0.0:*               LISTEN      18742/kube-controll
    tcp        0      0 127.0.0.1:2380          0.0.0.0:*               LISTEN      18823/etcd
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      9093/sshd
    [root@master ~]# netstat -ntp | grep ssh
    tcp        0      0 192.168.180.130:22      192.168.180.1:52784     ESTABLISHED 78460/sshd: root@no
    tcp        0      0 192.168.180.130:22      192.168.180.1:60869     ESTABLISHED 24859/sshd: root@no
    tcp        0     48 192.168.180.130:22      192.168.180.1:60867     ESTABLISHED 24855/sshd: root@pt
    tcp        0      0 192.168.180.130:22      192.168.180.1:52783     ESTABLISHED 78456/sshd: root@pt
    [root@master ~]# netstat -ntp | grep 78460
    tcp        0      0 192.168.180.130:22      192.168.180.1:52784     ESTABLISHED 78460/sshd: root@no
    [root@master ~]# netstat -natp | grep :22
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      9093/sshd
    tcp        0      0 192.168.180.130:22      192.168.180.1:52784     ESTABLISHED 78460/sshd: root@no
    tcp        0      0 192.168.180.130:22      192.168.180.1:60869     ESTABLISHED 24859/sshd: root@no
    tcp        0      0 192.168.180.130:22      192.168.180.1:60867     ESTABLISHED 24855/sshd: root@pt
    tcp        0      0 192.168.180.130:22      192.168.180.1:52783     ESTABLISHED 78456/sshd: root@pt
    tcp6       0      0 :::22                   :::*                    LISTEN      9093/sshd
    [root@master ~]# netstat -natp | grep :22 | awk '{print $7}' | awk -F / '{print $1}'
    9093
    78460
    24859
    24855
    78456
    9093
    [root@master ~]# lsof -i :22
    COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    sshd     9093 root    3u  IPv4  52875      0t0  TCP *:ssh (LISTEN)
    sshd     9093 root    4u  IPv6  52877      0t0  TCP *:ssh (LISTEN)
    sshd    24855 root    3u  IPv4 107684      0t0  TCP master:ssh->192.168.180.1:60867 (ESTABLISHED)
    sshd    24859 root    3u  IPv4 106275      0t0  TCP master:ssh->192.168.180.1:60869 (ESTABLISHED)
    sshd    78456 root    3u  IPv4 347261      0t0  TCP master:ssh->192.168.180.1:52783 (ESTABLISHED)
    sshd    78460 root    3u  IPv4 347282      0t0  TCP master:ssh->192.168.180.1:52784 (ESTABLISHED)
    [root@master ~]# lsof -i :22 | awk '{print $2}' | sort |uniq
    PID
    9093
    24855
    24859
    78456
    78460
    
    lsof -i  列出所有的网络连接
    lsof  -i tcp 列出所有tcp 网络连接信息
    lsof  -i udp  列出所有udp网络连接信息
    lsof -i :22  列出谁在使用某个端口
    netstat -natp 所有状态下的进程,并显示端口
    netstat -nltp 列举listen状态的进程,并显示端口
    netstat -ntp | grep :22 标识22端口的使用情况
    
    根据端口列进程
    netstat -natp | grep :22 | awk '{print $7}' | awk -F / '{print $1}'| uniq
     lsof -i :22 | awk '{print $2}' | uniq
    
  3. 网络故障排查命令

    ping 对面IP是否可以达到。使用了ICMP协议,发送和返回各一个ICMP差错报告
    traceroute 返回经过的路由,即,各个下一跳。使用了ICMP协议,返回一个差错报告。
    telnet 对端口进行调试 telnet www.baidu.com 80
    
    nslookup 查看域名对于的IP。DNS相关。
    		nslookup www.baidu.com 解析成 Name:   www.a.shifen.com
    		Address: 220.181.38.150
    
    netstat 分析TCP、upd,端口等各种网络连接问题 -natp。查看连接状态,端口被占用等情况
    tcpdump 对网络上的数据包进行截获的包分析工具,分析TCP连接问题
    
  4. 内存、磁盘和文件

    内存:
    	free -h 
    	top
    磁盘:
    	df -h :磁盘大小,显示磁盘分区上可以使用的磁盘空间
    	fdisk -l :。磁盘分区工具fdisk
    文件大小:
    	ls :文件大小
    	du -h : 文件/目录的大小,显示每个文件和目录的磁盘使用空间~~~
    
    [root@master ~]# free -h
                  total        used        free      shared  buff/cache   available
    Mem:           3.7G        751M        2.0G         12M        986M        2.6G
    Swap:            0B          0B          0B
    [root@master ~]# top
    top - 22:03:41 up  1:08,  1 user,  load average: 0.13, 0.18, 0.21
    Tasks: 161 total,   1 running, 160 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  0.5 us,  2.1 sy,  0.1 ni, 97.2 id,  0.0 wa,  0.0 hi,  0.2 si,  0.0 st
    KiB Mem :  3861512 total,  2080952 free,   769928 used,  1010632 buff/cache
    KiB Swap:        0 total,        0 free,        0 used.  2673408 avail Mem
    
       PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
     17630 root      20   0  149112  84772  31740 S   8.3  2.2   5:45.20 kube-controller
     
    [root@master ~]# df -h
    Filesystem               Size  Used Avail Use% Mounted on
    /dev/mapper/centos-root   17G  7.8G  9.3G  46% /
    devtmpfs                 1.9G     0  1.9G   0% /dev
    tmpfs                    1.9G     0  1.9G   0% /dev/shm
    tmpfs                    1.9G   13M  1.9G   1% /run
    tmpfs                    1.9G     0  1.9G   0% /sys/fs/cgroup
    [root@master ~]# fdisk -l
    Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x000c1b42
       Device Boot      Start         End      Blocks   Id  System
    /dev/sda1   *        2048     2099199     1048576   83  Linux
    /dev/sda2         2099200    41943039    19921920   8e  Linux LVM
    [root@master ~]# du -h
    0       ./docker/share
    4.0K    ./docker
    0       ./es
    89M     ./k8s/rpm
    8.0K    ./k8s/qsm
    1.2G    ./k8s
    0       ./.kube/http-cache/.diskv-temp
    2.4M    ./.kube/http-cache
    [root@master ~]# ll -h
    total 1.1M
    -rw-------. 1 root root 1.2K Mar 23  2020 anaconda-ks.cfg
    drwxr-xr-x. 3 root root   37 Jul 15 02:02 docker
    drwxr-xr-x. 2 root root    6 Jul 15 09:05 es
    drwxr-xr-x. 4 root root  271 Jul 17 08:11 k8s
    -rw-------. 1 root root 1.4K Jul  5 22:43 nohup.out
    
  5. 服务管理chkconfig,systemctl和service

    init:
    	有7个运行级别,0关机,3多用户命令行,5图形界面,6重启。
    chkconfig:
    	命令用于检查,设置系统的各种服务。chkconfig --list;chkconfig --level 35 httpd on
    systemctl:
    	主要是用来管理linux中的各种服务的。是一个新的用来控制systemd和service的工具,用来取代旧的SysV init 系统管理。启动、停止、重启、重载,状态服务等
    
    [root@master ~]# chkconfig --list
    netconsole      0:off   1:off   2:off   3:off   4:off   5:off   6:off
    network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
    [root@master ~]# cat /etc/inittab
    # multi-user.target: analogous to runlevel 3
    # graphical.target: analogous to runlevel 5
    [root@master ~]# systemctl status sshd
    ● sshd.service - OpenSSH server daemon
       Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
       Active: active (running) since Tue 2020-11-17 20:55:38 EST; 1h 57min ago
         Docs: man:sshd(8)
               man:sshd_config(5)
     Main PID: 9106 (sshd)
        Tasks: 1
       Memory: 6.6M
       CGroup: /system.slice/sshd.service
               └─9106 /usr/sbin/sshd -D
    
    Nov 17 20:55:38 master systemd[1]: Starting OpenSSH server daemon...
    
  6. 进程的nice值,-20到19,越小优先级越高,占用资源就越多。renice可以重新分配nice值。

  7. jobs可以查看所有的后台运行的进程情况。&,以后台方式进行,ctrl+z可以暂停到后台,bg继续后台运行,fb继续前台运行。

  8. 进程的通信有共享内存、管道、消息。

  9. inode和数据块
    在这里插入图片描述

    硬链接和软连接

    软连接:win快捷键,方便访问很长的路径,节省空间
    硬连接:公用一个inode去磁盘找数据块。删除了一个文件,另外一个没事。只要不是最后一个就好。
    ln [-s] 源 目标
    修改内容,都能变化了。
    
    [root@master qsm]# ln qsm2.txt qsm3.txt
    [root@master qsm]# ln -s qsm2.txt qsm4.txt
    [root@master qsm]# ll -i
    total 288
    842297 -rw-r--r--. 2 root root    105 Nov 16 02:13 qsm2.txt
    842297 -rw-r--r--. 2 root root    105 Nov 16 02:13 qsm3.txt
    842119 lrwxrwxrwx. 1 root root      8 Nov 17 23:19 qsm4.txt -> qsm2.txt
    842296 -rw-r--r--. 1 root root 142527 Nov 15 21:50 qsm.txt
    842241 -rw-r--r--. 1 root root 142527 Nov 16 23:29 uhan
    [root@master qsm]# cat qsm4.txt
    
  10. 磁盘分区和挂载fdisk mkfs mount

    //第一步分区,设置大小
    fdisk /dev/sdc 
    //第二步设置分区格式化
    mkfs.ext4 /dev/sdc1
    //将分区挂载到文件目录
    mount /dev/sdc1 /mnt/sdc1
    //parted 分区大于2T
    
  11. Linux的7个运行级别,是相对于系统而言的 , 切换运行级别通过“init运行级别”来进行切换

    运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动 
    运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆 
    运行级别2:多用户状态(没有NFS) 
    运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式 
    运行级别4:系统未使用,保留 
    运行级别5:X11控制台,登陆后进入图形GUI模式 
    运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
    
    一般使用的是init 0 关机; init 3切换到命令行模式; init 5图形模式; init 6重启模式
    
    init 首先根据 /etc/inittab 文件决定 Linux 运行的级别,然后根据运行级别在后台启动所有其他进程和应用程序
    使用 --level 参数启用指定运行级别下的某个服务,下面展示如何在运行级别 3 和运行级别 5 下启用 httpd 服务。
    # chkconfig --level 35 httpd on
    # chkconfig --level 35 httpd off
    
四、Shell脚本
  1. Shell是一个命令解释器,我们使用的bash就是Bourne Again shell。还有C shell等。

    Bourne Shell(/usr/bin/sh或/bin/sh) 
    Bourne Again Shell(/bin/bash) 
    C Shell(/usr/bin/csh) 
    K Shell(/usr/bin/ksh) 
    
    #!/bin/bash
    
    echo $1
    
     [root@master qsm]# vim qsm.sh
     [root@master qsm]# cat qsm.sh
     #!/bin/bash
     echo qsm hello go!
     [root@master qsm]# ./qsm.sh
     -bash: ./qsm.sh: Permission denied
     [root@master qsm]# ll
     total 296
     -rw-r--r--. 1 root root     21 Nov 18 21:21 qsm.sh
     [root@master qsm]# chmod 777 qsm.sh
     [root@master qsm]# ./qsm.sh
     qsm hello go!
     [root@master qsm]# bash qsm.sh
     qsm hello go!
    
    

在这里插入图片描述

  1. 执行命令的方式

    //产生子进程运行
    bash ./xx.sh
    ./xx.sh
    //当前进程运行
    source ./xx.sh
    .xx.sh
    
  2. 重定向

    > 覆盖
    >> 追加
    2> 错误重定向
    &> 无论错误还是正确,都是直接输出到指定文件
    
    
    FD (file descriptor)
    0 是一个文件描述符,表示标准输入(stdin)
    1 是一个文件描述符,表示标准输出(stdout)
    2 是一个文件描述符,表示标准错误(stderr)
    ll &> /dev/null
    ll &> log.log
    
  3. 变量,username=qsm ,sum= 3 + 4 。 获 取 {3+4}。获取 3+4username。导出export,子进程可以使用。删除unset

  4. 环境变量

    env命令之后都是环境变量
    PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
    
    $? //上一条命令是否正常执行 0是正常,非0为错误
    $$ //当前进程的PID
    $0 //当前进程的名称
    
  5. 数组

    arr1=(1 2 3 )
    echo ${arr1[2]}
    echo ${arr1[@]}
    echo ${#arr1[@]}
    
  6. 运算符

    双圆括号,数值计算,是let命令的简化
    ((a = 10))
    
  7. 测试判断test

    test 可以简化为[] ,比如比较数字大小,需要[[ ]]
    
  8. IF-Then、cash,for, while, util,break,continue

    if[ 成立]
    then
    elif[成立]
    then
    else 
    fi 
    
    for 参数 in 列表
    do 
    done
    
    while[成立]
    do
    done
    
  9. 命令参数,shell脚本里可以使用$*全部获取为一个列表。可以生产自定义函数。

  10. at一次性计划任务。crontab -e 配置,crontab -l 查看。


更多常用命令可以查看linux常用命令汇总-持续更新

【完】
喜欢就点个赞呗~~~

正在去BAT的路上修行

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值