Linux常用命令(2020年09月14日重编)
2020年09月14日重新编写,添加了正则表达式,文件处理,用户管理等模块,几乎囊括你所会用到的所有Linux命令
一. linux发行版本
red hat : 目前全球最大的 linux 发行厂商.(收费)
ubuntu:免费版本.界面比较好
麒麟.
Cent OS:免费.由 red hat 分支.
二. Linux系统目录
/ 表示根目录
etc 存放系统配置目录
home所有用户默认在 home 下新建一个以用户名做为文件夹名称的文件夹
usr 所有用户安装的软件都放入到这个文件夹中
三. Linux文件系统命令
3.1 显示磁盘使用情况
df -h |
3.2 显示目录
ls
3.3 切换工作目录
cd
3.4 显示当前工作目录
pwd
3.5 创建目录
当前目录下创建a文件夹,a文件夹中包含b文件夹,b文件夹中包含c文件夹
mkdir -p a/b/c |
当前目录创建aa,bb,cc三个文件夹
mkdir {aa,bb,cc} |
3.6删除
删除文件
rm -f 1.txt |
删除文件夹
rm -rf a |
3.7拷贝
拷贝文件
cp 1.txt 1_bf.txt |
拷贝文件夹
cp -r aa aa_bf |
远程拷贝
scp -r xxxx 127.0.0.1:/usr/local/ |
3.8移动/重命名
移动文件,到当前目录的old文件夹中
mv 1.txt /usr/local/software/old/ |
移动文件夹,到当前目录的old文件夹中
mv aa /usr/local/software/old |
3.9软链接
文件软链接
ln –s 1.txt 1 |
文件夹软链接
ln –s aa aa2 |
四. Linux文本操作名
4.1 查看文件内容
cat 1.txt |
less 1.htm |
4.2 查看文件前10 行
head -10 1.htm |
4.3 动态显示文件内容
tail -f 1.txt |
4.4 管道
左边|右边,左边的标准输出作为右边的标准输入
查看跟目录
echo '/' | xargs ls |
显示第6行
head -6 1.txt | tail -1 |
五. VI 全屏文本编辑器
5.1 打开关闭文件
打开文件
vim 1.txt |
打开文件,光标停在第10行
vim +10 1.txt |
关闭文件
:进入末行模式 |
5.2 模式
编辑模式:按键具有编辑文本功能:默认打开进入编辑模式
输入模式:按键本身意义
末行模式:接受用户命令输入
5.3编辑模式操作
1移动光标 2撤销&重做 |
5.4末行模式操作
设置 |
六. 正则表达式
6.1 匹配操作符
\ 转义字符(\?, \+, \{, \|,
\(, and \)) |
6.2 重复操作符
?
匹配0到1次。 |
6.3 举例
把包含ooxx的行找出来
把包含数字34的行找出来
把包含四位整数的行找出来
把包含ooxx这个单词的行找出来
grep "\(god\).*\(good\).*\1.*\2" test
七. 文本处理
7.1 cut切分
cut:显示切割的行数据
参数
-f:选择显示的列
-s:不显示没有分隔符的行
-d:自定义分隔符
7.2 sort排序
sort:排序文件的行
-n:按数值排序
-r:倒序
-t:自定义分隔符
-k:选择排序列
-u:合并相同行
-f:忽略大小写
7.3 sed行编辑器
查找替换
指定行前后追加内容
7.4 awk分析工具
awk就是把文件逐行的读入,(空格,制表符)为默认分隔符将每行切片,切开的部分再进行各种分析处理。
awk -F '{pattern
+ action}' {filenames} 例子: 1>awk -F':' '{print $1}' passwd 2>awk -F':' 'BEGIN{print "name,shell"} {print $1 "," $7} END{print "blue,/bin/nosh"}' passwd 3>awk '/root/ { print $0}' passwd 4>awk '{split($3,date,"-"); if(date[2]=="01"){ name[$1]+=$5 } } END{ for( i in name ){ print i"\t" name[i] } }' awk.bb
|
7.5小技巧.修改最后位ip
sed "s/\(ip:\(\<2[0-5][0-5]\|\<2[0-4][0-9]\|\<1\?[0-9][0-9]\?\.\)\{3\}\).*/\188/" cut.txt |
八. 用户管理
8.1 新建用户
查找所有用户
cat /etc/passwd |
新增用户,用户名sxt01
useradd sxt01 |
删除用户,用户名为sxt01
userdel sxt01 |
登录
ssh sxt01@127.0.0.1 |
8.2 新建用户组
新建share组
groupadd share |
删除share组
groupdel share |
查看用户的组,用户名为sxt01
id sxt01 |
用户新增组,用户名为sxt01,组名share
usermod -G share sxt01 |
改变文件夹的组,用户为root,修改后的组为share,文件夹名share
chown root:share share |
文件夹赋权限,文件夹名share
777来历:读4写2执行1 7=4+2+1 chmod 777 share |
8.3 实例
这里有两个用户sxt01和sxt02,一个共享文件夹share,要求两个用户均能读写share
思路:
1.两用户添加组
2.共享文件夹添加组
3.共享文件夹添加读写权限
新建两用户 useradd sxt01 passwd sxt01 useradd sxt02 passwd sxt02 新建文件夹 cd /home mkdir share 新建组 groupadd share 用户中增加组 usermod -G share sxt01 usermod -G share sxt02 改变share文件夹的组 chown root:share share 给share文件夹赋读写权限 chmod 777 share |
九. 安装软件
9.1 编译安装
1>解压tar.gz:
tar zxvf jdk-7u80-linux-x64.tar.gz
tar zxvf jdk-7u80-linux-x64.tar.gz -C /usr/local/
2>根据Readme安装:
./configure
Make
make install clean
3>拓展:打包tar.gz
tar -zcvf xxx.tar.gz 文件夹
9.2 rpm安装
rpm -ivh xxxx.rpm
9.3 yum安装与卸载
yum安装下载相关依赖包,企业常用
yum install -y wget yum -y remove httpd
9.4 小技巧: yum镜像源修改阿里
1>前期准备
安装wget |
2>进入阿里开源镜像站,寻找下载命令
https://developer.aliyun.com/mirror/
CentOS 7 下载命令为,实际情况要根据官方文档来决定
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo yum makecache |
3>下载测试
出现aliyun.com说明配置成功
十. 脚本编辑
10.1 初识shell
shell看做是一种语言名称,其具体的语法则遵循bash的规定
10.2 文本流和重定向
1> I/O存储位置的查询
重定向:不是命令
程序自身都有I/O
0:标准输入
1:标准输出
2:错误输出
下图暂时当前控制台I/O存储位置
2>文本流的记录
标准输出 |
3>重定向
>重定向覆盖
>>重定向追加
10.3 变量
10.4 引用
10.5 退出状态
echo $?
10.6 判断状态
command1 && command2
command1 || command2
10.7 表达式
1>算术表达式
let 等价于 $(())
2>条件表达式
test 等价于[]
-eq 表示= -ne表示!= -lt 表示< -le表示<= |
10.8 小技巧:编写用户添加脚本
要求:
添加用户;用户密码同用户名;静默运行脚本;避免捕获用户接口;程序自定义输出
#!/bin/bash
[ ! $# -eq 1 ] && echo "args error" && exit 2
id $1 >& /dev/null && echo "user:$1 exist~!" && exit 3
! useradd $1 >& /dev/null && echo "add user error!" && exit 7 echo $1 | passwd --stdin $1 >& /dev/null
echo "user:$1 add ok ~!" |
删除用户
#!/bin/bash
[ ! $# -eq 1 ] && echo "args error" && exit 2
! id $1 >& /dev/null && echo "user:$1 not exist~!" && exit 3
cd /home rm -rf $1 cd /var/spool/mail rm -rf $1
! userdel $1 >& /dev/null && echo "add user error!" && exit 7 echo "user:$1 del ok ~!" |
10.9 流程控制
If
While
For
10.10 小技巧,三种方式读取文件
方式一
#! /bin/bash num=0 oldIFS=$IFS IFS=$'\n' for i in `cat file.txt`;do echo $i; ((num++)) done echo "num:$num" IFS=$oldIFS |
方式二
#! /bin/bash num=0 lines=`cat file.txt | wc -l` for((i=1;i<=lines;i++));do line=`head -$i file.txt | tail -1` echo $line ((num++)) done echo "num:$num"
|
方式三
#! /bin/bash num=0 while read line;do echo $line ((num++)) done <file.txt echo "num:$num" |
十一. 其他命令
11.1查找
find / -name 文件夹或文件
11.2 文件中添加内容
echo ‘内容’ >> 1.txt
11.3 解压
tar zxvf jdk-7u80-linux-x64.tar.gz
打包tar -zcvf xxx.tar.gz 文件夹
java -jar wls1036_generic.jar
unzip -oq common.war
11.4 防火墙
service iptables status 查看防火墙
service iptables stop 关闭防火墙
chkconfig iptables off 关闭防火墙服务
systemctl stop firewalld.service 停止firewall
systemctl disable firewalld.service 禁止firewall开机启动
wget 192.168.21.137:8080 服务器上下载文件应用
11.5 重启
reboot
11.5 赋值用户权限
chmod +777 *.sh
11.6查看主机开放的端口
netstat -tlnp netstat -tnlp|grep 5672 |
11.7根据端口找到应用
lsof -i:8080 ===>得到进程 |
11.8 syntax error: unexpected end of file
syntax error: unexpected end of file
解决:
vim daemon.sh set ff=unix :wq! |
11.9开机自启
vim /etc/rc.local ===>写入执行内容 source /etc/rc.local chmod +x /etc/rc.local |
11.10重设虚拟机IP
cd /etc/sysconfig/network-scripts vim ifcfg-lo ===>修改里面内容 cd /etc/udev/rules.d rm -rf 98-kexec.rules reboot |
11.11 hosts配置
cd /etc |
source /etc/profile