1.基础命令

早期学习的笔记,所以比较乱

# 常用命令
## echo "str"|shell变量
显示一串字符串或 shell 变量
## linux 环境变量
* $SHELL shell的类型
* $HOSTNAME 主机名
* $PATH  path路径
env命令可以查看所有的环境变量
## data
显示时间 可以按格式
## reboot
重启
## elinks [参数] 网址
一个纯文字界面的浏览器


# 查看系统状况
## ifconfig
获取网卡配置和网络状况等信息
## uptime
查看系统负载情况,输出内容分别为系统当前时间、系统已运行时间、当前在线用户以及平均负载值。
### 习惯用法:watch -n 1 uptime
每秒刷新获得一次系统负载状况
## free
用于显示当前系统中内存的使用情况
## last
用于查看所有系统的登录记录
## history
用于显示历史执行过的命令,历史执行过的命令保存在家目录的.bash_history文件中


#文件查看
## pwd
显示当前工作的目绝对路径
## more
查看纯文本文件,可以翻页
## head -n [行数] [文件名]
查看纯文本文件的前N行
## tail
查看传文本的后几行
## od [参数] [文件]
查看特殊格式的文件
### od中查看不同格式文件的参数
不加  二进制
-t a  默认字符
-t c  ASCII字符
-t o  八进制
-t d  十进制
-t x  十六进制
-t f  浮点数类型
## wc [参数] [文件]
用于统计指定文件的行数、字数、字节数
-l  只显示行数
-w  只显示单词数
-c  只显示字节数
## tr [原格式] [现格式]
用于替换文本中的字符
## diff
用于比较多个文本文件的差异
## touch
用于创建空白文件或修改修改时间
## mkdir
创建文件夹
常用:mkdir -p a/b/c/d 创建一连串文件夹
## dd
用于指定大小的精确复制文件或转换指定文件
## dd命令的参数
if  输入的文件名字
of  输出的文件名字
bs  设置每个块的大小
count  设置复制的块数
conv=ucase  小写变大写
conv=lcase  大写变小写

## mount /dev/cdrom /mnt/cdrom
光盘挂载

## yum
管理软件——软件管家

## 输入输出重定向
### 对于输出重定向符有这些情况:
符号		作用
命令 > 文件	将标准输出重定向到一个文件中(清空原有文件的数据)
命令 2> 文件	将错误输出重定向到一个文件中(清空原有文件的数据)
命令 >> 文件	将标准输出重定向到一个文件中(追加到原有内容的后面)
命令 2>> 文件	将错误准输出重定向到一个文件中(追加到原有内容的后面)
命令 >> 文件 2>$1	将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)
### 对于输入重定向有这些情况:
符号	作用
命令 < 文件	将文件作为命令的标准输入
命令 << 分界符	从标准输入中读入,直到遇见“分界符”才停止
命令 < 文件1 > 文件2	将文件1作为命令的标准输入并将标准输出到文件2

## bash解释器支持很多特殊字符的扩展
''(单引号)	转义字符生效
""(双引号)	变量依然生效
``(反引号)	执行命令语句

## alias 别名=命令
设置命令的别名
umalias 用于取消别名

## bash寻找一条命令的方法
1.如果是以绝对/相对路径输入的,直接执行
2.检查alias,判断是否是别的命令的别名
3.bash判断是内部命令还是外部命令 (type [命令])
4.通过 $PATH 变量中的路径查找此命令

## su [用户名]
切换用户,当用户登出后,会切换回原用户

ifconfig 用于获取网卡配置与网络状态等信息

uptime 命令用于查看系统的负载情况

​ 经常用”watch -n 1 uptime“来每秒刷新一次获得当前的系统负载情况,输出内容分别为系统当前时间、系统已运行时间、当前在线用户以及平均负载值。

free命令用于显示当前系统中内存的使用量情况

last命令用于查看所有系统的登入记录

history命令用于显示历史执行过的命令
历史命令会被保存到用户家目录中的”.bash_history“文件中

pwd命令用于显示当前的工作目录

more命令用于查看纯文本文件(较长的)

head命令用于查看纯文本文档的前N行
head -n 20 文件名 显示10行

tail命令用于查看纯文本文档的后N行

