由于常用的linux操作系统是centos7,记录一下centos7下常用的linux命令,便于使用时快速查询。
- 基本命令
cd ls pwd clear cp mv rm rmdir mkdir touch cat more less man
su export which file whatis date service bc cal hostname echo
- 搜索类命令
grep which whereis locate find
grep [-acinv] [--color=auto] '查找字符串' filename
grep 'hello' -r /etc/ #查找/etc/下包含内容'hello'的文件
which #用来查找系统PATH目录下的可执行文件,名称严格匹配
which gcc
whereis #用来查找二进制文件、源代码文件和帮助命令文件,其通过文件索引数据库而非PATH查找,
#查找过程中名称严格匹配,可以通过updatedb命令来更新数据库
whereis passwd #在数据库中查找passwd文件
locate #也通过文件索引数据库来查找,但是查找范围必whereis大很多,支持模糊匹配和正则匹配,
#可以通过updatedb命令来更新数据库
locate passwd #在数据库中查找passwd文件
find [PATH] [option] [action] #功能强大的查找命令,是通过对磁盘进行查找的,查找最准确但是速度比较慢
find /etc -name passwd #严格匹配
find /etc -name *passwd* #正则匹配
find /etc -mtime 3 #查找3天之前的“一天之内”被更改过的文件
find /etc -mtime +3 #查找在3天之前(不含第3天本身)被更改过的文件
find /etc -mtime -3 #查找在3天之内(含第3天本身)被更改过的文件
find /etc -user laj #查找owner为laj的文件
find /etc -group laj #查找group为laj的文件
find /etc -size +50k #查找大于50k的文件
find /etc -size -50k #查找小于50k的文件
find /etc -perm 0755 #查找权限刚好为0755的文件
find /etc -perm +0755 #查找权限上限为0755的文件
find /etc -perm -0755 #查找权限下限为0755的文件
find /etc xxx -exec rm {} \; #查找/etc/下名为xxx的文件并删除
- 管道类命令
cut grep sort wc uniq sed awk diff
选取类:cut、grep等 以行为单位进行处理
echo $PATH | cut -d ':' -f 3,5 #将PATH按':'切割后选择第三段和第五段
export | cut -c 12- #选取export输出中每行第12个字符以后的内容
last | grep 'root' #在last输出中选取包含'root'内容的行
last | grep 'root' |cut -d ' ' -f1 #在last输出中选取包含'root'内容的行,然后按空格切割后选取第一个字段
排序类:sort、wc 、uniq等
cat /etc/passwd | sort -t ':' k 3 #将/etc/passwd的内容每行按':'分隔后的第三列排序
last | cut -d ' ' -f 1 | sort #将last命令中出现的用户进行排序
last | cut -d ' ' -f 1 | sort | uniq -c #统计last命令中用户出现的次数
cat /etc/man.confg | wc #统计man.confg文件的行数、单词和字符数
last | grep [a-zA-Z] | grep -v 'wtmp' | wc -l #统计这个月份登陆系统的总人次
字符转换命令:tr、col、join、paste、expand等
last | tr '[a-z]' '[A-Z]' #将last输出信息中所有的小写字符变成大写字符
cat /etc/passwd | tr -d ':' #将/etc/passwd输出信息中的':'删除
cat /etc/man.config | col -x | cat -A | more #将[tab]键替换成空格键
join -t ':' /etc/passwd /etc/shadow #将两个文件的第一字段相同者整合成一行
paste /etc/passwd /etc/shadow #将两行贴在一起,中间以[tab]键隔开
参数替换:xargs
cut -d ':' -f 1 /etc/passwd | head -n 3 | xargs finger #用finger命令将passwd文件中的前三个账号内容显示出来
find / -name hello | xargs ls -l #ls命令不是管道命令,本来不能直接用的,但是可以结合xargs命令进行使用
数据处理:diff、printf、awk、sed
diff file1 file2 #文件比较工具
printf '%s\t%s\t%s\t%s\t \n' $(cat file) #格式化输出文件内容
awk:使用方法:awk '条件类型1 {动作1} 条件类型2 {动作2} ...' filename
last -n 5 | awk '{print $1 "\t" $3}'#输出last命令结果中前五行数据的第1列和第3列
last -n 5 | awk '{print $1 "\t lines: " NR "\t columes: " NF}' #NR表示当前处理行是第几行,NF表示每一行拥有的字段总数
cat /etc/passwd | awk '{FS=":"} $3 < 10 {print $1 "\t " $3}' #FS表示分隔字符,默认是空格键
sed:可以进行替换、删除、新增、序选取特定行等操作
nl /etc/passwd | sed '2,5d' #删除第2~5行
nl /etc/passwd | sed '3,$d' #删除第3至最后一行
nl /etc/passwd | sed '2a drink tea' #在第2行后面加上drink tea
nl /etc/passwd | sed '2i drink tea' #在第2行前面加上drink tea
nl /etc/passwd | sed '2,5c No 2~5 number' #将第2~5行的内容替换成No 2~5number
ifconfig eth0 | grep "inet" | sed 's/^.inet//g' | sed 's/netmask.*$//g' #获取eth0对应的ip地址
- 网络类命令
ifconfig netstat ping telnet ssh ftp wget curl scp
ifconfig #查看ip地址
netstat #查看网络状态
ping #查看ip是否能连通
telnet #查看端口是否开放
ssh #远程登录,与win中的mstsc类似
ftp #ftp ip后输入用户名和密码进行登录
wget #wget url
curl #curl url
scp /etc/passwd root@192.168.1.1:/etc #将本地文件拷贝至远端
scp root@192.168.1.1:/etc/passwd /etc/ #将远端文件拷贝至本地
- 系统相关类
uname ps free top kill systemctl iostat
uname -a #查看linux内核版本
cat /etc/redhat-release #查看操作系统版本
ps -ef | grep pid #查看某个pid的进程状态
netstat -nap | grep pid #查看某个pid的网络状态
free #查看内存使用情况
top #动态查看系统运行状态
kill -9 pid #删除进程
iostat #动态监视系统磁盘状态
- 权限类命令
chown chgrp chmod umask
chown -R test:test folder
chmod a+x file
chmod 777 file
- 磁盘分区、格式化和挂载
fdisk /dev/xvdb
mkfs -t xfs /dev/xvdb1
mount /dev/xvdb1 /data
mount -a #注意:这个是临时挂载,若需要永久挂载,则需要在/etc/fstab文件中配置
- 软件安装
rpm:RedHat Package Manager
a. 安装
rpm -ihv package_name
b. 查询
-qa #列出所有已安装的软件
-qi #列出软件的安装信息
-ql #列出该软件所有的问题和目录所在完整文件名
-qc #列出该软件的所有配置文件
-qR #列出与该软件有关的依赖软件所含的文件
c. 升级
-Uhv #若软件没有安装,则直接安装,若已安装,则更新
-Fhv #若软件没有安装,则不安装,若已安装,则更新
d. 卸载
rpm -e package_name
yum:Yellowdog Updater Modified
a. 安装
yum -y install package_name
b. 查询
yum list installed #列出已安装的软件
yum list available #列出可用的软件
yum list installed redis* #在已安装的软件包中查询redis
yum list redis* #在所有的软件源中查询redis
yum list updates #列出可以更新的软件
yum info redis #查看redis信息
c. 升级
yum update package_name #升级软件包
d. 卸载
yum remove package_name #卸载软件包
- 查看CPU、内存等相关信息
CPU相关:
cat /proc/cpuinfo #查看cpu全部信息
cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l #查看物理CPU个数
cat /proc/cpuinfo | grep "cpu cores" | uniq #查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo | grep "processor" | wc -l #查看逻辑CPU的个数
cat /proc/cpuinfo | grep name | cut -f2 -d : | uniq -c #查看CPU信息(型号)
#总核数=物理CPU个数*每颗物理CPU的核数
#总逻辑CPU数=物理CPU个数*每颗物理CPU的核数*超线程数
内存相关:
cat /proc/meminfo #查看内存全部信息
grep MemTotal /proc/meminfo #查看内存总量
grep MemFree /proc/meminfo #查看内存总量
- 压缩相关类命令
gzip bzip2 tar
gzip和bzip2:只能对文件进行压缩,不能对文件夹进行压缩
gzip /etc/passwd #生成passwd.gz并且passwd文件消失
gzip -c /etc/passwd > passwd.gz #生成passwd.gz并且保留passwd文件
gzip -d /etc/passwd.gz #由passwd.gz解压得到passwd文件
bzip2命令调用格式基本上与gzip一致,但是性能上较gzip更优。zcat和bzcat分别用来查看gzip和bzip2压缩后的文件。
tar:tar只能用来打包文件和文件夹, 但是不能用来压缩,因此可以与gzip和bzip2完美结合
tar -cv -f filename.tar.bz2 要被压缩的文件或目录名称 #压缩
tar -jtv -f filename.tar.bz2 #查询
tar -jxv -f filename.bz2 -C 欲解压缩的目录 #解压
bzip2命令对应的参数是-j,后缀名是.tar.bz2;gzip命令对应的参数是-z,后缀名是.tar.gz。
window中的rar软件与gzip、bzip2、tar之间的压缩解压缩关系:
rar能解开gzip、bzip2或tar单独压缩或者打包压缩后的文件,gzip、bzip2无法解压rar压缩之后的文件,需要使用rar命令:rar x xxx.rar
- 其他
两次tab:命令提示
ctrl+u:清空当前行输入
ctrl+c:停止命令执行
ctrl+d:相当于exit
dd:dd if=/dev/zero of=data.txt bs=1M count=1