Linux的优势
基础命令行头
[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软件提供;外部命令需手动安装
命令优先级
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
命令行格式
命令字 空格 [选项] 空格 [参数]
解释命令字 选项 参数各自的意思及具体使用方法
“;”可以隔开命令,执行多个命令
编辑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 如果文件存在 不会破坏已有文件变为刷新时间
每个文件有三个时间戳:
格式为: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