od命令用于对查看特殊格式的文件
参数 作用
不加 二进制
-t a 默认字符
-t c ASCII字符
-t o 八进制
-t d 十进制
-t x 十六进制
-t f 浮点数

tr命令用于转换文本文件中的字符
将tr.txt文件的内容转换成大写
cat tr.txt | tr [a-z] [A-Z]

wc命令用于统计指定文本的行数、字数、字节数,格式为“wc [参数] 文本”。
参数 作用
-l 只显示行数
-w 只显示单词数
-c 只显示字节数

diff命令用于比较显示多个文本文件的差异
touch命令用于创建空白文件与修改文件时间

mkdir -p a/b/c/d/e
创建一条龙的目录

dd命令用于指定大小的拷贝的文件或指定转换文件
参数 作用
if 输入的文件名称。
of 输出的文件名称。
bs 设置每个“块”的大小。
count 设置要拷贝“块”的个数。
conv=ucase 将字母从小写转换为大写。
conv=lcase 把字符从大写转换为小写。

mount /dev/cdrom /mnt/cdrom光盘挂载

yum -y install 软件名
安装软件

echo “Content” | mail -s “Subject” linuxprobe
使用非交互式设置用户密码,将root的密码修改为linuxprobe。

对于输出重定向符有这些情况:
符号 作用
命令 > 文件 将标准输出重定向到一个文件中(清空原有文件的数据)
命令 2> 文件 将错误输出重定向到一个文件中(清空原有文件的数据)
命令 » 文件 将标准输出重定向到一个文件中(追加到原有内容的后面)
命令 2» 文件 将错误准输出重定向到一个文件中(追加到原有内容的后面)
命令 » 文件 2>$1 将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)

对于输入重定向有这些情况:
符号 作用
命令 < 文件 将文件作为命令的标准输入
命令 « 分界符 从标准输入中读入,直到遇见“分界符”才停止
命令 < 文件1 > 文件2 将文件1作为命令的标准输入并将标准输出到文件2

bash解释器还支持很多的特殊字符扩展:
字符 作用
(反斜杠) 转义后面单个字符
‘'(单引号) 转义所有的字符
“"(双引号) 变量依然生效
``(反引号) 执行命令语句

alias命令用于设置“命令的别名”,格式为:“alias 别名=命令”。
unalias命令用于取消命令的别名,格式为:“unalias 别名”。

如同前面所讲的——在Linux中所有的一切都是文件,命令文件也不例外。那当用户执行了一条”ls“命令后发生了什么事情?
步骤一:如果是以绝对/相对路径输入的命令则直接执行(如执行/bin/ls)。
步骤二:检查是否为alias别名命令。
步骤三:由bash判断其是“内部命令”还是“外部命令”。
内部命令:属于解释器内部的
外部命令:独立于解释器外的命令文件
步骤四:通过$PATH变量中定义的路径进行命令查找。
查看$PATH变量的方法:echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin
如果您想知道某个命令是“内部命令”还是“外部命令”?执行执行“type 命令名字”,解释器就会告诉你

在Linux系统中还有许多重要的环境变量,我们可以用 env 命令查看到它们。

su 临时切换用户,退出后还是原账户

export命令用于将局部变量提升为全局变量

可以通过使用at命令或配置Crontab计划任务服务让系统自动按时工作,让日常工作更加的高效自动化,一劳永逸

vim编辑器的命令模式中常用的快捷键
命令 作用
dd 删除(剪切)光标所在整行。
5dd 删除(剪切)从光标处开始的5行。
yy 复制光标所在整行。
5yy 复制从光标处开始的5行。
p 将之前删除(dd)或复制(yy)过的数据粘贴到光标后。
/字符串 在文本中从上至下搜索该字符串。
?字符串 在文本中从下至上搜索该字符串。
n 显示搜索命令定位到的下一个字符串。
N 显示搜索命令定位到的上一个字符串。
u 撤销上一步的操作

nl带行号显示文档
head命令 显示文档开头
tail命令 显示文档结尾

which 命令的作用是,在 PATH 变量指定的路径中搜索可执行文件的所在位置。它一般用来确认系统中是否安装了指定的软件。

xargs用作替换工具,读取输入数据重新格式化后输出。
默认转单行输出
-n 多行输出 -n 3 三个单词一行
-d 自定义定界符 -d i 用i分割每行

