Linux系列——常用命令与shell函数总结

简介: Linux系列——常用命令与shell函数总结

前言

Linux系统:CentOS6.7


很多命令可以在linux通用,但是有些可能有版本限制,如果使用这些命令没有找到的话,可以尝试搜索其他文章


查看linux系统版本  cat /etc/redhat-release


一、主机相关命令

查看主机名:hostname   或者  export


查看系统版本:cat /etc/redhat-release


修改主机名:vi /etc/sysconfig/network


查看ip地址:ifconfig (CentOS7用 ip a)


修改ip地址:vi /etc/sysconfig/network-scripts/ifcfg-eth0         hostnamectl set-hostname 主机名 (即为临时和永久生效)


修改ip与主机名的映射关系:vi /etc/hosts


关闭iptables并设置其开机启动/不启动:service iptables stop


重启:reboot


关机:halt


查看当前服务器中的java进程:jps类似于ps -ef | grep java


结束进程 :kill -9 进程号(进程号可以根据ps -ef | grep ...获取到)



CentOS7:


查看启动项:systemctl list-unit-files


过滤查看启动项:systemctl list-unit-files | grep enable


过滤查看某服务名:systemctl list-unit-files | grep zabbix


查看所有建立的TCP连接: netstat -antp


查看监听(Listen)的端口: netstat -lntp


查看所有运行中的服务的详细信息 :netstat -tulpn


显示所有进程:ps -ef


显示使用内存的进程:ps -aux


查看内存使用说明 (shift+m 按照排名):top


二、防火墙

CentOS7:


systemctl stop firewalld  临时关闭


systemctl disable firewalld  然后reboot 永久关闭


systemctl status  firewalld  查看防火墙状态


service firewalld status  查看防火墙状态


CentOS6:


查看防火墙状态:service iptables status


查看防火墙状态:/etc/init.d/iptables status


查看防火墙是否开机启动:chkconfig iptables –list



设置防火墙开机启动:chkconfig iptables on


设置防火墙开机不启动:chkconfig iptables off



关闭防火墙指令:/etc/init.d/iptables stop


永久关闭防火墙指令:chkconfig iptables off



开启防火墙指令:/etc/init.d/iptables start


永久开启防火墙指令:chkconfig iptables on


重启服务:service iptables restart


三、修改开机等待时间

vi /boot/grub/menu.lst


四、启动Linux默认进入命令行模式

修改/etc/inittab,


将id:5:initdefault:修改为id:3:initdefault:


设置后台服务的自启配置


chkconfig   查看所有服务器自启配置



开源的,安全的系统,通常使用命令行界面,


命令名称 --help:列出该命令的使用方式


man 命令名称:列出该命令的使用方式


cd 目录:切换到某个目录下


cd ..:切换到父目录


pwd:查看当前目录(print working directory)


五、文件查询命令

find / -name my*:在根目录(/)下查找以my开头的文件


whereis :查询某个命令所在目录


grep:查询某个字符串所在行(列出本行所有内容)


六、文件操作命令

ls :列出所有目录和文件的名字


ls -l:竖着列出所有文件详细信息


ll:ls -l 的缩写


cp:复制文件


touch:创建文件


mkdir:创建文件夹


rm:删除文件


rmdir:删除空的文件夹


rm -r:递归删除文件,询问


rm -rf:直接删除文件,不询问(f:force)


rm命令慎用,可能会毁掉一个公司!解决方案mv 文件(夹) /tmp


mv:移动文件或者重命名


rename:重命名(批量命名:rename .repo.bak .repo *)


七、文件显示命令

more:分页查询(空格 下翻一页  b 上翻一页  q 退出)


less:分页查询 (空格 下翻一页  b 上翻一页  q 退出  ↑上翻一行 ↓下翻一行  /..搜索)


cat:列出文件全部内容


tac:逆序列出文件内容(按照行逆序)


head -n 文件名:列出前n行


tail -n 文件名:列出后n行(查日志用)


tail -f install.log ---->只在同一个文件跟踪(文件大于64M会产生新文件)


tail -F install.log---->按照文件名跟踪


wc:打印出多少字节,多少字符,多少行


八、文件编辑命令

vi:编辑文件,如果没有文件就创建文件并编辑


从编辑模式切换到命令模式使用“esc”键,


连续两次大写Z退出命令模式


从命令模式切换到编辑模式使用“A”、“a”、“O”、“o”、“I”、“i”键


a:即append,添加内容,在当前字符后添加文本;


A:在行末添加文本;


i:在当前字符前插入文本;


I:在行首插入文本;


