首页 > 系统相关 >Linux学习

Linux学习

时间:2022-11-21 10:44:58浏览次数:70  
标签:文件 192 学习 命令 ls Linux root history

1、linux简介

什么是Linux

Linux,全程GNU/Linux是一种免费使用和自由传播的类UNIX操作系统。

Linux的发新版

  • slackware:

    • suse
      • sle
      • opensuse
  • debian:

    • ubuntu
    • mint
  • redhat:

    • rhel:redhat enterprise linux
    • centos:兼容rhel的格式
    • fedora:
  • archlinux

  • Gentoo

Linux的哲学思想

  1. 一切皆文件:

    把几乎所有资源,包括硬件设备都组织为文件格式;

  2. 又众多单一目的的小程序;一个程序只实现一个功能,而且要做好

    组合小程序完成复杂任务;

  3. 尽量避免跟用户交互:

    目标:实现脚本编程,以自动完成某些功能

  4. 使用纯文本文件保存配置信息:

    目标:一款使用文本编辑器既能完成系统配置工作

2、Linux安装

2.1、镜像下载

[阿里镜像网站]https://developer.aliyun.com/mirror/

我是用的是CentOs7

2.2、虚拟机内安装

都是常规操作可能之后会写(VMware)

问题:

  1. 安装完CentOs后没网:

    解决办法:

    • 进入目录

    • 找到文件以ifcfg-ens开头的文件

    • 使用命令vi ifcfg-ens33修改文件

      把最后一行改为yes

    • 重启服务service network restart

  2. 使用镜像安装Centos7后没有可视化界面

    如何安装图形化界面 GUI:

    • 安装Xyum groupinstall "X Window System"
    • 安装图形界面软件,GNOME(GNOME Desktop) yum groupinstall "GNOME Desktop"
    • 输入startx进入GUI界面

3、Linux基本使用

3.1、终端

用户与主机交互,必然用到的设备:

  1. 物理终端:直接接入本机的显示器和键盘设备:console

    • 设备文件路径:/dev/console
  2. 虚拟终端:附加在物理终端之上的以软件方式虚拟实现的终端

    • Ctrl+Alt+F(2-6)

    • 其中F1为图形化界面

    • 图形终端:附加在物理终端之上的以软件方式虚拟实现的终端,但额外会提供桌面环境。

    • 设备文件路径:/dev/tty#

  3. 模拟终端:图形界面下打开的命令行接口,基于ssh协议或telnet协议等远程打开的界面

    • 设备文件路径:/dev/pts/#

    查看当前的终端类型

    命令tty

    • 虚拟终端 文件路径/dev/tty/#
    • 模拟终端 文件路径/dev/pts/#
    • 物理终端 文件路径/dev/console

3.2、交互之接口

启动终端之后,在终端设备附加一个交互式应用程序

  • GUI:

    X protocol; window manager;desktop

    Desktop:

    • GNOME
    • KDE
    • XFCE
  • CLI:

    shell程序:

    • sh(bourn)
    • csh
    • bash
    • zsh

shell命令

  • 查看当前shellecho $SHELL

    [root@192 /bin]# echo $SHELL
    /bin/bash
    
  • 查看所有的shellcat /etc/shells

    [root@192 /bin]# cat /etc/shells
    /bin/sh
    /bin/bash
    /usr/bin/sh
    /usr/bin/bash
    /bin/tcsh
    /bin/csh
    

命令提示符:prompt

  • [root@192 ~]#
    • [root@192 ~] -> PS1
    • prompt:
      • 管理员:#
      • 普通用户:$

3.3、命令

3.3.1、输入命令

  • 提醒shell程序找到键入命令所对应的可执行程序或代码,并由其分析后提交给内核分配资源将其运行起来,表现为一个或多个进程。

  • 在shell中可执行的命令有两种:

    • 内建命令:由shell自带的,而且通过某命令形式提供
    • 外部命令:在当前系统的某文件系统路径下由对应的可执行程序文件which,whereis
    • 区别内部或外部命令:

