首页 > 技术文章 > Linux常用命令(2020年09月14日重编)

hzcjd 2020-02-05 21:39 原文

2020年09月14日重新编写,添加了正则表达式,文件处理,用户管理等模块,几乎囊括你所会用到的所有Linux命令

一.  linux发行版本

red hat :    目前全球最大的 linux  发行厂商.(收费)

ubuntu:免费版本.界面比较好

麒麟.

Cent OS:免费.由 red hat 分支.

二.  Linux系统目录

/   表示根目录

etc   存放系统配置目录

home所有用户默认在 home 下新建一个以用户名做为文件夹名称的文件夹

usr   所有用户安装的软件都放入到这个文件夹中

三.  Linux文件系统命令

3.1 显示磁盘使用情况

df -h
du -h --max-depth=1

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

关闭文件

:进入末行模式
:q  退出  没有动过文件
:wq 保存并退出   动过了,不后悔
:q! 不保存并退出  动过了,后悔了
:w 保存
:w! 强行保存

5.2 模式

编辑模式:按键具有编辑文本功能:默认打开进入编辑模式
输入模式:按键本身意义
末行模式:接受用户命令输入

 

 

 

5.3编辑模式操作

1移动光标
行间
gg:文章开头
G:文章末尾
3G:第3行
翻屏
ctrl+f  下翻
ctrl+b  上翻

2撤销&重做
u   撤销
ctrl+r  重做 撤销的操作

5.4末行模式操作

设置
set nu  显示行号
set nonu 取消行号
查找
/after  查找after
查找并替换
%s/1/2/gi  全文查找1替换为2
       /可用@,#代替
       g:一行内全部替换
       i:忽略大小写

 

六.  正则表达式

6.1 匹配操作符

\  转义字符(\?, \+, \{, \|, \(, and \))
.  匹配任意单个字符
[1249a],[^12],[a-k]  字符序列单字符占位
^  行首
$  行尾
\<,\>:\<abc  单词首尾边界
|             连接操作符
(,)           选择操作符
\n             反向引用

6.2 重复操作符

?      匹配0到1次。
*      匹配0到多次。
+       匹配1到多次。
{n}      匹配n次。
{n,}     匹配n到多次。
{n,m}      匹配n到m次。

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}
支持自定义分隔符
支持正则表达式匹配
支持函数
print、split、substr、sub、gsub
支持流程控制语句,类C语言
if、while、do/while、for、break、continue

例子:

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
passwd sxt01

删除用户,用户名为sxt01

userdel sxt01
cd /home
rm -rf sxt01
cd /var/spool/mail
rm -rf 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
yum install -y wget
将源镜像文件转移入backup
cd /etc/yum.repos.d
mkdir backup
mv CentOS* backup

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>文本流的记录

标准输出
ls / 1>success.txt
错误输出
ls /aaa 0>fail.txt
全部输出
ls /  /aaa  >& all.txt

 

3>重定向
>重定向覆盖
>>重定向追加

10.3 变量

 

 

 

 

 

 

 

 

 

 

 

 

 



 

10.4 引用

 

 

 

 

 

 

 

 

 

10.5 退出状态

 

 

echo $?

 

10.6 判断状态

command1 && command2

command1 || command2

10.7 表达式

1>算术表达式

 

 

 

let 等价于 $(())

2>条件表达式

 

 

 

test 等价于[]

-eq 表示=              -ne表示!=              -lt  表示<                -le表示<=
-gt表示>               -ge >表示=

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    ===>得到进程
ps axu | grep 61354   ===>得到应用

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
vim hosts
192.168.21.142 node01

source /etc/profile

 

推荐阅读