Linux基础及命令(一)

189 阅读8分钟

通过终端软件进行编辑

  • GUI
  • Xshell

shell 软件,shell编程语言

  • bash
  • csh

特性不同

操作系统

  • 操作系统也是一种特殊的程序
  • 调度硬件资源
  • 运行在内存里面
  • 由代码构成

shell(翻译官):在操作系统和人之间进行翻译

通过AscⅡ码编码表将二进制翻译成高级语言 ASCII码 - 基本ASCII码和扩展ASCII码,最全的ASCII码对照表 (asciim.cn)

还有UTF-8等编译程序

centos7默认的shell软件类型

  • /bin/bash(最后有“/”一定是文件夹,没有“/”可能是文件也有可能是文件夹)
  • 翻译
  • 补全功能
  • 自带内部命令等功能

命令:

cat /etc/shells 查看系统支持的shell类型

Bash

bash是可以多开的,多开的bash相对是独立的

Linux命令的分类

type +命令:可以查看命令是外部命令还是内部命令

[root@localhost /]# type cd
cd 是 shell 内嵌
​
[root@localhost /]# type ls
ls 是 `ls --color=auto' 的别名
​

内部命令

  1. 内部命令和bash软件是一体的,bash中集成了很多命令
  2. 没有独立的文件
  3. 不用独立安装
  4. 直接运行在内存中

外部命令

  1. 不在shell(bash)软件中,由独立的执行文件
  2. 需要额外独立安装
  3. 系统需要知道文件的位置才可以运行
  4. 运行在硬盘,光驱等存储介质

系统规定了几个文件夹,如果你的命令在这几个文件夹中,那么是不需要写路径的

[root@localhost /]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost /]# which ls
alias ls='ls --color=auto'
    /usr/bin/ls
[root@localhost /]# which cd
/usr/bin/cd
[root@localhost /]# cd  既属于内部命令又属于外部命令,目的是为了双重保险,担心内部没有cd命令

linux命令执行过程.png

[root@localhost /]# hash
命中  命令
   1    /usr/bin/bash
   1    /usr/bin/rm
   1    /usr/bin/sh
   9    /usr/bin/ls
​

举例:

  • ls第一次运行
  1. 先判断是外部还是内部命令,
  2. 如果是内部直接执行
  3. 如果是外部命令,去规定的路径找,
  4. 找到执行
  5. 找不到报错
  • ls不是第一次运行
  1. 先判断是内部还是外部
  2. 如果是内部直接执行
  3. 如果是外部去查hash缓存
  4. 按照缓存提示去找
  5. 找到执行
  6. 找不到直接报错

命令找不到的原因:

  1. 没有安装该命令软件(安装该命令)
  2. hash缓存有误(清理hash表)
  3. 不在指定路径下(需要使用绝对路径,或者将命令复制到规定文件夹下)

Linux的哲学思想

linux哲学思想.png 二进制程序:电脑可以直接运行的程序,效率高

非二进制程序:电脑需要通过bash翻译后运行,效率低

Linux命令行的格式

  • 通用的命令行使用格式

[命令字] [空格] [选项] [空格] [参数]

一定要空格

命令字:你执行任务,需要挑选相对应的命令

选项:修饰加强命令,可以一次有多个

参数:对谁使用该命令,可以一次有多个

对象: 1. 文件

  1. 文件夹

  2. 用户名

编辑Linux命令行

Tab 为补全快捷键

  • 补全的对象是命令
  1. 内部命令
  2. echo $PATH下的命令可以补全

如果命令唯一,直接补全

如果命令不唯一,会显示全部

  • 补全的对象是文件名
  1. 规定路径下的可以补全
  2. 指明补全对象

\ 为强制换行快捷键 一般用于写脚本,保证界面美观且容易排错

[root@localhost /]# l\   强制换行
> 
​

Ctrl+U:清空至行首

Ctrl+K:清空至行尾

Ctrl+L:清屏(强制将界面内容移动到最顶格)

Ctrl+C:取消本次命令编辑

上下键:回看执行过的命令

Ctrl+R:搜索执行过的命令

Ctrl+S:锁屏

Ctrl+Q:解锁

Ctrl+A:光标移动到最前端

End:光标移动到最末尾

“;”:执行第一命令后再执行第二命令

man命令

[root@localhost /]# man 1 file
​
FILE(1)                             General Commands Manual                            FILE(1)
​
NAME
       file - 确定文件类型
​
总览
       file [ -bcnsvzL ] [ -f 命名文件 ] [ -m 幻数文件 ] file ...
​
描述
       本手册页说明了3.27版本  file  命令的使用.   File  命令试图检查每个参数以判定文件的类型.
       检查共有三组,按如下顺序进行:文件系统检查,幻数检查,以及语言检查.             文件系统
       检查成功则输出文件类型.
​
       输出的类型一般会包含以下的词中的一个:   text   (文件中仅有  ASCII  字符,可以用  ASCII
       终端读此文件,以保证内容的可靠性), executable (文件中保存的是程序编译后的结果,一些UNIX
       内核或其它内核能理解这类文件),        或者        data        表示所有其它类型文件(data
       一般为二进制文件或者不可打印的).
       但是有的常用的文件格式(如core文件、tar包),虽然也包含二进制数据,      却不属于这一类
       如果要修改 /usr/share/magic 或者程序本身, preserve these keywords  .   当文件为``text''
       类型时,认为此文件为可读文件.    不要象在Berkeley环境中那样做  -  要把``shell  commands
       text''改为``shell script''.
​
       
       ....
​

Linux目录结构

目录结构.png

  1. bin:普通用户存放二进制文件
  2. sbin:超级管理员使用的二进制文件
  3. etc:存放配置文件
  4. mnt:挂载点
  5. opt:存放第三方软件(外部命令)
  6. root:超级管理员的家目录

家目录:系统每一个用户都会有一个自己的家目录

普通用户的家目录

举例:

lisi的家目录 /home/lisi/

zhangsan的家目录 /home/zhangsan/

超级管理员的家目录 /root

  1. var/log:存放日志文件

  2. boot:存放开机启动文件

    1. dev:存放硬件设备,如硬盘,光驱等
  3. lib/lib64:库文件,存放通用依赖文件

  4. home:存放普通用户的家目录

  5. proc:反应内存的使用情况

[root@localhost /]# ls /proc
1     1400  1534  299  399   44    567  727  77         devices      loadavg       swaps
10    1404  1551  3    400   4557  58   728  770        diskstats    locks         sys
11    1410  16    30   41    4700  595  733  776        dma          mdstat        sysrq-trigger
111   1411  1649  300  411   4844  596  734  777        driver       meminfo       sysvipc
1143  1419  1657  308  412   4861  597  735  8          execdomains  misc          timer_list
1145  1424  17    309  42    4878  606  736  805        fb           modules       timer_stats
1146  1427  18    31   425   4905  633  737  818        filesystems  mounts        tty
1152  1439  2     310  426   4908  656  738  821        fs           mpt           uptime
1157  1448  20    311  427   5     657  739  834        interrupts   mtrr          version
1158  1467  2063  312  4279  507   658  741  9          iomem        net           vmallocinfo
1160  1483  21    313  428   5093  659  745  acpi       ioports      pagetypeinfo  vmstat
12    1489  22    314  429   5118  660  746  asound     irq          partitions    zoneinfo
1296  1493  23    317  43    52    661  749  buddyinfo  kallsyms     sched_debug
13    1495  235   32   430   525   662  750  bus        kcore        schedstat
1301  15    25    33   431   532   663  756  cgroups    keys         scsi
1323  1504  27    34   432   533   7    760  cmdline    key-users    self
1327  1508  28    35   433   54    702  765  consoles   kmsg         slabinfo
1328  1514  29    356  434   541   704  766  cpuinfo    kpagecount   softirqs
1385  1520  298   359  435   56    706  769  crypto     kpageflags   stat


7. usr:备份根(小根)

小根目录
[root@localhost /]# cd /usr
[root@localhost usr]# ls
bin  etc  games  include  lib  lib64  libexec  local  sbin  share  src  tmp
​
根目录
[root@localhost usr]# cd /
[root@localhost /]# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr
​
小根目录与根目录相似

Linux操作

路径的作用:描述这个文件在系统中的位置

/mnt/

/opt/

/opt/123

第一个“/”为根目录,第二个“/”为分隔符

绝对路径:从根开始描述文件的位置

相对路径:从当前文件夹开始描述文件的位置

cd的用法(只能对文件夹操作)

".":表示当前文件夹(cd .表示前往当前文件夹)

"..":表示上级文件夹(cd ..表示前往上级文件夹)

"~":当前用户的家目录(cd ~前往当前用户家目录)

"-":回到上一次所在的目录

list(ls)的用法

ls [选项] ...[参数]...

-a:显示包括.和..隐藏文件

[root@localhost /]# ls -a
.   bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
..  boot  etc  lib   media  opt  root  sbin  sys  usr
​

-A:显示除.及..隐藏文件

[root@localhost /]# ls -A
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr
​

-l:使用长格式显示文件

[root@localhost /]# ls -l
总用量 28
lrwxrwxrwx.   1 root root    7 3  26 19:30 bin -> usr/bin
dr-xr-xr-x.   5 root root 4096 3  26 19:35 boot
drwxr-xr-x.  20 root root 3360 3  27 08:28 dev
drwxr-xr-x. 138 root root 8192 3  27 08:28 etc
drwxr-xr-x.   3 root root   20 3  26 19:35 home
lrwxrwxrwx.   1 root root    7 3  26 19:30 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 3  26 19:30 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6 11  5 2016 media
drwxr-xr-x.   2 root root    6 11  5 2016 mnt
drwxr-xr-x.   3 root root   16 3  26 19:33 opt
dr-xr-xr-x. 174 root root    0 3  27 08:28 proc
dr-xr-x---.  14 root root 4096 3  27 08:32 root
drwxr-xr-x.  40 root root 1180 3  27 08:28 run
lrwxrwxrwx.   1 root root    8 3  26 19:30 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6 11  5 2016 srv
dr-xr-xr-x.  13 root root    0 3  27 08:28 sys
drwxrwxrwt.  23 root root 4096 3  27 09:12 tmp
drwxr-xr-x.  13 root root  155 3  26 19:30 usr
drwxr-xr-x.  21 root root 4096 3  26 19:37 var

-R:递归显示子目录

[root@localhost /]# ls -R test
test:
123
​
test/123:
​

-d:显示目录,但不显示内容