Linux基础命令(1)

Linux基础 [toc]

1. Linux基础原则

  • 由目的单一的小程序组成,组合小程序完成复杂任务;(组合多个命令可以完成复杂的任务)
  • 一切皆文件;(在Linux中,所有的东西都表现为文件的形式,U盘,光盘,硬盘等统称为文件)(文件夹是目录)
  • 配置文件保存为纯文本格式。(纯文本格式相当于Windows中tht文本,可编辑)

2. bash特性

2.1. shell

shell(外壳),广义的shell可以理解为是用户的工作环境,(在windows中的shell是桌面,在linux看来终端就是shell)。
常见的shell有两种,一种是图形界面,即GUI,一种是命令行终端,即CLI。

常用的GUI(Graphic User Interface 图形化用户接口):

  • Windows(windows桌面)
  • X-Window(Linux桌面)
    • Gnome
    • KDE (红帽系统默认风格)
    • Xface

常用的CLI:(Command Line Interface):

  • bash(sh升级版)
  • sh
  • csh
  • zsh
  • ksh
  • tcsh

查看当前的shell

[root@mr ~]# echo $SHELL
/bin/bash                  (centos默认/bin/bash)

2.2. bash特性

bash支持以下特性:

  • 支持命令历史、命令补全

  • 支持管道、重定向

  • 支持命令别名

  • 支持命令行编辑

  • 支持命令行展开

  • 支持文件名通配

  • 支持变量

  • 支持编程

    2.2.1. bash支持的引号

`` //反引号,键盘左上角Esc下面的键,用于命令替换
"" //双引号,弱引用,可以实现变量替换
'' //单引号,强引用,不完成变量替换
示例:

[root@mr ~]# a=10                            (定义了一个变量)
[root@mr ~]# echo $a                        (查看变量$a的值)
10
[root@mr ~]# echo '$a'                      (查看$a本身)(‘’强引用)
$a
[root@mr ~]# echo "$a"                      (取出$a的本身)(“”弱引用)
10
[root@mr ~]# ls                             (list列出 ls列出当前目录的内容)
anaconda-ks.cfg
[root@mr ~]# date                           (查看时间)
Fri Jul  8 09:13:42 CST 2022
[root@mr ~]# date '+%Y%m%d'                  (时间格式化)(‘’单引号 )
20220708(年月日,Y=年year,m=月mounth,d=日day)
[root@mr ~]# echo `date '+%Y%m%d'`      (要执行的命令用反引号引起来,反引号里面只能放命令)
20220708
[root@mr ~]# echo `foehcsn`
-bash: foehcsn: command not found(命令没发现,foehcsn不是命令)
[root@mr ~]# echo $(date '+%Y%m%d')         (``反引号=$(),便于区分反引号和单引号)
20220708
[root@mr ~]# 
 

2.2.2. bash常用操作

//光标跳转
| 快捷键 | 含义 |
|---|---|
|Ctrl+a |跳到命令行首|
|Ctrl+e |跳到命令行尾|
| Ctrl+u |删除光标至命令行首的内容|
|Ctrl+k |删除光标至命令行尾的内容|
|Ctrl+<-- |光标定位到离自己最近的一个单词前面|
|Ctrl+l |清屏|
|ctrl+w| w=Word单词,删除光标所在的单词(在Linux中空格隔开的定义为一个单词)|

//命令历史
history //查看命令历史
-c //清空命令历史
-d OFFSET [n] //删除指定位置的命令历史
-w //保存命令历史至历史文件~/.bash_history中 (一般不会用)
举例:

[root@mr ~]# history                        (查看命令历史)
    1  ip a
    ...
    9  ls
   ...
   16  history
[root@mr ~]# history
    1  ip a
    ...
   17  ls
   18  echo 'hello world'
   19  history
  ...
   25  history
[root@mr ~]# history -d 18             (-d 清空命令历史中指定位置的命令)
[root@mr ~]# history
    1  ip a
   ...
   17  ls
   18  history
   ...
   26  history
