Linux 常用命令总结

时间:2023-01-31 00:52:17


1.防火墙iptables {setup}
①查看状态:执行 service iptables status
②开启/关闭防火墙:执行 service iptables start/stop(暂时)
③重启后是否生效:chkconfig iptables on/off
service network restart 重启网络(立刻生效)

2. tar命令备份文件

①解压文件:tar -xvf {解压文件} [后可加-C用来指定解压的位置,默认当前文件夹下]
②打包文件:tar -cvf ./打包文件名 源文件
③追加文件:tar -rvf 追加文件

-x 解压
-c 打包
-v 显示过程
-f 指定打包后的文件名
-t 查看包内容,不解压
-z 打包成tar.gz 模式(打包并压缩)
-r或--append 新增文件到已存在的备份文件的结尾部分。
-j 压缩包名.tar.bz2

压缩格式

常用压缩格式:.zip .gz .bz2
常用压缩格式:.tar.gz .tar.bz2

tar -zcvf ./压缩包名.tar.gz 源文件
tar -czvf ./压缩包名.gz.tar 源文件
tar -ztvf 查看压缩包名.tar.gz 的文件
tar -tvf 查看压缩文件中的文件
tar -jcvf 压缩包名.tar.bz2 源文件
tar -jxvf 压缩包名.tar.bz2

zip(和windows通用)(.zip)
压缩文件:zip 压缩文件名 源文件
解压文件:unzip 压缩文件名
压缩文件夹:zip -r 压缩文件名 文件夹

gzip(.gz)
压缩文件:gzip 源文件 (源文件消失)
gunzip 解压文件
gzip -r 压缩文件夹(只压缩文件内的内容)

rpm 常用删除,查询
yum 常用安装,更新

bzip2( .bz2)
压缩文件:bzip2 源文件 (源文件消失)
加 -k 保留源文件
解压文件:bunzip2 压缩文件名

3.处理目录的常用命令

ls: 列出目录(子目录)
ls -l[d:加d则显示本身信息] 长格式显示==ll [-d]
********************************************************
-开头 文件 d开头 目录 l开头 链接,符号

cd:切换目录
.当前 ..上一级 /根目录 空回到家目录(~)
-回到上一次

pwd:显示目前的目录
mkdir [-p(parents):多级创建] <目录名> :创建一个新的目录
touch [文件名][文件名] :创建文件

rmdir [-p(parents):多级删除] <目录名> :删除目录

cp {复制文件1 复制文件2} {复制地点} [/改名]: 复制文件
-r 复制目录及其子目录

rm: 移除文件(功能更加强大)
rm -r 目录
(recursive:递归处理,将指定目录下的所有文件及子目录一并处理)
rm -rf (force) 强制

clear:清屏 ctrl+l
history:查看历史命令

mv:移动或重命名
mv [文件名] [所移目录]
mv [文件名] [重命名]

4.rpm
①安装软件:rpm -hvi {文件}
②显示软件安装信息:rpm -qi
③查看指定包全名:rpm -q {文件}
④文件卸载:rpm -e 软件名
*****************************
rpm -qa|grep -i mysql 查看MySQL

-i 安装
-v 提供详细输出
-U 升级
-q 查询query

-qa 查询所有已安装rpm
-ql 查询已安装软件包中的文件列表
-qf 查询系统中文件所属的软件包
-ivh 安装显示进度


5.命令特殊用法:cat
cat 命令用于连接文件并打印到标准输出设备上。

6.runlevel
运行级别 0~6
init 切换级别 3:进入字符界面 0:关机


7.
~:家目录 /root
/bin 系统中基本的用户命令
/sbin 系统中基本的管理员命令
/dev 系统设备文件
/etc 各种应用程序的配置文件
/doc 普通执行程序文件
/user 应用程序


8.
uname -r 显示内核版本
uname -m 系统架构
sync 关机前的数据同步(保存)
halt 停机
poweroff 关机
shutdown -h now 关机
reboot 重启
logout 注销
exit 退出

echo 输出相当宇printf
echo -e 识别反义字符
echo "[scale=2];4+5" | bc 计算

