Linux常用命令之一

目录

 

系统命令

文件文本编辑命令

文件目录管理命令

打包压缩与搜索命令

输入输出重定向

vim编辑器与shell命令脚本


系统命令

.当前目录 ..上一层目录

/dev/null  : 在类Unix系统中,/dev/null,或称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据
/dev/zero  : 在类UNIX 操作系统中, /dev/zero 是一个特殊的文件,当你读它的时候,它会提供无限的空字符(NULL, ASCII NUL, 0x00)。

reboot
poweroff
wget
ps -aux
top 相当于windows任务管理器 
在top界面直接输入k  把进程id输入进去就可以杀掉
pidof
kill
killall
系统状态检测命令
ifconfig
uname -a 查看系统内核与系统版本
uptime 查看当前系统的负载信息
free显示当前系统的中内存的使用量信息
who 显示当前登入系统的用户
last 查看系统的登陆记录
history 显示历史执行过的命令 -c清空
sosreport用于收集系统配置及架构信息并输出诊断文档
工作目录切换命令
pwd 查看当前所处的工作目录
cd 
ls -a 查看全部文件 -l 查看文件详细信息  -d可以看目录的权限和属性信息
-h 文件或目录大小后面可跟单位 --sort按大小排序
 ll -h --sort=size
 

文件文本编辑命令

cat  用于查看文本文件 -n显示行号
 
more 查看文本文件(内容较多)

head 从头开始查看  -n 20 表示查看前20行

tail 从尾开始查看  -n 20 表示查看尾20行

tr 用于替换文本文件中的字符  配合管道 cat  文件名 | tr [a-z] [A-Z]表示将文件中的英文替换成大写字符

wc用于统计指定文本的行数-l,字数- w,字节数-c


stat 用于查看文件的具体存储信息和时间等信息 与touch

cut 用于按列提取文本字符
-d设置时间间隔 -f 设置需呀看的列数

diff 用于比较多个文本文件的差异
-brief来确认两个文件是否不同
-c 来详细比较出多个文件的差异之处

文件目录管理命令

touch 用于创建空白文件和设置文件的时间
-a 仅修改读取时间
-m 仅修改修改时间
-d 同时修改读取和修改时间


mkdir 创建空白的目录
-p 可以创建嵌套叠层的目录
eg:mkdir -p  a/c/d(第一个文件夹前面没有/,否则无效)


cp 用于复制文件或目录
-p 保留原始文件的属性
-d 若对象为“链接文件”,则保留该对象的属性
-r 递归持续复制,用于目录
-i 若目标文件存在则询问是否覆盖
-a 相当于-pdr

mv 用于剪切文件或文件重命名 
eg:
mv --help
mv b ../stx1

rm 用于删除文件或目录
如果不想反复的确认信息  -f表示强制删除
-r 表示删除目录 

dd 用于按照指定大小和个数的数据块来复制文件或转换文件
if 输入的文件名称
of 输出的文件名称
bs 设置每个块的大小
count 设置复制块的个数
eg:dd if=b of=jay

file 用于查看文件的类型 -i mime类型

打包压缩与搜索命令


1. tar
-c 创建压缩文件
-x 解开压缩文件
-t 查看压缩包内有那些内容
-z 用Gzip压缩或解压
-j 用bzip2压缩或解压
-v 显示压缩或解压的过程
-f 目标文件名
-p 保留原始的权限与属性
-P使用绝对路径来压缩
-C指解压到的目录
eg:tar -xzvf stx.tar.gz  -C a 目录前面不能加/  解压
tar -cvzf stx.tar.gz a  指将文件a 压缩成名字为stx.tar.gz
注意如果需要
指定压缩到何处  tar -cvzf  stx/a/stx.tar.gz  stx/jay
-cvzf f一定要为最后一个参数 因为后面文件名

grep  用于在文本中执行关键词搜索 并显示匹配结果 
-b 将可执行文件当做文本文件来搜索
-c 仅显示找到行数
-i 忽略大小写
-n 显示行号
-v 列出没有关键词的行数
eg :grep hello b -v  b为文件名  hello 为要查找的关键字


find 用于按照指定条件来查找文件
-name 匹配名称
-perm 匹配权限
-user 匹配所有者
-group 匹配所有组
-mtime -n +n 匹配修改内容的时间 -n 指n天以内 +n指n天以前的
-atime  -n +n 匹配访问文件的时间
-ctime -n +n 匹配修改文件权限的时间
-nouser 匹配无所有者文件
-nogroup 匹配无所有组文件
-newer f1 !f2 匹配比文件f1新但比f2旧的文件
- type 匹配文件类型 b/d/c/p/l/f 块设备 目录 字符设备 管道 链接文件 文本文件