[root@mr ~]# history -c                  (-c 清空命令历史)
[root@mr ~]# history 
    1  history 
[root@mr ~]# 

//命令历史的使用技巧
!n //执行命令历史中的第n条命令
!-n //执行命令历史中倒数第n条命令
!! //执行上一条命令
!string //执行命令历史中最近一个以指定字符串开头的命令
!$ //引用前一个命令的最后一个参数
esc,. //按下esc松开后按.,引用前一个命令的最后一个参数
举例:

[root@mr ~]#  !9                          (!n,执行命令历史的第n条命令)
ls                                       (命令)
anaconda-ks.cfg                          (结果)
[root@mr ~]# echo 'hello world'           
hello world
[root@mr ~]# history
    1  ip a
    ...
    9  ls
   ...
   18  echo 'hello world'
   19  history
[root@mr ~]# !echo                      (关键字echo)
echo 'hello world'                      (命令历史中最近一次关键字的开始)
hello world                               
[root@mr ~]# 

[root@mr ~]# ls /etc/sysconfig/network-scripts/          (查看网卡的路径有什么)
ifcfg-ens33
[root@mr ~]# cd !$              (引用前一个命令的最后参数/etc/sysconfig/network-scripts)
cd /etc/sysconfig/network-scripts/              (引用之后的命令,即执行)
[root@mr network-scripts]# 