开启颜色 \e[1;颜色
30m=黑色 31m=红色 32m=绿色 33m=黄色
34m=蓝色 35m=洋红 36m=青色 30m=白色
关闭颜色 \e[0m

scale(保留小数)
; 分号命令分隔符(同一行两条以上使用)

date +%Y%m%d 显示日期
date -s"" 修改时间
cal[month][year]显示日历

bc 计算器
scale=n 保留小数位
quit 退出

grep MemTotal /proc/meminfo 检查内存空间
grep SwapTotal/proc/meminfo 检查交换分区
free 检查当前可用的内存和交换分区
df -h /user 检查磁盘共享空间
fdisk -l 查看硬盘空间
cat /etc/issue 内核版本检测
hostname 查看主机名称
ping 测试与其他主机的连接的命令

mount 挂载
umount 卸载

9.链接

硬链接:相当于复制
ln <文件名> <文件名>
同步修改 ,删除则不同步
ll -i 可以看出是否是硬链接

软链接:相当于一个快捷方式
ln -s(soft) <文件名> <文件名>
删除文件,则会影响链接文件不能使用


10.文件的编辑即查看

vi/vim <文件名> 编辑文件输入
按下 i,o,a,r 等字符就可以进入输入模式

i前
a后
o下一行
r更改选中

先按esc退出(zz再次退出)编辑模式 w(保存)q(退出) 结束 :wq 保存且删除 q!强制退出
************************************
可视化模式
v列选择 V行选择
************************************
yy 复制游标所在的那一行(常用)
nyy n 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(常用)
:n1,n2 co n3 把n1行到n2行的内容复制到n3行
dd 删除
dw 删除至词首
de 删除至词尾
x 删除当前光标
p 粘贴
u 复原前一个动作。(常用)
nG 行数,到第n行
[Ctrl]+r 重做上一个动作。(常用)
:n+回车/G 光标到n行
n<space> 光标到第n个字符
:e/r/w <file> 打开/读取/保存 文件
:args 查看当前文件
:first/last/next/prev 切换文件
/查询 ?查询 n/N 下一个/上一个
************************************
:n1,n2s/word1/word2/g n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2
:1,$s/word1/word2/g 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !(常用)
:1,$s/word1/word2/gc 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2
!且在取代前显示提示字符给用户确认 (confirm) 是否需要取代!(常用)
************************************
:set nu 显示行号,设定之后,会在每一行的前缀显示该行的行号
:set nonu 与 set nu 相反,为取消行号!
:r <被复制文件> <要追加文件> 追加
************************************
cat 查看内容(单屏查看) [|grep <关键字>]搜索关键字
more (多屏查看) 空格(下) b(上)
less 查看(用光标可以上下左右(yefb)移动来查看文件内容)
head -n 查看前n行(默认10)
tail -n 查看后n行[-f(follow跟随) 显示新更新的数据](默认10)


11.用户(组)

一个文件拥有三个调用权限
u 使用者
g 所属组
o 其它
一个文件拥有三个权限
r 读 4
w 写 2
x 执行 1

chmod [-cfvR] [--help] [--version] mode file... 修改文件权限
chmod nnn <file>

, 连接
u 表示该文件的拥有者
g 表示与该文件的拥有者属于同一个群体(group)者
o 表示其他以外的人
a 表示这三者皆是。
+ 表示增加权限
- 表示取消权限
= 表示唯一设定权限。
r 表示可读取
w 表示可写入
x 表示可执行
X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。

cat /etc/passwd 信息文件
cat /etc/shadow(影子) 密码文件
cat /etc/group 所在组
cat /etc/gshadow 组密码

添加用户:
useradd [-g <groupname>指定初始组] <username>
添加密码
passwd <username>(指定要添加密码的用户)
passwd -S <username> 查看密码

普通用户修改密码:
用英文与数字组合使用,且长度在6位以上
linux要求的密码验证机制是在/etc/login.defs中规定最小密码字符数
同时还要受到/etc/pam.d/passwd的限定。

添加组:
groupadd <username>

查看当前用户 whoami(当前)/who am i(首次)
查看所有已登录用户 who
查看所有登录用户记录 last
切换用户: su [-l/-(回root)] <username> / sudo su <username>(对权限有要求,更安全)
禁止/解禁用户:
usermod [-L|-U] <username>
passwd [-l|-u] <username>
修改组:usermod [-g <groupname>指定修改组] <username>
查看用户所属组:groups <username>
删除用户:userdel [-rf] <username>
删除组:groupdel [-rf] <groupname>


12.帮助指令
help <命令字> 内置
<命令字> --help 外置
man <命令字> 手册页形式的帮助 q退出
info <命令字> 与man类似,信息页

find <路径> -name <名称> 。
******************************
-exec 扩展功能

file <文件名> 文件类型查看

 

13.chown
chown (owner选项)(file参数)
chown [-cfhvR] [--help] [--version] user[:group] file...
[-R root](普通用户设置所有者,增添权限)
更改文件的拥有者
chown(owner:group)(file参数)
同时更改文件的拥有者和所属组


14.chgroup

chgroup (group)(file参数)
更改文件的所属组


15.发送信息

write <user>
向用户发送信息
ctrl+d 结束

wall向所有用户发送信息

mesg <n/y> 拒绝或接受信息(对root无效)

 

16.网络配置(80)

查看网关:traceroute/route
测试与其他主机的网络连接:ping [-c n(次数)] IP
DHCP网络配置命令:dhclient(自动分配IP)

ifconfig ech0 n -->修改IP地址

hostname <命令字> -->修改主机名(暂时)

whereis <命令字> -->查看地址

设置主机名
vim /etc/sysconfig/nework
(重启后永久生效)

vim /etc/hosts 本地主机名称解析文件
vim /etc/resolv.conf 域名服务器配置文件

netconfig | setup 永久生效
service network restart 重启网络(立刻生效)

ifdown/ifup eth0 开启并连接/关闭网卡
ifconfig eth0 down/on 开启关闭网卡


17.SSH(22)
service sshd status 检测
service sshd start/stop/restart
Linux系统中是通过ssh服务实现的远程登录功能
默认ssh服务端口号为 22
httpd(阿帕奇)

 

18.网络配置文件

vim /etc/sysconfig/nework-scripts/ifcfg-eth0
cccc
IPADDR= IP
NETMASK= 子网掩码
#GATEWAY= 网关
ONBOOT= 网卡


19.可执行程序包括命令和应用程序
命令在/bin和/sbin
应用程序/usr/bin和/usr/sbin


20.yum

列出所有可更新的软件清单命令:yum check-update
更新所有软件命令:yum update
仅安装指定的软件命令:yum install <package_name>
仅更新指定的软件命令:yum update/upgrade <package_name>
列出所有可安裝的软件清单命令:yum list
删除软件包命令:yum remove/erase <package_name>
查找软件包 命令:yum search <keyword>

清除缓存命令:
yum clean packages: 清除缓存目录下的软件包
yum clean headers: 清除缓存目录下的 headers
yum clean oldheaders: 清除缓存目录下旧的 headers

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

 


21.

init 是linux系统启动的第一个进程

init 0 关机
init 1 单用户模式 用于root用户的维护
init 2 多用户模式 无网
init 3 完全多用户模式,有网,主机作为服务器,字符界面
init 4 未用,系统保留
init 5 正常的图形界面
init 6 重启

vi /etc/inittab(init配置文件) 修改运行级别

************************************************

/etc/rc.d/rd.sysinit 系统启动时运行的脚本

************************************************

程序是保存在储存介质中的可执行机器代码(指令)和
数据的集合;进程是在计算机处理器执行中的计算机程序。

程序是静态保存的代码;进程是动态执行的程序

查看进程记录: ps -ef/-aux/aux/
实时跟踪进程: top
查看进程树: pstree

************************************************

& 使程序从后台运行
jobs 查看后台运行的程序
bg/fg[id] 将后台程序恢复到前台
nohup 关闭终端,让程序在后台运行

kill [-9] 关闭进程

************************************************
查看服务器启动状态
chkconfig --list [服务名称]
设置独立服务的启动状态
chkconfig --level <运行级别代表1><运行级别代表2><运行级别代表3>... <服务名称> <on/off/reset>


22. C

编译:
g++ hellow.c -o hellow
运行
./hellow


23.shell

Shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容。
Bourne家族主要包括sh、ksh、Bash、psh、zsh
C家族主要包括:csh、tcsh

Bash:Bash与sh兼容,现在使用的Linux就是使用Bash作为用户的基本Shell

当前系统可用shell
/etc/shells

当前使用shell
/bin/bash

可以直接进入shell,exit/ctrl+d 退出

cat /etc/passwd 可以查看shell

vi hello.sh
#!/bin/bash 标称以下是linux标准脚本,不能省略
#注释
写程序(可以直接调用命令)
:wq保存退出

使用shell命令程序执行脚本: bash file.sh 注意:不需执行权限
使用当前shell程序运行: . file.sh 注意:不需执行权限
直接运行shell程序 ./file.sh 注意:需执行权限
[chomd nnn file](添加权限)


24.一次性完成任务

v /etc/at.deny v at使用:at [-m] timeformat
v -m 完成工作时邮件通知
v 时间格式: § HH:MM § HH:MM MM/DD/YYYY § now + 数字[minutes | hours | days | weeks]
v ctrl+d 结束
v atq 查询任务
v atrm <jobnumber>(任务号:查询时得到) 取消任务

25.crontab 循环完成任务

两种作用:

系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存

个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,
这些工作可由每个用户自行设置

crontab [ -u user ] file

crontab [ -u user ] { -l | -r | -e }

-e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,
则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)
-r : 删除目前的时程表
-l : 列出目前的时程表

 

26.变量按照存储数据分类

字符串型
整型
浮点型
日期型

变量的分类
1:用户自定义变量。变量自定义的
2:环境变量:这种变量中主要保存的是和系统操作环境相关的数据。
变量可以自定义,但是对系统生效的环境变量名和变量作用是固定的
3:位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的
4:预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的

一:用户自定义变量
变量名=变量值
=左右两侧不能有空格 加空格认为是一个命令
x=5
name="nihao"

变量调用
echo $变量名
例如:
echo $name
echo $x 输出的值依然认为是字符串

变量的叠加
x=123
x="$x"456
x=${x}789


变量查看
set 查询系统下所有变量
选项:
-u 如果设定此选项,调用未声明变量时会报错(默认无任何提示)

删除变量
unset 变量名

环境变量是全局变量
用户自定义变量是局部变量

用户自定义变量只在当前Shell中生效
环境变量在当前Shell和这个Shell的所有子Shell中生效
变量可以自定义,但是对系统生效的环境变量名和变量作用是固定的

set
查看所有变量

env
查看环境变量

num1=$1
num2=$2
sum=$(($num1 + $num2))
echo $sum


27.查看

env 引用环境变量:
$环境变量名v
显示变量值:echo $环境变量名
§ USER 表示当前用户的登录名称
§ UID 表示当前用户的ID码
§ SHELL 表示当前用户的登录shell
§ HOME 表示当前用户的宿主目录
§ PWD 表示当前用户所在目录
§ PATH 表示当前用户执行命令搜索路径

全局环境变量的配置文件:/etc/profile /etc/bashrcv
用户环境变量的配置文件:.bash_profile .bashrcv
可追加.bash_profile内容(自定义变量和启动程序)
可追加.bashrc内容(自定义别名和函数)


28.
alias 查看别名
alias 别名=‘原命令‘ 起别名

别名永久生效与删除别名
vi ~/.bashrc
写入环境变量配置文件
重启生效
也可以不重启调用一次后让它生效 source .bashrc

unalias 别名
删除别名


29.重定向

1表示正确
2表示错误

输出重定向
> 新建(代替源文件)
>>追加 (在原基础上增加)
2> 2>> 错误信息输出重定向 [>&1 正确的情况]
$> file 不管正确错误都到file中
命令>>file1 2>>file2 正确到file1错误到file2


30.管道符 |

左边命令的输出作为右边命令的输入
grep [-in] “searchstring” <file>
? i :忽略大小写
? n:显示行号

查看系统当中所有的网络连接
netstat -an | grep ESTABLISHED | wc -l
判断服务器上连接了多少人

 

31.shell脚本和编程

在/etc/rc.d/init.d/目录中的每个脚本都是一个系统服务的启动脚本

编程:

*********************************************************************
判断

两种判断格式
test -e /root/install.log

[ -e /root/install.log ] 推荐
echo $? (返回值为0命令正确执行 非0没有正确执行)

[ -d /root] && echo "yes" || echo "no"
第一个判断命令如果正确执行,则打印yes,否则打印no

例如:[ -e /root/install.log ] && echo yes || echo no

test 操作数 -命令参数 操作数 && echo … || echo …

[ 操作数 -命令参数 操作数 ] && echo … || echo …
-e 判断文件是否存在
-f 判断文件是否为“文件”
-d 判断文件是否为“目录”
-r 判断文件读的权限
-w 判断文件写的权限
-x 判断文件执行的权限

数值比较
-eq 等于
-ne 不等
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于

test –z string 判断是否为空串
test string1 == string2 判断是否相等
test string1 != string2 判断是否不等

多重条件判断
a=11
[ -n "$a" -a "$a" -gt 23] && echo "yes" || echo "no"
判断变量a是否有值,同时判断变量a是否大于23
n=null
a=all


①:单分支if条件语句
if [条件判断式];then
程序
fi

②:双分支if语句
if [条件判断式]
then
条件成立时,执行的程序
else
条件不成立时,执行的程序
fi

③:多分支if语句
if [条件判断式1]
then
条件1成立时,执行的程序
elif [条件判断式2]
then
条件2成立时,执行的程序
......
else
当所有条件都不成立时,执行的程序
fi


case $变量名称 in
"第一个变量的内容")
程序段
;;
"第二个变量的内容")
程序段
;;
...
*)
程序段
;;
esac

 