o:在当前行后面插入一空行;


O:在当前行前面插入一空行;


:wq:在命令模式下,执行存盘退出操作;


:w:在命令模式下,执行存盘操作;


:w!:在命令模式下,执行强制存盘操作;


:q:在命令模式下,保存修改执行退出vi操作;


:q!:在命令模式下,不保存修改执行强制退出vi操作;


dd:删除一行


ln 3.txt 4:为3.txt创建链接4(硬链接,相当于复制了一份,删除3.txt后,4依然存在)


ln -s 3.txt 5:为3.txt创建链接5(软链接,相当于快捷方式,删除3.txt后,5不存在)


九、权限:

r是读,w是写,x是可执行


chmod +x 文件名:给文件添加可执行权限(所有用户都加)


chmod -x 文件名:给文件去掉可执行权限(所有用户都去掉)


chmod u+x 文件名:只给自己加权限


chmod g+x 文件名:给同组其他人加权限


chmod o+x 文件名:给其他人加权限


chmod 755 文件名:755转为2进制为111101101对应的为 rwxr-xr-x,从而修改所有用户的权限


十、用户:

useradd 用户名:添加用户(添加之后在home目录下面多一个用户目录)


passwd 用户名:设置密码


groupadd:添加一个组


useradd testuser -g group:在某个组下添加用户


usermod -g group testuser :修改用户所在的组


userdel:删除用户(home下的目录没有删除)


su:切换用户


exit:返回上一目录


chown 用户名 文件名:改变文件的所有者:



为用户配置sudo权限:


用root编辑 vi /etc/sudoers


在文件的如下位置为shuhao添加一行


root        ALL=(ALL)     ALL


shuhao     ALL=(ALL)     ALL


然后shuhao用户就可以用sudo来执行系统级别的指令


十一、SSH

两个linux系统远程复制文件:


scp 文件名 用户名@主机ip:目标文件夹


ssh免密登录命令:


第一步:ssh-keygen (生成密钥对,提示时回车即可)


第二步:ssh-copy-id 192.168.1. (复制公钥到目标主机)



linux与其他机器之间共享文件:


在Linux中创建ftp server,通过windows往上传


开启ftp服务:service vsftpd start


停止ftp服务:service vsftpd stop


判断是否开启:ftp localhost


退出服务:bye


查询linux的IP:ifconfig


关闭linux防火墙:service iptables stop



ftp登录:anonymous


设置vsftpd开机自启动:chkconfig vsftpd on



远程管理服务器:通过ssh管理,可以加密


十二、下载命令

wget http://


十三、上传安装包到服务器

上传:如果不cd到指定目录,则上传到当前用户的主目录\root\


可以使用图形化工具,如filezilla

可以使用sftp工具:alt+p调出后,用put命令上传

下载:lcd到本地的目标路径


sftp> lcd d:/  


sftp> get /home/jdk-7u45-linux-x64.tar.gz


十四、查看网络端口

netstat -nltp


十五、yum

yum install 全部安装

yum install package1 安装指定的安装包package1

yum groupinsall group1 安装程序组group1


yum update 全部更新

yum update package1 更新指定程序包package1


yum list 显示所有已经安装和可以安装的程序包

yum list package1 显示指定程序包安装情况package1


yum clean packages 清除缓存目录下的软件包

yum clean headers 清除缓存目录下的 headers

yum clean oldheaders 清除缓存目录下旧的 headers

yum clean, yum clean all (= yum clean packages; yum clean oldheaders) 清除缓存目录下的软件包及旧的headers


十六、rpm

直接安装  rpm -ivh 包名


忽略报错 rpm -ivh --force 包名


查询已安装的rpm列表 rpm -qa | grep xx


卸载 rpm -e 包名


强制卸载 rpm -e --nodeps


十七、Shell变量定义

定义变量和常量不能有空格,用到空格时用双引号


系统变量:echo $HOME  $PWD  $SHELL  $USER


查看环境变量:echo $path


显示当前shell中所有变量:set


unset:撤销当前变量


双引号不会脱意,单引号会脱意


export 可以把变量提升为全局变量,如export JAVA_HOME=/usr/local/jdk1.7


source /etc/profile 重新把变量执行一遍



A=`ls -la`反引号:运行里面的命令,并把结果返回给变量A


A=$(ls -la)等价于反引号



$? 表示上一个命令退出的状态,true是0,false是1


$$表示当前进程编号


$0表示当前脚本名称


$n表示位置变量(n代表数字,n>=1)


$#表示变量的个数,常用语循环


$*和$@都表示参数列表