paste 命令
paste 命令的功能正好与 cut 相反。它会添加一个或多个文本列到文件中,而不是从文件中抽取文本列。
它通过读取多个文件,然后把每个文件中的字段整合成单个文本流,输入到标准输出。

tr 命令
常被用来更改字符。我们可以把它看作是一种基于字符的查找和替换操作。换字是一种把字符从一个字母转换为另一个字母的过程。
tr 从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出。
$tr a c
asdaa
csdcc
将输入的字符大写转换为小写,可以使用如下命令:
echo ‘THIS IS SHIYANLOU!’ | tr ‘A-Z’ ‘a-z’

sort 命令
能够帮助我们对文本文件和 stdin 进行排序操作。通常,它会结合其他命令来生成所需要的输出。
-n 基于字符串的长度来排序,使用此选项允许根据数字值排序,而不是字母值
-k 指定排序关键字
-b 默认情况下,对整行进行排序,从每行的第一个字符开始。这个选项导致 sort 程序忽略每行开头的空格,从第一个非空白字符开始排序
-m 只合并多个输入文件
-r 按相反顺序排序,结果按照降序排列,而不是升序
-t 自定义分隔符,默认为制表符
列出/usr/share/目录下使用空间最多的前 10 个目录文件,可以使用如下命令:
du -s /usr/share/* | sort -nr | head -10

uniq 命令经常和 sort 命令结合在一起使用。uniq 从标准输入或单个文件名参数接受数据有序列表,默认情况下,从数据列表中删除任何重复行。

红帽RHEL7系统中网卡配置文件的前缀则为”ifcfg-eno“,例如”ifcfg-eno16777736″。
网卡的配置文件存放在“/etc/sysconfig/network-scripts”目录中。

//xrandr设置屏幕分辨率
xrandr -s 0 设置回原来分辨率
-s 指定分辨率大小
-q 显示可用分辨率

查看系统中所有可用的Shell解释器:

cat /etc/shells

查看当前的Shell解释器:

echo $SHELL

执行脚本有三种方法:
脚本文件路径:./Example.sh(需要有执行权限)
sh+脚本文件路径:sh Example.sh
source+脚本文件路径:source Example.sh

shell脚本的参数
$0 当前执行Shell脚本的程序名。
$1-9,${10},${11}…… 参数的位置变量。
$# 一共有多少个参数。
$* 所有位置变量的值。
$? 判断上一条命令是否执行成功,0为成功,非0为失败。

测试语句
细分测试语句有:文件测试、逻辑测试、整数值比较、字符串比较。
文件测试:[ 操作符 文件或目录名]
操作符 作用
-d 测试是否为目录。
-e 测试文件或目录是否存在。
-f 判断是否为文件。
-r 测试当前用户是否有权限读取。
-w 测试当前用户是否有权限写入。
-x 测试当前用户是否有权限执行。
测试/etc/fstab是否为目录:
[root@linuxprobe ~]# [ -d /etc/fstab ]
显示上一条命令的返回值,非0则为失败,即不是目录:
[root@linuxprobe ~]# echo $?
1
测试/etc/fstab是否为文件:
[root@linuxprobe ~]# [ -f /etc/fstab ]
显示上一条命令的返回值为0,即fstab是文件:
[root@linuxprobe ~]# echo $?
0

逻辑测试:[ 表达式1 ] 操作符 [ 表达式2 ]
操作符 作用
&& 逻辑的与,“而且"的意思。
|| 逻辑的或,“或者"的意思。
! 逻辑的否。

“与 ”的运用
符号&&代表逻辑上的”与“,当前面的命令执行成功才会执行后面的命令,判断/dev/cdrom设备是否存在,若存在则输出Exist:
[root@linuxprobe ~]# [ -e /dev/cdrom ] && echo “Exist”
Exist
若当前登陆的用户不是root,则输出user,执行后结果为空:
[root@linuxprobe ~]# [ $USER != root ] && echo “user”
非root用户则输出user,若是root则直接输出root:
[root@linuxprobe ~]# [ $USER != root ] && echo “user” || echo “root”
root

整数值比较:[ 整数1 操作符 整数2 ]
操作符 作用
-eq 判断是否等于
-ne 判断是否不等于
-gt 判断是否大于
-lt 判断是否小于
-le 判断是否等于或小于
-ge 判断是否大于或等于

read命令
读入值到变量
-p 指定提示
-t 指定时间
#read -p “input:” a

shell脚本

选择
if [$a -gt 100]
then
else
if

case 变量值 in
[模式1])
[模式2])
[模式3])
*)
esac

循环
for 变量名 in 取值列表
do
done

while
do
done

计划任务
at <时间> 安排一次性任务
atq或at -l 查看任务列表
at -c 序号 预览任务与设置环境
atrm 序号 删除任务
一般用at命令创建计划任务有交互式与非交互式两种方法,先来看看交换式的方法,(输完成后敲击Ctrl+d来保存退出)
直接用echo语句将要执行的命令传送给at命令:
echo “systemctl start httpd” | at 23:30

创建长期可循环的计划任务,则要用到cron服务啦,具体使用方法如下:
创建、编辑计划任务:crontab -e [-u 用户名]
查看计划任务:crontab -l [-u 用户名]
删除计划任务:crontab -r [-u 用户名]
其中在创建、编辑计划任务时有个固定的格式,请读者们一定要记住。

crontab -e 分钟 小时 日期 月份 星期 命令

字段 说明
分钟 取值为从0到59之间的整数
小时 取值为从0到23之间的任意整数
日期 取值为1到31之间的任意整数
月份 取值为1到12之间的任意整数
星期 取值为0到7之间的任意整数,其中0与7均为星期日
命令 要执行的命令或程序脚本

将数据同步写入硬盘中的指令: sync
最正确的关机指令: shutdown
重新开机: reboot
关机啰: halt ,poweroff
halt 与 poweroff 也具有相同的功能

主要常见的目录定义:
目录名称 应放置文件的内容
/boot 开机所需文件——内核,开机菜单及所需配置文件等
/dev 任何设备与接口都以文件形式存放在此目录
/etc 配置文件
/home 用户主目录
/bin 单用户维护模式下还能够被操作的命令
/lib 开机时用到的函数库及/bin与/sbin下面命令要调用的函数
/sbin 开机过程中需要的
/media 一般挂载或删除的设备
/opt 放置第三方的软件
/root 系统管理员的主文件夹
/srv 一些网络服务的数据目录
/tmp 任何人均可使用的“共享”临时目录
/proc 虚拟文件系统,例如系统内核,进程,外部设备及网络状态等
/usr/local 用户自行安装的软件
/usr/sbin 非系统开机时需要的软件/命令/脚本
/usr/share 帮助与说明文件,也可放置共享文件。
/var 主要存放经常变化的文件,如日志。
/lost+found 当文件系统发生错误时,将一些丢失的文件片段存放在这里

常见的硬件命名如下:
硬件设备 文件名称
IDE设备 /dev/hd[a-d]
SCSI/SATA/U盘 /dev/sd[a-p]
软驱 /dev/fd[0-1]
打印机 /dev/lp[0-15]
光驱 /dev/cdrom
鼠标 /dev/mouse

mount命令用于挂载文件系统,格式为:
“mount 文件系统 挂载目录”。
将光盘文件挂载:“mount /dev/cdrom /media/cdrom”。
参数 作用
-a 挂载所有在/etc/fstab中定义的文件系统
-t 指定文件系统的类型
想让开机自动挂载需要写到/etc/fstab文件中
填写格式如下:
设备文件 挂载目录 格式类型 权限选项 自检 优先级
设备文件:一般为设备的路径+名称,也可以写UUID值等。
挂载目录:指定要挂载到的目录,需挂载前创建好。
格式类型:即指定文件系统的格式,比如有ext3/ext4/xfs/iso9660/swap等。
权限选项:默认为defaults(rw,suid,dev,exec,auto,nouser,async),可指定acl或quota等。
自检:若为1则开机后进行磁盘自检,0为不自检。
优先级:若“自检”为1,则可对多块硬盘进行优先级设置。

umount命令用于撤销已经挂载的设备文件,格式为:“umount [挂载点/设备文件]”。

fdisk命令用于管理磁盘分区,格式为:“fdisk [磁盘名称]”。
管理某硬盘的分区:“fdisk /dev/sda”
参数 作用
m 查看全部可用的参数
n 添加新的分区
d 删除某个分区信息
l 列出所有可用的分区类型
t 改变某个分区的类型
p 查看分区表信息
w 保存并退出
q 不保存直接退出

ln命令能够让用户创建出两种不同类型的文件快捷方式
ln [选项] 目标
参数 作用
-s 创建"软链接”(默认是硬链接)
-f 强制创建文件或目录的链接
-i 覆盖前先询问
-v 显示创建链接的过程

其实”root“只是个名字,真正让它成为“超级用户”的是UID值
UID(即User IDentification的缩写):每个用户都有对应的UID值

超级用户UID0:root用户默认为0。
系统用户UID1-999:系统中系统服务由不同用户运行,更加安全,默认被限制登陆系统。
普通用户UID1000~:即管理员创建的用于日常工作而不能管理系统的普通用户。

帐户名称与UID保存在/etc/passwd文件中,而帐户密码则保存在/etc/shadow文件中。

文件和文件夹的X权限不同作用
文件:可执行
文件夹:可进入

SUID:让执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)
因为被给予了SGID权限,所以当用户执行了ps命令,实际有效用户组就是system啦

chmod命令用于修改文件或目录的权限,格式为:
”chmod [参数] 权限 文件或目录名称”
-f 忽略错误信息
-c 全部显示信息
-v 显示细节
-R 递归变更子目录

+s SGID权限
-g+s 给组加SGID权限
-u+s 给用户加SGID权限
这样他人在运行,或在此目录下建立文件会借用建立者权限(典型例子:password命令)
+t 目录添加SBIT(粘滞位),只可管理自己的数据而不能删除他人文件,般老师希望学生可以将作业上传到某个特定目录——但为了避免某些小破坏份子,想限制删除其他人文件的话,那就要设置SBIT位了

启动级别

这部分好像因为systemd的流行已经过时了

等级0表示:表示关机   
等级1表示:单用户模式   
等级2表示:无网络连接的多用户命令行模式   
等级3表示:有网络连接的多用户命令行模式   
等级4表示:不可用   
等级5表示:带图形界面的多用户模式   
等级6表示:重新启动

arping命令 是用于发送arp请求到一个相邻主机的工具,arping使用arp数据包,通过ping命令检查设备上的硬件地址。能够测试一个ip地址是否是在网络上已经被使用,并能够获取更多设备信息。功能类似于ping。

rm
用于删除给定的文件和目录

补充说明
rm 命令 可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。

注意:使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。所以,在删除文件之前,最好再看一下文件的内容,确定是否真要删除。rm命令可以用-i选项,这个选项在使用文件扩展名字符删除多个文件时特别有用。使用这个选项,系统会要求你逐一确定是否要删除。这时,必须输入y并按Enter键,才能删除文件。如果仅按Enter键或其他字符,文件不会被删除。

语法
rm (选项)(参数)
选项
-d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;
-f:强制删除文件或目录;
-i:删除已有文件或目录之前先询问用户;
-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;
–preserve-root:不对根目录进行递归操作;
-v:显示指令的详细执行过程。
参数
文件:指定被删除的文件列表,如果参数中含有目录,则必须加上-r或者-R选项。

实例
交互式删除当前目录下的文件test和example

rm -i test example
Remove test ?n(不删除文件test)
Remove example ?y(删除文件example)
删除当前目录下除隐含文件外的所有文件和子目录

**rm -r ***

应注意,这样做是非常危险的!

rm 命令删除文件

rm 文件1 文件2 …

rm testfile.txt
rm 命令删除目录

rm -r [目录名称]
-r 表示递归地删除目录下的所有文件和目录。
-f 表示强制删除

rm -rf testdir
rm -r testdir
删除操作前有确认提示

rm -i [文件/目录]

rm -r -i testdir
rm 忽略不存在的文件或目录

-f 选项(LCTT 译注:即 “force”)让此次操作强制执行,忽略错误提示

rm -f [文件…]
仅在某些场景下确认删除

选项 -I,可保证在删除超过 3 个文件时或递归删除时(LCTT 译注: 如删除目录)仅提示一次确认。

rm -I file1 file2 file3

附件

ll命令每列的意义