eg:两个文件之间比较
ln /root/student.txt /tmp/stu.txt
创建个硬链接

[ /root/student.txt -ef /tmp/stu.txt] && echo "yes" || echo "no"
硬链接的文件和源文件的inode号一样

补充 ll -i 可以查看i结点号

 

eg:判断登陆用户是否是root

#!/bin/bash
test=$(env | grep "USER" |cut -d "=" -f2 )
if["$test" == root]
then
echo "Current user is root."
fi
F
d:定义切割符

-f n :获取第n段

 

eg:

read -t 30 -p "请输入1个目录:" dir(dir是一个变量)
if [ -d "$dir" ]
then
echo "yes"
else
echo "no"
fi

read 输入

-p: 给出提示语句

-t: 等待一段时间后关闭

*********************************************************************

循环

一:for循环
语法1:
for 变量 in 值1 值2 值3 ...
do
程序
done

for i in 1 2 3 4 5
do
echo $i
done

语法2:
for ((初始值;循环控制条件;变量变化))
do
程序
done

s=0
for((i=1;i<=100;i=i+1))
do
s=$(($s+$i))
done
echo "和为:$s"
注:数值运算必须用双括号括起来
不识别i++,必须写成i=i+1

二:while循环
while [条件判断式]
do
程序
done


i=1
s=0
while [ $i -le 100]
do
s=$(($s+$i))
i=$(($i+1))
done
echo "和为:$s"

三:until 循环
until [条件判断式]
do
程序
done


i=1
s=0
until [ $i -gt 100] #直到变量i的值大于100停止循环
do
s=$(($s+$i))
i=$(($i+1))
done
echo "和为:$s"


*********************************************************************

§ 数组声明 declare –a array_name
§ 数组赋值 array_name[index]=element_value
§ 引用数组元素 ${array_name[index]}

*********************************************************************

v $0(命令) $9 ($1-----$9表示参数)
v $*:表示所有位置参数内容
v $#:表示位置参数数量

*********************************************************************

v sh [-nvx] <script.sh>
§ n:不执行脚本,仅查询语法问题
§ v:在执行脚本前,先将脚本的内容输出到屏幕上
§ x:将使用的脚本内容显示到屏幕上


*********************************************************************