区别:当他们被双引号包含时,”$*”会将所有的参数作为一个整体,以”$1$2...$n”的形式输出所有参数;”$@”会将各个参数分开,以”$1””$2”...”$n”的形式输出所有参数


运算符:

格式:`expr m + n` 或 $((m+n))


注意:expr运算符之间要有空格


如:a=$(((2+3)*4))


for循环:

第一种


for N in 1 2 3


do


echo $N


done


或 for N in 1 2 3;do echo $N;done


或 for N in {1..3};do echo $N;done


第二种:


for ((i = 0;i <= 5;i ++))


do


echo "welcome $i times"


done


或for((i = 0;i <= 5;i ++));do echo "welcome $i times";done


While循环

第一种


while true


do


echo aaa


sleep 1


done


第二种


int=1


while((int<=3))


do


echo $int


let int++


done


Case语句

case $1 in


start)


echo "starting"


;;


stop)


echo "stoping"


;;


*)


echo "Usage: {start|stop}"


esac



read -p(提示语句)-n(字符个数)-t(等待时间)


read -p "please input your your name: " c



If判断(注意[]左右两边都要有空格)

If condition


Then


 Statements


[ elif condition


Then statements. ..]


[ else


statements ]


fi


判断语句(注意condition左右两边都要有空格)

[condition]


非空返回true,可使用$?验证(0位true,>1为false)


[ ] 空返回false



[ condition ] && echo OK || echo not OK



= 字符串比较


-lt 小于


-le 小于等于


-eq 等于


-gt 大于


-ge 大于等于


-ne 不等于



-f 判断目标是否存在并且为正规文件


-s 判断目标是否存在并且不为空


-d 判断目标是否存在并且为目录


-L 判断目标是否存在并且为符号链接


-r 判断目标是否可读


-w 判断目标是否可写


-x 判断目标可否执行



Shell自定义函数

语法


1.[ function ] funname [()]

{


action;


[ return int; ]


}


1.Function start() / function start / start()

例如:


#!/bin/bash


fSum 3 2;


function fSum()


{


 echo $1,$2;


 return $(($1+$2))


}


total=$?;


echo "第一次调用后的返回结果:"$total


fSum 5 7;


total=$?;


echo $total,$?;


return后面跟数值0-255


脚本调试

sh -vx fun.sh


或者在脚本中增加set -x


十七、高级命令行文本处理工具

cut


PATH:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/apps/jdk1.7.0_45/bin:/root/bin


echo $PATH | cut -d ':' -f 5 (将path变量取出,找到用:分割的第5个路径)


echo $PATH | cut -d ':' -f 3,5 (将path变量取出,找到第3和第5个路径)


echo $PATH | cut -d ':' -f 3-5 (将path变量取出,找到第3-5个路径)


echo $PATH | cut -d ':' -f 3- (将path变量取出,找到第3到最后一个路径)


echo $PATH | cut -d ':' -f 1-3,5 (将path变量取出,找到第1到3和第5路径)



例子:只显示/etc/passwd的用户和shell


cat /etc/passwd | cut -d ':' -f 1,7



sort


cat /etc/passwd | sort 默认首字母来排序


cat /etc/passwd | sort -t ':' -k 3  默认用:分割的第3列 首字母来排序


cat /etc/passwd | sort -t ':' -k 3n 默认用:分割的第3列 数字来排序


cat /etc/passwd | sort -t ':' -k 7 -u 去重


uniq  可以取出排序过的文件中的重复行,与sort合用


cat testfile | sort |uniq


cat testfile | sort |uniq -c 统计每行出现的次数


wc


wc -l /etc/passwd 统计行数


wc -w /etc/passwd 统计单词出现次数


wc -m /etc/passwd 统计文件的字符数


sed(物理删除、替换)


删除:d


sed '2d' testfile  删除testfile的第二行


sed '2,$d' testfile  删除testfile的第二行到末尾的所有行


sed '$d' testfile  删除testfile的最后一行


sed '/test/'d testfile  删除testfile的所有包含test的行



替换:s


sed 's/test/mytest/g' testfile   在整行范围内把test替换为mytest,如果没有g标记,则只有每行第一个匹配的test被替换成mytest;


sed -n 's/^test/mytest/p' testfile    ^表示以test开头,(-n)选项与p标志一起使用,表示只打印那些发生替换的行,也就是说,如果某一行的开头的test被替换成mytest,就打印他


sed 's/^192.168.0.1/&localhost/' testfile    &表示追加,某一行的开头的192.168.0.1被替换成192.168.0.1localhost