[root@mr ~]# ls /etc/sysconfig/network-scripts/
ifcfg-ens33
[root@mr ~]# cat                 (按下esc键,立即按.,即可出现上一个命令的最后参数)
[root@mr ~]# cat /etc/sysconfig/network-scripts/      (tab键即可出现文件)
[root@mr ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 

//命令补全
搜索PATH环境变量所指定的每个路径下以我们给出的字符串开头的可执行文件,
如果多于一个,两次tab,可以给出列表,否则将直接补全
//路径补全
搜索我们给出的起始路径下的每个文件名,并试图补全
示例:

[root@mr ~]# cd /etc/sysconfig/network-(tab之后得到以下命令)(支持命令历史、命令补全)
[root@mr ~]# cd /etc/sysconfig/network-scripts/
[root@mr network-scripts]#

//命令别名:
alias CMDALIAS='COMMAND [options] [arguments]'
在shell中定义的别名仅在当前shell生命周期中有效,别名的有效范围为当前的shell进程。
(别名是外号)(临时有效)(有效范围在当前定义的主机)
实例

[root@mr ~]# alias cdnet='cd /etc/sysconfig/network-scripts/'(支持命令别名)
[root@mr ~]# cdnet(alias别名,cdnet=命令/etc/sysconfig/network-scripts/)
[root@mr network-scripts]# 
[root@mr ~]# alias(显示系统中的别名)
alias cdnet='cd /etc/sysconfig/network-scripts/'
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='(alias; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot'
alias xzegrep='xzegrep --color=auto'
alias xzfgrep='xzfgrep --color=auto'
alias xzgrep='xzgrep --color=auto'
alias zegrep='zegrep --color=auto'
alias zfgrep='zfgrep --color=auto'
alias zgrep='zgrep --color=auto'
[root@mr ~]# 

//命令替换(把命令中某个子命令替换为其执行结果的过程)
$(COMMAND) //推荐方式
COMMAND

//命令行展开
~ //展开为用户的家目录
~USERNAME //展开为指定用户的家目录
//可承载一个以逗号分隔的列表,并将其展开为多个路径
/tmp/{a,b} = /tmp/a, /tmp/b
/tmp/{tom,jerry}/hi = /tmp/tom/hi, /tmp/jerry/hi

[root@mr ~]# mkdir -p a/{b/{hehe/{123,456/789},xixi},c,d/haha}    (命令行扩展)
[root@mr ~]# ls
a  anaconda-ks.cfg
[root@mr ~]# ls a
b  c  d
[root@mr ~]# tree a      (查看目录a的目录树)
a
├── b
│   ├── hehe
│   │   ├── 123
│   │   └── 456
│   │       └── 789
│   └── xixi
├── c
└── d
    └── haha

9 directories, 0 files
[root@mr ~]# 

mkdir = make directory
cd = change directory
-p parents
目录可以存放文件,但是文件不能存放文件
touch 万象更新 无中生有

[root@mr abc]# ls     
[root@mr abc]# touch 1         (一个不存在的东西,touch之后存在了)(无中生有)
[root@mr abc]# ls
1

[root@mr ~]# ll
total 4
drwxr-xr-x. 5 root root   33 Jul 12 10:00 a
drwxr-xr-x. 2 root root   15 Jul 12 10:15 abc
-rw-------. 1 root root 1083 Jul 10 16:53 anaconda-ks.cfg       
[root@mr ~]# date
Tue Jul 12 10:16:10 CST 2022
[root@mr ~]# touch anaconda-ks.cfg   (一个存在的东西,touch之后更新了)(万象更新)
[root@mr ~]# ll
total 4
drwxr-xr-x. 5 root root   33 Jul 12 10:00 a
drwxr-xr-x. 2 root root   15 Jul 12 10:15 abc
-rw-------. 1 root root 1083 Jul 12 10:16 anaconda-ks.cfg
[root@mr abc]# ls
1
[root@mr abc]# touch {1..100}                               (创建100个文件)
[root@mr abc]# ls
1    13  18  22  27  31  36  40  45  5   54  59  63  68  72  77  81  86  90  95
10   14  19  23  28  32  37  41  46  50  55  6   64  69  73  78  82  87  91  96
100  15  2   24  29  33  38  42  47  51  56  60  65  7   74  79  83  88  92  97
11   16  20  25  3   34  39  43  48  52  57  61  66  70  75  8   84  89  93  98
12   17  21  26  30  35  4   44  49  53  58  62  67  71  76  80  85  9   94  99
[root@mr abc]# touch {a..z}                                   (创建a到z个文件)
[root@mr abc]# ls
1    14  2   25  30  36  41  47  52  58  63  69  74  8   85  90  96  c  i  o  u
10   15  20  26  31  37  42  48  53  59  64  7   75  80  86  91  97  d  j  p  v
100  16  21  27  32  38  43  49  54  6   65  70  76  81  87  92  98  e  k  q  w
11   17  22  28  33  39  44  5   55  60  66  71  77  82  88  93  99  f  l  r  x
12   18  23  29  34  4   45  50  56  61  67  72  78  83  89  94  a   g  m  s  y
13   19  24  3   35  40  46  51  57  62  68  73  79  84  9   95  b   h  n  t  z
[root@mr abc]# touch {A..Z}                                    (创建A到Z个文件)
[root@mr abc]# ls
1    15  21  28  34  40  47  53  6   66  72  79  85  91  98  C  g  J  n  Q  u  X
10   16  22  29  35  41  48  54  60  67  73  8   86  92  99  d  G  k  N  r  U  y
100  17  23  3   36  42  49  55  61  68  74  80  87  93  a   D  h  K  o  R  v  Y
11   18  24  30  37  43  5   56  62  69  75  81  88  94  A   e  H  l  O  s  V  z
12   19  25  31  38  44  50  57  63  7   76  82  89  95  b   E  i  L  p  S  w  Z
13   2   26  32  39  45  51  58  64  70  77  83  9   96  B   f  I  m  P  t  W
14   20  27  33  4   46  52  59  65  71  78  84  90  97  c   F  j  M  q  T  x
[root@mr abc]# 


//文件名通配 globbing
* //匹配任意长度的任意字符
? //匹配任意单个字符
[] //匹配指定范围内的任意单个字符
[abc],[a-m],[0-9]
[[:space:]] //表示空白字符
[[:punct:]] //表示标点符号
[[:lower:]] //表示小写字母
[[:upper:]] //表示大写字母
[[:alpha:]] //表示大小写字母
[[:digit:]] //表示数字
[[:alnum:]] //表示数字和大小写字母

使用man 7 glob命令可以获得以上字符集合的帮助信息!!!

[^]     //匹配指定范围之外的任意单个字符
[root@mr abc]# ls 1*                        (找到以1开头的文件)
1  10  100  11  12  13  14  15  16  17  18  19
[root@mr abc]# ls ?                          (一个?表示一个字符,可以是数字或者字母)
1  3  5  7  9  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z
2  4  6  8  a  b  c  d  e  f  g  h  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  y  z
[root@mr abc]# ls ??
10  14  18  22  26  30  34  38  42  46  50  54  58  62  66  70  74  78  82  86  90  94  98
11  15  19  23  27  31  35  39  43  47  51  55  59  63  67  71  75  79  83  87  91  95  99
12  16  20  24  28  32  36  40  44  48  52  56  60  64  68  72  76  80  84  88  92  96
13  17  21  25  29  33  37  41  45  49  53  57  61  65  69  73  77  81  85  89  93  97
[root@mr abc]# ls ???
100
[root@mr abc]# ls [0-9]                       (【】表示一个范围)
1  2  3  4  5  6  7  8  9
[root@mr abc]# ls [0-9][0-9]
10  14  18  22  26  30  34  38  42  46  50  54  58  62  66  70  74  78  82  86  90  94  98
11  15  19  23  27  31  35  39  43  47  51  55  59  63  67  71  75  79  83  87  91  95  99
12  16  20  24  28  32  36  40  44  48  52  56  60  64  68  72  76  80  84  88  92  96
13  17  21  25  29  33  37  41  45  49  53  57  61  65  69  73  77  81  85  89  93  97
[root@mr abc]# ls [5-9][0-9]
50  53  56  59  62  65  68  71  74  77  80  83  86  89  92  95  98
51  54  57  60  63  66  69  72  75  78  81  84  87  90  93  96  99
52  55  58  61  64  67  70  73  76  79  82  85  88  91  94  97
[root@mr abc]# ls [5-7][0-9]
50  52  54  56  58  60  62  64  66  68  70  72  74  76  78
51  53  55  57  59  61  63  65  67  69  71  73  75  77  79
[root@mr abc]# ls [5-7][5-6]
55  56  65  66  75  76
[root@mr abc]# ls [ach]
a  c  h
[root@mr abc]# ls [a-ch]               (-在中间表示范围,-在前面表示-本身,-在结尾表示-本身)
a  A  b  B  c  h
[root@mr abc]# ls [-ach]
a  c  h
[root@mr abc]# ls [[:digit:]]          ([[:digit:]]  表示数字)
1  2  3  4  5  6  7  8  9
[root@mr abc]# ls [^ach]               (除了ach的所有)(一个^表示一个单位)
1  3  5  7  9  b  C  D  E  F  G  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  y  z
2  4  6  8  A  B  d  e  f  g  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z
[root@mr abc]# ls [ach^]                (表示^本身)
a c h

//环境变量
PATH //命令搜索路径
HISTSIZE//命令历史缓冲区大小(默认1000,表示命令历史最多记录1000条,只记录最近的1000条)
SHELL //当前shell

[root@mr ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@mr ~]# echo $HISTSIZE
1000
[root@mr ~]# echo $SHELL
/bin/bash
[root@mr ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
                             (当前系统支持的shell)

//bash内置变量
RANDOM //保存着0-32768之间的随机数

[root@mr ~]# echo $RANDOM
30616
[root@mr ~]# echo $RANDOM
15881
[root@mr ~]# echo $RANDOM
25509

3. 命令

3.1. 命令格式

命令 [选项] [参数]

选项:(可以有0个或多个)
短选项:-
多个选项可以组合: -a -b = -ab
长选项:--
长选项通常不能组合
参数:命令的作用对象(可以有0个或多个)

[root@mr ~]# ls
a  abc  anaconda-ks.cfg
[root@mr ~]# ls -l anaconda-ks.cfg 
-rw-------. 1 root root 1083 Jul 12 10:16 anaconda-ks.cfg
[root@mr ~]# ls -l -h anaconda-ks.cfg       (h=human人类)
-rw-------. 1 root root 1.1K Jul 12 10:16 anaconda-ks.cfg
[root@mr ~]# ls -lh anaconda-ks.cfg 
-rw-------. 1 root root 1.1K Jul 12 10:16 anaconda-ks.cfg
[root@mr ~]# 

3.2. 命令类型

Linux命令分为两种类型:

  • 内部命令(shell内置)天生就有的,
  • 外部命令:在文件系统的某个路径(path环境变量)下有一个与命令名称相应的可执行文件
    type //显示指定命令属于哪种类型
[root@mr ~]# type cd                (查看cd命令的类型)
cd is a shell builtin(内部命令)
[root@mr ~]# type ls                 (查看ls命令的类型)
ls is aliased to `ls --color=auto'(别名)
[root@mr ~]# type /usr/bin/ls           (查看/usr/bin/ls命令的类型)
/usr/bin/ls is /usr/bin/ls(外部命令)    (一般显示路径的就是外部命令)
[root@mr ~]# 

3.3. 基础命令

//目录管理
ls //列出目录内容
-l //长格式
文件类型
- //普通文件(f)
d //目录文件
b //块设备文件(block)
c //字符设备文件(character)
l //符号链接文件(symbolic link file)
p //命令管道(pipe)
s //套接字文件(socket)

[root@mr ~]# ls
a  abc  anaconda-ks.cfg
[root@mr ~]# ls -l
total 8
drwxr-xr-x. 5 root root   33 Jul 12 10:00 a
drwxr-xr-x. 2 root root 4096 Jul 12 10:22 abc
-rw-------. 1 root root 1083 Jul 12 10:16 anaconda-ks.cfg

drwxr-xr-x rwx对应的是root权限,r-x对应的是root权限,r-x对应的是其他的权限
5 表示这个文件被硬链接的次数
硬链接:
软连接:类似于Windows中桌面的快捷方式
创建软连接
```bash
[root@mr ~]# ln -s anaconda-ks.cfg /opt/123
[root@mr ~]# ls -l /opt/
total 0 lrwxrwxrwx. 1 root root 15 Jul 13 09:31 123 → anaconda-ks.cfg
[root@mr ~]#

   ```
        文件权限        //9位,每3位一组,每一组:rwx(读,写,执行)
        文件硬链接的次数
        文件的属主(owner)
        文件的属组(group)
        文件大小(size),单位是字节
        时间戳(timestamp),最近一次被修改的时间
            访问      //access
            修改      //modify,文件内容发生改变
            改变      //change,metadata(元数据)
     -h     //做单位转换
     -a     //显示以.开头的隐藏文件
        .       //表示当前目录
        ..      //表示父目录
     -d     //显示目录自身属性
     -i     //显示文件的inode(index node)
     -r     //逆序显示
     -R     //递归(recursive)显示
cd      //改变当前工作目录
pwd     //打印当前工作目录路径
mkdir   //创建目录
    -p      //创建目录时若父目录不存在则自动创建
    -v      //显示目录创建过程
rmdir   //删除目录,只能删除空目录
tree    //查看目录树
[root@mr ~]# dnf -y install tree
Last metadata expiration check: 1:03:21 ago on Tue 12 Jul 2022 08:59:30 AM CST.
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Dependencies resolved.
============================================================================================
 Package           Architecture        Version                      Repository         Size
============================================================================================
Installing:
 tree              x86_64              1.7.0-15.el8                 base               59 k

Transaction Summary
============================================================================================
Install  1 Package

Total download size: 59 k
Installed size: 109 k
Downloading Packages:
tree-1.7.0-15.el8.x86_64.rpm                                 95 kB/s |  59 kB     00:00    
--------------------------------------------------------------------------------------------
Total                                                        95 kB/s |  59 kB     00:00     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                    1/1 
  Installing       : tree-1.7.0-15.el8.x86_64                                           1/1 
  Running scriptlet: tree-1.7.0-15.el8.x86_64                                           1/1 
  Verifying        : tree-1.7.0-15.el8.x86_64                                           1/1 
Installed products updated.

Installed:
  tree-1.7.0-15.el8.x86_64                                                                  

Complete!
[root@mr ~]# 

//文件管理
touch //无中生有、万象更新
stat //显示文件或文件系统的状态
rm //删除文件,删除命令默认会提示是否需要删除,
//如果要使用命令本身可以在命令前加一个\,如\rm,这样删除就不会有提示了
-r //递归删除,删除目录时必须使用此选项
-f //强制删除,不询问
cp //复制文件,一个文件到一个文件,多个文件到一个目录
-a //归档复制,常用于备份
-r //递归拷贝,拷贝目录时必须使用此选项
-p //拷贝时保留原权限
mv //移动文件
install //复制文件并且设置属性
-m MODE
-o OWNER
-g GROUP

//压缩、解压缩命令
//压缩格式
gz,bz2,xz,zip,Z

gzip        //压缩后的文件以.gz结尾
    gzip /path/to/somefile    //压缩完成后会删除原文件
    -d      //解压缩,解压完成后会删除原文件
    -c      //将结果输出至标准输出
    -#      //#用1-9代替,指定压缩比,默认为6
gunzip      //解压
    gunzip /path/to/some_compress_file.gz    //解压完成后会删除原文件        
zcat /path/to/somefile.gz       //不解压的情况下查看文本文件的内容

bzip2       //压缩后的文件以.bz2结尾
    //bzip2是一款比gzip有着更大压缩比的压缩工具,使用格式近似
    bzip2 /path/to/somefile    //压缩完成后会删除原文件
    -d      //解压缩,解压完成后会删除原文件
    -#      //#用1-9代替,指定压缩比,默认为6
    -k      //keep,压缩时保留原文件
bunzip2     //解压
    bunzip2 /path/to/some_compress_file.bz2    //解压完成后会删除原文件
bzcat /path/to/somefile.bz2     //不解压的情况下查看文本文件的内容

xz          //压缩后的文件以.xz结尾
    //比bzip2有着更大压缩比的压缩工具,使用格式近似
    xz /path/to/somefile    //压缩完成后会删除原文件
    -d      //解压缩,解压完成后会删除原文件
    -#      //#用1-9代替,指定压缩比,默认为6
    -k      //keep,压缩时保留原文件
unxz        //解压
    unxz /path/to/some_compress_file.xz    //解压完成后会删除原文件
xzcat /path/to/somefile.xz      //不解压的情况下查看文本文件的内容

zip     //既归档又压缩的工具。zip可以压缩目录,\
        //gz、bz2、xz都只能压缩文件,zip压缩后不会删除原文件
    zip filename.zip file1 file2 ...
    zip filename.zip DIR/*
unzip
    unzip filename.zip
    
archive     //归档,归档本身并不意味着压缩
tar     //归档工具,只归档不压缩
    -c      //创建归档文件
    -f file.tar     //操作的归档文件
    -x      //还原归档
    -v      //显示归档过程
    -p      //归档时保留权限信息。只有管理员才有权限用此选项
    -C      //将展开的归档文件保存至指定目录下
    --delete    //从归档文件中删除文件
    --xattrs    //在归档时保留文件的扩展属性信息
    -tf /path/to/file.tar       //不展开归档,直接查看归档了哪些文件
    -zcf    //归档并调用gzip压缩
    -zxf    //调用gzip解压缩并展开归档

    -jcf    //归档并调用bzip2压缩
    -jxf    //调用bzip2解压缩并展开归档

    -Jcf    //归档并调用xz压缩
    -Jxf    //调用xz解压缩并展开归档

//查看文本
cat //拼接文件内容并输出至标准输出(屏幕)
-n //显示行号
//使用cat查看文件内容时会将文件的所有内容加载至内存,
//所以应避免使用cat打开巨大文件
more //全屏查看文本文件内容,只能从前往后,不能从后往前。
//文件内容显示完后自动退出
less //全屏查看文本文件内容,可从前往后亦可从后往前。推荐使用
head //从头部开始打印文件内容,默认打印10行
-n //指定要打印的行数,可以是-n 15也可以是-15
tail //查看文本文件尾部内容
-n //指定要打印的行数,可以是-n 15也可以是-15

//文本处理
cut //截取文本内容
-d //指定字段分隔符,默认是空格
-f //指定要显示的字段
-f 1,3 显示1和3
-f 1-3 显示1到3
sed //基于行的过滤和转换文本的流编辑器
awk //基于列的文本报告工具

//文本排序
sort //默认升序排序,不是按数值大小排序的
-n //根据数值大小进行排序
-r //逆序排序
-t //字段分隔符
-k //以哪个字段为关键字进行排序
-u //去重,排序后相同的行只显示一次
-f //排序时忽略字符大小写

uniq    //报告重复的行(连续且完全相同方为重复)
    -c      //显示文件中行重复的次数
    -d      //只显示重复的行
    -u      //只显示未重复的行
    

//文本统计
wc(word count)
-c //显示字节数
-l //显示行数
-w //显示单词数

//大小统计
du //查看文件或目录占用的磁盘空间大小
-h //以人类友好的方式显示大小
-s //显示总的占用空间大小
df //报告文件系统磁盘空间使用情况
-h //以人类友好的方式显示大小
-i //显示inode信息

//主机名管理
hostname //查看或临时修改主机名,重开终端有效,重启失效
hostnamectl //查看或永久修改主机名,重开终端生效,重启依然有效

//其它
time //显示命令的执行时间,例如time ls /etc
clear //清屏
whoami //显示当前登录用户
w //显示当前在线用户并显示其在运行的命令
who //查看当前在线用户

which       //显示指定命令的绝对路径
date        //显示或设置日期与时间
    //不带参数的date用于显示当前系统日期与时间
    -s      //以字符串方式设置时间
    //格式化输出时间:+
        %Y      //年
        %m      //月
        %d      //日
        %H      //时
        %M      //分
        %S      //秒
                    
ldd     //查看指定程序有哪些依赖库文件
    程序组成?
        二进制程序
        库文件
        配置文件
        帮助文件

3.4. 如何获取命令帮助

//内部命令
help COMMAND
//外部命令
COMMAND --help
//在线文档
info COMMAND
//命令手册 manual
man COMMAND
//文档
/usr/share/doc

whatis COMMAND //用于查看COMMAND出现在man的哪一章节中。

//man是分章节的,以下是每一章节的内容介绍:
1 用户命令(/bin,/usr/bin,/usr/local/bin);
2 系统调用;
3 库调用;
4 特殊文件(设备文件);
5 文件格式(配置文件 的语法);
6 游戏;
7 杂项(Miscellaneous);
8 管理命令(/sbin,/usr/sbin,/usr/local/sbin)

//man手册注意事项:
[] //可选
<> //必选
... //可以出现多次
| //多选一
//分组
NAME //命令名称及功能简要说明
SYNOPSIS //用法说明,包括可用的选项
DESCRIPTION //命令功能的详尽说明,可能包括每一个选项的意义
OPTIONS //说明每一个选项的意义
FILES //此命令相关的配置文件
BUGS //报告bug
EXAMPLES //使用示例
SEE ALSO //另外参照

//man翻屏
向后翻一屏 //SPACE
向前翻一屏 //b
向后翻一行 //enter
向前翻一行 //k

//查找
/KEYWORD //向后
?KEYWORD //向前
n //下一个
N //前一个
q //退出

posted @   溜溜威  阅读(83)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示