[Linux专题] Linux介绍及基本文件管理

Linux基本概念

  • Linux的核心为内核,主要包括内存管理、软件程序管理、硬件设备管理以及文件系统管理。内核的代码为开源的,网址为https://www.kernel.org。GNU工具链为与系统交互提供了很多实用功能,比如shell即是一个交互工具,包括bash/zsh等

  • 在内核基础上开发的完整系统叫做发行版,目前核心的发行版包括:redhatcentosubuntudebian等。

Linux命令格式

  • 主流的发行版都提供基本bash shell的命令行交互工具,命令行交互(ubuntu版本)的通用格式如下:

    # yjf代表登录用户名
    # vbox代表登录机器名
    # ~代表当前所在目录 
    # $代表登录为普通用户,#代表为管理员用户root
    yjf@vbox:~$ 
    
    # shell使用$PS1特殊变量来定义命令行提示字符的格式
    yjf@vbox:~$ echo $PS1
    \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$
    
  • manual帮助文档,发行版提供的shell命令及其他GNU工具的在线手册,可以使用man命令或者命令 --help的方式获取帮助文档。man手册使用数字来指示命令帮助文档的类型,主要分以下几种:

    • 1 可执行程序或者shell工具帮助文档。

    • 2 内核级别系统调用帮助文档

    • 5 配置文档的帮助信息等。

      # man的使用如下:
      #1 使用man 命令来显示帮助信息,使用q退出帮助信息 /-d表示检索-d信息  
      yjf@vbox:~$ man ls
      
      #2 当命令存在多个类型的帮助信息时 可使用man -f 命令或者whatis 命令显示该命令拥有的帮助信息
      # 1 表示可执行命令的帮助信息 5表示密码配置的帮助信息 1ssl表示计算密码hash的帮助信息 之后即可使用
      # man 5/1/1ssl passwd 来显示具体的类型帮助信息
      yjf@vbox:~$ man -f passwd
      passwd (5)           - the password file
      passwd (1)           - change user password
      passwd (1ssl)        - compute password hashes
      yjf@vbox:~$ man 1ssl passwd
      yjf@vbox:~$ man 5 passwd
      