sed -n 's/loveloveable/\1rs/p' testfile     love被标记为第一组,所有loveable会被替换成lovers,而且被替换的行会被打印


awk


last -n 5   取出最近登录的5个记录


last -n 5 | awk '{print $1}'   取出最近登录的5个记录,并打印出第1列。$0表示所有域,$1表示第1列


cat /etc/passwd | awk -F ':' '{print $1}'   -F为指定分隔符为:


cat /etc/passwd | awk -F ':' '{print $1"\t"$7}'   "\t"表示tab键,打印出第1列和第7列


十八、可执行文件:

a.sh


#!/bin/bash


while true


do


echo "han shu hao"


sleep 1


done


十九、其他

管道:


ls -rl /etc | more:把上一个命令执行的结果交给下一个命令



wall :把字符警告所有人


wall 'date':把结果警告给所有人



重定向:


>  例如ls > a.txt


把结果放到a.txt中,覆盖原来的结果


>>  例如ls >> a.txt


把结果放到a.txt中,不覆盖原来结果


2> 例如lssss 2>a.txt


把错误结果放到a.txt中



清屏:clear



ctrl+c 或者ctrl+z来终止ping命令的执行。



挂载:mount


mkdir /mnt/cdrom 创建一个目录,用来挂载


将设备/dev/cdrom挂载到挂载点:/mnt/cdrom/中


mount -t iso9660 -o ro /dev/cdrom /mnt/cdrom/


umount /mnt/cdrom 解除挂载



统计文件或文件夹的大小


du -h /mnt/cdrom/Package


du -sh *


service network status 查看指定服务的状态


service network stop 停止指定服务(不要轻易敲)


service network start 启动指定服务


service network restart 重启指定服务


service --status-all 查看系统中所有的后台服务

相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
7天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
27 3
|
7天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
20 2
|
7天前
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
25 3
|
10天前
|
Linux
在 Linux 系统中,`find` 命令是一个强大的文件查找工具
在 Linux 系统中,`find` 命令是一个强大的文件查找工具。本文详细介绍了 `find` 命令的基本语法、常用选项和具体应用示例,帮助用户快速掌握如何根据文件名、类型、大小、修改时间等条件查找文件,并展示了如何结合逻辑运算符、正则表达式和排除特定目录等高级用法。
36 6
|
11天前
|
监控 Linux 开发者
如何在 Linux 中优雅的使用 head 命令,用来看日志简直溜的不行
`head` 命令是 Linux 系统中一个非常实用的工具,用于快速查看文件的开头部分内容。本文介绍了 `head` 命令的基本用法、高级用法、实际应用案例及注意事项,帮助用户高效处理文件和日志,提升工作效率。
22 7
|
12天前
|
监控 Linux
Linux常用命令-2
本文继续介绍Linux常用命令,涵盖目录操作、文件操作、系统信息和进程管理等类别。具体包括mkdir、rmdir、cp、mv、rm、touch、whereis、whatis、dmesg、free、date、cal、ps、kill、killall和top等命令的使用方法和常用参数。
42 7
|
7天前
|
Java Shell Windows
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
17 1
|
11天前
|
监控 Linux Perl
Linux 命令小技巧:显示文件指定行的内容
在 Linux 系统中,处理文本文件是一项常见任务。本文介绍了如何使用 head、tail、sed 和 awk 等命令快速显示文件中的指定行内容,帮助你高效处理文本文件。通过实际应用场景和案例分析,展示了这些命令在代码审查、日志分析和文本处理中的具体用途。同时,还提供了注意事项和技巧,帮助你更好地掌握这些命令。
26 4
|
10天前
|
缓存 网络协议 Linux
Linux ip命令常用操作
Linux的 `ip`命令是一个强大且灵活的网络管理工具,能够执行从基本的网络接口配置到高级的路由和VLAN管理等多种操作。通过熟练掌握这些常用操作,用户可以更加高效地管理和配置Linux系统的网络环境。无论是在日常管理还是故障排除中,`ip`命令都是必不可少的工具。
12 2
|
11天前
|
缓存 运维 监控
【运维必备知识】Linux系统平均负载与top、uptime命令详解
系统平均负载是衡量Linux服务器性能的关键指标之一。通过使用 `top`和 `uptime`命令,可以实时监控系统的负载情况,帮助运维人员及时发现并解决潜在问题。理解这些工具的输出和意义是确保系统稳定运行的基础。希望本文对Linux系统平均负载及相关命令的详细解析能帮助您更好地进行系统运维和性能优化。
31 3

热门文章

最新文章