• Linux基础学习记录


    LInux学习

    1. Linux快捷键

    date:显示当前的时间

    history:显示历史打过的命令

    ctrl+p:向上调用历史命令

    ctrl+n:向下调用历史命令

    ctrl+b:光标向左移动

    ctrl+f:光标向右移动

    ctrl+a:光标迅速移动到当前行的头部

    ctrl+e:光标移动到行尾

    Linux系统中的光标很宽,会盖住一个字符,这个字符前面的字符表示光标前面的字符,被光标盖住的字符称为光标后面的字符。

    ctrl+h:删除光标前面的字符

    ctrl+d:删除光标后面的字符(被光标覆盖的字符)

    ctrl+u:删除光标前面所有的字符

    ctrl+l:清除屏幕(相当于clear)

    2. Shell基本命令

    Shell即命令解释器,从本质上讲,Shell是一个程序,它在用户和操作系统之间提供了一个面向行的可交互接口。用户在命令行中输入命令,运行在后台的Shell吧命令转换成指令代码发送给操作系统。

    常用的Shell有Bourne Again Shell(BASH)、TCSH Shell、Z-Shell等。

    以下命令均为BASH。

    xal1@xal1-virtual-machine:~$

    • xal1:表示用户名
    • @:表示在
    • xal1-virtual-machine:表示在设置虚拟机的时候设置的主机名
    • ~:表示用户主目录。用户主目录是/home下的一个子目录,而不是home目录。
    xal1@xal1-virtual-machine:~$ pwd
    /home/xal1
    
    • 1
    • 2
    • $:表示命令提示符,也表示当前用户为普通用户。如果提示符为#,则表示当前用户为root用户。

    ###Tab键:命令补全

    1.按一次Tab键:在输入文件名的时候,只需要输入开头几个字符,然后按下Tab键,Shell就会自动把文件名自动补全。

    2.按两次Tab键:如果以已键入字符开头的文件不止一个,那么可以连续按两次Tab,Shell会以列表形式给出所有以键入字符开头的文件。

    ”*“,”?“,”[]“:通配符

    “*”:用于匹配文件名中任意长度长度的字符串。

    ## *.py 即可以列出当前目录下所有的py文件
    
    root@xal1-virtual-machine:/bin# ls *.py
    mesa-overlay-control.py
    
    • 1
    • 2
    • 3
    • 4

    ”?“:类似于”*“通配符,但是它只匹配一个字符。

    ## test? 用于匹配文件名以test开头而后跟一个字符的文件
    
    xal1@xal1-virtual-machine:~/study$ ls test?
    test1  test2  test3  testA  testB  testC
    
    • 1
    • 2
    • 3
    • 4

    ”[]“:用于匹配所有出现在方括号内的字符。

    也可使用短线”-“来指定一个范围,所有包含在上下界之间的字符都会被匹配,数字和字母都可以。

    xal1@xal1-virtual-machine:~/study$ ls test[1A]
    test1  testA
    xal1@xal1-virtual-machine:~/study$ ls test[1-3]
    test1  test2  test3
    xal1@xal1-virtual-machine:~/study$ ls test[A-C]
    testA  testB  testC
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    pwd:显示当前目录

    pwd命令会显示当前所在的位置,即工作目录。

    root@xal1-virtual-machine:/# cd /usr/local/bin/
    root@xal1-virtual-machine:/usr/local/bin# pwd
    /usr/local/bin
    
    • 1
    • 2
    • 3

    cd:改变目录

    $ cd /                          ##进入根目录
    $ cd ..                         ##进入当前目录的上一级目录
    $ cd bin/						##cd path 表示进入某个目录
    $ cd ../..						##直接进入根目录
    $ cd 							##回到用户自己的主目录
    $ cd ~							##回到用户自己的主目录
    $ cd -							##表示在临近的两个目录之间进行切换
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    tips:在Shell中,“/”表示根目录,“~”表示用户主目录,“…”代表当前目录的上一级目录,“.”表示当前目录。

    ls:列出目录内容

    ## ls	用于当前目录下的所有文件和子目录
    xal1@xal1-virtual-machine:/usr/bin$ cd ~
    xal1@xal1-virtual-machine:~$ ls
    公共的  模板  视频  图片  文档  下载  音乐  桌面  study
    
    ## ls /		查看根目录
    
    ## 默认情况下,在命令行中,目录显示为蓝色;普通文件显示为白色;可执行文件显示为草绿色;淡蓝色则表示这个文件是一个链接文件。
    ## ls -F	会在每个目录后加上/,在可执行文件后加*,在链接文件后加@
    xal1@xal1-virtual-machine:/usr/bin$ ls -F
    '['*                                   mformat@
     aa-enabled*                           migrate-pubring-from-classic-gpg*
     aa-exec*                              mimeopen*
     aconnect*                             mimetype*
     acpi_listen*                          min12xxw*
     add-apt-repository*                   minfo@
    
    ## ls -a	用于显示所有的文件
    xal1@xal1-virtual-machine:~$ ls -a
    .  ..  公共的  模板  视频  图片  文档  下载  音乐  桌面  .bash_history  .bash_logout  .bashrc  .cache  .config  .gnupg  .local  .mozilla  .profile  study  .sudo_as_admin_successful  .thunderbird
    ## 可以看到很多头部带“.”的文件,在Linux上,这些文件被称作隐含文件,在默认情况下不会显示,除非指定 -a。
    
    ## ls -ld   用于查看一个目录的属性
    ## ls -l	用于查看当前目录下所有文件的属性
    xal1@xal1-virtual-machine:/$ cd /etc/fonts/
    xal1@xal1-virtual-machine:/etc/fonts$ ls -l
    总用量 12
    drwxr-xr-x 2 root root 4096 81 00:32 conf.avail
    drwxr-xr-x 2 root root 4096 91 15:10 conf.d
    -rw-r--r-- 1 root root 2808 46 18:09 fonts.conf
    ##总共有九个不同的信息栏,从左到右依次是:
        ##文件的权限标志
        ##文件的硬链接个数
        ##文件所有者的用户名
        ##该用户所在的用户组组名
        ##文件的大小
        ##最后一次被修改时的日期(月)
        ##最后一次被修改时的日期(日)
        ##最后一次被修改时的时间
        ##文件名
    
    ##在ls命令后面跟上路径名可以查看改子目录中的内容
    xal1@xal1-virtual-machine:/$ ls /etc/init.d/
    acpid             grub-common        pulseaudio-enable-autospawn
    alsa-utils        hwclock.sh         rsync
    anacron           irqbalance         rsyslog
    apparmor          kerneloops         saned
    apport            keyboard-setup.sh  speech-dispatcher
    avahi-daemon      kmod               spice-vdagent
    bluetooth         network-manager    udev
    console-setup.sh  open-vm-tools      ufw
    cron              openvpn            unattended-upgrades
    cups              plymouth           uuidd
    cups-browsed      plymouth-log       whoopsie
    dbus              pppd-dns           x11-common
    gdm3              procps
    
    • 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
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56

    cat和more:查看文本文件

    cat

    cat命令通常用于查看文本文件的内容,后跟文件名作为参数。

    cat -n 用于在每一行前面显示行号。

    cat命令会一次性将内容全部显示在屏幕上,有时候这会是一个致命的缺陷。

    more

    more命令可以一页一页的显示文件。

    more命令会在最后显示一个百分比,表示已显示的内容占整个文件的比例。

    按空格键下翻一页,看Enter键下翻一行,按Q键退出。

    head和tail:阅读文件的开头和结尾

    可以用-n 来指定显示的行数。

    xal1@xal1-virtual-machine:~/study$ head -n 2 day weather
    ==> day <==
    Monday
    Tuesday
    
    ==> weather <==
    rainy
    sunny
    
    xal1@xal1-virtual-machine:~/study$ tail -n 2 day weather
    ==> day <==
    Saturday
    Sunday
    
    ==> weather <==
    cloudy
    windy
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    grep:查找文件内容

    为了在文件中快速的查找信息,可以使用grep。

    例如,在文件day中查找包含un的信息:

    xal1@xal1-virtual-machine:~/study$ grep un day
    Sunday
    
    • 1
    • 2

    grep有两个参数,第一个参数为被搜索的关键词,第二个参数为所搜索的文件。

    grep也可以指定多个文件来搜索。

    xal1@xal1-virtual-machine:~/study$ grep un day weather 
    day:Sunday
    weather:sunny
    
    • 1
    • 2
    • 3

    find:查找文件

    语法:find [path…] [expression]

    xal1@xal1-virtual-machine:/$ find usr/bin/ -name zip -print
    usr/bin/zip
    
    • 1
    • 2
    • usr/bin/:一个文件路径,find会深入这个路径的每一个子目录去查找,如果指定的路径是“/”,那么就表示查找整个文件系统
    • -name:指定文件名称,这里是zip
    • -print:表示将结果输出到标准输出(这里指屏幕)
    • find命令会打印出文件的绝对路径

    find命令还可以指定文件的类型。在Linux中,包括目录和设备都以文件的形式表现,可以使用-type 来定位特殊的文件类型。

    xal1@xal1-virtual-machine:/$ find etc/ -name init.d -type d -print
    etc/init.d
    find: ‘etc/polkit-1/localauthority’: 权限不够
    find: ‘etc/cups/ssl’: 权限不够
    find: ‘etc/ssl/private’: 权限不够
    
    • 1
    • 2
    • 3
    • 4
    • 5

    -type可选用参数如下表所示:

    参数含义
    b块设备文件
    c字符设备文件
    d目录文件
    f普通文件
    p命令管道
    l符号链接

    还可以通过指定时间来指导find命令查找文件。

    -atime n 用来查找最后一次使用在n天前的文件。

    -mtime n 用来查找最后一次修改在n天前的文件。

    用+n来表示大于n,-n用来表示小于n。

    locate:更快速地定位文件

    当你不记得文件名时locate是个不错的选择:

    xal1@xal1-virtual-machine:/$ locate *.doc
    /snap/gnome-3-34-1804/36/usr/lib/python2.7/pdb.doc
    
    • 1
    • 2

    whereis:查找特定的程序

    whereis命令用于查找程序文件,并提供这个文件的二进制可执行文件、源代码文件和使用手册页存放的位置。

    xal1@xal1-virtual-machine:/$ whereis find
    find: /usr/bin/find /usr/share/man/man1/find.1.gz /usr/share/info/find.info-2.gz /usr/share/info/find.info-1.gz /usr/share/info/find.info.gz
    
    • 1
    • 2

    可用-b选项让whereis只查找这个程序的二进制文件:

    xal1@xal1-virtual-machine:/$ whereis -b  find
    find: /usr/bin/find
    
    • 1
    • 2

    如果whereis无法找到一个文件,那么将返回一个空字符串。

    用户版本信息查看

    who

    who命令可以查看当前系统中有哪些人登录,以及他们都在哪个工作台上。

    xal1@xal1-virtual-machine:/$ who
    xal1 :0           2020-09-02 18:09 (:0)
    
    • 1
    • 2
    whoami

    有时候可能会忘记自己是以什么身份登录到系统,特别当需要以特定身份启动某个程序时,这个命令会很有用。whoami回答“我是谁”的问题。

    xal1@xal1-virtual-machine:/$ whoami
    xal1
    
    • 1
    • 2
    uname

    用于显示当前系统的版本信息。

    -a 选项会给出当前操作系统的所有有用信息。

    -r选项会给出当前操作系统的内核版本信息。

    xal1@xal1-virtual-machine:/$ uname -a
    Linux xal1-virtual-machine 5.4.0-45-generic #49-Ubuntu SMP Wed Aug 26 13:38:52 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
    xal1@xal1-virtual-machine:/$ uname -r
    5.4.0-45-generic
    
    • 1
    • 2
    • 3
    • 4

    man:寻求帮助

    man命令可以很方便的获取某个命令的帮助信息。

    man命令在显示手册页的时候实际调用的时less程序。可以通过方向键或J键(表示向上)、K键(表示向下)上下翻动。空格键用于向下翻页,Q键退出。

    man调用手册的完整信息。

    whatis和apropos

    whatis

    从某个程序的手册页中抽取出一行简单的介绍性文字,帮助用户理解程序的大致用途。

    xal1@xal1-virtual-machine:/$ whatis find
    find (1)             - search for files in a directory hierarchy
    
    • 1
    • 2
    apropos

    与whatis相反,apropos这个命令可以通过使用手册来反查到某个命令。如果一个用户想搜索一个文件,而又想不起来使用哪个命令时,可以求助apropos。

    xal1@xal1-virtual-machine:/$ apropos search
    apropos (1)          - search the manual page names and descriptions
    apt-patterns (7)     - Syntax and semantics of apt search patterns
    badblocks (8)        - search a device for bad blocks
    bzegrep (1)          - search possibly bzip2 compressed files for a regular e...
    bzfgrep (1)          - search possibly bzip2 compressed files for a regular e...
    bzgrep (1)           - search possibly bzip2 compressed files for a regular e...
    find (1)             - search for files in a directory hierarchy
    lzegrep (1)          - search compressed files for a regular expression
    lzfgrep (1)          - search compressed files for a regular expression
    lzgrep (1)           - search compressed files for a regular expression
    manpath (1)          - determine search path for manual pages
    tracker-search (1)   - Search for content by type or across all types
    xzegrep (1)          - search compressed files for a regular expression
    xzfgrep (1)          - search compressed files for a regular expression
    xzgrep (1)           - search compressed files for a regular expression
    zegrep (1)           - search possibly compressed files for a regular expression
    zfgrep (1)           - search possibly compressed files for a regular expression
    zgrep (1)            - search possibly compressed files for a regular expression
    zipgrep (1)          - search files in a ZIP archive for lines matching a pat...
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    apropos可以将包含“search”的条目一并列出,总能从中找到想要的。

    3. 文件目录管理

    Linux文件系统的架构

    Linux系统没有盘符的概念,文件目录为树结构。下表列出了Linux系统主要目录及其内容:

    目录内容
    /bin构建最小系统所需要的命令(最常用的命令)
    /boot内核与启动文件
    /dev各种设备文件
    /etc系统软件的启动和配置文件
    /home用户的主目录,有多少个用户就会显示几个用户名称
    /libC编译器的库
    /media可移动介质的安装点
    /opt可选的应用软件包(很少使用)
    /proc进程的映像
    /root超级用户root的主目录
    /sbin和系统操作有关的命令
    /tmp临时文件的存放点
    /usr非系统的程序和命令,类似于windows下的program files
    /var系统专用的数据和配置文件
    /lost+found这个目录一般是空的,当系统非法关机后,这里就会保存一些文件碎片,可用于恢复相关信息

    文件或目录颜色的一般情况

    白色——普通文件

    蓝色——目录

    草绿色——可执行文件

    红色——压缩文件

    青色——链接文件,相当于Windows下的快捷方式

    黄色——设备文件

    • block 块
    • char 字符
    • fifo 管道

    灰色——其他文件

    以上颜色并不能一概而论,仅是通常情况下。

    mkdir:建立目录

    mkdir dirname:创建一个目录

    $ cd ~
    $ madir document picture				##新建两个目录
    
    • 1
    • 2

    用户也可以用绝对路径来新建目录。

    $ mkdir ~/picture/temp					##在主目录下新建名为temp的目录
    
    • 1
    • 如果主目录下存在picture目录,则该命令是合法的。
    • 如果不存在,则需要在mkdir参数加上-p选项,则可以完整的创建一个子目录结构。

    touch:建立一个空文件

    touch filename
    
    • 1

    就可以创建一个空文件,在Linux中,创建文件时可以不带后缀。

    touch命令的另一个用途是用来更新一个文件的建立日期和时间,这个功能在自动备份和整理文件的时候非常有用,这使得程序可以决定哪些文件已经被备份或整理过了。

    mv:移动和重命名

    $ mv hello study/						##将hello文件移动到study目录下
    
    $ mv study/ test/						##将study目录移动到test目录下
    
    • 1
    • 2
    • 3
    • mv在移动文件时不会有任何提示,在遇到相同文件名的文件则会直接覆盖!
    • -i:为了解决上述问题,给出了-i选项,该选项会使mv命令在遇到同文件名的文件时给出提示,y表示覆盖,n表示跳过。
    • -b:解决上述问题的另一个选项是-b,在移动文件前,会在目标目录的同名文件的文件名后面加~,从而避免被覆盖。
    $ mv hello hello~
    
    • 1

    在同一个文件夹下移动一个文件即是重命名。

    cp:复制文件和目录

    $ cp day ~/test/						##将day文件复制到test目录下
    
    • 1

    和mv命令一样,cp在复制的过程中不会有提示直接覆盖同名文件。使用-i和-b可以解决这一问题。

    cp在执行命令的时候会自动跳过目录。如:

    xal1@xal1-virtual-machine:~$ cp test/ study/
    cp: 未指定 -r;略过目录'test/'
    
    • 1
    • 2

    使用-r 选项可以将子目录连同其中的文件一起复制到另一个目录下:

    xal1@xal1-virtual-machine:~$ cp test/ study/ -r
    xal1@xal1-virtual-machine:~$ cd study/
    xal1@xal1-virtual-machine:~/study$ tree
    .
    ├── day
    ├── test
    │   ├── day
    │   └── hello
    ├── test1
    ├── test2
    ├── test3
    ├── testA
    ├── testB
    ├── testC
    └── weather
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    rmdir和rm:删除目录和文件

    rmdir:只能删除空目录

    rm:可以一次删除一个或多个文件。可以加一下参数:

    -r:rm本身并不能删除一整个目录,加上-r命令会递归地删除目录下所有的文件和子目录。

    -i:这个选项会在删除文件前给出提示,回答y表示删除这个文件,n表示跳过这个文件。对于只读选项,即便不加-i选项rm命令也会对此进行提示。

    -f:可以避免上述-i的交互,对这些问题自动回答y。

    4. 软件包管理

    简述

    软件包将安装软件的一系列细节操作打包,使得软件安装变得便捷。但是软件包也不是万能的,它存在依赖性问题。

    一些高级软件管理工具如APTyum可以自动搜索依赖关系并执行安装。

    常用的软件安装包格式有两种:

    • RPM是Red Hat软件包管理器,被大多数Linux发行版使用
    • .deb是Debian和Ubuntu上使用的格式

    dpkg:管理.deb软件包

    • -i:–install,安装,会在安装软件包之前把系统上原有的旧版本删除
    • -l:查看安装包的相关信息
    • -S:–search,查看所安装的软件向系统复制了哪些文件
    • -r:–remove,卸载已安装的软件包

    rpm:管理RPM软件包

    • -i:安装
    • -v:用于显示rpm当前正在执行的工作
    • -h:通过打印一系列的#来提醒用户当前的安装进度
      • -v和-h通常和其他选项合并使用,合并时也可省略“-”,如:直接输入“-rvh”
    • -U:用户升级软件包
    • -q:查询当前系统中已经安装的软件包,需要提供软件包的名字,该命令会给出其版本信息
      • -qa:加上-a选项则可以列出当前系统上已经安装的所有软件包的信息
    • -e:卸载软件包,需要指定需要卸载的软件包的名字。若目标软件包被多个软件包依赖,则RPM会谨慎的拒绝这个要求,加上–nodeps会继续执行,但卸载后可能会出现无法预料的结果
      • –test:加上–test选项,它要求RPM模拟删除软件包的全过程,但是不会真的删除软件包。
      • -vv:加上-vv,则要求RPM输出完整的调试信息

    APT:高级软件包工具

    Advance Package Tool

    apt-get:执行和软件包安装有关的所有操作

    apt-cache:主要用于查找软件包的相关信息

    下载和安装软件包

    使用apt-get -h命令可以查看apt-get的完整用法:
    在这里插入图片描述

    查询软件包

    apt-cache search:可以搜索软件包列表种特定的软件包。

    • 如果不确定软件包的名字,输入名字的一部分,则该命令会按字母顺序列出一切包含该字符的软件包。

    apt-cache depends:用于列出软件包特定的依赖关系。

    5. Internet上的LInux资源

    表1. 常用的国外LInux资源

    国外网站说明
    lwn.net来自Linux和开放源代码界的新闻
    http://freecode.com/最齐全的Linux/UNIX软件库
    www.justlinux.com信息齐全的Linux学习网站
    www.kernel.orgLinux内核的官方网站
    www.linux.com提供全方位的Linux信息
    www.linuxhq.com提供内核信息和补丁的汇总
    www.linuxtoday.com非常完整的Linux新闻站点

    表2. 常用的国内Linux资源

    国内网站说明
    www.chinaunix.net国内最大的Linux/UNIX技术社区网站
    www.linuxeden.comLinux伊甸园,最大的中文开源资讯门户网站
    www.linuxfans.org中国Linux公社,拥有自己的Linux发行版本Magic Linux
    www.linuxsir.org提供Linux各种资源,包括资讯、软件、手册等
  • 相关阅读:
    【c#】log4net用法
    IPWorks S/MIME Delphi Edition
    kubernetes之Endpoint引入外部资源实践;
    MyBatis
    云服务器 宝塔部署SpringBoot前后端分离项目
    Java的选择排序、冒泡排序、插入排序
    网络数据采集-免费全网数据采集软件
    算力免费,还奖钱,OpenI日常激励活动“我为开源打榜狂”来袭
    【Spring源码系列】Bean生命周期-依赖注入
    十年前的AlexNet,今天的NeurIPS 2022时间检验奖
  • 原文地址:https://blog.csdn.net/weixin_45607635/article/details/127867682