Linux Centos8 常用的命令总结

一直打算抽个时间来记录一下linux的命令,以方便记忆,因为我还是个刚接触linux的新手。这篇文章会很杂,也会持续更新,目前在更新中!


重要知识放前面,以便巩固
~/.bashrc修改一些变量,或者命令的别名alias
鸟哥的私房菜P326将如何解决一般中文乱码
环境变量 = 全局变量
自定义变量 = 局部变量

reset

清空刚才输入的命令行

su-进入root权限exit退出root权限

在命令行输入su-输入你的密码,注意:你输入的时候,在命令行是不显示的,但是是输上去(我刚接触还以为是我键盘坏掉了)。当你不想用root权限了,使用exit退出即可

cd 以及 ls

一般我喜欢用 ls -l 列出所有文件与目录,然后再用cd进入到那个目录,或者使用vim编辑文件。 ls -l 他前面的参数在这里说明一下:
大家应该看到最前面的好多drwxr-x巴拉巴拉的
先介绍第一个字符的含义

  • ‘-’(这个圆点也是用-表示的,所以加个单引号括起来了,实则没有任何区别)表示的是普通文件
  • d:代表的是目录
  • l:表示的是链接文件
  • p表示管理文件
  • b表示块设备文件
  • c表示字符设备文件
  • s表示套接字文件
    在介绍一下各种权限及r、w、x,-的含义
    除去第一个d会发现,恰好有9字符,每三个分为一组,恰好分为3组,第一组表示的是拥有者对该目录/文件的权限,第二组表示的是同用户组的用户权限对该目录/文件的权,第三组表示的是其他用户对该目录/文件的权限。r、w、x、-表示的是可读、可写、可执行(可进入),read、write,如果是目录表示x的话可进入这个文件夹,如果是文件的话,表示是否可以执行这个文件。-表示该没有该权限
    在这里插入图片描述
    ls *.h可以查询所有c/c++的头文件

chgrp、chown、chmod

改变权限的命令,先占坑,慢慢更新。
chmod 改变文件/文件夹的权限 例如 chmod 755 test

ps查询进程

ps -ef | grep smbd(指定查询该名字有多少个进程存活)
| 这根竖线是管道的意思

grep
过滤想要查询的文件\文件名,例如查找tmp这个文件夹的权限

ls -l|grep tmp

文件快速重命名

例如我想把这个hello.cpp改成hello_dxgzg.cpp,只需要借助mv这个命令,在命令行输入mv hello.cpp hello_dxgzg.cpp即可

ulimit -n

用这个命令来查询句柄数量,在linux下默认创建超过1024的socket就会失败,可以用ulimit -n 3000把创建的文件数量改到3000,自定义更改想要创建句柄的数量

alias命令别名

比如当你切换root权限的时候,打出了su - ,我们还可以简化一下,比如alias dx=‘su -’(注意不要多打空格,就是这样挨着写),这样下次你切换root权限直接用dx就可以实现su - 的效果了!这个只是当前有效,如果开机还想有效的话sudo vim /etc/bashrc写入这个文件中,在source /etc/bashrc更新一下文件。

source 更新文件的资源

如果修改了某个系统文件,可以使用source XXX来进行更新文件。

ype查询命令是否为bash shell内置命令

主要是找命令用的,例如 type cd,就会显示cd是内置的在这里插入图片描述

cp

今天从root权限下拷贝文件到普通用户下,竟然不可以执行,原来cp还要加一个-a 相当于把所有属性都加进来,这样程序就可以执行了,具体的还没有仔细研究,练了一上午的车,中午挤点时间写写代码
在这里插入图片描述
加上-a之后,普通用户也可以快乐的执行了,如果普通用户下比如这个dxgzg用户还是不可以修改修改,在root权限下使用chown dxgzg 文件名,修改拥有者权限,还不行的话,在用chmod 775 加文件名来修改
在这里插入图片描述

find使用方法

