Linux基础命令

287 阅读4分钟

Linux的优势

  1. 一切都是一个文件。(存储形式)
  2. 系统中拥有小型,单一用途的程序。
  3. 当遇到复杂任务,通过不同功能用途的程序组合起来完成。(大化小,小化了)
  4. 避免令人困惑的用户界面。(统统用命令)
  5. 连配置文件都存储在文本中,方便增、删、改、查。
  6. 不在乎后缀名,文件名与文件类型不相关。(不是用文件后缀来区分类型)

基础命令行头

[root@localhost ~]# 
1. root:表示当前用户
2. localhost:表示主机名
3. ~:表示家目录
4. #:表示当前用户是管理员用户
5. $:普通用户

shell

shell是Linux系统中后台运行的一种特殊程序也可以理解成一种特殊的软件,提供了用户与内核进行交互操作的一种接口。
用户使用应用程序发布指令
shell去通知操作系统需要进行什么样的操作
内核相当于操作系统去指挥硬件,硬件才能工作,否则无法交互。
shell内核具有调动硬件的功能

不同的shell环境

bash是linux里面默认的shell程序位于/bin/bash;csh、ksh语言不同比如中文英文都是交流的语言

 [root@localhost ~]# echo $SHELL            //显示当前shell
 /bin/bash
 [root@localhost ~]# cat /etc/shells       //显示当前系统所有使用的shell
 /bin/sh   
 /bin/bash
 /sbin/nologin       ###用户无法登录
 /usr/bin/sh
 /usr/bin/bash
 /usr/sbin/nologin
 /bin/tcsh
 /bin/csh
 [root@localhost mnt]# sh                       切换shell环境
 sh-4.2# 
 [root@localhost mnt]# pstree                    查看使用过的shell环境
 ├─sshd───sshd───bash───csh───bash───tcsh───bash───pstree
         ├─systemd-journal
         ├─systemd-logind
         ├─systemd-udevd
         ├─tuned───4*[{tuned}]
         ├─upowerd───2*[{upowerd}]
         ├─vmtoolsd───{vmtoolsd}
         ├─wpa_supplicant
         └─xdg-permission-───2*[{xdg-permission-}]

内部命令由bash软件提供;外部命令需手动安装

命令优先级

  1. 绝对路径命令
  2. alias修改命令
  3. 内部命令
  4. hash
  5. 外部命令

shell与内、外部命令

1、shell 分为内部命令 和外部命令,一般先执行内部命令,hash 再执行外部命令(别名最大)

内部命令外部命令
集成于Shell解释器程序内部的一些特殊指令,也称为内建(Built-in)指令Linux系统中能够完成特点功能的脚本文件或二进制程序
属于shell的一部分属于Shell解释器程序之外的命令
没有单独对应的系统文件每个外部命令对应了系统的一个文件
自动载入内存,可以直接使用必须知道其对应的文件位置,由Shell加载后才能执行

2、help查看内部命令

[root@localhost ~]# help 
GNU bash, 版本 4.2.46(2)-release (x86_64-redhat-linux-gnu)
这些 shell 命令是内部定义的。请输入 'help' 以获取一个列表.
输入 'help 名称' 以得到有关函数'名称'的更多信息.
使用 'info bash' 来获得关于 shell 的更多一般性信息
使用 'man -k''info' 来获取不在列表中的命令的更多信息.

3、可以使用type命令区分内外命令

