Linux常用命令及shell脚本

一、     用户管理(添加用户、切换用户、删除用户)

~                                                                                    #波浪线,代表家目录

cd ~       和           cd                                                       #快速回到家目录

id           和           whoami                                               #查看当前用户

who       和           w                                                         #查看当前已经登录的用户

whereis 文件名                                                                 #查找文件

root用户的家目录为/root

普通用户默认家目录为/home/用户目录下

添加用户:

useradd 用户名                                                                #添加用户

useradd -g 组名  用户名                                                   #添加用户,指定到某组

passwd 密码                                                                    #给添加用户设置密码、重置密码

切换用户:

su 用户名                                                                        #切换用户

su - 用户名                                                                      #切换用户,su - 会重新加载用户的环境变量

sudo                                                                              #获取超级用户权限

普通用户sudo获取超级用户权限

在           /etc/sudoers文件

找到       root ALL=(ALL) ALL

加入       用户名 ALL=(ALL) NOPASSWD:ALL

    删除用户:

userdel 用户                                                                   #删除用户

userdel -r 用户名                                                            #删除用户,也删除用户家目录

二、     组管理(添加组、修改组、删除组)

添加组:

groupadd 组名                                                             #添加组

修改组:

groupmod –n 组新名 组旧名                                          #修改组名

删除组:

groupdel 组名                                                               #删除组

三、     对目录(文件夹)的操作(增删改查)

相对路径:以当前路径为基准的路径,跟着当前路径变化;当前路径

绝对路径:以根目录为基准的路径;实际路径

cd                                                                              #进入到哪个目录里(文件夹)

mkdir                                                                         #创建文件夹

mkdir -p                                                                    #如果创建的文件夹的父目录不存在的话,自动创建父目录

命令 --help                                                                 #所有命令的帮助说明

rm         和           rmdir                                             #删除文件夹

rmdir                                                                        #删除空文件夹

rm -rf /                                                                     #强制全部删除

rm -rf /路径                                                              #强制全部删除某个目录下的文件

ls                                                                             #查看目录下的所有文件

ls -a                                                                         #查看隐藏文件

ls-la                                                                         #查看影藏文件,文件大小等详细信息

cat 文件                                                                    #查看文件内容

more 文件                                                                #分页查看文件内容

less 文件                                                                  #分页查看文件内容,和more命令的区别就在于它支持上下键卷动屏幕,按q即可退出

ln /文件绝对路径 ~/快捷方式名                                   #创建(硬连接)快捷方式(例子:ln /opt/lampp/lampp ~/lampp)(相当于复制了一遍)

ln -s /文件绝对路径 ~/快捷方式名                               #创建(软连接)快捷方式(例子:ln -s /opt/lampp/lampp ~/lampp)

du -sh                                                                    #查看当前目录的大小

du -sh *                                                                  #当前目录每个文件夹的大小

du -sh /文件路径                                                      #查看某个文件夹的大小

df -h                                                                      #查看当前磁盘已经使用了多少

df                                                                          #查看整个磁盘大小分布,还剩多少空间

df -l                                                                       #查看本机的文件系统(ls | wc -l,统计当前目录的行数;cat 文件名 | wc -l,统计当前文件的行数)

find / -name 文件                                                    #查找文件或者文件夹

grep 关键字 文件                                                     #查找文件里的关键字

grep -v 关键字 文件                                                 #过滤掉指定的信息

tail -f 日志                                                              #查看动态实时的日志

tail 文件                                                                 #默认显示文件最后十行(例:tail -5 文件,显示文件最后五行)

tail -f  日志|grep 关键字                                           #在动态实时的日志里查找关键字

nohup ./程序 &                                                      #在后台启动(例:nohup ./jmeter-server &  )

cd ..                                                                     #返回上一级目录

cd ../../                                                                 #返回上两级目录

cd -                                                                     #返回上一次所在的目录

pwd                                                                    #显示当前所在目录路径

树状结构,/                                                            #最高的根目录,*目录,相当于Windows→我的电脑

root                                                                    #root用户的个人文件夹(家目录)

bin                                                                     #存放多数用户可用的命令

boot                                                                  #存放启动文件和配置信息,系统启动时会用

dev                                                                    #存放设备文件,/dev/hdc代表光驱