eg:find  stx -type f
-size 匹配文件大小 +50KB超过50KB -50KB小于50KB的文件
-prune 忽略某个文件
-exec 后面可跟用于进一步处理搜索结果的命令
eg:
在/root下找出所有归属于root用户的文件并复制到/root/stx/目录下
{}代表find搜索出的每一个文件 命令结尾必须\;
eg:find /root  -user root  -exec cp -a {} /root/stx/ \; 

输入输出重定向


eg:echo "nihao">readme.txt   覆盖
echo "nihao">> readme.txt 追加
ls -l xxxxx   2> readme.txt  将错误信息覆盖到
ll > readme.txt  将正确信息覆盖到
wc -l < readme.txt  将文件作为命令一部分输入
 
管道命令符
把前一个命令原本要输出到屏幕的数据当做是后一个命令的标准输入
eg: grep "/sbin/nologin" /etc/passwd |wc -l
27

命令行通配符
* 代表匹配0到多个字符
? 代表匹配单个字符
[0-9] 代表0-9之间的单个字符
[abc]三个字符中的任意一个

常用的转移字符
反斜杠 \ 使反斜杠後面的一個变量变成单纯的字符串
单引号" 转义其中所有的变量为单纯的字符串
双引号 "" 保留其中的变量属性,不进行转义处理
反引号'' 把其中的命令执行后返回的结果
eg echo "price is $price" 
price is 5
eg  echo "price is $$price"  
price is 1539price 
1539为当前进程的id号
eg  echo "price is \$$price"
price is $5
echo ‘uname -a’

重要的环境变量
可以用alias命令创建一个属于自己的命令别名
eg alias 别名=命名
若要取消则用unalias 别名

env 查看环境变量 
su 用于切换用户身份的命令

用户自己设置变量名和系统设置变量名
workdir=/home/workdir
cd $workdir

用export 可以提升为全局变量
export workdir

vim编辑器与shell命令脚本


vi 快捷鍵
G 到文本的最后一行   G1跳到第一行
数字G 跳到指定行
eg:56G 98G
home键行首 end键 行尾

命令模式 
dd 删除(剪切)所在光标所在整行
5dd 删除(剪切)从所在光标处开始的5行
yy 复制所在光标所在整行
5yy  复制从所在光标处开始的5行
n  显示搜索命令定位到的下一个字符
N 显示搜索命令定位到的上一个字符
u 撤销上一步操作
p 将之前删除或复制过的数据贴贴到光标后面

末行模式
:w 保存
:q 退出
:q!强制退出
:set nu 显示行号
:set nonu
:命令 执行该命令
:整数 跳转到该行
:s/one/two  将当前光标所在行的第一个one替换成two
:s/one/two/g  将当前光标所在行的所有one替换成two
:%s/one/two/g  将全文的所有one替换成two
/字符串 从上到下搜索
?字符串 从下到上搜索

输入模式
a与i分别将光标定位在后一位和当前位置
o 在光标下面在创建一个空行

配置主机名称
配置网卡信息
配置yum软件仓库

编写shell脚本
编写脚本名称可以随意,但为避免被误以为是普通文件,所以把.sh加上
 vi text.sh
//#!用来告诉系统使用哪种shell解释器来执行脚本
#后面的内容为注释部分
可以执行语句
#!/bin/bash
pwd
ls -al

eg:#!/bin/bash
echo "当前脚本命令$0"
echo "用户输入了$#个参数,分别是$*"
echo "$1,$2"

bash test.sh one two stx sujun 
当前脚本命令test.sh
用户输入了4个参数,分别是one two stx sujun
one,two

$* 对应的是所有位置的参数值
$#对应总共有几个参数
$? 对应显示上一次命令执行返回值

判断用户的参数
文本测试语句
逻辑测试语句
整数值比较语句
字符串比较语句

-d 测试文件是否为目录类型
-e 测试文件是否存在
-f 判断是否为一般文件
-r 测试当前用户是否有权限读取
-w 测试当前用户是否有权限写入
-x 测试当前用户是否有权限执行

[ -d /a ] 
[root@itcast stx]# echo $?
1
[root@itcast stx]# [ -f jay ]   方括号两边必须有 空格 
[root@itcast stx]# echo $?   
0
返回0为真,返回非0为假

在shell终端中逻辑与运算符号是&& 它表示当前面的命令执行成功后才执行后面的命令
[ -e stx/jay ] && echo "exit" 
exit

在shell终端中逻辑或运算符号是|| 它表示当前面的命令执行失败后才执行后面的命令
[ -e stx/jay ] || echo "exit"  

逻辑非 ! 它表示把条件测试中的判断结果取相反值
[ ! -e stx/jay ] || echo "exit"
exit


可用的整数比较运算符
-eq 是否等于
-ne 是否不等于
-gt 是否大于
-lt 是否小于
-le 是否等于或小于
-ge 是否大于或等于

eg [root@itcast ~]# [ 10 -gt 10 ]
[root@itcast ~]# echo $?
1


