linux基础


  • linux 由目的单一的小程序组成,组成的小程序完成复杂的任务
  • 所有都是文件
  • 配置文件保存的都是纯文本

Shell

Shell简介

Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。
image-1656558894854

常见的shell有两种,一种是图形界面,即GUI,一种是命令行终端,即CLI。

常用的GUI:Graphic User Interface

  • Windows
  • X-Window
      Gnome
      KDE
      Xfce

常用的CLI:Command Line Interface
bash
sh
csh
zsh
ksh
tcsh
Redhat 和 Centos使用的是:bash shell

Linux基础命令

命令  [选项]  [参数]

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

命令类型

  • 内部命令:shell内置,也称shell内嵌命令;
  • 外部命令:在文件系统的某个路径下有一个与命令名称相应的可执行文件,存放在一个文件中,使用时需要去文件中查找,这些文件被定义在$PATH
type    //显示指定命令属于哪种类型
[root@localhost ~]# type cd
cd is a shell builtin      //cd是shell内建
[root@localhost ~]# type echo 
echo is a shell builtin   //echo 是shell 内建
 

基础命令

目录管理命令

目录管理

ls
ls        列出目录内容
     -l        长格式
   以长格式显示的第一段含义:
         第一个字符:文件类型
             -     普通文件(f)
             d     目录文件
             b     块设备文件(block)
             c     字符设备文件(character)
             l     符号链接文件(symbolic link file)
             p     命令管道(pipe)
             s     套接字文件(socket)
         后面九位字符:文件权限        
 	9位,每3位一组,每一组:rwx(读,写,执行)
   以长格式显示的第二段含义:
         文件硬链接的次数
   以长格式显示的第三段含义:
         文件的属主(owner)
   以长格式显示的第四段含义:
         文件的属组(group)
   以长格式显示的第五段含义:
         文件大小(size),单位是字节
   以长格式显示的第六,七,八段含义:
         时间戳(timestamp),最近一次被修改的时间
             访问      //access,访问的时间
             修改      //modify,文件内容被修改的时间
             改变      //change,metadata(元数据)变化的时间
      -h       做单位转换
      -a       显示以.开头的隐藏文件
         .         表示当前目录
         ..        表示父目录
      -d       显示目录自身属性
      -i       显示文件的inode(index node)
      -r       逆序显示
      -R       递归(recursive)显示
cd
     切换目录
       -     表示回到刚刚的目录
       ..     表示切换到目前的上一级目录
pwd
查看当前所在目录路径
tree
查看目录树
      -d            只显示目录
      -L level      指定显示的层级数目
      -P 字符串      显示指定字符串匹配到的文件

文件管理命令

文件管理

mkdir
创建目录
       -p        创建目录时若父目录不存在则自动创建
       -v        显示目录创建过程
rmdir
删除目录,只能删除空目录
touch
创建一个空文件,touch还有一个作用是修改文件的时间戮
stat
显示文件或文件系统的状态
rm
删除文件,删除命令默认会提示是否需要删除,如果要使用命令本身可以在命令前加一个\。
      例如:\rm,这样删除就不会有提示了
      -r        递归删除,删除目录时必须使用此选项
      -f        强制删除,不询问
cp
 复制文件,一个文件到一个文件,多个文件到一个目录
        -r        递归拷贝,拷贝目录时必须使用此选项
        -p        拷贝时保留原权限
        -a        相当于-rp
mv
   移动文件
install
复制文件并且设置属性
        -m MODE	   复制时修改权限
        -o OWNER   复制时修改文件属主
        -g GROUP   复制时修改属组

识别文件类型

file

   file
     -b  列出辨识结果时,不显示文件名称。
     -c  详细显示指令执行过程,便于排错或分析程序执行的情形。
     -f<名称文件>  指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称。
     -L  直接显示符号连接所指向的文件的类别。
     -m<魔法数字文件>  指定魔法数字文件。
     -v  显示版本信息。
     -z  尝试去解读压缩文件的内容。