查看命令位置

  • which

    [root@192 ~]# which ls
    alias ls='ls --color=auto'
            /usr/bin/ls
    
  • whereis

    [root@192 ~]# whereis ls
    ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
    

    查看命令是否是内建

    type command

    [root@192 ~]# type yum
    yum 是 /usr/bin/yum
    [root@192 ~]# type cd
    cd 是 shell 内嵌
    

3.3.2、运行命令

  • 命令格式:

    • COMMAND [OPTIONS...] [ARGUMENTS...]

      • 选项:用于启用或关闭命令的某个或某些功能;

        • 短选项: -c ex: -l, -h

          多个短选项课命令使用 ex:| -l -h | -lh

        • 长选项:--word ex: --long, --human-readable

      • 参数:命令的作用对象

        向命令提供数据

      注意:

      1. 多选项,以及多参数和命令之间都应该使用空白字符分隔
      2. 取消多命令执行:Ctrl+c

3.3.3、文件系统

文件的数据

  • 元数据:metadata (描述数据的属性)
  • 数据:data (真实数据

Linux的文件系统

  1. 文件名严格区分大小写:file1 和 File1 不同

  2. 文件名可使用除/以外的任意字符,不建议使用特殊字符

    • /: 根目录;路径分隔符
  3. 文件名长度最多不能超过255个字符

  4. 所有.开头的文件,均为隐藏文件

路径

  • 相对路径:从根目录开始的路径

  • 绝对路径:从当前位置开始的路径

    • 当前位置的表示方式:

      1. ./:./network-scripts/
      2. 不使用./:cd network-scripts/

      查看当前位置的命令

      pwd

      [root@192 sysconfig]# pwd
      /etc/sysconfig
      

    ..:表示上一级目录

总结

Linux的命令有很多相同因为 LSB:Linux Standard Base

本节的所有目录:

ls,cd,type,tty,pwd,echo,which,whereis,cat

3.4、Linux命令帮助的获取

格式COMMAND [OPTIONS] [ARGMENTS...]

  • 内部命令:

    • help COMMAND
  • 外部命令:

    1. 试一试,但不针对某个具体命令

      • COMMMAND --help

      • COMMAND -h

    2. 操作手册(manual)

      • man COMMAND
    3. 信息页

      • info COMMAND
    4. 程序自身的帮助文档

      • README
      • INSTALL
      • ChangeLog
    5. 程序官方文档

    6. 发行版的官方文档

3.4.1、内部命令获取

  • hash

    shell搜寻到的外部命令的路径结果会缓存到kv键值对中。

[root@192 bin]# hash
命中    命令
   1    /usr/bin/cat
   1    /usr/bin/ls
# hash -d cat  
# hash -r
  • history:

    管理命令历史:

    1. 登录shell时,会读取命令历史文件中记录下的命令:位置

      ~/.bash_history

      cat ~/.bash_history
      
    2. 登录进shell后新执行的命令会记录在缓存中history 记录

      history
      

    历史文件中只有登出才会将本次命令历史从缓存加入到历史文件

    • 手动添加本次命令

      history -a

    history 的常用命令:

    1. history -a

    2. history -d

      删除指定行数的历史文件

      history -d 149

    3. history -c

      清空命令历史

    快捷操作

    1. !# : 调用历史中第 # 条命令
    [root@192 ~]# history
        1  history
        2  cat ~/.bash_history
        3  help history
        4  ls
        5  cd Documents/
        6  history
        7  ls
        8  cd Documents/
        9  ls
       10  cd ..
       11  ls
       12  history
    [root@192 ~]# !4
    ls
    anaconda-ks.cfg  Documents  Music     Public     Videos
    Desktop          Downloads  Pictures  Templates
    
    1. !string : 调用最近一条以string开头的命令

      [root@192 ~]# history
          1  history
          2  cat ~/.bash_history
          3  help history
          4  ls
          5  cd Documents/
          6  history
          7  ls
          8  cd Documents/
          9  ls
         10  cd ..
         11  ls
         12  history
      [root@192 ~]# !cd
      cd ..
      
    2. !! : 调用上一条执行的命令

3.4.2、外部命令获取

外部命令都有一个可执行文件,位于文件系统某目录之下:

执行一个外部命令,shell程序就会在$PATH$的环境变量中,搜索。

[root@192 ~]#  echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
# 用 : 分隔每一个路径
# 搜索循序是 自左至右的
  • COMMAND --help || COMMAND -h

  • man COMMAND

    存放man文件的目录/usr/share/man/

    文件包含 man1 ... man9

    • man1 : 用户命令

      命令手册里会记录是哪个级别

    • man2 : 系统调用

    • man3 : C库调用

    • man4 : 设备文件及特殊文件

    • man5 : 配置文件格式

    • man6 : 游戏

    • man7 : 杂项

    • man8 : 管理类的命令

    • man9 : 内核

    man的存放路径

    man能找到帮助手册因为有自己的配置文件/etc/man_db.conf

    MANDATORY_MANPATH                       /usr/man
    MANDATORY_MANPATH                       /usr/share/man
    MANDATORY_MANPATH                       /usr/local/share/man
    

    帮助手册

    帮助手册中的段落说明 :

    段落 说明
    NAME 名字 简要说名
    SYNOPSIS 命令的简要说明
    DESCRIPTION 命令描述
    OPTIONS 命令选项
    EXAMPLES 例子
    AUTHOR 作者
    • SYNOPSIS:
      • [] : 可选内容
      • <> : 必选内容
      • a|b : 二选一
      • ... : 同一内容可出现多次
    • man的小技巧
      • space | ^V | ^f | ^F 向尾部翻屏
      • b 向头翻屏
      • d 向翻下半屏
      • u 向上翻半屏
      • j 向下翻一行
      • k 向上翻一行
      • q 退出
      • # 跳至第# 行
      • 1G 头部
      • G 尾部
      • /keyword : 向尾部查找单词 n 往尾部找 N 往头部找
      • /?keyword : 向头部查找单词 n往头部找, N往尾部找
  • info

    info COMMAND

  • 程序自身的帮助文档

    /usr/share/doc

  • 程序官方文档

  • 发行版官方文档

  • 注意

    1. 有些命令不止在一个章节中存在帮助手册:

      可以使用命令whatis COMMAND查看所有的位置:

      [root@192 man1]# whatis read
      read (1)             - bash built-in commands, see bash(1)
      read (1p)            - read a line from standard input
      read (2)             - read from a file descriptor
      read (3p)            - read from a file
      

      1. 默认会读取更小的帮助手册

      2. 想要查看指定的 man # COMMAND

小问题:

1、更换语言

  • 语言环境:

    • 英文:en_US.UTF-8
    • 中文:zh_CN.UTF-8
  • 查看目前的语言echo $LANG

    [root@192 bin]# echo $LANG
    zh_CN.UTF-8
    
  • 修改目前的语言环境

    1. 临时修改

      [root@192 bin]# LANG="en_US.UTF-8"
      [root@192 bin]# echo $LANG
      en_US.UTF-8
      
    2. 永久修改

      语言文件存放在/etc/locale.conf

      修改文件为LANG="en_US.UTF-8"

练习:

data 命令

  1. 显示今天周几
  2. 设定当前系统时间
  3. 显示是今天的日期 | 11/19/22
  4. 显示当前的时间 | 21:48:45

4、基础命令

4.1、date

4.1.1 显示时间

  • date [OPTION]... [+FORMAT]

    • FORMAT : 格式符号

      [root@192 ~]# date +%a
      Fri
      [root@192 ~]# date +%A
      Friday
      [root@192 ~]# date +%D
      10/01/21
      [root@192 ~]# date +%F
      2021-10-01
      [root@192 ~]# date +%T
      11:35:49
      [root@192 ~]# date "+The time is %T"
      The time is 11:39:17
      

      date "+The time is %T" 还可以拼接字符串

  • date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] || 设置

    date 1120110122.30

    [MMDDhhmm[[CC]YY][.ss]] :

    • MM : 月
    • DD : 日
    • hh : 小时
    • mm : 分钟
    • YY : 年(2位)
    • CCYY : 年(4位)
    • .ss : 秒钟