free -m |grep Mem:|awk ' {print $4}' 
829

比较字符串
= 比较字符串内容是否相同
!= 比较字符串内容是否不同
-z 判断字符串内容是否为空

流程控制语句
if条件测试语句
#! /bin/bash
DIR=H/F
R=LL/STX
if [ -e $DIR ]
then
 mkdir -p $R
elif [ ! -e $DIR ]
then 
 mkdir -p $DIR
else
 echo "success"
fi

eg: 判断学生是否优秀
read -p "Enter your score (0-100):" GRADE
if [ $GRADE -ge 85 ] && [ $GRADE -lt 100 ]
then echo "你的成績优秀"
elif [ $GRADE -lt 85 ] && [ $GRADE -ge 60 ]
then echo "你的成绩合格"
else
echo "你的成绩不合格"
fi
其中 read 是用来读取用户输入信息的命令,能够把接收到的用户输入信息赋值给后面的指定变量 -p 参数用于向用户显示一定的提示信息

ping  -c 规定尝试的次数 -i定义每个数据包的发送间隔 -W定义等待超时时间
[root@itcast a]# vi ping.sh  
#!/bin/bash
ping -c 3 -i 0.2 -W 3 $1 > jay
if [ $? -eq 0 ]
then
echo "on line"
else
echo "off line"
fi

for条件循环语句

for 变量名 in 取值列表
do
  命令序列
done

eg:
#! /bin/bash
list=$(cat ~/stx/a/ip.txt)
for IP in $list
do
id $IP
ping -c 3 -i 0.2 -W 3 $IP > /dev/null
if [ $? -eq 0 ]
then
echo "online"
else
echo "off online"
fi
done

其中$(命令) 类似于转义字符中反引号'命令'  将其中命令执行并返回结果

while条件循环语句
while 条件测试操作
do 
命令序列
done


eg:
#! /bin/bash
price=$(expr $RANDOM % 1000)
TIME=0
echo "商品实际价格为0-999之间,猜猜看是多少?"
while true
do
read -p "猜输入您猜测的价格数目:" INT
let TIME++
if [ $INT -eq $price ]
then
echo "恭喜您答对了,实际价格是 $price"
echo "你总共猜测了 $TIME 次"
exit 0
elif [ $INT -gt $price ]
then
echo "太高了"
else
echo "太低了"
fi
done

注释:$RANDOM 来调用一个随机数值范围是(0~32767),将这个随机数对1000进行取余操作,并使用expr命令取得其结果。

case 条件测试语句
case 变量值 in 模式1)
命令序列
;;
模式2)
命令序列2
;;
.....
*)
默认序列
esac

eg:
#! /bin/bash
read -p "请输入一个字符,并按enter 确认: " KEY
case "$KEY" in [a-z]|[A-Z])
echo "你输入的字母是$KEY"
;; 
 [0-9])
echo "你输入的数字是$KEY"
;;
*)
echo "你输入的控件,功能"
esac 

计划任务服务程序
1.一次性计划任务 今晚11点30分开启网站服务
2.长期性计划任务  每周一的凌晨3点25分把/home/wwwroot 目录打包备份为backup.tar.gz

一次性计划任务
at 时间  
查看设置好而未执行的一次性计划任务 at -l 
删除 atrm
[root@itcast a]# at 23:23
at> echo "nihao"
at>此处按下ctrl+D 即可结束
这次方式为交互式

可通过管道
[root@itcast a]# echo "nihao"|at 23:24
job 7 at 2018-06-11 23:24

长期性计划任务 
创建和编辑 crontab -e
crontab -l 查看当前计划任务
crontab -r 删除某条计划
crontab -u 如果你是以管理员身份登录,还可以编辑他人的计划任务
时间周期设置                    任务内容设置
0~59 0~23  1~31  1~12      0~7 0和7均表示周日
分钟   小时   日    月    星期                     命令

45 23 * * 7 echo "hello,stx" > ~/stx/jay
表示在每个月的星期天的23点45分把hello,stx覆盖到~/stx/jay中
eg:
用逗号分别表示多个时间段 8,9,12表示8月9月12月
用- 表示一段连续的时间周期 例如 “日”的取值 为12-15 表示每月的12到15日
以及用除号/ 表示执行任务的间隔时间 */2 表示2分钟执行一次任务

注意:
1.如果同时包含多条计划任务命令语句,应每行仅写一条
2.在crond服务计划任务参数中 所有命令一定要用绝对路径的方式写,如果不知道绝对路径
可以用whereis查看
eg: whereis tar whereis rm

在编写计划时,可以用#号,写上注释信息
分字段必须有值 不能使空或是*号
而日和星期 字段不能同时使用 否则发生冲突 


 

猜你喜欢

转载自blog.csdn.net/qq_35240226/article/details/82973291
今日推荐