[root@localhost ~]# type cd 
 cd 是 shell 内嵌                        //内嵌代表内部命令
 [root@localhost ~]# type -a ls
 ls 是 `ls --color=auto' 的别名          //别名代表外部命令  
 ls 是 /usr/bin/ls                      //外部命令会有程序路径
 ls 是 /bin/ls
 [root@localhost ~]# whereis ls
 ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
 [root@localhost ~]# type -a echo
 echo 是 shell 内嵌
 echo 是 /usr/bin/echo
 echo 是 /bin/echo
 外部命令存放于 echo $PATH  一个一个找,找到为止,找不到就报无命令
 [root@localhost ~]# echo $PATH
 /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin
 外部命令使用过后会被记录在内存(缓存,但是会占用内存,临时性的)加快读取速度
 [root@localhost ~]# type useradd
 useradd 是 /usr/sbin/useradd
 [root@localhost ~]# useradd wu
 [root@localhost ~]# type useradd 
 useradd 已被哈希 (/usr/sbin/useradd)
 [root@localhost ~]# hash
 命中  命令                           //前面数字代表用过几次
    1    /usr/bin/grep
    1    /usr/bin/tail
    1    /usr/bin/du
    1    /usr/bin/vim
    2    /usr/sbin/useradd
    1    /usr/bin/whereis
    2    /usr/bin/cp
    1    /usr/bin/ln
    9    /usr/bin/ls
    7    /usr/bin/find
 [root@localhost ~]# hash -r
 [root@localhost ~]# hash
 hash: 哈希表为空
 [root@localhost ~]# type useradd
 useradd 是 /usr/sbin/useradd
 [root@localhost ~]# useradd wu
 useradd:用户“wu”已存在
 [root@localhost ~]# hash
 命中  命令
    1    /usr/sbin/useradd
 [root@localhost ~]# which ping
 /usr/bin/ping
 [root@localhost ~]# which help
 /usr/bin/which: no help in (/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin)
 [root@localhost ~]# whereis echo
 echo: /usr/bin/echo /usr/share/man/man1/echo.1.gz /usr/share/man/man1p/echo.1p.gz

4、开启或关闭内部命令

关闭:enable -n 内部命令

开启:enable 内部命令

5、hash

缓存空间

hash -d 加缓存里的命令 单独删除

hash -r 删除所有

将缓存的外部命令移到其他默认的目录中,无法再次使用,需要清掉hash值之后,才可以继续使用。

 [root@localhost mnt]# echo $PATH
 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root:/root/bin
 [root@localhost mnt]# mv /usr/bin/ls /usr/local//bin
 [root@localhost mnt]# ls
 -bash: /usr/bin/ls: 没有那个文件或目录
 [root@localhost mnt]# hash 
 命中  命令
    1    /usr/bin/mv
    2    /usr/bin/ls
    6    /usr/bin/cd
 [root@localhost mnt]# hash -d ls
 [root@localhost mnt]# ls
 1.5.txt  f15..txt   f1.txt  f3.txt  f5.txt
 15..txt  f15...txt  f2.txt  f4.txt
 [root@localhost mnt]# hash
 命中  命令
    1    /usr/bin/mv
    1    /usr/local/bin/ls
    6    /usr/bin/cd

命令行格式

命令字 空格  [选项] 空格 [参数]
解释命令字 选项 参数各自的意思及具体使用方法

  1. 命令字 是整条命令中最关键的一部分 唯一确定
  2. 选项 短格式选项:使用“-”符号引导 通常 一个字母 长格式选项:使用“--”符号引导 通常完整的单词
  3. 参数 命令字的处理对象 可以是文件名、目录(路径)名或用户名等内容 个数可以是零到多个

“;”可以隔开命令,执行多个命令

编辑Linux命令行的辅助操作(扩展)

快捷键功能
Tab键自动补齐(两次可以显示所有选项)
反斜杠“\”强制换行或转义
Ctrl+e 或 end 键光标移到最后
Ctrl+U清空至行首不包括当前光标处的 字符
Ctrl+K清空至行尾包括当前光标处的字符
Ctrl+a光标移到最前
Ctrl+w从当前光标删除到开头
ALT+d从当前光标删除末尾
Ctrl+l清屏
Ctrl+c取消本次命令编辑
Ctrl+s/Ctrl+q锁屏/解锁
向上下箭头回看执行过的命令

获得命令帮助

help

格式说明(扩展)

  • []——可选项
  • CAPS或<>表示可变化的数据
  • ...表示一个列表可加多个一个或多个
  • x|y|z 表示或的意思
  • -abc 是-a -b -c (有些命令选项有先后顺序) 多个 -abc 一般而言是没有顺序先后 (绝大多数是没有的,只有少数分先后

查看内部命令帮助

help+命令:用于查看内部命令帮助

查看外部命令帮助

命令--help:用于查看外部命令帮助

man

man分九个章节默认打开第一章节(menu菜单 manual手册)
区段1:用户指令
区段2:系统调用
区段3:程序库调用
区段4:设备
区段5:文件格式 shadow passwd fstab
区段6:游戏
区段7:杂项
区段8:系统指令
区段9:内核内部指令
区段n:Tcl或Tk指令

info

info也可以查看相关的帮助信息

目录操作

查看当前所在位置

pwd(print work directory)

cd

cd 目标位置 change directory

命令效果
cd cd ~若不指定目标位置,切换到当前用户的宿主目录(家目录)
cd -到前一次目录
一个点号“.”开头(自己)表示以当前的工作目录作为起点(已点开头的是)
两个点号“..”开头(上一级)表示以当前目录的上一级目录(父目录)作为起点
“~用户名”形式开头表示以指定用户的宿主目录(家目录)作为起点
"."开头文件表示隐藏文件
~ky18 (有个用户叫ky18 家目录为起点)表示以指定用户的宿主目录作为起点

ls

生产环境中慎重直接使用,文件量过大会直接死机(有的服务器上的文件是千万级别)

ls [选项] [文件或目录… ]

  • -l 已长格式显示文件和目录列表 ll=ls -l
  • -a 显示全部包括隐藏文件
  • -A 显示全部文件或隐藏文件,但不包括 . 和..
  • -d 仅列出目录本身,而不是列出目录内的文件数据
  • -h 友好显示文件大小(human,人性化)
  • -R 递归显示该目录及该目录的子目录下的所有内容
  • -t 已时间顺序显示
  • -r 倒序显示
  • --color 显示颜色
  • -S 以文件容量大小排序

颜色表示的文件类型:

  • 黑色数据文件 普通文件
  • 绿色 可执行文件
  • 黄色 块设备文件硬件设备(硬盘)
  • 红色 压缩包
  • 蓝色 文件夹
  • 天蓝色 连接文件(快捷方式)

文件类型

  • - 普通文件,包括纯文本文件、二进制文件、各种压缩文件等。
  • d 目录,类似 Windows 系统中的文件夹。directory
  • l 链接文件,类似 Windows 系统中的快捷方式。
  • b 块设备文件,就是保存大块数据的设备,比如最常见的硬盘。
  • c 字符设备文件
  • p 管道文件,其主要作用是解决多个程序同时存取一个文件所造成的错误。
  • s 套接字文件,通常用在网络数据连接,可以启动一个程序开监听用户的要求,用户可以通过套接字进行数据通信。

另外:file命令可以识别文件类型,文件后缀无法判断文件类型,文件后缀无所谓

通配符

用途:匹配文件名 (包括文件夹)

符号效果
匹配一个字符 f?.txt
*匹配所有非隐藏的字符无论多长多短,但不匹配 "." 开头的文件,即隐藏文件
{1..10}1到10
{a..z}a b c ...z

alias

功能:临时修改,设置命令带代号
格式为:alias 命令别名=‘命令’

  • unalias 别名命令 删除别名
  • \加别名命令 显示原始命令

格式为:alias myvim='vim /etc/sysconfig/network-scripts/ifcfg-ens33' ,输入后再次输入myvim命令即可打开后面引号的命令,引号必须要加
永久修改

  • 在/etc/.profile会影响全部用户
  • /root/.bashrc只影响当前用户

补充:绝对路径>别名>内部>hash>外部命令(先查找别名在查找内部命令,缓存最后外部)

du(disk usage) 查看占磁盘大小

功能:查看当前所在文件夹占用了磁盘的多少单元块。默认1单元块为4K,不满4K 按4k算,与ls的区别在于,ls是文件具体大小,而du是所占磁盘空间大小
格式为:du [选项] [文件或目录… ]

选项说明
-a统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录
-h以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果
-s(--summarize)只统计所占用空间总的(Summary)大小,而不是统计每个子目录、文件的大小
--max-depth=n (-d 1)最大显示到第n层
--exclude不计入统计

注意a s无法同时使用
df 文件夹名——可查看目录(文件夹)的空间使用情况,默认1KB为单位。

创建文件与文件夹

  • 文件名最长255个字节
  • 包括路径在内文件名称最长4095
  • 除了斜杠和NULL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用

创建文件夹 mkdir( make directories)

格式为:mkdir [选项] 目录位置 名称
mkdir -p 递归创建 没有文件夹 会自动递归创建 例:
mkdir -pv(递归并显示过程) aaa/bbb/cccc

touch

  • touch 新文件…(可为空) 文件名 不存在就是新建空文件
  • touch 如果文件存在 不会破坏已有文件变为刷新时间

每个文件有三个时间戳:

  1. access time 访问时间,atime,读取文件内容
  2. modify time 修改时间,mtime,改变文件内容(数据)
  3. change time 改变时间,ctime,元数据发生改变(元数据 文件大小 权限 )
    格式为:touch 1 2 3

硬链接与软链接

硬连接 同一个文件取不同的名或者叫多个名字,不支持文件夹,创建一个连接数加一,多路径访问
软连接 类似于windows里快捷方式,软连接,符号连接,会指向原来的文件,打开软连接等于自动输入一个绝对路径进入该程序
硬链接与软链接的区别
硬链接:创建后可以多一个入口进入这份数据,不会增加文件,inode号不变,源文件删除后也可以通过硬链接的方式进入该数据 ,当所有硬链接都删掉之后,该数据依然会保留在磁盘,如果不通过手段找回,则会随机被覆盖,具体时间随机
软连接:符号链接,相当于自动保存了一个绝对路径,生成对应的文件,拥有单独的inode号,可以更快进入该数据,但如果源文件删除,则无法打开软连接,相当于数据丢失无法访问,所有对应软连接作废
格式为ln(link):

ln [-s] 源文件或目录 链接文件或目标位置

加s是软连接 符号连接,不加s是硬链接

cp 复制

cp(copy)备份 复制
cp [选项] 源文件 目标 多个源文件只能复制到文件夹

选项说明
-f覆盖目标同名文件或目录时不进行提醒,直接强制复制
-i覆盖目标同名文件或目录时提醒用户确认
-p复制时保持源文件的权限、属主及时间标记等属性不变
-r复制目录时必须使用此选项,表示递归复制所有文件及子目录
-a完整保留所有的信息
-v可视化
-u相当于增备,差异备份(只对文件夹起作用)

如果已有文件夹会生成子目录
cp命令同一命令输入三次会有三种不同结果
例:cp /etc/passwd /mnt 复制到mnt文件夹下
cp /etc/passwd /mnt 在mnt文件夹下生成子目录passwd
cp /etc/passwd /mnt 名字重复,冲突报错,是否覆盖

mv 移动改名

重命名/移动
mv [选项] … 源文件或目录… 目标文件或目录
mv 源文件 名字

  • -f:强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖;
  • -i:交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项);
  • -n:如果目标文件已经存在,则不会覆盖移动,而且不询问用户;
  • -v:显示文件或目录的移动过程

rm 删除

删除文件
rm [选项] 要删除的文件或目录

  • -f、强制
  • -i、交互
  • -r 递归(删除目录需要)
    例: rm -rf /data/* 递归删除data下所有文件

find 查找

命令的特点:

  • 精确查找
  • 实时查找
  • 支持查找条件多

格式为 find [查找路径] [OPTION]... [查找条件] [处理动作]
按名称查|-name|根据目标文件的名称进行查找,允许使用通配符-iname文件名称不区分大小写

按文件大小查找 | -size | 根据目标文件的大小进行查找 一般使用“+”、“-”号设置超过或小于指定的大小作为查找条件 常用的容量单位包括 kB(注意 k 是小写)、MB、GB

按文件属主查找 | -user | 根据文件是否属于目标用户进行查找

按文件类型查找 | -type | 根据文件的类型进行查找 文件类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等

按inode号 | -inum | 根据文件inode号查找

按权限查找 | -perm | 按文件权限查找

linux目录

一级目录功能(作用)
/bin/存放系统命令,普通用户和 root 都可以执行。放在 /bin 下的命令在单用户模式下也可以执行
/boot/系统启动目录,保存与系统启动相关的文件,如内核文件和启动引导程序(grub)文件等
/dev/设备文件保存位置
/etc/配置文件保存位置。系统内所有采用默认安装方式(rpm 安装)的服务配置文件全部保存在此目录中,如用户信息、服务的启动脚本、常用服务的配置文件等
/home/普通用户的主目录(也称为家目录)。在创建用户时,每个用户要有一个默认登录和保存自己数据的位置,就是用户的主目录,所有普通用户的主目录是在 /home/ 下建立一个和用户名相同的目录。如用户 liming 的主目录就是 /home/liming
/lib/系统调用的函数库保存位置(c语言 写的一些固定格式的代码,方便调用)
/media/挂载目录。系统建议用来挂载媒体设备,如软盘和光盘
/mnt/挂载目录。早期 Linux 中只有这一个挂载目录,并没有细分。系统建议这个目录用来挂载额外的设备,如 U 盘、移动硬盘和其他操作系统的分区
/misc/挂载目录。系统建议用来挂载 NFS 服务的共享目录。虽然系统准备了三个默认挂载目录 /media/、/mnt/、/misc/,但是到底在哪个目录中挂载什么设备可以由管理员自己决定。例如,笔者在接触 Linux 的时候,默认挂载目录只有 /mnt/,所以养成了在 /mnt/ 下建立不同目录挂载不同设备的习惯,如 /mnt/cdrom/ 挂载光盘、/mnt/usb/ 挂载 U 盘,都是可以的
/opt/第三方安装的软件保存位置。这个目录是放置和安装其他软件的位置,手工安装的源码包软件都可以安装到这个目录中。不过笔者还是习惯把软件放到 /usr/local/ 目录中,也就是说,/usr/local/ 目录也可以用来安装软件
/root/root 的主目录。普通用户主目录在 /home/ 下,root 主目录直接在“/”下
/sbin/保存与系统环境设置相关的命令,只有 root 可以使用这些命令进行系统环境设置,但也有些命令可以允许普通用户查看
/srv/服务数据目录。一些系统服务启动之后,可以在这个目录中保存所需要的数据
/tmp/临时目录。系统存放临时文件的目录,在该目录下,所有用户都可以访问和写入。建议此目录中不能保存重要数据,最好每次开机都把该目录清空

cat 显示命令

选项效果
-n显示行号包括空行
-b跳过空白行编号
-s将所有的连续的多个空行替换为一个空行(压缩成一个空行)
-A显示隐藏字符

例:cat /etc/centos-release 查看内核版本
cat /etc/sysconfig/network-scripts/ifcfg-ens33 查看网络配置
tac:倒叙显示文本命令

显示文本前后内容

head

可以显示文件或标准输入的前面行,默认为十行
格式为 :head -n 3 /etc/passwd

tail

tail 和head 相反,查看文件或标准输入的倒数行
-f 实时查看文件后十行
格式:tail -n 10 /etc/passwd
tail -f /var/log

wc 统计列数

  • -l:统计行数
  • -w:统计单词个数
  • -c:统计字节数
    一般配合管道符链接
    格式为:wc -w /etc/passwd |grep '^a'

grep 查找筛选

grep [选项]… 查找条件 目标文件
选项

  • -i:查找时忽略大小写
  • -v:反向查找,输出与查找条件不相符的行
  • -o 只显示匹配项
  • -f 对比两个文件的相同行
  • -c 匹配的行数([root@localhost ky15]# grep -c root passwd 2)

基本格式

  • 要查找的字符串以双引号括起来单引号也可以
  • “^……”表示以……开头,“……$”表示以……结尾
  • “^$”表示空行
    例: grep -c root /etc/passwd 统计匹配的行数

压缩 解压缩

gzip bzip2

gzip和bzip都是压缩软件,比如windows里的好压和360 压缩或微软自带的
gzip [-9] 文件名… bzip2 [-9] 文件名...
9代表压缩比率,9最大1最小
gzip的压缩率 要高于bzip2

tar归档

tape archive 磁带归档
tar [选项] ... 归档文件名 源文件或目录

  • -c:创建(Create).tar 格式的包文件
  • -x:解开.tar 格式的包文件
  • -C:解压时指定释放的目标文件夹
  • -f:表示使用归档文件(一般都要带上表示使用tar)
  • -p:打包时保留文件及目录的权限
  • -P:打包时保留文件及目录的绝对径
  • -t:列表查看包内的文件(要和f一起使用)
  • -v:输出详细信息(Verbose)
  • -j:调用 bzip2 程序进行压缩或解压
  • -z:调用 gzip 程序进行压缩或解压
    选项使用时有先后要求,如果-需要f开头,不输入-则随意
    例:tar -zcvf passwd.tar.gz /etc/passwd
    解压:tar -xzf passwd.tar.gz /mnt/passwd