etc                                                                     #存放服务配置文件

home                                                                 #其他用户的家目录

lib                                                                     #存放程序运行所需要的库文件

media                                                                #可移动设备的挂载目录

mnt                                                                   #设备挂载目录

usr                                                                   #用户程序存放目录

var                                                                   #存放经常改动的数据文件

tmp                                                                 #存放临时文件

wc -l                                                                #统计行数

wc -w                                                              #统计字数

|                                                                    #管道符,连接两条命令,把前面的命令执行结果给后面的命令处理,只要有一个失败,即不会执行

&&                                                               #and,连接两条命令,分别执行前后两条命令(例:ls && wc -l 文件名),只要有一个失败,即不会执行

权限:

例:drwxr-xr-x.(d代表文件夹;什么都没有,只显示权限代表文件)

-rw-r--r--.

-rw                                    -r--                                       r--.

所有者的权限                      同一组用户权限                      其他用户权限

   数字方式:r=4;w=2;x=1                                       rwx:4+2+1;    r-x:4+1;          rw-:4+2

chmod 777                                                    #所有者的权限                   同一组用户权限                  其他用户权限

chmod 77                                                      #同一组用户权限                其他用户权限

chmod 7                                                       #其他用户权限

chmod -R                                                      #递归(为文件夹加权限)

  文本方式:r:读;w:写;x:执行

chmod o+权限 用户名                                      #给用户加权限(o:其他;u:自己;g:组)

chmod a+权限    和           chmod +权限           #给所有用户加权限

chmod o-权限 用户名                                       #去除权限(w:写;r:读;x:执行)

chown   文件 user                                            #修改文件所有者

如果是一个文件夹的话,要加-R

chgrp     文件 group                                        #修改文件所属组

如果是一个文件夹的话,要加-R

移动:

mv 文件名 /路径                                                #把文件移到某路径下

mv 文件名 新文件名                                           #改名

mv如果后面跟的是文件名则是改名,如果跟的是路径则是移动

touch                                                               #创建一个空文件

cp 文件 /路径                                                     #复制文件到某路径下

cp -r 文件夹 /路径                                               #复制文件夹到某路径下

cp -f 文件 /路径                                                  #强制复制文件

cp -rf 文件 /路径                                                 #不论是否重复,是否是文件还是文件夹,都可以复制

alias 创建命令='实际命令'                                     #起别名,创建命令,只对当前连接有效

在/etc/profile

加上alias 创建命令='实际命令'                  #永久生效

source   文件路径                                                #重新加载文件

进程:

ps -ef|grep 进程                                                  #查看进程是否存在

ps -a或者-e                                                         #列出所有的进程

top                                                                     #查看进程、资源使用率以及服务器配置,top是动态实时的数据,ps是执行时候的状态

kill -9 pid                                                            #强制杀进程(可以跟多个pid)

killall                                                                   #杀多个进程

端口:

netstat -nlpt|grep pid                                            #根据pid去查询进程启动的端口号

netstat -nlpt|grep port                                          #查看端口号是否被占用

四、     对文件的操作(增删改查)

命令模式,默认是命令模式,输入的都是命令

编辑模式,输入的是文本

vi           和           vim                                            #修改操作文件

i                                                                            #切换到编辑模式,当前位置

o                                                                           #切换到编辑模式,下一行开始

a                                                                           #下一位置进行编辑

esc                                                                        #切换到命令模式

命令模式下:

:q                                                                          #没有修改,直接退出

:q!                                                                         #不保存退出,强制退出

:wq        和           :x                                                #保存退出

/                                                                            #从头开始查找

?                                                                          #从末尾开始查找

:set nu                                                                   #显示行号

:8                                                                          #快速到第8行

Shift+G                                                                  #快速到文件末尾

:set nonu                                                               #取消显示行号

x                                                                           #删除单个字符

dd                                                                         #删除一整行(删除几行就几dd,例如:删除16行,命令为:16dd)

u                                                                           #撤销

yy                                                                          #复制一整行(复制几行就几dd,例如:复制16行,命令为:16yy)

p                                                                           #粘贴

.                                                                            #重复前一次的操作

$                                                                           #快速把光标到行尾

0                                                                           #快速把光标到行首

:%s/字符/替换字符/g                                                #替换字符串

五、     安装软件

              rpm安装:

rpm -ivh 软件.rpm                                                    #安装,不需要再自己去加环境变量,rpm自己会添加

rpm -e 软件.rpm                                                      #卸载

rpm -qa|grep 软件                                                   #查询是否已经安装

rpm -i                                                                     #安装

rpm -U                                                                    #更新(升级)

rpm -e                                                                    #卸载

rpm -v                                                                    #显示安装信息

rpm -h                                                                    #显示安装进度

yum安装:

yum install 软件                                                        #安装

yum -y install 软件                                                    #如果有选项全部同意安装

yum list|grep 软件                                                    #从yum列表中查找你需要的软件

yum update 软件                                                     #yum升级

yum list installed |grep 软件                                     #查询是否已经安装

yum remove 软件                                                   #卸载yum安装的软件

源码安装(前提条件(安装gcc):yum -y install gcc*):

①.生成编译文件(命令:./configure --prefix=/路径)

./configure 一般安装包下面都有一个configure文件,用来生成makefile编译文件

--prefix                                                  #指定安装目录

--with-xx                                                #指定依赖文件的目录

②.make编译(命令:make)

make命令也需要安装,会根据./configure产生makefile文件编译写好的c语言程序,产生可运行的文件

③.make install(命令:make install)

make install的作用是把编译好的文件复制到指定的目录下,也就是第一步--prefix指定的目录,如果没有指定目录的话,还是在当前目录下

六、     上传下载(必须是一个文件,文件夹必须借助FTP工具)

rz                                                                          #上传

sz 文件名称                                                            #下载

FTP工具:直接拖拽,什么都可以上传下载,必须选择SFTP协议

上传下载命令安装:使用yum安装:yum –y install lrzsz

编译安装:http://blog.chinaunix.net/uid-20639775-id-154615.html

七、     开关机、重启

注销:exit(逐步注销)         logout

重启:reboot(可以不加参数)

-w                                                                        #不实际关机,用户登录信息写入/var/log/wtmp

-d                                                                         #不将用户登录信息写入/var/log/wtmp

-f                                                                          #强制重启

shutdown -r 延时分钟数 “提示信息”                      #定时重启

关机:shutdown(不能单独用,至少2个参数)

shutdown -h 延时分钟数 “提示信息”                      #定时关机

shutdown -r now                                                    #now表示立即执行

init 0                                                                       #立即关机

八、     网络的操作:修改IP地址等

ip a        和           ifconfig                                       #查看ip地址

dhclient -r                                                               #释放IP

dhclient                                                                   #获取IP

service network start/stop/restart                            #启动、停止、重启网络

九、     压缩、解压文件

tar -c                                                                      #创建

tar -x                                                                      #解压

tar -f                                                                       #使用归档文件

tar -j                                                                       #使用bzip2解压缩

tar -z                                                                      #使用gzip解压缩

tar -v                                                                       #详细输出模式

tar cvf 文件.tar 文件名                                               #打tar包

tar zcvf 压缩名称.tgz 文件名                                    #压缩成tar包

tar xvf 压缩文件  文件名                                             #解压,不管是否压缩,都能解开

zip 文件.zip 文件名                                                    #打zip包

unzip 文件.zip 文件名                                                 #压缩成zip包

gzip 文件                                                                  #压缩成gz包;只能对文件打包,打包完原来的文件就不存在了;一般在备份日志的时候用

gunzip 文件.gz 文件                                                    #解压

十、     环境变量(优先执行用户环境变量,用户环境变量没有再执行系统环境变量)

作用:让一个命令/脚本随便在哪个目录下都能用

系统环境变量:/ect/prifile

用户环境变量:~/.bashrc(只针对自己的用户生效)

export PATH=$PATH:/绝对路径

source 文件路径                                                          #重新加载

十一、   定时任务

crontab 文件的格式为“M H D m d cmd”。其中,M代表分钟(0~59),H代表小时(0~23),D代表天(1~31),m代表月(1~12),d代表一星期内的天(0~6,0为星期 天)。cmd表示要运行的程序,*代表每分钟都执行。

crontab -e                                                                  #编辑定时任务

crontab -l                                                                   #查看当前有哪些定时任务

示例:

*/1 * * * * sh /opt/lampp/test.sh                                     #表示每分钟执行一次test.sh这个脚本