文件及目录管理

  • Linux系统里一切皆文件,每个发行版都会约定基本文件的结构,目录结构基本类似,以下为Ubuntu系统的目录结构:

    #Ubuntu 18.04 64为系统目录结构
    /         #根目录
    /bin      #二进制目录,主要存放GNU用户级别工具
    /sbin     #二进制目录,主要存放GNU系统级别工具
    /boot     #启动目录,存放启动文件
    /dev      #设备目录 在此目录下创建设备节点
    /etc:     #系统配置文件目录
    /home:    #自定义用户的根目录,如创建yjf用户,则会在此创建yjf目录
    /lib64或者/lib      #库文件目录
    /mnt,/media         #挂载点目录.如挂载cd-rom或者u盘等
    /opt                #存放用户可选的软件包
    /tmp                #临时目录
    /usr                #用户安装软件目录
    /var                #存放变化文件,如日志等
    /root               #root用户根目录
    
  • ls 基本列表功能,显示指定参数的文件或者目录信息。

    # 通用格式: ls [options] [args] 
    # options支持以-开头选项和--开头的选项,单字符选项可以写在一起。
    # args参数指定文件或者目录,当未指定参数时表示显示当前目录。参数支持以下通配符表示:
    # 1 * 代表任意字符 ?表示单个字符 [abc]表示[]中任意一个
    # -a/--all 显示所有(包括隐藏) 
    # -l(按长列表输出) -h(任性化显示文件大小,单位kb mb等) -R(递归显示目录中的内容,大目录慎用)
    
    yjf@vbox:~$ ls -hail 
    total 36
    532501 4 drwxr-xr-x 4 yjf  yjf  4096 Aug 23 15:37 .
    524290 4 drwxr-xr-x 3 root root 4096 Aug 23 15:05 ..
    529833 4 -rw------- 1 yjf  yjf   819 Aug 24 10:49 .bash_history
    532504 4 -rw-r--r-- 1 yjf  yjf   220 Apr  5  2018 .bash_logout
    yjf@vbox:~$ ls -hail /etc/pass*
    407343 -rw-r--r-- 1 root root 1.6K Nov 23 08:34 /etc/passwd
    407286 -rw-r--r-- 1 root root 1.6K Nov 23 07:57 /etc/passwd-
    
    #对于文件显示,各选项代表意义如下:
    #532501-索引 
    #drwxr-xr-x 表示文件权限信息。第一个字符代表文件类型,d代表目录 -代表文件 l 软连接。后面跟着的9个字符,3个分一组表示当前用户(u),组内的其他用户(g)和其他用户(o)对该文件的读写执行权限。按读写执行排序,rwx表示有读写执行权限,没有相应的权限使用-代替. yjf yjf表示该文件所属的用户和组。
    # 819 代表文件大小,无单文代表字节,K代表KB 之后是文件的日期信息。
    
  • cd,mkdir,rm,mv,cp,pwd命令表示新建,移动,拷贝等信息。

    #cd 表示进入指定目录,支持绝对目录或者相对目录。几个特殊目录的写法:
    #cd ~/cd 进入家目录. cd .表示当前目录 cd ..表示进入上级目录
    yjf@vbox:~/.ssh$ cd ~
    yjf@vbox:~$ cd /etc
    
    #mkdir用于建立文件夹,用/分割,对于指定目录的的上级目录一定要存在,否则使用-p参数表示递归的建立多个文件夹
    yjf@vbox:~$ mkdir dir1
    yjf@vbox:~$ mkdir -p d1/d2/d3
    
    #rm可用于删除文件,-f参数表示强制删除,删除目录必须使用-r参数。
    yjf@vbox:~$ rm -rf d1
    
    #mv用户移动文件,文件夹或者重命名 
    yjf@vbox:~$ mv gcc.c gcc.java     #移动到当前目录下就相当于重命名 
    yjf@vbox:~$ mv gcc.java ./dest1/  #移动文件 支持多个文件
    yjf@vbox:~/dest1$ mv d1 ~/        #移动d1目录下的文件或者目录(包括子目录)到家目录下.
    
    #cp命令用于拷贝文件或者目录,正常如果不带-a参数拷贝后的文件时间搓不一致 需要-a
    yjf@vbox:~$ cp .sudo_as_admin_successful d1       #单个文件拷贝 源->目的
    yjf@vbox:~$ cp -r d1 dest1                        #递归拷贝d1下的文件(包括子目录)必须使用-r参数.
    yjf@vbox:~$ ll d1/demo demo 
    -rw-rw-r-- 1 yjf yjf 29 Nov 24 05:22 d1/demo
    -rw-rw-r-- 1 yjf yjf 29 Nov 24 05:22 demo
    
    #pwd用于显示当前目录的绝对路径
    yjf@vbox:~/d1$ pwd
    /home/yjf/d1
    
  • touch,stat,file 用于创建文件和修改文件时间戳,查看相关的文件信息。

    #touch filename 创建文件,另一个功能对于已经存在的文件更改时间戳
    yjf@vbox:~/d1$ touch doc.log 
    yjf@vbox:~/d1$ ll
    total 12
    -rw-rw-r-- 1 yjf yjf   29 Nov 24 05:47 demo
    -rw-rw-r-- 1 yjf yjf    0 Nov 24 05:48 doc.log
    yjf@vbox:~/d1$ touch doc.log 
    yjf@vbox:~/d1$ ll
    total 12
    -rw-rw-r-- 1 yjf yjf   29 Nov 24 05:47 demo
    -rw-rw-r-- 1 yjf yjf    0 Nov 24 05:49 doc.log
    # stat file 查看文件的统计信息,包括最近访问 最近更改等信息 可包括目录
    # file file 查看文件的类型:包括文件夹 文本文件 可执行文件等类型
    yjf@vbox:~/d1$ stat doc.log 
        File: doc.log
        Size: 12          Blocks: 8          IO Block: 4096   regular file
      Device: 802h/2050d  Inode: 536342      Links: 1
      Access: (0664/-rw-rw-r--)  Uid: ( 1000/     yjf)   Gid: ( 1000/     yjf)
      Access: 2019-11-24 05:51:39.960634424 +0000
      Modify: 2019-11-24 05:51:39.960634424 +0000
      Change: 2019-11-24 05:51:39.968634424 +0000
       Birth: -
    yjf@vbox:~/d1$ file doc.log 
    doc.log: ASCII text
    
  • cat,more,less,head,tail相关命令查看文件内容并输出到标准输出设备,可应用在不同的场景下。

    #more应用于大文件,分页查看,使用q退出。less命令为more的高级版本。
    yjf@vbox:~$ more file1
    
    #head和tail用户查看指定文件的前或者后n行,部分查看功能.
    yjf@vbox:~$ head -n2 /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
    yjf@vbox:~$ tail /etc/passwd    #未指定行数默认为10行
    messagebus:x:103:107::/nonexistent:/usr/sbin/nologin
    _apt:x:104:65534::/nonexistent:/usr/sbin/nologin
    ...
    yjf@vbox:~$ tail +20 /etc/passwd   #显示从20行到末尾.
    yjf@vbox:~$ tail -f -n5 /tmp/d1.log    #滚动显示文件的末尾5行 对于动态查看日志文件非常有用
    
    #cat 显示文件内容到标准输出,并借助重定向和管道实现文件的创建,追加等功能。支持以下选项
    #-n 每行显示行号 -b 空白行不编号 
    yjf@vbox:~$ cat -n file1             #每行前面加行号
    yjf@vbox:~$ cat -b file1             #空白行不编号
    yjf@vbox:~$ cat file1 file > total   #合并file1/file文件至total文件
    
  • ln命令用于创建文件的链接,即占位符的意思,链接一般分为硬链接和软链接,命令使用如下:

    #创建软链接, 使用-s表示创建的为软链接 前面为实际的文件位置,后面参数为软链接的名称。
    yjf@vbox:~$ ln -s d1/doc.log doc.log
    yjf@vbox:~$ ls -sail doc.*
    536338 0 lrwxrwxrwx 1 yjf yjf 10 Nov 24 06:24 doc.log -> d1/doc.log
    

你可能感兴趣的:([Linux专题] Linux介绍及基本文件管理)