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 软件包安装性而开发的一种软件包管理器

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