[文件或目录...] 要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件。

文件内容查看命令

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

主机管理命令

主机名管理

hostname
查看或临时修改主机名,重开终端有效,重启失效

  hostnamectl   查看或永久修改主机名,重开终端生效,重启依然有效
time
  显示命令的执行时间,例如time ls /etc
clear
清屏
whoami
显示当前登录用户
who
查看当前在线用户
w
显示当前在线用户并显示其在运行的命令
which
 显示指定命令的绝对路径
date
         显示或设置日期与时间
    	  不带参数的date用于显示当前系统日期与时间
      格式化输出时间:+
        %Y        年
        %m        月
        %d        日
        %F        年-月-日
        %H        时
        %M        分
        %S        秒
    -s        以字符串方式设置时间
cal
    	  打印日历
bc
    	  Linux中的计算器
  -l	   使用标准数学库
    echo 'scale=2;5/2'|bc -l
  scale=2表示保留两位小数
ldd
     	  查看指定程序有哪些依赖库文件
    程序组成:
        二进制程序
        库文件
        配置文件
        帮助文件

获取命令帮助

man
内部命令
  help COMMAND
外部命令
  COMMAND --help
在线文档
  info COMMAND    
命令手册  manual
  man COMMAND
文档
  /usr/share/doc 
  
whatis COMMAND        用于查看COMMAND出现在man的哪一章节中。
  	      查询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		      向前翻一行
  
查找
  /text	      向后
  ?text             向前
  n                 下一个
  N                 前一个
  q                 退出   

bash

bash的特性

bash支持以下特性:

支持命令历史、命令补全
支持管道、重定向
支持命令别名
支持命令行编辑
支持命令行展开
支持文件名通配
支持变量
支持编程

bash支持的引号

""	      双引号,弱引用,可以实现变量替换
''            单引号,强引用,不完成变量替换
``	      反引号,键盘左上角Esc下面的键,用于命令替换
$()	      与反引号用法相同

bash的常用操作

光标跳转

  Ctrl+a	  跳到命令行首
  Ctrl+e	  跳到命令行尾
  Ctrl+u	  剪切光标至命令行首的内容
  Ctrl+k	  剪切光标至命令行尾的内容
  Ctrl+<-	  光标定位到离自己最近的一个单词前面
  Ctrl+p	  重复上一次命令
  Ctrl+w	  剪切前面的字符至上一个空格处
  Ctrl+y	  粘贴或者恢复上次的删除。
  Ctrl+l	  清屏
  Ctrl+s	  暂时冻结当前shell的输入
  Ctrl+q	  解冻

tab键命令和路径补全

在命令行输入命令时,如果只记得命令的开头几个字母,可使用tab键补全命令;如果有多个命令都是以某字母开头,按两次tab,可以列出所有以该字母开头的命令,供用户选择。
  在命令行输入文件路径时,如果忘记文件路径全称,则只需要输入文件路径开头几个字母,也可以使用tab键进行补全。

命令行常见特殊符号

   ~       	      展开为用户的家目录
   ~USERNAME          展开为指定用户的家目录
   {}      	      列表,可用于存放数据
   \		      转义,使得后面一个特殊字符没有任何特殊含义
   &&		      前面的命令执行成功后才执行后面的命令
   ||		      前面的命令执行失败后才执行后面的命令
   ;		      不管前面的命令执行成功还是失败都执行后面的命令

文件名通配符

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

环境变量

PATH              命令搜索路径
 HISTSIZE          命令历史缓冲区大小
 SHELL             当前shell
bash内置变量
 RANDOM            保存着0-32768之间的随机数

命令历史

history
history           查看命令历史
     -c                清空命令历史
     -d OFFSET [n]     删除指定位置的命令历史
     -w                保存命令历史至历史文件~/.bash_history中

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