4.1.2、Linux的两种时钟

  • 系统时钟:由Linux内核通过CPU的工作频率进行的计时
  • 硬件时钟:硬件时钟是存储在主板上CMOS里的时钟,关机后该时钟依然运行,主板的电池为它供电

hwclock : 显示硬件时钟

  • -s 根据硬件时钟同步
  • -w 根据系统时钟同步

cal : 显示日历

4.2、目录相关的命令

4.2.1、主目录,家目录

  • root : /root
  • 普通用户 : /home/USERNAME -> /home/wwx
  • ~ : 用户的家目录

4.2.2、cd命令

  • cd | cd ~ : 回到当前用户的主目录

  • cd ~USERNAME : 管理员可以使用cd ~USERNAME 直接进入普通用户家目录

  • cd - : 在上一个目录和当前目录之间来回切换

  • . : 当前目录

  • .. : 上一级目录

    相关的环境变量

    • $PWD : 保存了当前目录路径
    • $OLDPWD : 上一次所在的目录路径 | cd - 实现依据
    • `` :

4.2.3、ls命令

显示指定路径下的文件列表:

  • ls [OPTION]... [FILE]...

    • -a : 显示所有文件包括隐藏文件

    • -l : 长格式

      drwxr-xr-x. 2 root root 6 Nov 17 16:08 Music

      • 最左侧第一列:文件类型

        • - : 普通文件
        • d : 目录
        • l : 连接文件
        • b : 跨设备
        • c : 字符设备
        • p : 管道
        • s : 套接字
      • 后9位 : 访问权限

      • 数字 表示文件被硬链接的次数

      • root : 文件的属主 owner

      • root : 文件的属组 group

      • 6 : 文件的大小(单位 字节)

      • Nov 17 16:08 : 文件最后一次被修改的时间

        • Linux文件修改分为三种

          1. 文件最近内容修改时间 | mtime
          2. 文件最近权限和属性的修改时间 | ctime
          3. 文件最近被访问时间 | atime
        • stat /PATH/TO/SOMEFILE : 获取指定文件的元数据

          [root@192 ~]# stat anaconda-ks.cfg
            File: ‘anaconda-ks.cfg’
            Size: 1259            Blocks: 8          IO Block: 4096   regular file
          Device: fd00h/64768d    Inode: 33574980    Links: 1
          Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)
          Context: system_u:object_r:admin_home_t:s0
          Access: 2022-11-17 12:58:00.296001547 +0800
          Modify: 2022-11-17 12:58:00.298001547 +0800
          Change: 2022-11-17 12:58:00.298001547 +0800
           Birth: -
          
    • -h : 单位换算 | 通常跟 -l 一起使用

    • -d : 显示目录自身的相关属性 | 通常跟 -l 一起使用

    • -r : 以逆序方式排序

    • -R : 递归显示

