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

工作中常用的linux命令整理


文章目录

      • 1、单引号和双引号的区别:
      • 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] 文件或者目录,
      • 10、权限对应关系:r[4]:读 w[2]:写 r[1]:执行,『 -rwxr-xr-- 』= [4+2+1] [4+0+1] [4+0+0] = 754
      • 11、计算器:bc
      • 12、日历:cal [月份] [年份]
      • 13、时间日期:date [+%Y-%m-%d-%H:%M]
      • 14、查询指令帮助:man [指令]
      • 15、查询进程:ps -aux
      • 16、获取文档名:basename [目录]
      • 17、获取文档目录:dirname [目录]
      • 18、查看系统版本信息:lsb_release -a
      • 19、查看内核版本:uname -r
      • 20、按照时间排序列出:ls -lthr
      • 21、带行号查看:cat -n | -b [文件]
      • 22、更改文件或者目录时间:touch [-d "2021-01-01 14:55:00"] | [-t 1663655853320] 文件或者目录
      • 23、查看root用户信息:id root
      • 24、查找文件或者目录:
      • 25、查看文件或者目录:df -aTh
      • 26、查看文件或者目录容量:du -ah,-a :列出所有的文件目录,-h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示
      • 27、创建软连接,相当于windows上的快捷方式:ln -s 来源文件 目标文件
      • 28、格式化磁盘:mkfs -t ext4 /dev/hdc6
      • 29、检查磁盘:fsck -C -f -t ext3 /dev/hdc6
      • 30、磁盘挂载:mount /dev/vda1 /var/log,
      • 31、挂载系统镜像:mount -o loop /root/centos5.2_x86_64.iso /madia
      • 32、查看系统内存情况:free
      • 33、创建快捷键别名:alias 别名='命令',例如,alias lm='ls -al',直接执行lm就相当于执行ls -al命令。
      • 34、删除快捷键别名:unalias 别名
      • 35、获取系统目前的语言情况:locale
      • 36、获取键盘输入: read [-pt] variable,
      • 37、变量声明:declare [-aixr] variable
      • 38、查看历史命令:history
      • 39、自定义环境变量文件:在/etc/profile.d/目录下,创建自定义文件xxx.sh,写入用户自定义环境变量,可以避免由于直接更改系统环境文件而导致的问题,系统在启动的时候,就会加载/etc/profile.d/下的所有的以.sh结尾的文件。比如可以将tomcat、java等软件的环境变量配置在自定义的文件中,效果和直接更改系统环境文件是一样的。
      • 40、字符串操作:
      • 41、格式化打印:printf '打印格式' 实际内容
      • 41、条件判断:
      • 42、function 功能,创建函数:
      • 43、循环:
      • 44、定时任务:
      • 45、动态观察系统变化: top [-d 数字] | top [-bnp]
      • 46、网络追踪: netstat -[atunlp]
      • 47、软件管理:
      • 48、账号:
      • 49、Shell script :
      • 50、备份大型目录数据:dd if=/dev/vda1 of=/home/bak bs=1M count=512,dd 就好像在迭砖块一样,将 512 块,每块 1MB 的砖块堆栈成为一个大档案 (/home/bak) , 最终就会出现一个 512MB 的档案。
      • 51、备份数据:
      • 52、恢复数据:
      • 53、解压缩:
      • 54、vim编辑器:
      • 55、Linux下磁盘分区:
      • 56、忘记root密码操作步骤:


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 』按照要求修改密码。

你可能感兴趣的:(学习笔记,linux,运维,shell)