*/5 * * * * sh /opt/lampp/test.sh                                     #表示每5分钟执行一次test.sh这个脚本

30 21 * * * /opt/lampp/lampp restart                             #表示每晚的21:30重启lampp

十二、   重定向

cat 文件 >文件                                                               #把一个文件的内容复制到另一个文件里;重定向多次会覆盖之前的内容

>文件                                                                           #清空文件,一般在清空日志的时候使用,不需要删除和重启,直接清空

cat 文件 >>文件                                                             #重定向多次,追加内容

十三、   shell脚本(多个命令写在一起组成shell脚本)

awk

awk '{print $2}'                                                                #取第二列的数据

ps -ef|grep 进程|grep -v grep |awk '{print $2}'                    #取第二列的值

#!/bin/bash                                                                     #指定shell解释器(linux默认的shell解释器是bash)

定义变量时,变量名和=号之间不能有空格

例1:启动脚本

count=`ps -ef|grep 进程绝对路径|grep -v grep |awk '{print $2}'|wc -l`

if[ $count -gt 0 ]

then

echo "进程 running"

else

nohup 进程绝对路径 &

例2:初版停止脚本

pid=`ps -ef|grep 进程绝对路径|grep -v grep |awk '{print $2}'`

kill -9 $pid

echo "进程 stoped"

例3:终版停止脚本

count=`ps -ef|grep 进程绝对路径|grep -v grep |awk '{print $2}'|wc -l`

pid=`ps -ef|grep 进程绝对路径|grep -v grep |awk '{print $2}'`

if[ $count -gt 0 ]

then

kill -9 $pid

echo "进程 stoped"

else

echo "进程 not running"

例4:重启脚本

停止脚本的绝对路径

启动脚本的绝对路径

十四、   其他

date +%Y%m%d%H%M%S                                               #获取当前时间

桥接模式(VMnet0网络类型): 局域网内,同一网段的可以访问。VMWare虚拟出来的操作系统就像是局域网中的一*立的主机,它可以访问网内任何一台机器。在bridged模式下, 你需要手工为虚拟系统配置IP地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主机器进行通信。同时,由于这个虚拟系统是局域网中 的一个独立的主机系统,那么就可以手工配置它的TCP/IP配置信息,以实现通过局域网的网关或路由器访问互联网。

NAT(网络地址转换)模式(VMnet8网络类型):只 允许虚拟机和本机连,其他不可以。让 虚拟系统借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网也就是说,使用NAT模式可以实现在虚拟系统里访问互联网。NAT模式下的虚 拟系统的TCP/IP配置信息是由VMnet8(NAT)虚拟网络的DHCP服务器提供的,采用NAT模式最大的优势是虚拟系统接入互联网非常简单,你不 需要进行任何其他的配置,只需要宿主机器能访问互联网即可。

Host-only模式(VMnet1网络类型): 只 允许虚拟机和本机连,其他不可以。在某些特殊的网络调试环境中,要求将真实环境和虚拟环境隔离开,这时你就可采用Host-only模式。在Host- only模式中,所有的虚拟系统是可以相互通信的,但虚拟系统和真实的网络是被隔离开的,可以利用Windows XP里面自带的Internet连接共享(实际上是一个简单的路由NAT),来让虚拟机通过主机真实的网卡进行外网的访问。虚拟系统的TCP/IP配置信 息(如IP地址网关地址DNS服务器等),都是由VMnet1(Host-only)虚拟 网络的DHCP服务器来动态分配的。

CRT设置

选项→会话选项→终端→外观                                                #乱码问题,字符编码设置,修改字体等样式

选项→全局选项→终端→鼠标                                                #选中即复制成功

选项→会话选项→终端→X/Y/Zmodem                                  #上传下载时,默认选中打开哪个目录

Xshell设置

文件→属性→终端                                                               #乱码问题,字符编码设置

文件→属性→外观                                                               #修改字体等样式

[root@suan ~]#                                                                              PS1=“[\u@\H \W]\\\$ “

root                     当前用户                                                 u

suan                    主机名                                                    H

~                         当前路径                                                 W

#                         超级用户

$                         普通用户

上一篇:Python之路【第十六篇】Django基础


下一篇:bzoj2763: [JLOI2011]飞行路线(分层图spfa)