find /root -name XTcp
/root是在那个地方找文件,-name文件的名字,XTcp是我写的一个小demo

locate

简化版的find,比find更快,因为有一个数据库作为缓存。locate name例如
locate XTcp ,如果报错locate: 无法执行 stat () /var/lib/mlocate/mlocate.db': 没有那个文件或目录那就需要更新一下这个数据库,可能是他太久没有更新过的原因,如果刚写完一个文件夹他可能也找不到,需要输入updatedb即可完成更新!

host

访问DNS服务器查询网站,比如 host -t A www.baidu.com
在这里插入图片描述

ps

查看进程命令
-t 指定pts
-o 后面可以跟pid,ppid,tty,stat,args,wchan(总结UNP的)
在这里插入图片描述
stat
S表示正在睡眠,等待被唤醒
Z表示僵尸态
R表示还在跑

pts

你打开第一个终端就是pts/0,第二个终端就是pts/1,以此类推

netstat

-a all所有,-t是tcp,-p是pid进程的id,-n可以看见端口号

基本bash命令——初学shell

ctrl+u

删除命令行光标之前的命令串,ctrl+k删除命令行光标之后的命令串

ctrl+a

快速回到命令行的头部,ctrl+e到命令行的最后面

\反斜杠

表示换行,比如你的命令太多,想换到一下行,就可以这样使用,添加\再按下回车就OK了

[root@study ~]# systemctl stop\
> firewall

定义一个变量

myname=dxgzg (可以加单引号、双引号),再用echo ${myname}打印出来,‘’单引号是普通文本没有任何特殊的涵义。“”双引号+美元符号(CSDN是个特殊标识符,故无法打出)可以表示原本的特性。

"$LANG" #打印出来就是zh_CN.UTF-8


[root@study ~]# myname="hello $myname" #通俗的讲加个$和双引号
									   #就可以找到保持原来的变量值了
[root@study ~]# echo ${myname}
hello dxgzg
[root@study ~]# 

unset

取消变量命名

uname -r查看版本内核信息
echo $$查看PID(进程)ID
read

-p表示后面可以加提示符
-t 表示后面可以加的秒数,一段时间没有输入自动跳过输入

declare

-a变成数组
-i变整数
-x变成环境变量
书上328页

ulimit

限制每个用户的资源,书上329

历史命令操作储存在~/.bash_history中

lsof 查看被监听的端口

lsof的功能十分的强大,简单的介绍一下,如何监听一个端口,lsof -i:端口号
如果这个端口被监听了就会打印是那个进程占用了,如果这个输入完了想要监听的端口没有输出,说明这个端口未被监听
在这里插入图片描述

将用户添加/删除root组

gpasswd -a cold root //将用户cold加入到root组
gpasswd -d cold root //将用户cold从root组中移出

vim篇

1、觉得vim字体太小怎么办?ctrl+shift++(解释一下为什么要加个shift,因为小键盘上shift + +才表式+号,如果是108键键盘,完全可以用键盘最右边的+号不需要shift键) 就可以放大了,ctrl±就是缩小

2、不小心点到了高亮,命令下,nonh就取消高亮部分了

3、比如把服务器打印的日志信息重定向到文件中,想及时更新这个文件,可以使用:e来刷新文件

4、查找字符串:/ 这样输入完命令之后,后面在跟要查找的字符串。

shell编程

.sh是shell的文件,sh文件我目前的理解就是把在终端的命令编到文件中,这样每次不用频繁的输入
第一行要#!/bin/bash来声明一下这是一个shell文件

test的用法

在终端下用test来判断当前这个文件是否存在,-e表示文件,-d表示的是目录l

test -e ./hello.txt && echo "exist" || echo "Not exist"

在shell的文件下

#!/bin/bash
fileName="./hello.txt"
test -e ${fileName} && echo "exits" || echo "Not exist" 
if then fi用法