4.2.4、文件内容查看命令cattac命令

cat 正序显示tac逆序显示

cat [OPTION]... [FILE]...

  • -E : 显示行结束符 $
  • -n : 对显示出的每一行进行编号
  • -r : 以逆序方式排序
  • -R : 递归显示

4.4.5、文件类型查看文件file

file /PATH/TO/SOMEFILE

[root@192 ~]# file /dev/sda
/dev/sda: block special
[root@192 ~]# file /etc/issue
/etc/issue: ASCII text

4.4.6、回显命令echo

  • 常用OPTION

    • -n : 不会自动换行

    • -e : 允许使用转义符

      • \n : 换行

      • \t : 制表符

        [root@192 ~]# echo -e  "how\tare you"
        how     are you
        
  • echo "VAR_NAME" : 变量会替换

  • echo 'VAE_NAME' : 变量不会替换

    [root@192 ~]# echo "$LANG"
    en_US.UTF-8
    [root@192 ~]# echo '$LANG'
    $LANG
    

4.4.7、显示命令路径which

which [OPTION] [COMMAND]

  • --skip-alias : 禁止显示别名

5、系统管理类命令:

5.1、关机命令

  • halt
  • poweroff
  • shutdown
  • init 0

5.2、重启命令

  • reboot
  • shutdown
  • init 6

