一些常用的命令
操作者与计算机之间的接口可以称作shell(图形化shell和字符化shell)
Bash
ls
蓝色表示目录、红色表示压缩包、绿色表示可执行文件、白色表示普通文件
ls -l
第一列-分为前一个字符和后九个字符,第一个字符代表文件、链接、普通文件(c:文件设备、l:链接、d:目录文件、b:块设备)
可显示文件链接的个数,一般是第二列数字。
ls -a
Linux下以“.”字符为起始的文件都是隐藏文件,-a显示所有文件
ls -h
h->human人类便于阅读的格式显示文件大小。
ls --sort=size(ls --sort=time)
以文件大小、时间排序
cd
"." 当前目录
".." 上一级目录
"~" 用户主目录
cat、more、less、tail(查看文件的命令)
/var/log/messages (记录系统变化的日志文件)
more /var/log/messages
从头开始显示文件,当终端屏幕满时停止输出,回车进入下一页。
less /var/log/messages
less不会显示阅读百分比,其他与more一致
tail -20 /var/log/messages(显示最后20行的内容)
tail文件从后往前显示
watch
watch -n “number”
每隔number秒重新执行一次命令,进行刷新。
tail经常与watch一同使用
rm
删除文件
rm -r (递归)
删除目录
cp
拷贝文件
cp -r(递归)
拷贝目录
top
监视linux系统性能与进程。还可对进程进行操作。
(每行)
1、操作系统当前时间、操作系统启动时间,有几个用户正在登陆,平均负载。
2、当前系统的进程,进程状态
3、cpu性能信息。
4、内存信息
5、swap交换区信息。
6、当前系统进程信息
还可对进程进行操作:直接输入kill PID
q键退出
ps
专门用来查看进程信息
ps -ef
UID、PID、PPID(父进程)、TTY(哪个终端开始的)、时间、进程调用的程序路径
ps aux
与-ef现实的项目相同,但信息列不同
grep
筛选输出内容的命令
grep “要查找的字符串” 文本文件路径
egrep -v “'0.0.0.0|:::'” (命令需要带单引号)
egrep -v “'and|Address'”
egrep与grep相同是升级版。
-v参数相当于!,过滤掉(不显示)含有参数后的字符串
其中“|”链接两个需要过滤的字符串,一行命令同时过滤两个字符串
ifconfig
查看网络信息
ifconfig eth0(网卡名称)down
关闭指定网卡链接-之后ifconfig看不到了,(关闭后可修改mac地址)
macchanger -m 00:00:00:00:00:00 eth0(修改mac地址,重启后mac地址会变回初始的mac地址)
修改mac地址
ifconfig eth0 up
netstat
查看网络连接信息
netstat -pantu
查看计算机与哪些服务器产生了tcp、udp链接
/etc/resolv.conf(dns配置文件)
awk
输出指定列的内容信息(对每行内容进行分块,默认分块方式为空格)
awk “‘{print $5}’”
输出每行中第五列的内容
-F参数也可达到分块功能:awk -F : '{print $1}'
(上一行命令表示 使用awk命令用-F参数以':'进行分块,并输出第一块的内容)
cut
对每一行的内容进行分块,可指定分块字符
cut -d ':' -f 1
-d使用‘:’进行分块,-f选择第一列
sort
排序
uniq
去重(unique)
'>' 管道符号输出(覆盖)
将命令运行结果输出到其他地方,如果输出目标已存在,则会覆盖已存在的信息
ls > test.txt
将ls的运行结果输出到test.txt
'>>' 管道符号输出(附加)
将命令运行结果输出到其他地方,如果输出目标已存在,则会在已存在的信息后方附加新的信息
mount
挂载文件夹、目录
直接输入可看到系统已挂载的目录
挂载iso映像文件
dmesg
查看日志文件(等同于tail)
find
逐个子目录逐层查找文件/目录
find / -name nmap
在根目录下查找nmap
find / -iname nmap
-iname大小写不敏感,不区分大小写
find / -iname nmap -exec cp {} /tmp/{}.bak \ ;
-exec在find结束后执行命令,执行cp,但不会对隐藏目录下(隐藏文件)进行操作
\ ;作为结束符号表示命令终止
whereis
查找速度比find快,但是不全
通过包管理器安装到linux的软件包生成的文件都会在本地生成数据库,whereis只在这个数据库内搜索文件。
whereis -b nmap
-b查找二进制文件
whereis在使用之前可以用updatedb命令更新一下数据库
echo
在当前终端显示信息
echo “hello world”
wc
wc -L
计算字符串的长度
vi
不用我说了吧
vi ip
编辑指定文件
刚进入时为命令输入模式,输入冒号“:”,后接命令(大小写敏感)
:set nu
显示当前行号
:wq
保存退出
i
插入模式输入,按esc键退出
a
增加模式
dd(不确定有没有冒号)
删除整行
o
在当前光标下方增加一行
y
复制当前行
p
粘贴所复制的行
管道
"|"
">"
">>"
以上管道上文介绍过
"&"
&前后两个命令依次执行,即便第一个命令报错,后面的命令也会执行
"&&"
如果前面的命令执行成功,才会执行后面的命令
"||"
如果前面的命令执行不成功,才执行后面的命令
shell脚本
vi 1.sh
#! /bin/bash
#脚本默认的起始行,下边所有的内容都使用/bin/bash进行解释
echo -n "ip:"
#-n参数表示echo在输出字符串后不换行
read ip
#该函数读入用户输入的字符串,并定义、赋值变量ip
echo "your ip is : " $ip
#引号中间原封不同的显示。$后跟变量,输出变量的值
chmod +x 1.sh
ls -l
./1.sh
"$()"与" `` "等价(esc下方的顿号)
#!/bin/bash
for n in $(seq 9)
# "$()"与" `` "等价
#seq 9 从1到9的序列,需要有单引号,n是一个变量,从1-9逐次取值,之后去做do的内容
# '$()'表示一个变量
do
for m in $(seq $n)
do
echo -n "$m*$n=" $(($m*$n)) " "
#$(($m*$n))表示两数相乘,需要有两层括号
done
#注意代码开头不要有空格,和python不一样
echo
#输出一个换行
done
在bash脚本的数学运算中
方法一:expr $num1 operator $num2
方法二:$(( $num1 operator $num2 ))
expr操作符对照表
num1 | num2 :num1不为空且非0,返回num1;否则返回num2
num1 & num2 :num1不为空且非0,返回num1;否则返回0
num1 < num2 :num1小于num2,返回1;否则返回0
num1 <= num2 :num1小于等于num2,返回1;否则返回0
num1 > num2 :num1大于num2,返回1;否则返回0
num1 >= num2 :num1大于等于num2,返回1;否则返回0
num1 = num2 :num1等于num2,返回1;否则返回0
num1 != num2 :num1不等于num2,返回1;否则返回0
num1 + num2 :求和
num1 - num2 :求差
num1 * num2 :求积
num1 / num2 :求商
num1 % num2 :求余
#! /bin/bash
for n in $(seq 254)
do
ping 192.168.1.$n -c 1 | grep ttl | awk '{print $4}' | awk -F '{print $1}'
done
#! /bin/bash
A=`cat ip`
#定义变量A
for B in $A
#B变量每次从变量A中读取一行
do
n=`echo $B | wc -L `
#输出循环当前行的字符串长度并赋值给n
if [ $n -gt 6 ] ; then
#注意[]中括号对空格敏感,[1 -gt 0] 会报错,正确写法应为 [ 1 -gt 0 ] 即每个中括号两侧都应该有空格
#最稳妥的方式是中括号、小括号前后都带空格
# -gt 大于,如果一行大于6个字符则执行
ip=$B
else
port=$B
nmap -p$port -sV $ip | grep -v Starting | grep -v Host | grep -v PORT | grep -v Service | grep -v done >> r1
fi
done
在shell中,"-gt"或者"-lt"只能用于比较两个数字的大小,
当我们想要比较两个字符的ASCII值时,则必须使用">"或者"<",
而且需要注意,当使用"双中括号" [ [ ] ] 进行判断时,">"或者"<"不用转义即可正常使用,
当使用"单中括号" [ ] 进行判断时,">"或者"<"需要转义后才能正常使用。
评论 (0)