linux达人养成计划-linux命令|shell脚本入门

版权声明:fromZjy QQ1045152332 https://blog.csdn.net/qq_36762677/article/details/82593912

Linux严格区分大小写

一、基础命令

清屏快捷键 CTRL + L
linux下用 ctrl+r快速搜索history命令
目录处理命令

  • 递归创建目录mkdir -p <目录名> 强制删除目录rm -rf <filename>
  • 显示当前目录pwd
  • 拷贝目录cp -r /opt/source /opt/a/source剪切/重命名mv / /
  • sudo ln -s 源文件 目标文件为某一个文件或目录在另外一个位置建立一个同步的链接,类似Windows下的超级链接。
  • mount它用于挂载Linux系统外的文件 将 /dev/hda1 挂在 /mnt 之下。
    #mount /dev/hda1 /mnt

文本处理(字符串处理)

  • head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。
    实例1:显示文件的前n行head -n 5 log2014.log
    实例2:显示文件前2个字节head -c 20 log2014.log
  • tail
    tail file (显示文件file的最后10行)
    tail +20 file (显示文件file的内容,从第20行至文件末尾)
    tail -c 10 file(显示文件file的最后10个字符)
    tailf跟踪日志文件增长,作用跟tail –f相同。tailf将输出文件的最后10行,然后等待文件增长。
  • awk是行处理器,通常用来格式化文本信息
    sed(Stream EDitor)功能和awk一样,都是用来处理文本的,但是sed没有awk的功能强大,awk对列操作十分方便。
    详解连接
  • grep命令用于查找文件里符合条件的字符串
    grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]
  • cut命令详解
    https://www.cnblogs.com/Spiro-K/p/6361646.html

压缩命令

  • 压缩tar.gz解压
    解压:$ tar zxvf FileName.tar.gz
    压缩:$ tar zcvf FileName.tar.gz DirName
    更多压缩格式
    zcat显示压缩包中文件的内容

文件搜索命令

  • 1.文件搜索命令locate搜索速度快
    在数据库中搜索,不是实时更新,每天更新一次,强制更新数据库updatedb
  • 2.文件搜索命令find,强大,效率低
    完全匹配:find /opt -name 'test*'
    不区分大小写find /opt -iname -user root install.log
    模糊查询需要通配符*匹配任意字符,?匹配一个字符,[]匹配任意一个中括号内的内容
  • 3.命令搜索命令whereis(搜索系统命令位置)与which whereis cat
  • 4.字符串搜索命令grep,使用正则表达式匹配,包含匹配
    搜索文件中包含字符串的行grep "size" install.log
    取反grep -v "size" install.log
    忽略大小写-i
  • 5.find与grep区别
  • 6.命令ls 能够使用通配符(查看网卡名)
    ls /etc/sysconfig/network-scripts/ifcfg* | grep -v 'lo' | grep -v '.bak'

网络相关命令

  • 查看ip命令:ifconfig=ip addr
  • 防火墙开启端口firewall-cmd --add-port=8010/tcp;
    //firewall-cmd --zone=public --add-port=8010/tcp --permanent
    需要重新载入firewall-cmd --reload
  • 查看firewall-cmd --zone= public --query-port=80/tcp
  • 删除firewall-cmd --zone= public --remove-port=80/tcp --permanent
  • 解决ifconfig不能用问题:点击查看
  • 网速sar -n DEV 1 100 // 1代表一秒统计并显示一次 100代表统计一百次
    sar命令详解地址
systemctl start  firewalld # 启动
systemctl status firewalld # 或者 firewall-cmd --state 查看状态
systemctl disable firewalld # 停止
systemctl stop firewalld  # 禁用

# 关闭服务的方法
# 你也可以关闭目前还不熟悉的FirewallD防火墙,而使用iptables,命令如下:

systemctl stop firewalld
systemctl disable firewalld
yum install iptables-services
systemctl start iptables
systemctl enable iptables

#重新载入
firewall-cmd --reload

curl url 发请求

curl -o index.html url   把请求结果放到网页里面去
curl -i  url   显示相应头信息
curl -v url 显示请求过程
curl -X GET/DELETE url

发送数据时,不仅可以使用 POST 方式,也可以使用 GET 方式,例如: 
curl -d “somedata” -X GET http://www.example.com/api
curl -H "Content-Type:application/json" -H "Data_Type:msg" -X POST --data '{"dmac": "00:0C:29:EA:39:70", "alert_type": "alarm", "risk": 2, "trojan_name": "Trojan.qq3344", "smac": "00:0C:29:EA:39:66", "sub_alert_type": "trojan", "sport": 11, "id": "153189767146", "desc": "NoSecure 1.2 \u6728\u9a6c\u53d8\u79cd4\u8fde\u63a5\u64cd\u4f5c", "sip": "62.4.07.18", "dip": "139.82.31.91", "rule_id": 123451, "trojan_type": 4, "time": "2018-07-18 15:07:51", "dport": 61621, "detector_id": "170301020011", "os": "Windows", "trojan_id": 50030}' http://127.0.0.1:5000/service

RPM软件包的管理工具

  • 卸载rpm软件包 rpm -e
  • 列出所有安装包rpm -qa
  • 安装软件:rpm -ivh rpm包名

yum的使用
为了提高RPM 软件包安装性而开发的一种软件包管理器

扫描二维码关注公众号,回复: 6017350 查看本文章
yum install xxx            安装xxx软件
yum info xxx                查看xxx软件的信息
yum remove xxx        删除软件包
yum list                        列出软件包
yum clean                    清除缓冲和就的包
yum provides xxx        以xxx为关键字搜索包(提供的信息为关键字)
yum search xxx           搜索软件包(以名字为关键字)

