• 工作中整理的常用的Linux命令


    工作中常用的linux命令整理


    文章目录


    1、单引号和双引号的区别:

    • 单引号:' t o d a t e ′ ,无法得到 t o d a t e 变量的值,直接打印 to_date',无法得到to_date变量的值,直接打印 todate,无法得到todate变量的值,直接打印to_date,就相当于是字符串。
    • 双引号:“$to_date”,能得到to_date变量的值,打印的是o_date变量的值。
    • 嵌套使用:‘“ t o d a t e " ′ ,单引号在外面,直接打印 " to_date"',单引号在外面,直接打印" todate",单引号在外面,直接打印"to_date”,就相当于是字符串打印。"’$to_date’",单引号在里面,打印的就是to_date的值,但是值上加了单引号。
    $> to_date=123                                                 
    $> echo '$to_date'                                             
    $to_date 
    $> echo "$to_date"                                                    
    123 
    $> echo '"$to_date"'                                                   
    "$to_date" 
    $> echo "'$to_date'"                                                
    '123' 
    $>  
    

    2、关机:shutdown -h now | init 0 | poweroff

    3、重启:shutdown -r now | reboot

    4、用户信息文件:/etc/passwd

    5、用户密码文件(包括密码过期时间):/etc/shadow

    6、用户组信息文件:/etc/group

    7、更改语言:LANG=en_US

    8、带属性复制:cp -rp | -ra

    9、给文件或者目录设置特殊权限,可以增加文件或者目录的安全性:chattr [+|- a] | [+|- i] 文件或者目录,

    • +a:只能增加数据,而不能删除也不能修改数据,
    • +i:不能增加、删除、修改数据

    10、权限对应关系:r[4]:读 w[2]:写 r[1]:执行,『 -rwxr-xr-- 』= [4+2+1] [4+0+1] [4+0+0] = 754

    11、计算器:bc

    huanzi@hp-pc:~ # bc
    bc 1.06.95
    Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
    This is free software with ABSOLUTELY NO WARRANTY.
    For details type `warranty'.
    1+1
    2
    

    12、日历:cal [月份] [年份]

    huanzi@hp-pc:~ # cal 9 2022
       September 2022
    Su Mo Tu We Th Fr Sa
                 1  2  3
     4  5  6  7  8  9 10
    11 12 13 14 15 16 17
    18 19 20 21 22 23 24
    25 26 27 28 29 30
    huanzi@hp-pc:~ #
    

    13、时间日期:date [+%Y-%m-%d-%H:%M]

    huanzi@hp-pc:~ # date +%Y-%m-%d-%H:%M
    2022-09-27-09:15
    huanzi@hp-pc:~ #	
    

    14、查询指令帮助:man [指令]

    huanzi@hp-pc:~ # man cat
    Man: find all matching manual pages (set MAN_POSIXLY_CORRECT to avoid this)
     * cat (1)
       cat (1p)
    Man: What manual page do you want?
    Man: 1
    huanzi@hp-pc:~ #
    

    15、查询进程:ps -aux

    huanzi@hp-pc:~ # ps aux | grep tomcat
    root     20896  0.0  0.0  38792  3900 pts/1    S+   09:21   0:00 grep --color=auto tomcat
    huanzi@hp-pc:~ #
    

    16、获取文档名:basename [目录]

    huanzi@hp-pc:~ # basename /root/risk_push.txt
    risk_push.txt
    huanzi@hp-pc:~ #
    

    17、获取文档目录:dirname [目录]

    huanzi@hp-pc:~ # dirname /root/risk_push.txt
    /root
    huanzi@hp-pc:~ #
    
    

    18、查看系统版本信息:lsb_release -a

    huanzi@hp-pc:~ # lsb_release -a
    LSB Version:    n/a
    Distributor ID: SUSE
    Description:    SUSE Linux Enterprise Server 12 SP4
    Release:        12.4
    Codename:       n/a
    huanzi@hp-pc:~ #
    
    

    19、查看内核版本:uname -r

    huanzi@hp-pc:~ # uname -a
    Linux huanzi@hp-pc 4.12.14-94.41-default #1 SMP Wed Oct 31 12:25:04 UTC 2018 (3090901) x86_64 x86_64 x86_64 GNU/Linux
    huanzi@hp-pc:~ #
    

    20、按照时间排序列出:ls -lthr

    huanzi@hp-pc:~ # ls -lthr
    total 99M
    drwxr-xr-x 4 root root 4.0K Jan 11  2019 inst-sys
    drwx------ 3 root root 4.0K Jan 11  2019 .dbus
    drwx------ 3 root root 4.0K Jan 11  2019 .cache
    drwxr-xr-x 2 root root 4.0K Jan 11  2019 Videos
    drwxr-xr-x 2 root root 4.0K Jan 11  2019 Templates
    drwxr-xr-x 2 root root 4.0K Jan 11  2019 Public	
    

    21、带行号查看:cat -n | -b [文件]

    huanzi@hp-pc:~ # cat -n ./test.txt
         1  test
         2  test
         3  test
         4  test
         5  test
    huanzi@hp-pc:~ #
    

    22、更改文件或者目录时间:touch [-d “2021-01-01 14:55:00”] | [-t 1663655853320] 文件或者目录

    huanzi@hp-pc:~ # touch -d '2021-12-02 14:14:14' ./test.txt
    huanzi@hp-pc:~ # ll
    -rw-r--r-- 1 root root       25 Dec  2  2021 test.txt
    

    23、查看root用户信息:id root

    huanzi@hp-pc:~ # id root
    uid=0(root) gid=0(root) groups=0(root)
    huanzi@hp-pc:~ #
    

    24、查找文件或者目录:

    • find ./ -name test.txt:在当前目录下查找name为test的文件或者目录

      huanzi@hp-pc:~ # find ./ -name  test.txt
      ./test.txt
      huanzi@hp-pc:~ #
      
    • find / -mtime [+|-] [4|0]:在/目录下查找文件或者目录,+4:查找大于时间5的 -4:查找时间为4天内的 4:查找第4天开始算24小时内的 0:查找从当前时间算24小时内的

      huanzi@hp-pc:~ # find ./ -mtime 0
      ./test.txt
      
    • find ./ -size +25k -a -size -30k -exec ls -lh {} ;:找出 当前目录下,文件大小介于 30K 到25K 之间文件,并且将权限完整的列出 (-exec ls -lh {} 😉,注意那么;不能省略,-a就是and的意思,-o就是or的意思。

      huanzi@hp-pc:~ # find ./ -size +25k -a -size -30k -exec ls -lh {} \;
      -rw-r--r-- 1 root root 28K Mar 11  2022 ./data_251.log
      
    • find /etc -size +50k -a ! -user root -exec ls -ld {} ;:找出 /etc 底下,文件大小大于 50K 但是不属于root用户的文件,并且将权限完整的列出 (-exec ls -ld {} 😉,注意那么;不能省略,-a就是and的意思,-o就是or的意思,!代表不满足后边的条件。

      huanzi@hp-pc:~ # find ./ -size +25k -a -size -30k -a ! -user root -exec ls -lh {} \;
      huanzi@hp-pc:~ #
      
    • find /etc -newer /etc/test:找出比test文件时间更新的文件

      huanzi@hp-pc:~ # find ./ -newer ./test.txt -exec ls -lh {} \;
      -rw-r--r-- 1 root root   25 Sep 27 00:00 test.txt
      -rw------- 1 root root 13K Sep 27 09:56 ./.viminfo
      
    • whereis test:这个查找的是系统数据库,只有系统数据库同步之后才能查找到。

      huanzi@hp-pc:~ # whereis test.txt
      test: /usr/bin/test /usr/share/man/man1p/test.1p.gz /usr/share/man/man1/test.1.gz
      huanzi@hp-pc:~ #
      

    25、查看文件或者目录:df -aTh

    • -a :列出所有的文件系统。
    • -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示。
    • -T:列出对应的文件系统。
    huanzi@hp-pc:~ # df -aTh
    Filesystem     Type        Size  Used Avail Use% Mounted on
    /dev/vda2      ext3         88G   11G   75G  13% /
    /dev/vdb2      ext3        295G   94G  186G  34% /var/log
    /dev/vdb1      ext3        295G   21G  260G   8% /opt
    /dev/vdb3      ext3        1.4T  357G  996G  27% /srv/BigData
    huanzi@hp-pc:~ #
    

    26、查看文件或者目录容量:du -ah,-a :列出所有的文件目录,-h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示

    huanzi@hp-pc:~ # du -ah
    4.0K    ./Documents
    4.0K    ./Public
    4.0K    ./.ssh/authorized_keys
    4.0K    ./.ssh/known_hosts
    

    27、创建软连接,相当于windows上的快捷方式:ln -s 来源文件 目标文件

    huanzi@hp-pc:~ # ln -s ./text.json ./test.txt1
    lrwxrwxrwx 1 root root       11 Sep 27 13:50 test.txt1 -> ./text.json
    

    28、格式化磁盘:mkfs -t ext4 /dev/hdc6

    29、检查磁盘:fsck -C -f -t ext3 /dev/hdc6

    • -C :可以在检验的过程当中,使用一个直方图来显示目前的进度。
    • -f :强制检查。
    • -t:指定磁盘格式,可以省略,系统会自动检测。

    30、磁盘挂载:mount /dev/vda1 /var/log,

    • -l:列出所有的挂载点。
    • -a:依照配置文件 /etc/fstab 的数据将所有未挂载的磁盘都挂载上来。
    huanzi@hp-pc:~ # mount -l
    /dev/vdb2 on /var/log type ext3 (rw,noatime,errors=panic,data=ordered)
    /dev/vdb1 on /opt type ext3 (rw,noatime,errors=panic,data=ordered)
    /dev/vdb3 on /srv/BigData type ext3 (rw,noatime,data=ordered)
    binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,relatime)
    huanzi@hp-pc:~ #
    

    31、挂载系统镜像:mount -o loop /root/centos5.2_x86_64.iso /madia

    32、查看系统内存情况:free

    huanzi@hp-pc:~ # free
                 total       used       free     shared    buffers     cached
    Mem:      65718136   24792992   40925144    1631084    1298812    8242732
    -/+ buffers/cache:   15251448   50466688
    Swap:            0          0          0
    huanzi@hp-pc:~ #
    

    33、创建快捷键别名:alias 别名=‘命令’,例如,alias lm=‘ls -al’,直接执行lm就相当于执行ls -al命令。

    huanzi@hp-pc:~ # alias
    alias l='ls -alF'
    alias la='ls -la'
    alias ll='ls -l'
    alias you='if test "$EUID" = 0 ; then /sbin/yast2 online_update ; else su - -c "/sbin/yast2 online_update" ; fi'
    huanzi@hp-pc:~ #
    

    34、删除快捷键别名:unalias 别名

    35、获取系统目前的语言情况:locale

    huanzi@hp-pc:~ # locale
    LANG=POSIX
    LC_CTYPE=en_US.UTF-8
    LC_NUMERIC="POSIX"
    LC_TIME="POSIX"
    LC_COLLATE="POSIX"
    LC_MONETARY="POSIX"
    LC_MESSAGES="POSIX"
    LC_PAPER="POSIX"
    LC_NAME="POSIX"
    LC_ADDRESS="POSIX"
    LC_TELEPHONE="POSIX"
    LC_MEASUREMENT="POSIX"
    LC_IDENTIFICATION="POSIX"
    LC_ALL=
    huanzi@hp-pc:~ #
    

    36、获取键盘输入: read [-pt] variable,

    • -p:后面跟提示信息,
    • -t:表示等待用户输入时的时长,
    • variable:是指你的输入的内容会被设置成指定的变量名。
    huanzi@hp-pc:~ # read -p '请输入用户名:' -t 10 name
    请输入用户名:测试
    huanzi@hp-pc:~ # echo $name
    测试
    huanzi@hp-pc:~ #
    

    37、变量声明:declare [-aixr] variable

    • -a :将后面名为 variable 的发量定义成为数组 (array) 类型
    • -i :将后面名为 variable 的发量定义成为整数数字 (integer) 类型
    • -x :用法和 export 一样,就是将后面的 variable 设置成环境发量;
    • -r :将变量设定成readonly 类型,该发量不可被更改内容,也不能 unset
    huanzi@hp-pc:~ # declare -ax  name='这是测试'
    huanzi@hp-pc:~ # echo $name
    这是测试
    huanzi@hp-pc:~ #
    
    

    38、查看历史命令:history

    • n :数字,意思是要列出最近的 n 笔命令行
    • -c :将目前的 shell 中的所有 history 内容全部消除
    • -a :将目前新增的 history 命令新增入 histfiles 中
    • -r :将 histfiles 中的内容读取目前这个 shell 的 history 记忆中
    • -w :将目前的 history 记忆内容写入 histfiles 中

    注意:使用history列出来命令之后,使用 [!序号] 可以执行对应的命令,[!al] 执行所有以al开头的命令。

    huanzi@hp-pc:~ # history 10
     1139  2022-09-28 09:06:02 declare -a  name='这是测试'
     1140  2022-09-28 09:06:04 echo $name
     1141  2022-09-28 09:06:16 declare -ax  name='这是测试'
     1142  2022-09-28 09:06:18 echo $name
     1143  2022-09-28 09:09:25 history -n 2
     1144  2022-09-28 09:09:30 history
     1148  2022-09-28 09:09
    

    39、自定义环境变量文件:在/etc/profile.d/目录下,创建自定义文件xxx.sh,写入用户自定义环境变量,可以避免由于直接更改系统环境文件而导致的问题,系统在启动的时候,就会加载/etc/profile.d/下的所有的以.sh结尾的文件。比如可以将tomcat、java等软件的环境变量配置在自定义的文件中,效果和直接更改系统环境文件是一样的。

    40、字符串操作:

    • 切割字符串:cut -d ‘分隔字符’ -f fields 文件名

      1. -d :后面接分隔字符。和 -f 一起使用;
      2. -f :依据 -d 的分隔字符将一段讯息分割成为数段,用 -f 取出第几段的意思;
      3. -c :以字符 (characters) 的单位取出固定字符区间;
      huanzi@hp-pc:~ # cat ./test.txt
      test:pp
      test:pp
      test:pp
      test:pp
      huanzi@hp-pc:~ # cut -d ':' -f 2 ./test.txt
      pp
      pp
      pp
      pp
      huanzi@hp-pc:~ #
      
    • 过滤字符串:grep [-acinv] [–color=auto] ‘搜寻字符串’ filename

      1. -a :将 binary 档案以 text 档案的方式搜寻数据
      2. -c :计算找到 ‘搜寻字符串’ 的次数
      3. -i :忽略大小写,所以大小写规为相同
      4. -n :顺便输出行号
      5. -v :反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行!
      6. –color=auto :可以将找刡的关键词部分加上颜色的显示喔!
      7. -A :后面可加数字,为 after 的意思,除了列出该行外,后续的 n 行也列出来;
      8. -B :后面可加数字,为 befer 的意思,除了列出该行外,前面的 n 行也列出 来;
      huanzi@hp-pc:~ # grep -an 'pp' ./test.txt
      1:test:pp
      2:test:pp
      3:test:pp
      4:test:pp
      huanzi@hp-pc:~ #
      
    • 排序: sort [-fbMnrtuk] [file or stdin]

      1. -f :忽略大小写
      2. -b :忽略最前面的空格符部分;
      3. -M :以月份名称排序,例如 JAN, DEC 等等的排序方法;
      4. -n :使用『纯数字』进行排序
      5. -r :反向排序;
      6. -u :就是 uniq ,相同的数据中,仅出现一行
      7. -t :分隔符,预设使用 [tab] 键分隔
      8. -k :以哪列 (field) 进行排序,后边跟数字,代表第几列
      huanzi@hp-pc:~ # ll | sort -k 4
      total 100600
      -rw------- 1 root root        0 Oct 27  2020 .history
      -rw-r--r-- 1 root root        0 Sep 27 13:50 text.json
      lrwxrwxrwx 1 root root       11 Sep 27 13:50 test.txt1 -> ./text.json
      -rw------- 1 root root       16 Jan 11  2019 .esd_auth
      -rw-r--r-- 1 root root       21 Sep 27 17:29 hbase_recorve.sh
      
    • 去重: uniq [-ic]

      1. -i :忽略大小写
      2. -c :进行行计数
      huanzi@hp-pc:~ # cat ./test.txt | uniq -ci
            4 test:pp
            4 test
      huanzi@hp-pc:~ #
      
    • 统计文件字数:wc [-lwm]

      1. -l :仅列出行;

      2. -w :仅列出多少字(英文单字);

      3. -m :多少字符;

        注意:输出的三个数字中,分删代表: 『行、字数、字符数』

      huanzi@hp-pc:~ # wc ./test.txt
       8  8 52 ./test.txt
      huanzi@hp-pc:~ #
      
    • 内容输出到文件并在屏幕上显示:tee [-a] file

      1. -a :以累加 (append) 的方式,将数据加入 file 当中!
      huanzi@hp-pc:~ # tee -a ./tee.txt
      这是地第一次输入
      这是地刺第一次输入
      这是第二次输入
      这是第二次输入
      这是第三次输入
      这是第三次输入
      ^C
      huanzi@hp-pc:~ # cat ./tee.txt
      这是地刺第一次输入
      这是第二次输入
      这是第三次输入
      huanzi@hp-pc:~ #
      
      
    • 删除文件或者替换文件:tr [-ds] SET1 …

      1. -d :删除除信息当中的的SET1 这个字符串;
      2. -s :取代掉重复的字符!
      huanzi@hp-pc:~ # echo '1234' | tr -d '3'
      124
      huanzi@hp-pc:~ # echo '1234' | tr -s '3' '9'
      1294
      huanzi@hp-pc:~ #
      
    • 字符转化:col [-xb]

      1. -x :将 tab 键转换成对等的空格键
      2. -b :在文字内有反斜杠 (/) 时,仅保留反斜杠最后接的那个字符
      huanzi@hp-pc:~ # echo -e "123\t456" | col -x
      123     456
      huanzi@hp-pc:~ #
      
    • 两个文件当中,有 “相同数据” 的那一行,拼接在一起:join [-ti12] file1 file2

      1. -t :join 默认以空格符分隔数据,并且比对『第一个字段』的数据, 如果两个档案相同,则将两笔数据联成一行,且第一个字段放在第一个!
      2. -i :忽略大小写
      3. -1 :这个是数字1 ,代表『第一个档案要用那个字段来分析』的意思;
      4. -2 :代表『第二个档案要用那个字段来分析』的意思。
      huanzi@hp-pc:~ # cat ./student.txt
      lala 20
      daiad 23
      huahu 99
      huanzi@hp-pc:~ # cat ./student1.txt
      lala 66
      daiad 88
      huahu 99
      huanzi@hp-pc:~ # join ./student.txt ./student1.txt
      lala 20 66
      daiad 23 88
      huahu 99 99
      
    • 将两行数据连接在一起,并以tab键分隔:paste [-d] file1 file2

      1. -d :后面可以接分隔字符。预设是以 [tab] 分隔
      2. -:如果 file 部分写成 - ,表示来自 standard input 的资料的意思。
      huanzi@hp-pc:~ # paste ./student.txt ./student1.txt
      lala 20 lala 66
      daiad 23        daiad 88
      huahu 99        huahu 99
      huanzi@hp-pc:~ # paste -d '=' ./student.txt ./student1.txt
      lala 20=lala 66
      daiad 23=daiad 88
      huahu 99=huahu 99
      huanzi@hp-pc:~ #
      
    • 在将 [tab] 键转成空格键:expand [-t] file

      1. -t :后面可以接数字。一般来说,一个 tab 键可以用 8 个空格键替代。
      huanzi@hp-pc:~ # cat ./tab.txt
      这是在测试tab键                 链▒两个tab键
      这这是在测试tab键       这是一个tab键
      huanzi@hp-pc:~ # expand -t 1 ./tab.txt
      这是在测试tab键   链▒两个tab键
      这这是在测试tab键 这是一个tab键
      huanzi@hp-pc:~ # expand -t 4 ./tab.txt
      这是在测试tab键         链▒两个tab键
      这这是在测试tab键   这是一个tab键
      huanzi@hp-pc:~ #
      
    • 将大文件切分成小文件: split [-bl] file PREFIX

      1. -b :后面可接欲分割成的文件大小,可加单位,例如 b, k, m 等;
      2. -l :以行数来进行分割。
      3. PREFIX :代表前导符的意思,可作为分割档案的前导文字。
      huanzi@hp-pc:~ # split -l 1 ./tab.txt spilt
      huanzi@hp-pc:~ # ll | grep spilt
      -rw-r--r-- 1 root root       41 Sep 28 14:02 spiltaa
      -rw-r--r-- 1 root root       44 Sep 28 14:02 spiltab
      huanzi@hp-pc:~ #
      huanzi@hp-pc:~ # cat ./spiltaa
      这是在测试tab键                 链▒两个tab键
      huanzi@hp-pc:~ # cat ./spiltab
      这这是在测试tab键       这是一个tab键
      huanzi@hp-pc:~ #
      
    • 参数替换:xargs [-0epn] command

      1. -0 :如果输入的 stdin 中有特殊字符,例如 `, , 空格键等等字符时,这个 -0 参 数 可以将他还原成一般字符。这个参数可以用于特殊状态喔!
      2. -e :这个是 EOF (end of file) 的意思。后面可以接一个字符串,当 xargs 分析 有这个字符串时,就会停止继续工作!
      3. -p :在执行每个命令的 argument 时,都会询问使用者的意思;
      4. -n :后面接次数,每次 command 命令执行时,要使用几个参数的意思。
      huanzi@hp-pc:~ # cat ./tab.txt | xargs
      这是在测试tab键 链▒两个tab键 这这是在测试tab键 这是一个tab键
      huanzi@hp-pc:~ # cat ./tab.txt | xargs -n 2
      这是在测试tab键 链▒两个tab键
      这这是在测试tab键 这是一个tab键
      huanzi@hp-pc:~ # cat ./tab.txt | xargs -n 3
      这是在测试tab键 链▒两个tab键 这这是在测试tab键
      这是一个tab键
      huanzi@hp-pc:~ # cat ./tab.txt | xargs -p
      echo 这是在测试tab键 链▒两个tab键 这这是在测试tab键 这是一个tab键 ?...y
      这是在测试tab键 链▒两个tab键 这这是在测试tab键 这是一个tab键
      
    • 减号 - 的用途:tar -cvf - /home | tar -xvf -

      经过管线后,将 tar -cvf - /home 传送给后面的tar -xvf -,后面的这个 - 则是取用前一个命令事务 stdout, 因此,我们就不需要使用 file 了。

    • 将数据进行取代、删除、新增、截取特定行等等:sed [-nefr] [动作]

      1. -n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到屏幕上。但如果加上 -n 参数后,则只有经过 sed 特殊处理的那一行才会被列出来。
      2. -e :直接在指令列模式上进行 sed 事务动作编辑;
      3. -f :直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内 的 sed 动作;
      4. -r :sed 的动作支持的是延伸垄正觃表示法的诧法。(预讴是基础正觃表示法诧 法)
      5. -i :直接修改读取的档案内容,而不是由屏幕输出。 动作说明: [n1[,n2]]function n1, n2 :不见得会存在,一般代表『选择进行动作的行数』,丼例杢说,如果我 的动作 是需要在 10 到 20 行之间进行的,则『 10,20[动作行为] 』 function 有底下这些咚咚:
      6. a :新增, a 的后面可以接字符串,而这些字符串会在新的一行出现(目前的下 一行)~
      7. c :取代, c 的后面可以接字符串,这些字符串可以取代 n1,n2 之间的行!
      8. d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
      9. i :插入, i 的后面可以接字符串,而这些字符串会在新的一行出现(目前的上一 行);
      10. p :打印,亦卲将某个选择的数据印出。通常 p 会不参数 sed -n 一起运作~
      11. s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配 正觃表示法!
      huanzi@hp-pc:~ # cat ./student.txt
      lala 20
      daiad 23
      huahu 99
      
      tab     tab
      tab键测试               tab
      huanzi@hp-pc:~ # sed -i 6d -f ./student.txt
      sed: file ./student.txt line 1: extra characters after command
      huanzi@hp-pc:~ # sed -i 6d ./student.txt
      huanzi@hp-pc:~ # cat ./student.txt
      lala 20
      daiad 23
      huahu 99
      
      tab     tab
      huanzi@hp-pc:~ # sed -i 4a\newline ./student.txt
      huanzi@hp-pc:~ # cat ./student.txt
      lala 20
      daiad 23
      huahu 99
      
      newline
      tab     tab
      huanzi@hp-pc:~ #
      
      

      41、格式化打印:printf ‘打印格式’ 实际内容

      1. \a:警告声音输出
      2. \b:退格键(backspace)
      3. \f:清除屏幕 (form feed)
      4. \n:输出新的一行
      5. \r:相当于Enter 按键
      6. \t:水平的 [tab] 按键
      7. \v 垂直的 [tab] 按键
      8. \xNN:NN 为两位数的数字,可以转换数字成为字符。
      9. %ns:那个 n 是数字,
      10. s:代表 string ,亦卲多少个字符;
      11. %ni:那个 n 是数字,
      12. i:代表 integer ,亦卲多少整数字数;
      13. %N.nf:那个 n 不 N 都是数字,
      14. f:代表 floating (浮点),如果有小数字数, 假讴我共要十个位数,但小数点有两位,卲为 %10.2f 啰!
      huanzi@hp-pc:~ # printf "%-10s %-8s %-6s %4s\n" "姓名 年龄 性别 收入";printf "%-10s %-8s %-6s %-4.2f\n" "lal 20 男 10.22";
      姓名 年龄 性别 收入
      lal 2010.22                 0.00
      huanzi@hp-pc:~ #
      
    • 比对两个文件之间的差异:diff [-bBi] from-file to-file

      1. from-file :一个档名,作为原始比对档案的档名;
      2. to-file :一个档名,作为目的比对档案的档名; 注意,from-file 戒 to-file 可以 - 叏代,那个 - 代表『Standard input』。
      3. -b :忽略一行当中,仅有多个空白的差异
      4. -B :忽略穸白行的差异。
      5. -i :忽略大小写的不同。
      huanzi@hp-pc:~ # diff -bBi ./student.txt ./student1.txt
      1,2c1,2
      < lala 20
      < daiad 23
      ---
      > lala 66
      > daiad 88
      4,6d3
      <
      < newline
      < tab   tab
      huanzi@hp-pc:~ #
      

    41、条件判断:

    • 关于某个档名的『文件类型』判断,如 test -e filename 表示存在否

      1. -e: 该『档名』是否存在?(常用) -f 该『档名』是否存在且为档案(file)?(常用)
      2. -d: 该『文件名』是否存在且为目录(directory)?(常用)
      3. -b: 该『档名』是否存在且为一个 block device 装置?
      4. -c: 该『档名』是否存在且为一个 character device 装置?
      5. -S: 该『档名』是否存在且为一个 Socket 档案?
      6. -p: 该『档名』是否存在且为一个 FIFO (pipe) 档案?
      7. -L: 该『档名』是否存在且为一个连结档?
      # test.sh文件
      #!/bin/bash
      
      if test -e ~/student.txt; then
        echo "student.txt存在于~目录下!"
      elif test -e ~/student1.txt; then
        echo "student1.txt存在于~目录下!"
      else
        echo "student.txt、student1.txt不存在于~目录下!"
      fi
      ~
      
      huanzi@hp-pc:~ # ./test.sh
      student.txt存在于~目录下!
      huanzi@hp-pc:~ #
      
      
    • 关于档案的权限侦测,如 test -r filename 表示可读否 (但 root 权限常有例外)

      1. -r: 侦测该档名是否存在且具有『可读』的权限?
      2. -w: 侦测该档名是否存在且具有『可写』的权限?
      3. -x: 侦测该档名是否存在且具有『可执行』的权限?
      4. -u: 侦测该文件名是否存在且具有『SUID』的属性?
      5. -g: 侦测该文件名是否存在且具有『SGID』的属性?
      6. -k: 侦测该文件名是否存在且具有『Sticky bit』的属性?
      7. -s: 侦测该档名是否存在且为『非空白档案』?
      # test.sh文件
      #!/bin/bash
      if test -r ~/student.txt; then
        echo "student.txt有读权限!"
      else
        echo "student.txt没有读权限!"
      fi
      
      
      huanzi@hp-pc:~ # ./test.sh
      student.txt有读权限!
      huanzi@hp-pc:~ #
      
    • 两个档案之间的比较,如: test file1 -nt file2

      1. -nt: (newer than)判断 file1 是否比 file2 新
      2. -ot: (older than)判断 file1 是否比 file2 旧
      3. -ef: 判断 file1 不 file2 是否为同一档案,
      # test.sh文件
      #!/bin/bash
      if test ~/student.txt -ef ~/student1.txt; then
        echo "student.txt和student1.txt是同一个文件!"
      else
        echo "student.txt和student1.txt不是同一个文件!"
      fi
      
      huanzi@hp-pc:~ # ./test.sh
      student.txt和student1.txt不是同一个文件!
      
    • 关于两个整数之间的判定,例如 test n1 -eq n2

      1. -eq: 两数值相等 (equal)
      2. -ne: 两数值不等 (not equal)
      3. -gt: n1 大于 n2 (greater than)
      4. -lt: n1 小于 n2 (less than)
      5. -ge: n1 大于等于 n2: (greater than or equal)
      6. -le: n1 小于等于 n2 (less than or equal)
      # test.sh文件
      #!/bin/bash
      if test 123 -eq 123; then 
        echo "123 EQ 123"
      else 
        echo "123 NOT EQ 123"
      fi
      
      huanzi@hp-pc:~ # ./test.sh
      123 EQ 123
      
    • 判定字符串的数据

      1. test -z string: 判定字符串是否为 0 ?若 string 为空字符串,则为 true
      2. test -n string: 判定字符串是否非为 0 ?若 string 为空字符串,则为 false。 注: -n 亦可省略
      3. test str1 = str2: 判定 str1 是否等于 str2 ,若相等,则回传 true
      4. test str1 != str2: 判定 str1 是否不等于 str2 ,若相等,则回传 false
      # test.sh文件
      #!/bin/bash
      if test -n '123'; then 
        echo "'123' IS NOT EMPTY STRING"
      else 
        echo "'123' IS EMPTY STRING"
      fi
      
      huanzi@hp-pc:~ # ./test.sh
      '123' IS NOT EMPTY STRING
      
      
    • 多重条件判定,例如: test -r filename -a -x filename

      1. -a: (and)两状况同时成立!例如 test -r file -a -x file,则 file 同时具有 r 不 x 权限时,才回传 true。
      2. -o: (or)两状况任何一个成立!例如 test -r file -o -x file,则 file 具有 r 戒 x 权限时,就可回传 true。
      3. !: 反相状态,如 test ! -x file ,当 file 丌具有 x 时,回传 true
      # test.sh文件
      #!/bin/bash
      if test -r ~/test.sh -a -x ~/test.sh; then 
        echo "test.sh have read and write permissions"
      else 
        echo "test.sh have not read and write permissions"
      fi
      
      huanzi@hp-pc:~ # ./test.sh
      test.sh have read and write permissions
      
    • if条件判断:

      if [ 条件判断式一 ]; then

      ​ 当条件判断式一成立时,可以进行的指令工作内容;

      elif [ 条件判断式二 ]; then

      ​ 当条件判断式二成立时,可以进行的指令工作内容;

      else

      ​ 当条件判断式一不二均不成立时,可以进行的指令工作内容;

      fi

      # test.sh文件
      #!/bin/bash
      
      if test -e ~/student.txt; then
        echo "student.txt存在于~目录下!"
      elif test -e ~/student1.txt; then
        echo "student1.txt存在于~目录下!"
      else
        echo "student.txt、student1.txt不存在于~目录下!"
      fi
      ~
      
      huanzi@hp-pc:~ # ./test.sh
      student.txt存在于~目录下!
      huanzi@hp-pc:~ #
      
    • case … esac判断:

      case $1 in

      “one”)

      ​ echo “Your choice is ONE” ;;

      “two”)

      ​ echo “Your choice is TWO” ;;

      “three”)

      ​ echo “Your choice is THREE” ;;

      *)

      ​ echo “Usage $0 {one|two|three}” ;;

      esac

      # test.sh文件
      #!/bin/bash
      case $1 in
      "one")
        echo "one";;
      "two")
        echo "two";;
      "three")
        echo "three";;
      "four")
        echo "four";;
      "five")
        echo "five";;
      *)
        echo "over";;
      esac
      
      huanzi@hp-pc:~ # ./test.sh one
      one
      huanzi@hp-pc:~ # ./test.sh five
      five
      huanzi@hp-pc:~ # ./test.sh
      over
      huanzi@hp-pc:~ #
      

    42、function 功能,创建函数:

    ​ function fname() { 程序段 }

    # test.sh文件
    #!/bin/bash
    function casetest {
      echo "function ......"
    }
    casetest
    
    huanzi@hp-pc:~ # ./test.sh
    function ......
    
    

    43、循环:

    • while循环:

      while [ condition ] <==中括号内的状态就是刞断式

      do <==do 是循环的开始!

      ​ 程序段落

      done <==done 是循环的结束

      # test.sh文件
      #!/bin/bash
      function whiletest {
      count=0
        while [ $count -le 5 ]
        do 
          echo "while out put context " $count
          ((count++))
        done
      }
      whiletest
      
      huanzi@hp-pc:~ # ./test.sh
      while out put context  0
      while out put context  1
      while out put context  2
      while out put context  3
      while out put context  4
      while out put context  5
      huanzi@hp-pc:~ #
      
    • until 循环:

      until [ condition ]

      do

      ​ 程序段落

      done

      # test.sh文件
      #!/bin/bash
      function untiltest {
      count=0
        while [ $count -le 5 ]
        do 
          echo "until out put context " $count
          ((count++))
        done
      }
      untiltest
      
      huanzi@hp-pc:~ # ./test.sh
      until out put context  0
      until out put context  1
      until out put context  2
      until out put context  3
      until out put context  4
      until out put context  5
      huanzi@hp-pc:~ #
      
    • for循环:

      for var in con1 con2 con3 …

      do

      ​ 程序段

      done

      # test.sh文件
      #!/bin/bash
      function fortest {
        for item in 1 2 3 4 5
        do 
          echo "for out put context " $item
        done
      }
      fortest
      
      huanzi@hp-pc:~ # ./test.sh
      for out put context  1
      for out put context  2
      for out put context  3
      for out put context  4
      for out put context  5
      huanzi@hp-pc:~ #
      
      

      for (( 初始值; 限制值; 执行步阶 )) # 类似于java中for(i = 0;i<10;i++)

      do

      ​ 程序段

      done

      # test.sh文件
      #!/bin/bash
      function fortest1 {
        for ((i=0;i<5;i++))
        do 
          echo "for out put context " $i
        done
      }
      fortest1
      
      huanzi@hp-pc:~ # ./test.sh
      for out put context  0
      for out put context  1
      for out put context  2
      for out put context  3
      for out put context  4
      huanzi@hp-pc:~ #
      
      

    44、定时任务:

    • at:at [-mldv] TIME,at -c 工作号码,只执行一次。

      1. -m :当 at 的工作完成后,即使没有输出讯息,亦以 email 通知使用者该工作 已完成。
      2. -l :at -l 相当于 atq,列出目前系统上面的所有该用户的 at 排程;
      3. -d :at -d 相当于 atrm ,可以取消一个在 at 排程中的工作;
      4. -v :可以使用较明显的时间格式栏出 at 排程中的仸务栏表;
      5. -c :可以列出后面接的该项工作的实际挃令内容。
      6. TIME:时间格式,这里可以定义出『什么时候要进行 at 这项工作』的时间,格 式有: HH:MM ex> 04:00 在今日的 HH:MM 时刻进行,若该时刻已超过,则明天的 HH:MM 进行 此工作。
      7. HH:MM YYYY-MM-DD:04:00 2009-03-17 强制规定在某年某月的某一天的特殊时刻进行该工作!
      8. HH:MM[am|pm] [Month] [Date]:04pm March 17 也是一样,强制在某年某月某日的某时刻进行!
      9. HH:MM[am|pm] + number [minutes|hours|days|weeks] :now + 5 minutes, 04pm + 3 days 就是说,在某个时间点『再加几个时间后』才进行。
    • crontab :crontab [-u username] [-l|-e|-r],循环执行

      1. -u :只有 root 才能进行这个任务,亦即帮其他使用者建立/移除 crontab 工作 排程;
      2. -e :编辑 crontab 的工作内容
      3. -l :查阅 crontab 的工作内容
      4. -r :移除所有的crontab 工作内容,若仅要移除一项,请用 -e 去编辑。

    45、动态观察系统变化: top [-d 数字] | top [-bnp]

    1. -d :后面可以接秒数,就是整个程序画面更新的秒数。预设是 5 秒;

    2. -b :以批次的方式执行 top ,还有更多的参数可以使用喔! 通常会搭配数据流重导向来将批次的结果输出成为档案。

    3. -n :与 -b 搭配,意思是,需要的行进行几次 top 的输出结果。

    4. -p :指定某个 PID 来的行观察监测。

      在 top 执行过程当中可以使用的以下按键执行命令:

      1. ? :显示在 top 中可以输入的按键指令;
      2. P :以 CPU 的使用资源排序显示;
      3. M :以 Memory 的使用资源排序显示;
      4. N :以 PID 来排序喔!
      5. T :由该 Process 使用的 CPU 时间累积 (TIME+) 排序。
      6. k :给予某个 PID 一个讯号 (signal)
      7. r :给予某个 PID 重新制订一个 nice 值。
      8. q :离开 top 软件的挄键。

    46、网络追踪: netstat -[atunlp]

    1. -a :将目前系统上所有的联机、监控、Socket 数据都列出来
    2. -t :列出 tcp 网络封包的数据
    3. -u :列出 udp 网络封包的数据
    4. -n :不以程序的名称,以端口号来显示;
    5. -l :列出目前正在网络监控 (listen) 的朋务;
    6. -p :列出该网络监控的程序 PID
    huanzi@hp-pc:~ # netstat -atunlp
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
    tcp        0      0 10.243.48.251:21303     0.0.0.0:*               LISTEN      21113/java
    tcp        0      0 10.243.48.251:26007     0.0.0.0:*               LISTEN      13985/java
    tcp        0      0 127.0.0.1:25016         0.0.0.0:*               LISTEN      5940/java
    tcp        0      0 10.243.48.251:21304     0.0.0.0:*               LISTEN      26026/java
    tcp        0      0 10.243.48.251:26008     0.0.0.0:*               LISTEN      13985/java
    
    

    47、软件管理:

    • rpm -qa 软件名称:列出对应的软件信息

      1. -V :后面加的是软件名称,若该软件所含的档案被变更过,才会列出来;
      2. -Va :列出目前系统上面所有可能被变更过的档案;
      3. -Vp :后面加的是文件名,列出该软件内可能被变更过的档案;
      4. -Vf :列出某个档案是否被变更过
      huanzi@hp-pc:~ # rpm -qa openssh
      openssh-7.2p2-74.25.1.x86_64
      huanzi@hp-pc:~ #
      
      
    • yum [option] [查询工作项目] [相关参数]:安装/升级功能

      1. install :后面接要安装的软件!
      2. update :后面接要升级的软件,若要整个系统都升级,就直接 update 即可
      3. -y :当 yum 要等待用户输入时,这个选项可以自动提供 yes 的响应;
      4. –installroot=/some/path :将该软件安装在 /some/path 而不是使用默认路径 [查询工作项目]
      5. [相关参数]:这方面的参数有: search :搜寻某个软件名称戒者是描述 (description) 的重要关键字; list :列出目前 yum 所管理的所有的软件名称不版本,有点类似 rpm -qa; info :同上,不过有点类似 rpm -qai 的执行结果; provides:仍档案去搜寻软件!类似 rpm -qf 的功能!
    • yum clean [packages|headers|all]:

      1. packages:将已下载的软件档案删除
      2. headers :将下载的软件文件头删除
      3. all :将所有容器数据都删除!
    • dpkg -i 软件包:

      1. -i:安装软件包
      2. -r:删除软件包
      3. -I:显示已安装软件包列表
      4. -L:显示于软件包关联的文件
      5. -c:列出软件包内的文件列表
      6. -P:卸载软件,后跟软件名,不是软件包名
      7. –remove:删除软件,不删除配置文件
      8. –purge:删除软件,并删除配置文件

    48、账号:

    • 创建系统账号:useradd -r -m -s /bin/bash username
      1. -r:建立系统账号
      2. -m:自动建立用户的登入目录
      3. -s:指定用户登入后所使用的shell
    • 为账户设置密码:passwd username

    49、Shell script :

    • 默认参数($0, $1…):
      1. $0:这个变量比较特殊,它指的是脚本本身
      2. $# :代表后接的参数『个数』
      3. $@ :代表『 “$1” “$2” “$3” “$4” 』之意,每个变量是独立的(用双引号括起来);
      4. $* :代表『 “$1c$2c$3c$4” 』,其中 c 为分隔字符,默讣为空格键, 所以本例中代表『 “$1 $2 $3 $4” 』之意。
    • degug:
      1. -n :不要执行 script,仅查询语法的问题;
      2. -v :再执行 sccript 前,先将 scripts 的内容输出到屏幕上;
      3. -x :将使用到的 script 内容显示刡屏幕上,这是很有用的参数!

    50、备份大型目录数据:dd if=/dev/vda1 of=/home/bak bs=1M count=512,dd 就好像在迭砖块一样,将 512 块,每块 1MB 的砖块堆栈成为一个大档案 (/home/bak) , 最终就会出现一个 512MB 的档案。

    • if 是 input file ,输入档案。of 是 output file ,将一堆零写入到后面接的档案中。
    • bs 是每个 block 大小,就像文件系统那样的 block 意思。
    • count 则是总共几个 bs 的意思。

    51、备份数据:

    • dump [-Suvj] [-level] [-f 备份档] 待备份资料 (dump可以备份整个文件系统)

      1. -u :将这次 dump 时间记录到 /etc/dumpdates 档案中。
      2. -v :将 dump 档案过程显示出来。
      3. -j :加入 bzip2 支持!将数据进行压缩,默认 bzip2 压缩等级为 2 -level:就是我们谈到的等级,从 -0 ~ -9 共十个等级
      4. -f :有点类似 tar 啦!后面接产生的档案,亦可接例如 /dev/sdb1 装置文件名等
      5. -W :列出在 /etc/fstab 里面具有 dump 设定的 partition 是否有备份过
      6. -S :仅列出后面待备份数据需要多少磁盘空间才能够备份完毕
    • dd if=/dev/vda1 of=/home/bak bs=1M count=512

      1. if 是 input file ,输入档案。of 是 output file ,将一堆零写入到后面接的档案中。

      2. bs 是每个 block 大小,就像文件系统那样的 block 意思。

      3. count 则是总共几个 bs 的意思。

    52、恢复数据:

    restore -r [-f dumpfile] :还原整个文件系统,主要是还原dump 备份的数据

    • -t :此模式用在察看 dump 备份文件中有什么重要数据!类似 tar -t 功能;
    • -C :此模式可以将 dump 内的数据拿出来跟实际的文件系统做比较, 最终会列出『在 dump 档案内有记录的,且目前文件系统不一样』的档案;
    • -i :进入互动模式,可以仅还原部分档案
    • -r :将整个 filesystem 还原的一种模式,用在还原针对文件系统的的dump 备 份;
    • -h :察看完整备份数据中的 inode 不文件系统 label 等信息
    • -f :后面就接你要处理的那个 dump 档案啰!
    • -D :跟 -C 进行搭配,可以查出后面接的挂载点不 dump 内有不同的档案!

    53、解压缩:

    • bzip2 格式(性能最好,压缩包后缀为.bz2):
    1. 压 缩:tar -jcv -f filename.tar.bz2 要压缩的目录或者为文件名(说明:其中-f可以和前边的命令合并,但是合并之后,f的顺序必须放在最后,因为f后边跟的必须是文件路径,f分开写更具有可读性。)
    2. 查 询:tar -jtv -f filename.tar.bz2 (说明:其中-f可以和前边的命令合并,但是合并之后,f的顺序必须放在最后,因为f后边跟的必须是文件路径,f分开写更具有可读性。)
    3. 解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录(说明:其中-f可以和前边的命令合并,但是合并之后,f的顺序必须放在最后,因为f后边跟的必须是文件路径,f分开写更具有可读性。)
    • gzip格式(压缩包后缀为.gz):
    1. 压 缩:tar -zcv -f filename.tar.gz 要压缩的目录或者为文件名(说明:其中-f可以和前边的命令合并,但是合并之后,f的顺序必须放在最后,因为f后边跟的必须是文件路径,f分开写更具有可读性。)
    2. 查 询:tar -ztv -f filename.tar.gz (说明:其中-f可以和前边的命令合并,但是合并之后,f的顺序必须放在最后,因为f后边跟的必须是文件路径,f分开写更具有可读性。)
    3. 解压缩:tar -zxv -f filename.tar.gz -C 欲解压缩的目录(说明:其中-f可以和前边的命令合并,但是合并之后,f的顺序必须放在最后,因为f后边跟的必须是文件路径,f分开写更具有可读性。)

    54、vim编辑器:

    • 一般模式:刚打开文件之后,进入一般模式,在一般模式下,按下『:wq!』强制保存文件。
    • 编辑模式:按下『i, I, o, O, a, A, r, R』等任何一个字母之后才会进入编辑模式,编辑模式下,可以对文本进行增删改。更改完成之后,必须按下『ESC』退出编辑模式,进入一般模式。
    • 命令行模式:在一般模式当中,输入『 : / ? 』三个中的任何一个字母,就会进入命令行模式。
    • 0 戒功能键[Home] :这是数字『 0 』,移劢到这一行的最前面字符处
    • $ 戒功能键[End] :移劢到这一行的最后面字符处
    • [Ctrl] + [f] :屏幕『向下』移劢一页,相当于 [Page Down]按键
    • [Ctrl] + [b]: 屏幕『向上』移劢一页,相当于 [Page Up] 按键
    • [Ctrl] + [d]: 屏幕『向下』移劢半页
    • [Ctrl] + [u]: 屏幕『向上』移劢半页
    • G :移劢到这个档案的最后一行
    • gg: 移劢到这个档案的第一行,相当于 1G
    • n [ENTER]: n 为数字。光标向下移动 n 行
    • /word: 向光标向下寻找一个名称为 word 的字符串。
    • ?word: 向光标向上寻找一个字符串名称为 word 的字符串。
    • n: 这个 n 是英文按键。向下重复前一个动作。
    • N:这个 N 是英文按键。向下重复前一个动作。
    • :n1,n2s/word1/word2/g[c]:在n1行和n2行之间搜索word1这个字段,并使用word2字段替换,加c代表在替换的时候,需要确认。
    • :1,$s/word1/word2/g[c]:在第一行和最后一行之间搜索word1这个字段,并使用word2字段替换,加c代表在替换的时候,需要确认。
    • x:x为向前删除一个字符,前边加数字n表示连续向后删除n个字符。
    • X:X向后删除一个字符,前边加数字n表示连续向前删除n个字符。
    • dd:删除游标所在的那一整列。
    • ndd:n 为数字。删除光标所在的向下 n 列,例如 20dd 则是删除 20 列。
    • d$:删除游标所在处,到该行的最后一个字符。
    • yy:复制游标所在的那一行,前边加数字n表示自光标起,连续向下n列都被复制。
    • p:将复制的行从光标所在行的下一行粘贴。
    • P:将复制的行从光标所在行的上一行粘贴。
    • J:将光标所在列不下一列的数据结合成同一列。
    • u:撤销前一个动作,相当于[Ctrl]+z。
    • [Ctrl]+r: 重做上一个动作。
    • :set nu: 显示行号。
    • :set nonu: 取消行号。
    • :! command:暂时离开vim,执行command命令。
    • :n1,n2 w [filename]:将 n1 到 n2 的内容储存成 filename 这个文件。
    • :r [filename]:在编辑的数据中,读入另一个档案的数据并且会将 『filename』 这个档 案内容加到游标所在行后面。
    • :w [filename]:将编辑的数据储存成另一个档案(类似另存为)。
    • v:字符选择,会将光标经过的地方反白选择。
    • V:行选择,会将光标经过的行反白选择。
    • [Ctrl]+v:区块选择,可以用长方形的方式选择资料 。
    • y:将反白的地方复制起来 。
    • d:将反白的地方删除掉。
    • [Ctrl]+v:区块选择,可以用长方形的方式选择资料 。
    • y:将反白的地方复制起来 。
    • d:将反白的地方删除掉。
    • :sp 文件名:在同一个窗口内打开另外一个文件,通过[Ctrl + w + [↑|k]或者[Ctrl + w + [↓|j]切换待编辑的文档。

    55、Linux下磁盘分区:

    • parted
    1. parted /dev/vdb mkpart logical ext4 100GB 200GB:直接使用该命令划分一个100G的逻辑分区。

    2. parted /dev/vdb print:打印/dev/vdb磁盘划分情况

    3. parted /dev/vdb rm 8:删除/dev/vdb磁盘下8号分区

      分步操作:

      分别执行以下命令:

      parted /dev/vdb   // 进入parted命令,选择yes
      (parted) mklabel   gpt // 设置分区格式
      (parted) mkpart primary 1 400G  // 第一个分区大小300G
      (parted) mkpart primary 401G 700G  // 第二个分区300G
      (parted) mkpart primary 701G 2199G // 第三个分区剩下的 
      (parted) print(或者p) // 查看分区
      (parted) rm   // 删除分区
      Partition number? 2   // 分区编号
      (parted) quit   // 退出parted命令,会自动保存分区。下边这提示不用处理。
      Information: You may need to update /etc/fsta
      
    • fdisk

    56、忘记root密码操作步骤:

    1. 开机启动读秒的时候,按『 e 』进入grub编辑模式。
    2. 请将光标移劢到 kernel 那一行,再挄一次『 e 』进入 kernel 该行的编辑画面中,在最后方输入 single ,再挄下『 Enter 』确定。
    3. 按『 b 』进入单机维护模式,此时进入的是tty1窗口,并且使用的是root身份。
    4. 在tty1窗口中输入『 passwd 』按照要求修改密码。
  • 相关阅读:
    view的context一定是Activity吗
    PMP每日一练 | 考试不迷路-10.29(包含敏捷+多选)
    Mysql-数据丢失,分析binlog日志文件
    25 个超棒的 Python 脚本合集
    Access denied for user ‘root‘@‘localhost‘ (using password:YES) 解决方案(禅道相关)
    AWVS扫描web站点
    第一次笔试【面试】
    驱动开发:内核无痕隐藏自身分析
    剑桥大学哪些专业需要IB物理成绩?
    黑马头条-day10
  • 原文地址:https://blog.csdn.net/qq_22610595/article/details/127098114