提一下几个注意的点[左括号后面要有一个空格,同样的右]也要有一个空格,可以亲自在vim底下实验,没空格then会标红。-e是上面所讲的表示是否有这个文件。pwd是显示当前目前位置的绝对路径,注意这个pwd加的是`` 小键盘1旁边的那个键,不是单引号。我猜测用 点`来表示就是为了区分字符串和系统变量的。要注意哦,我第一次写就没注意也不是在vim下写的就遇到错误了。

if [ ! -e `pwd`/hello.txt ];then
        echo -e "now create!"
        touch hello.txt
else
        echo -e "exits"
fi
for循环的使用

先定义一个path变量,判断是否存在这个文件夹,不存在就创建。shell的for很像foreach,我这个header可以想象成自定义的变量名字,``这还是一个系统命令。do是开始,done是结束标志。这个循环的作用是将当前路径下所有的txt文件拷贝到testDir这个文件夹下面去

#!/bin/bash
path=`pwd`/testDir
if [ ! -d ${path} ];then
        mkdir `pwd`/testDir
fi

# header相当于foreach循环中的变量,后面是他的范围,类似C#的foreach
for header in `ls *.txt`
do
        cp -a ${header} ${path}
done
$数字的解释

$0是执行的脚本名字 1 是 第 一 个 参 数 , 1是第一个参数, 1,#是表示表示后面带的参数

运行shell文件

第一种方法 sh test.sh 用sh的方式运行
第二种方法 chmod +x test.sh 给shell文件加个可执行权限,再./test.sh也可以执行的

查看文件的大小

du -sh fileName/folderName就可以看到文件或者文件夹的大小了
在这里插入图片描述

> 和 >>的意思

这俩都是重定向,通俗讲就是将输出的东西不放在屏幕上了,放到一个文件中去。例如下图,这样就不会输出到屏幕而是去输出到文件中了
在这里插入图片描述
那么 >>作用是什么呢?可以在文件的最后一行再添加新的东西,如果使用>会覆盖之前的东西
在这里插入图片描述
果然被覆盖了
在这里插入图片描述

总结一下,如果内容是加在文件后面要使用 >>,想要全部覆盖就使用>即可

sed的使用

The quick brown fox jumps over the lazy dog
The quick brown fox jumps over the lazy dog
The quick brown fox jumps over the lazy dog
The quick brown fox jumps over the lazy dog
可以拿上面的这个作为练习的文本。

sed -n '1’p filename 单引号的1表示第几行
在这里插入图片描述
sed 打印全部内容 sed -n '1,$'p filename
在这里插入图片描述
打印一个区间的话sed -n '1,3’p filename

sed 's/old/new/g’默认就是整个文本替换了,s代表是替换的意思,g表示整行文本都替换掉
在这里插入图片描述
这个只是打印在屏幕被替换掉了,实际在文本中并没有被替换掉
在这里插入图片描述
前面加-i意思是直接修改文件的内容了
在这里插入图片描述

sed '1’d filename 后面跟个d表示删除,前面表示的是行数。

sed初步了解一下即可,毕竟他的大哥awk兼容sed的一切

awk的用法

The quick brown fox jumps over the lazy cat
The quick brown fox jumps over the lazy cat
The quick brown fox jumps over the lazy cat
The quick brown fox jumps over the lazy cat

上面这四行作为test文件

-F 表示自定义分割符,没有的话TAB或者空格是默认的分割符
$0 表示这一整行
$1 表示第一段
$2 表示第二段
$n 表示第n段
/xxx/匹配字符
awk -Fover '{print $2}' sed_test.txt 

以over为分割符,分成两段,print打印出来,内容要单引号括起来
在这里插入图片描述
如果想在print中添加自定义的字符,要加双引号,不加的话不显示的
在这里插入图片描述
awk ‘/cat/’ sed_test.txt
在这里插入图片描述
//一前一后匹配字符串的内容。

chkconfig on

开机启动某个服务

先写到这里,要去上课了,晚上在学习下awk,会持续更新的
2021.3.9 9:51

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值