日常操作命令

  • 查看登录时间w
  • 登录信息last
  • 查看系统开机时间uptime
  • 格式化输出运行时间
    cat /proc/uptime| awk -F. '{run_days=$1 / 86400;run_hour=($1 % 86400)/3600;run_minute=($1 % 3600)/60;run_second=$1 % 60;printf("系统已运行:%d天%d时%d分%d秒",run_days,run_hour,run_minute,run_second)}'

统计个数

wcLinux wc命令用于计算字数。
-c或–bytes或–chars 只显示Bytes数。
-l或–lines 只显示列数。
-w或–words 只显示字数。

进程相关
psProcess Status 将某个进程显示出来
ps auxps -ef 两者的输出结果差别不大,但展示风格不同
top 动态的显示进程信息
kill用于杀死进程

top命令输出到文件

#top -b -n 2 -d 3
-b: batch 模式,可以重定向到文件中
-n:一共取2次top数据
-d:每次top数据间隔为3秒

磁盘硬盘相关
df -lh
Used:已经使用的空间
Avail:可以使用的空间
Mounted on:挂载的目录

二、文件目录结构

一级目录规范:
/根目录

/bin和/sbin和/usr/bin和/usr/sbin保存命令的目录(普通用户读取的命令)sbin是超级用户的命令
/etc配置文件保存目录(/etc/profile)/etc/rc.d 启动的配置文件和脚本
/home普通用户家目录
/root超级用户家目录
/tmp临时目录
/var系统相关文档目录

/usr:系统软件资源目录,可以理解为C:/Windows/,/usr/lib理解为C:/Windows/System32。
/usr/local:用户级的程序目录,可以理解为C:/Progrem Files/。用户自己编译的软件默认会安装到这个目录下。
/opt:用户级的程序目录,可以理解为D:/Software,opt有可选的意思,这里可以用于放置第三方大型软件(或游戏),当你不需要时,直接rm -rf掉即可。在硬盘容量不够时,也可将/opt单独挂载到其他磁盘上使用。
源码放哪里?
/usr/src:系统级的源码目录。
/usr/local/src:用户级的源码目录。

/proc直接写入内存
/boot启动目录
/dev设备文件保存目录
/lib系统库保存目录
/mnt系统挂载目录
/media挂载目录

三、权限问题

3.1 文件权限

默认权限是10位
第一位:文件类型(7种)-:文件d:目录l:软连接文件
后面9个每三个为一组划分权限r读 w写 x执行
第一组:所有者u
第二组:所属组g
第三组其他人o
这里写图片描述

权限命令☆☆☆☆

曾经因为权限命令掉坑爬不出,所以画个重点
1.chmod命令用来变更文件或目录的权限
chmod [ugoa…][[±=][rwxX]…] filename
u User,即文件或目录的拥有者;
g Group,即文件或目录的所属群组;
o Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围;
a All,即全部的用户,包含拥有者,所属群组以及其他用户;

+表示增加权限、-表示取消权限、=表示唯一设定权限。

r 读取权限,数字代号为“4”;
w 写入权限,数字代号为“2”;
x 执行或切换权限,数字代号为“1”;
X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
- 不具任何权限,数字代号为“0”;
s 特殊功能说明:变更文件或目录的权限。

-c : 若该档案权限确实已经更改,才显示其更改动作
-f : 若该档案权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)

举例
1.将档案 file1.txt 设为所有人皆可读取 :
chmod a+r file1.txt = chmod ugo+r file1.txt
2.
chmod a=rwx file = chmod 777 file
其中7,7,7各为一个数字,分别表示User、Group、及Other的权限。
若要rwx属性则4+2+1=7;
若要rw-属性则4+2=6;
若要r-x属性则4+1=7。
2.chown命令

用户:[]
chown runoob:runoobgroup file1.txt
chown -R runoob:runoobgroup *

四、shell脚本

命令行解释器/功能强大的编程语言(解释执行)
用户通过shell操作linux内核

第一个shell test.sh

#!/bin/bash
echo "Hello World !"

1.chmod +x ./test.sh #使脚本具有执行权限
./test.sh#执行脚本
2.sh test.sh

shell循环控制

a=10
b=20
if [ $a == $b ]
then
   echo "a 等于 b"
elif [ $a -gt $b ]
then
   echo "a 大于 b"
elif [ $a -lt $b ]
then
   echo "a 小于 b"
else
   echo "没有符合的条件"
fi

for循环

for loop in 1 2 3 4 5
do
    echo "The value is: $loop"
done

while

#!/bin/bash
int=1
while(( $int<=5 ))
do
    echo $int
    let "int++"
done

实例

1.同步多个服务器时间

# 从2到6循环填入,再更新时间
for i in `seq 2 6`
do
    ssh 192.168.1.10$i ntpdate 192.168.1.99
done

时间同步命令ntpdate https://www.cnblogs.com/zhi-leaf/p/6281549.html

2.获取ip地址

netscript=`ls /etc/sysconfig/network-scripts/ifcfg* | grep -v 'lo' | grep -v '.bak'`
netname=${netscript#*/etc/sysconfig/network-scripts/ifcfg-}
ip=`nmcli dev show ${netname} | grep IP4.ADDRESS | awk '{print $2}' | awk -F '/' '{print $1}' | grep '[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*'`
echo $ip

3.将脚本授予全局环境变量

在这里插入图片描述

4.环境变量文件

/etc/profile

五、管道,重定向

>
>>
|

猜你喜欢

转载自blog.csdn.net/qq_36762677/article/details/82593912