5.3、跟用户登录相关命令

  • who
  • whoami
  • w

总结:

符号 意义
%H 24小时
%I 12小时
%M
%S
%Y
%y 后两位年
%m
%d

总结

1、如何使用有一个新命令

  1. 使用type判断命令类型

    • 内嵌命令

    • 外部命令

      [root@192 ~]# type ls
      ls is aliased to `ls --color=auto'   # 外部
      [root@192 ~]# type cd
      cd is a shell builtin      # 内嵌
      
  2. 命令具体内容查看

    • 内嵌命令使用 help COMMAND 查看
    • 外部命令使用 man COMMAND 查看

标签:文件,192,学习,命令,ls,Linux,root,history
From: https://www.cnblogs.com/wwx-tyut/p/16910630.html

相关文章

  • Linux下的压缩和解压缩命令——gzip/gunzip
    gzip命令gzip命令用来压缩文件。gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多处“.gz”扩展名。gzip是在Linux系统中经常使用的一个对文件进行压缩和解压......
  • Linux
    《基本操作指令》《关机》  《基本目录》   《跳转》  《查看》    《管理目录》  mkdir-ptest1/test2/.....这样可以递归创建多个目......
  • 后端开发必备Linux命令汇总
    查看Linux系统信息  arch      #显示机器的处理器架构(1)uname -m  #显示机器的处理器架构(2)uname -r  #显示正在使用的内核版本dmidecode -q    ......
  • HCIA学习笔记四十一:ACL访问控制列表
    一、ACL应用场景• ACL可以通过定义规则来允许或拒绝流量的通过。二、ACL分类三、ACL规则• 每个ACL可以包含多个规则,RTA根据规则来对数据流量进行过滤。四、基......
  • linux释放buff/cache缓存内存
    echo3>/proc/sys/vm/drop_caches------释放buff/cache缓存内存echo0是不释放缓存echo1是释放页缓存ehco2是释放dentries和inodes缓存echo3是释放1和2中说......
  • 区块链学习记录一
    一、本地编辑器搭建1.试了很多种方法都没成功,在最后访问localhost:8080时只会显示一个图标,最后还是借鉴了网上大佬的博客,用了网页版的remix-ide和本地remix相结合的方法n......
  • linux常用操作命令
    top:查看所有进程的资源占用情况,按cpu占用排序第三行为CPU的信息:有几个CPU,就会显示几行参数释义  us      表示用户空间程序的c......
  • (转)【Linux】crontab命令详解
    原文:https://blog.csdn.net/qq_32109917/article/details/121468799【Linux】crontab命令详解linux系统则是由cron(crond)这个系统服务来控制的。Linux系统上面原本......
  • Linux自动备份MySql数据库
    1.创建备份数据库文件的根目录:#mysql备份文件目录cd/data/db/mysql2.创建各个数据库的备份文件目录  3.编写shell脚本3.1 在usr/sbin目录下分别创建数据......
  • 每日一题1--埃氏筛法学习
    我们今天要介绍的埃拉托斯特尼算法就是他发明的用来筛选素数的方法,为了方便我们一般简称为埃式筛法或者筛法。埃式筛法的思路非常简单,就是用已经筛选出来的素数去过滤所有......