精华内容
下载资源
问答
  • linux简单命令type和filetype打印一个字符串的类型,可能的值为:别名,内置命令,函数,关键字,可执行文件或者什么都不输出(不是前面的类型)。type命令:外部命令和内部命令:操作系统:kernel内核+shell壳查看...

    94f917e6fccb2a4b9f5d668b23139c3a.png

    linux简单命令

    type和file

    type打印一个字符串的类型,可能的值为:别名,内置命令,函数,关键字,可执行文件或者什么都不输出(不是前面的类型)。

    • type命令:外部命令和内部命令:操作系统:kernel内核+shell壳
    • 查看cd命令的类型:type cd

    6f18fe14de76d00d29a56bb3f94977f6.png

    解释:cd是一个builtin命令,也就是bash内置的命令。

    查看yum命令的类型:type yum

    02e12f44f2737c3099f530133b484cd6.png

    yum是外部命令

    file命令:检查文件的类型。file /usr/bin/yum

    4f5d0f972360b58199f4694db7b73784.png

    yum命令是外部命令,它的文件是python脚本类型文件。

    file /bin/ls

    d3b94982673655d90493646d530194c8.png

    ls是二进制可执行文件(ELF)。

    安装man软件,查看命令的帮助信息:yum install man man-pages -y

    3cabdfbcd40f3ed84055d3a9dd036d11.png

    shellbash(空白符切割,查看是内部命令还是外部命令(从PATH指定的路径中从左向右查找))

    man的使用:

    比如:man yum,b向上翻页;空格向下翻页;回车向下一行;p直接翻到首页;q退出man信息

    ls:显示目录内容

    4f8f749b3fa6525d591cbf41980b751d.png

    ls /etc/sysconfig

    ca531965b629cf8559d510e21559f232.png

    -l长格式显示ls -l

    80acf638076ab9bca46d731e3c642d64.png

    ls后可以跟多个路径:ls / /etc

    198e8a1f5d724765bd3bd0a98b432705.png

    help和echo

    help查看内部命令的帮助信息:type echo

    1b63e99b50d4ccc09ccfd6ed1bdceeb0.png

    查看内部命令的帮助,使用help;help echo

    fc82ed5d313d9a7fe50a012e96c130f3.png

    echo -n表示不要另起新行:echo -n "hello world"

    498e4679c84a525077584967df1ed754.png

    -e表示解释逃逸字符:echo -e "hello wornld"

    015341ab48d93225e06d4ddc284e5de7.png

    help命令列出所有的内部命令:

    0ae74fa30129cd74fb50793154f5b0df.png

    man

    安装man manual手册:yum install man man-pages -y

    首先将epel的源放到本地

    • wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
    • yum clean all
    • yum makecache

    使用中文提示:

    • 1.yum install man-pages-zh-CN -y
    • 2.设置LANG的值:echo $LANG 显示en_US.UTF-8 ;接着LANG=zh_CN.UTF-8

    man的编号:man

    • 1用户命令(/bin,/usr/bin,/usr/local/bin)
    • 2系统调用
    • 3库函数
    • 4特殊文件(设备文件)
    • 5文件格式(配置文件的语法)
    • 6游戏
    • 7杂项(Miscellaneous)
    • 8管理命令(/sbin,/usr/sbin,/usr/local/sbin)

    指定查看某种帮助:man 2 read

    ceb732c19bf5109c9105b7c4a7bfbc2e.png

    test命令

    计算3 > 2的结果,打印返回值,计算3 < 2的结果,打印返回值

    • test 3 -gt 2
    • echo $?
    • test 3 -lt 2
    • echo $?

    e1eb9f558ba18acc8d00ed45adc22c8b.png
    • 注意命令以空格切割:[ 3 -gt 2 ]
    • 查看命令返回值:echo $?
    • [ 3 -gt 2 ]
    • echo $?
    • [ 3 -lt 2 ]
    • echo $?

    0993fd97f775edeb1b7f71598e6392f3.png

    环境变量:PATH

    • 当在shell中执行命令的时候,默认到PATH指定的路径中查找可执行文件。
    • 如果在PATH中的多个目录都包含该可执行文件,则执行最先找到的。

    echo $PATH

    16ba526b877622b976c6172df767c368.png

    环境变量:LANG:设置区域和语言

    • echo $LANG
    • LANG=zh_CN.UTF-8
    • echo $LANG

    f8674a51db1206c7360f43eff8fbfe2e.png

    /etc/profile bash启动(交互式shell)

    bash启动的时候,先执行该配置文件中的配置信息,每个用户登录时都会运行的环境变量设置。

    bash的使用

    下面是shell在读取和执行命令时候的操作的一个简短的描述。基本上,shell做以下的工作:

    1. 从文件读取输入命令,从bash的调用选项-c参数读取字符串作为命令,或者从用户终端读取输入命令。
    2. 将输入命令切割为单词和操作符,依据在Quoting部分描述的引用规则。这些标记按照元字符切割。别名扩展就是在这步骤做的。
    3. 将标记解析为简单的和复合的命令
    4. 进行各种各样的shell扩展,将扩展后的标记切割为文件名称和命令以及参数的列表。
    5. 进行必要的重定向处理并从参数列表中移除重定向操作符和操作数。
    6. 执行命令
    7. 可选地,等待命令的执行完成并收集命令执行的退出状态。echo $?
    • 逃逸字符:一个非引起来的就是bash的逃逸字符。它保留了跟着它的下一个字符的字面值,但是后面跟一个换行比较意外。如果出现了newline,并且反斜线没有引起来,则后面跟的新行被看成是当前行的继续(也就是说,将移除掉并有效地忽略掉)。
    • 单引号:单引号中的字符保留它们的字面量。单引号中不能嵌套单引号,使用反斜线也不行。
    • 双引号:双引号中的字符保留了它们的字面值,但是有例外。'$','`',''以及如果启动了历史扩展还包括'!'。当shell在POSIX模式的时候'!'在双引号中没有特殊含义,即使开启了历史扩展。'$','`'在双引号中保留它们的特殊含义。在后面跟着以下字符的时候,''也保留了它的特殊含义:“$”,“`”,“''”,“”或者新行。在双引号内,跟着这几个字符的反斜线被移除。反斜线后面跟的没有特殊含义的字符不会移除,而是不做任何修改保留下来。双引号内可以通过反斜线转义包含在一个双引号内部。如果启用了历史扩展,双引号中的!会执行,除非它使用反斜线转义。!之后的反斜线不会移除。*和@在双引号中有特殊含义。

    df命令查看挂载的磁盘使用情况

    df -h以人类可读的方式显示

    df

    153040f9ff6450b93000e8109fcf8adf.png

    df -h

    49629e8bbd43eb3abd3b27721a21ff78.png

    其中/boot目录在根目录下,但是它实际上是一个分区/dev/sda1

    进到/boot,通过ll查看内容:

    ll

    a261d37c331104bd7dff33a20d039671.png

    使用umount卸载掉/boot的分区:

    umount /boot

    退出/boot,重新进入,使用ll查看目录内容

    689e6b682b77a7306a4dd8e388fcc0c1.png

    没有内容了

    而此时如果向/boot目录写文件,则文件时存储在/dev/sda3分区上。

    如果挂载/dev/sda1到/boot,则/boot实际指向了/dev/sda1分区:

    mount /dev/sda1 /boot

    eadd8a65a6ce31a2440d8704801d1504.png

    fbfa881327e55494af645459d64060a0.png

    虚拟目录树就是为了解耦程序和底层。

    虚拟目录树的各个目录用途

    目录

    用途

    /

    虚拟目录的根目录。通常不会在这里存储文件

    /bin

    二进制目录,存放许多用户级的GNU工具

    /boot

    启动目录,存放启动文件

    /dev

    设备目录,Linux在这里创建设备节点

    /etc

    系统配置文件目录

    /home

    主目录,Linux在这里创建用户目录

    /lib

    库目录,存放系统和应用程序的库文件

    /media

    媒体目录,可移动媒体设备的常用挂载点

    /mnt

    挂载目录,另一个可移动媒体设备的常用挂载点

    /opt

    可选目录,常用于存放第三方软件包和数据文件

    /proc

    进程目录,存放现有硬件及当前继承的相关信息

    /root

    root用户的主目录

    /sbin

    系统二进制目录,存放许多GNU管理员级工具

    /srv

    服务目录,存放本地服务的相关文件

    /sys

    系统目录,存放系统硬件信息的相关文件

    /tmp

    临时目录,可以在该目录中创建和删除临时工作文件

    /usr

    大量用户级的GNU工具和数据文件都存储在这里

    /var

    可变目录,用以存放经常变化的文件,比如日志文件

    文件元数据

    7679615accd08e4fd59bc2e90d55b035.png

    b40602e871b9de3ca9695f4ad5f9c34f.png

    f669a1b6593f87362f242330398f83e1.png

    abc06f82e23017657f4517f72299be7e.png

    fdd1e5755381355e2f6f9c337cc74b07.png

    8754884c59f45d1f0c425d74db0f2d0c.png

    文件类型:

    • -表示普通文件(f)
    • d目录文件
    • b块设备文件(block)
    • c字符设备文件(character)
    • l符号链接文件(symbolic link file)
    • p命令管道文件(pipe)
    • s套接字文件(socket)

    文件权限:

    9位,每3位一组,三组

    权限(U,G,O):用户的,用户所在组的其他用户,其他用户

    每一组rwx(读,写,执行)

    -rw-r--r-- 1 root root 892 Oct 22 10:52 passwd

    修改权限,让bjsxt可写

    chmod命令:

    给passwd的其他用户添加可写的权限

    chmod o-w passwd

    -rw-r--rw- 1 root root 892 Oct 22 10:52 passwd

    [ugoa][+-][rwx]

    其他用户有了写的权限,就可以修改文件了。

    文件硬链接的次数

    文件的属主(owner)

    文件的属组(group)

    文件大小(size),单位字节

    时间戳(timestamp):最近一次被修改的时间

    访问时间:access

    修改:modify,文件内容发生了变化

    改变:change,文件元数据发生了变化

    stat

    第三节 系统操作命令

    df

    显示各个挂载分区的使用情况,使用人类能读懂的方式显示。

    df -h

    4d48a186cd55ba461b02b78f731ace57.png

    du

    查看当前目录下每个文件的大小,以人类能读懂的方式显示

    du -hs ./*

    f3d7f2c7ed61444340ba7ce1ff1f5104.png

    cd

    切换工作目录

    cd /etc/

    92e9ebe6fae1c0ee4c2c88e73a68f2ff.png

    回家目录

    cd

    737f989d2775b0c8e51c20636adc3d7b.png

    cd ~

    db084bdb3fa148f46459ac7faf9f0683.png

    去root的家目录

    cd ~root

    79c0a792ccaf9635dad7eeddaa0bf25a.png

    回到上一个目录

    cd -

    77c7d882e5c7035acc6e849bd795893c.png

    pwd

    pwd显示当前工作路径

    pwd

    cd

    pwd

    71f331f88d3713c28c6f64d49a3b6cff.png

    mkdir:使用绝对路径指定要创建的目录

    • ls /
    • mkdir /a
    • ls /

    79f506a4d273d25b1022bf65b9ccaaac.png

    在当前目录创建目录,相对路径

    • ls /
    • mkdir /a
    • pwd
    • mkdir a
    • ls

    b7bc91f62e51165a17f6601296e5a292.png

    深度创建目录:mkdir a/b/c

    mkdir -p a/b/c

    1526fcb5baa272844b3d6503c0f4c0e3.png

    在指定目录下创建三个目录:1dir,2dir,3dir:mkdir a/b/c/{1,2,3}dir

    a92b6f0b47b756611fa8f9880df0efea.png

    rm:删除文件

    • touch a/b/c/hello.java
    • ls a/b/c
    • rm a/b/c/hello.java
    • ls a/b/c

    28633bcbb6c416edd3fd643810c38c71.png

    强制删除文件:touch a/b/c/hello.java

    • ls a/b/c
    • rm -f a/b/c/hello.java
    • ls a/b/c

    c668d03e1ba9f8c92026f4becf6cda47.png

    迭代删除文件(目录)

    • ls a/b/c
    • rm a/b/c/okokdir

    28e9ec0007e2fb2ae2687e086f49ad09.png
    • ls a/b/c
    • rm a/b/c/okokdir
    • ls a/b/c

    8d5d964469ad59035ccd306e77620c62.png

    迭代强制删除目录(文件)

    • ls a/b/c
    • rm -rf a/b/c/okokdir
    • ls a/b/c

    74e6532523ec4a79ec6022c9543db631.png
    • cp
    • cp filea fileb
    • ls
    • cp /etc/passwd ~
    • ls

    edf5496c76f9d2e77d29e45141160047.png

    拷贝目录:

    • cp -r dira dirb
    • ls /etc/yum.repos.d/
    • cp /etc/yum.repos.d/ ~

    628e80da831b2d36ea398358eb0a81ca.png
    • ls /etc/yum.repos.d/
    • cp -r /etc/yum.repos.d/ ~

    26245532c26dcffed7ad880de4438b4c.png

    ln:创建硬链接

    • ln a b
    • ll -i
    • ln passwd pwd
    • ll -i

    创建软连接:ln -s a b

    • ll -i
    • ln -s passwd pwds
    • ll -i

    列出内容,同时显示每个文件的inode的值

    • ls -l -i
    • stat

    显示文件的元数据:stat /etc/profile

    • change和modify的不同
    • modify指的是文件内容被修改的时间
    • change表示文件元数据被修改的时间

    0bc1700d00bfe446c39f0c98654db220.png

    touch

    • touch 已存在的文件,抹平各个时间
    • touch 不存在的文件,则创建文件

    cat:显示文件内容

    more

    • 翻页功能
    • 只能下翻(回车按行,空格键翻页),不能上翻,到结尾退出。q退出

    less

    • 提供上翻下翻的功能,q退出
    • 空格键向下翻页,b向上翻页,p回首页,回车按行下翻
    • /root 查找包含root的信息

    head:查看文件内容的前10行

    • head /etc/profile
    • 查看文件内容的前2行
    • head -2 /etc/profile

    tail:查看文件结尾的后10行

    • tail /etc/profile
    • 查看文件结尾的后2行
    • tail -2 /etc/profile

    管道:|

    • 如何显示文件中间的几行?
    • head -m profile | tail -n
    • 管道左侧的输出作为右侧的输入
    • echo "/" | ls -l 错误,因为ls不需要输入,只需要参数
    • xargs:将前面输出作为后面命令的参数:echo "/" | xargs ls -l

    vi编辑器的使用

    • i 进入编辑模式
    • a 在选定字符后插入字符
    • o 在当前行下添加新行
    • O 在当前行上添加新行
    • I 在当前行首进入编辑模式
    • A 在当前行末进入编辑模式
    • ESC 退出编辑模式
    • : 末行模式
    • ESC,ESC 退出末行模式
    • ZZ 在命令模式保存并退出编辑器
    • :wq 保存并退出编辑器
    • :w 保存编辑器内容
    • :q! 不保存退出编辑器
    • 移动光标:h左j下k上l右
    • w 移动到下一个单词的词首
    • e:跳至当前或下一个单词的词尾
    • b:跳至当前或下一个单词的词首
    • 0:绝对行首
    • ^:行首的第一个非空白字符
    • $:绝对行尾
    • G:文档末尾
    • 3G:第三行
    • gg:文档开头
    • ctrl-f 向下翻页 forward
    • ctrl-b 向上翻页 backward
    • 删除替换单个字符:x:删除光标之前位置字符;3x:删除光标开始3个字符
    • r:替换光标位置字符
    • dw 删除单词
    • dd 删除整行
    • yw 复制单词
    • yy 复制1行
    • nyy 复制n行,n是数字
    • p 粘贴 paste
    • ctrl+r:重做 操作结束后使用u退回到上次操作,则ctrl+r重做
    • . 重复上一步操作
    • set:设置
    • :set nu number
    • :set nonu nunumber
    • :set readonly
    • :/after
    • n,N
    • ?向上查找
    • :! 执行命令
    • 查找并替换:s/str1/str2/gi
    • /:临近s的第一个为边界字符:/ @ #(为了防止内容和边界字符重复,可以使用@和#做边界字符)
    • g:一行内全部替换
    • i:忽略大小写
    • n:行号
    • .:当前光标行
    • +n:偏移n行
    • $:末尾行,$-3
    • %:全文
    • :%d 删除全文
    • :.,$-1d 从当前行删除到倒数第二行
    • :.,+3d 从当前行再往下数三行删除
    • :.,13d 从当前行到第13行删除

    软件源

    • centos切换软件源:
    • 本地软件源
    • 通过nginx发布内部软件源
    • 让Centos的软件源指向其他源

    1c89620a49e242992030324a807957bd.png

    cd /etc/yum.repos.d/

    CentOS-Base.repo

    本地软件源

    • cd /etc/yum.repos.d/
    • cp CentOS-Base.repo localRepo.repo
    • mkdir old
    • mv CentOS-* old 做备份将原来的文件备份到一个位置
    • vim localRepo.repo

    [base]

    name=CentOS-$releasever - Base

    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os

    baseurl=file:///mnt

    gpgcheck=0

    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

    插入DVD的ISO镜像文件(CentOS-6.8-x86_64-bin-DVD1.iso),挂载到/mnt目录

    a48545c0ae83062b0c6fe1f6e68d4608.png
    • mount /dev/cdrom /mnt
    • cd /mnt

    查看其中的内容

    • cd /mnt/Packages
    • ls -l | wc -l

    统计出该目录有多少个rpm包

    ef0c34bece2b9824622625a4114fe06a.png
    • yum clean all 清空本地元数据缓存
    • yum makecache 创建本地元数据缓存
    • yum repolist查看元数据的具体信息

    a079435aa6a72826fda043bdb345072c.png
    • yum install pcre
    • yum install gcc

    至此,本地yum源配置完成。

    CentOS使用其他源

    如果使用清华的,请使用:

    https://mirrors.tuna.tsinghua.edu.cn/help/centos/下的centos6的内容

    将该内容贴到/etc/yum.repos.d/mytsinghua.repo中

    • yum clean all
    • yum makecache

    即可

    使用阿里巴巴的源

    查看帮助信息

    34dae4362adaaaa79ae4e74d79ed9628.png

    b02513b590be338c6f481709d701d577.png

    CentOS

    1、备份

    d5706752769f43e29bc7501c1ff5adae.png

    2、下载新的CentOS-Base.repo 到/etc/yum.repos.d/

    CentOS 6:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

    或者:curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

    CentOS 7:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

    或者:curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

    3、之后运行yum makecache生成缓存

    4、其他非阿里云ECS用户会出现 Couldn't resolve host 'mirrors.cloud.aliyuncs.com' 信息,不影响使用。用户也可自行修改相关配置: eg:

    sed -i -e '/http://mirrors.cloud.aliyuncs.com/d' -e '/http://mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.

    需要yum clean all

    yum makecache

    就可以使用aliyun的yum源了。

    展开全文
  • 这是本人第一次写博客,之前从一些开源技术网站上看到不少大牛...本文主要讲述在shell中getopts命令的使用以及本人写的一个脚本小案例。由于本人技术水平和能力有限,文章中的命令说明部分主要来自于help getopts的...

    这是本人第一次写博客,之前从一些开源技术网站上看到不少大牛和前辈们的文章,从中学习受益。本着开源界的奉献和学习精神,觉得有必要将自己的学习成果拿出来与大家一起交流分享,既当作是一种自我学习的总结也可能帮助到有需要的人,因此发表了该篇博客。本文主要讲述在shell中getopts命令的使用以及本人写的一个脚本小案例。由于本人技术水平和能力有限,文章中的命令说明部分主要来自于help getopts的翻译,同时会带有一些本人的主观意识,如有任何描述不对的地方,请大家批评指正。

    在日常工作中写shell脚本,往往会涉及到一些命令行选项和参数的解析,这个解析过程如果完全由自己写代码去控制实现将会有一定困难,这里给大家介绍一个命令解析工具getopts。getopts是bash shell的内建命令,作用是在shell脚本中解析由命令行传递的选项和参数(也可能传递给函数、另一个被调用的shell脚本的位置参数,关于选项或参数,后面会讲解)。getopts只支持短选项,若要解析长选项请参考getopt。

    getopts命令语法:

    getopts optstring name [arg]

    相关的术语:

    选项(option):GNU风格的命令选项,如:-x,-y等减号加上单个字母的为短选项;--help为长选项;

    选项的参数:某些选项之后必须尾随参数,如:-f xxx.conf,xxx.conf称为选项的参数,但-f和xxx.conf之间的空格不是必须的;

    参数:位于最后一个选项,空格之后的字符串;

    optionstring:用于匹配option的字符串,optionstring中每个字母对应的是去除减号后的option(这里指短选项);

    [arg]:用来替代位置参数被getopts解析的,类似于将$@赋值给arg;

    OPTIND: getopts的一个内置变量,表示下一个要处理的参数索引,每次shell或shell脚本执行的时候初始化为1;

    name: getopts每解析到一个选项,都会将该选项对应的字符复制给name变量.

    getopts命令的简单解释:

    1.optstring中如果字母后面跟随着冒号,表示该字母所表示的option后面是带参数的,参数值将被赋到OPTARG变量中。如test.sh中包含:getopts "i:" name; 那么在命令行执行test.sh -i 1.1.1.1时,$name='i',$OPTARG=1.1.1.1

    getopts包含两种错误处理的模式

    安静模式下:

    2.optstring的第一个字符为冒号时,getopts将使用安静模式来报告错误(但不会有错误提示输出),生产环境中一般使用该模式;

    3.如果输入一个无效的字符作为选项时(optstring中没包含的字符),将‘?’赋值给name变量,该无效选项的字符赋值给OPTARG变量;

    4.如果选项要求跟随的参数没找到,getopts会将冒号":"赋值给name变量,设置OPTARG为发现的选项字符;

    非安静模式下:

    5.如果getopts不处于安静模式,一个无效的选项被发现,'?'将被设置到name变量中且unset OPTARG;

    6.如果选项要求的参数没找到,'?'将被设置到name,OPTARG将被unset,错误提示信息将被打印.

    退出状态:

    7.如果shell中$OPTERR环境变量值为0,getopts将关闭错误信息的打印,即使optstring中第一个字符不是冒号。默认的$OPTERR值为1;

    8.getopts一般情况下解析位置参数($0-$9),但位置参数超过这个范围时仍然能被正确解析;

    9.如果选项被发现(匹配optionstring)返回true,如果遇到了选项的结尾或者有错误则返回false.

    脚本示例:

    1. 不带可选参数[arg]

    #!/bin/bash

    echo "OPTIND starts at $OPTIND"

    while getopts ":q:p" optname

    do

    case "$optname" in

    "p")

    echo "Option $optname is specified"

    ;;

    "q")

    echo "Option $optname has value $OPTARG"

    #shift 1

    shift $((OPTIND-2))

    ;;

    "?")

    echo "Unknown option $OPTARG"

    ;;

    ":")

    echo "No argument value for option $OPTARG"

    ;;

    *)

    # Should not occur

    echo "Unknown error while processing options"

    ;;

    esac

    echo "OPTIND is now $OPTIND"

    done

    执行结果:

    [root@dns1 ~]# bash test_getopts.sh -q aa -p -h

    OPTIND starts at 1

    Option q has value aa

    OPTIND is now 3

    Unknown option h

    OPTIND is now 4

    2. 带可选参数[arg]

    #!/bin/bash

    echo "OPTIND starts at $OPTIND"

    while getopts ":q:p" optname "-q qarg" "-p" "-h"

    do

    case "$optname" in

    "p")

    echo "Option $optname is specified"

    ;;

    "q")

    echo "Option $optname has value $OPTARG"

    ;;

    "?")

    echo "Unknown option $OPTARG"

    ;;

    ":")

    echo "No argument value for option $OPTARG"

    ;;

    *)

    # Should not occur

    echo "Unknown error while processing options"

    ;;

    esac

    echo "OPTIND is now $OPTIND"

    done

    执行结果:

    [root@dns1 ~]# bash test_getopts.sh

    OPTIND starts at 1

    Option q has value qarg

    OPTIND is now 2

    Option p is specified

    OPTIND is now 3

    Unknown option h

    OPTIND is now 4

    3. 实现一个添加yum源的脚本

    #!/bin/bash

    #

    # Descrition: this script will download the yum repo file from mirrors.163.com and epel for CENTOS/REDHAT DISTIBUTE

    # Author: Gateray Jo

    # mail: hikaru211@126.com

    set -e

    prog=`basename $0`

    arch=`uname -m`

    release=`lsb_release -r | sed 's/.*:[[:space:]]*//'`

    function usage() {

    cat<

    Usage: ./${prog} [options] [arg]

    -h: print the command help.

    -u: specified the baseurl for yum repository, must use with -ufn combination.

    -f: specified the name of local repofile(no ".repo" ext name) which place in /etc/yum.repos.d/, must use with -ufn

    combination.

    -n: specified the repo's name in xxx.repo file, must use with -ufn combination.

    -d: specified the url of repofile which will be download to /etc/yum.repos.d/.

    By default, nothing options are specified which will download epel and 163 yum repofile.

    eof

    }

    function default() {

    major_rel=${release%%.*}

    # download 163 repofile

    printf "Download 163 repofile from mirrors.163.com:\n"

    wget -P /etc/yum.repos.d http://mirrors.163.com/.help/CentOS${major_rel}-Base-163.repo

    printf "Download epel repofile from http://dl.fedoraproject.org.:\n"

    if [[ $arch = "x86_64" ]]; then

    [ ${major_rel} -eq 5 ] && rpm -ivh http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm

    [ ${major_rel} -eq 6 ] && rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

    else

    [ ${major_rel} -eq 5 ] && rpm -ivh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm

    [ ${major_rel} -eq 6 ] && rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

    fi

    return $?

    }

    if [[ $# -eq 0 ]]; then

    default

    exit $?

    fi

    while getopts ":hu:f:n:d:" optname; do

    case $optname in

    "h")

    usage && exit 0

    ;;

    "u")

    u_opt=1

    u_arg=$OPTARG

    ;;

    "f")

    f_opt=1

    u_arg=$OPTARG

    ;;

    "n")

    n_opt=1

    n_arg=$OPTARG

    ;;

    "d")

    wget -P /etc/yum.repos.d $OPTARG

    exit $?

    ;;

    "?")

    echo "Unknown option $OPTARG"

    usage && exit 1

    ;;

    ":")

    echo "It is need a option value for $OPTARG"

    usage && exit 1

    ;;

    *)

    echo 'Unknown error!' && exit 1

    ;;

    esac

    done

    if [[ $u_opt -eq 1 ]] && [[ $f_opt -eq 1 ]] && [[ $n_opt -eq 1 ]]; then

    if [[ ${n_arg} =~ '-' ]]; then

    echo "Invalid value for -n option, \"${n_arg}\" is include '-' character."

    exit 1

    fi

    cat >> /etc/yum.repos.d/${f_arg}.repo <

    [${n_arg}]

    name=${n_arg}

    baseurl=${u_arg}

    enabled=1

    gpgcheck=0

    eof

    else

    usage && exit 1

    fi

    脚本的执行:

    1)打印命令帮助

    [root@dns1 ~]# ./load_yum_repo.sh -h

    Usage: ./load_yum_repo.sh [options] [arg]

    -h: print the command help.

    -u: specified the baseurl for yum repository, must use with -ufn combination.

    -f: specified the name of local repofile(no ".repo" ext name) which place in /etc/yum.repos.d/, must use with -ufn

    combination.

    -n: specified the repo's name in xxx.repo file, must use with -ufn combination.

    -d: specified the url of repofile which will be download to /etc/yum.repos.d/.

    By default, nothing options are specified which will download epel and 163 yum repofile.

    2)不带任何选项参数时,自动下载163和epel的yum源repofile

    [root@dns1 ~]# ./load_yum_repo.sh

    Download 163 repofile from mirrors.163.com:

    --2015-04-04 22:23:05-- http://mirrors.163.com/.help/CentOS6-Base-163.repo

    Resolving mirrors.163.com... 123.58.173.106

    Connecting to mirrors.163.com|123.58.173.106|:80... connected.

    HTTP request sent, awaiting response... 200 OK

    Length: 2006 (2.0K) [application/octet-stream]

    Saving to: “/etc/yum.repos.d/CentOS6-Base-163.repo”

    100%[==========================================================================================>] 2,006 --.-K/s in 0.05s

    2015-04-04 22:23:05 (39.2 KB/s) - “/etc/yum.repos.d/CentOS6-Base-163.repo” saved [2006/2006]

    Download epel repofile from http://dl.fedoraproject.org.:

    Retrieving http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

    warning: /var/tmp/rpm-tmp.wVrCDS: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY

    Preparing... ########################################### [100%]

    1:epel-release ########################################### [100%]

    3)从指定的url中下载repofile

    [root@dns1 ~]# ./load_yum_repo.sh -d http://mirrors.163.com/.help/CentOS6-Base-163.repo

    --2015-04-04 22:13:47-- http://mirrors.163.com/.help/CentOS6-Base-163.repo

    Resolving mirrors.163.com... 123.58.173.106

    Connecting to mirrors.163.com|123.58.173.106|:80... connected.

    HTTP request sent, awaiting response... 200 OK

    Length: 2006 (2.0K) [application/octet-stream]

    Saving to: “/etc/yum.repos.d/CentOS6-Base-163.repo”

    100%[==========================================================================================>] 2,006 --.-K/s in 0.05s

    2015-04-04 22:13:47 (40.9 KB/s) - “/etc/yum.repos.d/CentOS6-Base-163.repo” saved [2006/2006]

    4)创建自定义的repofile

    [root@dns1 ~]# ./load_yum_repo.sh -f test -n test -u file:///mnt

    [root@dns1 ~]# cat /etc/yum.repos.d/test.repo

    [test]

    name=test

    baseurl=file:///mnt

    enabled=1

    gpgcheck=0

    展开全文
  • reposync命令是一个python脚本。包含在yum-utils包中。因此,我们如果要使用reposync命令的时候,需要安装yum-utils包。使用以下命令:yum install yum-utilsreposync -r 仓库名(一般为base) -p 目标目录...

    reposync命令是一个python脚本。包含在yum-utils包中。

    因此,我们如果要使用reposync命令的时候,需要安装yum-utils包。

    使用以下命令:yum install yum-utils

    reposync -r 仓库名(一般为base) -p 目标目录

    展开全文
  • repoLinux的一些命令

    2020-02-24 21:36:20
    1.修改linux用户密码 passwd -> 输入旧密码 -> 输入新密码 2.移动文件到系统目录下 sudo cp -r Documents/android-studio /usr/local/src 3.用apt-get安装OpenJDK a.查看apt中的jdk版本 apt-cache ...

    1.修改linux用户密码

    passwd -> 输入旧密码 -> 输入新密码

     

    2.移动文件到系统目录下

    sudo cp -r Documents/android-studio /usr/local/src

     

    3.用apt-get安装OpenJDK

      a.查看apt中的jdk版本    apt-cache search java|grep jdk

      b.选择版本进行安装        apt-get install openjdk-8-jdk

      c.通过输入java -version判断是否需要配置环境变量

     

    4.修改文件名                    sudo mv a.txt b.txt      从a名称变为b

    5.查看文件修改日期           stat 文件名

    6.查看系统path已配置内容     echo $path

    7.已系统管理员权限运行所有的命令行          sudo -s  路径名将从$变为#

    8.显示隐藏的文件                    ls -a        ll -a      GUI中的三条横线的图标->显示隐藏的文件

    9.给AS设置alias,从而在命令行方便打开               

        a.sudo gedit ~/.bashrc

        b.文档末尾添加     alias as = /usr/locale/bin/andorid-studo/studio.sh          路径为studo.sh的路劲

        c.重新打开terminal,输入as 回车,AS将会打开

    10.linux的最根目录下面的bin里面,有很多的命令脚本,是所有用户共享使用的。最根目录下面的 /usr/bin/ 里面的命令,是当前用户自己可以使用的脚本。

    11.cd ~将到达用户目录的根目录,该目录再上两级将是系统目录,需要有系统管理员权限才可以操作

    在linux上生成SSH-key 简单原理介绍+生成步骤

     

    1.首先什么是SSH

    Secure Shell (SSH) 是一个允许两台电脑之间通过安全的连接进行数据交换的网络协议。通过加密保证了数据的保密性和完整性。SSH采用公钥加密技术来验证远程主机,以及(必要时)允许远程主机验证用户。

     

    2.SSH的好处

    1》传统的FTP、Telnet是再网络中明文传送数据、用户帐号和密码,很容易受到中间人攻击。而通过使用SSH,你可以把所有传输的数据进行加密,这样“中间人”这种攻击方式就不可能实现了, 而且也能够防止DNS和IP欺骗。

    2》第二个好处是:传输的数据是经过压缩的,所以可以加快传输的速度。

     

    3.怎么实现SSH的好处呢?【怎么才能做到加密】

    SSH利用SSH Key来进行前面提到的基于密钥的安全验证。

     

    4.SSH-Key是什么?

    1.首先什么是SSH

    Secure Shell (SSH) 是一个允许两台电脑之间通过安全的连接进行数据交换的网络协议。通过加密保证了数据的保密性和完整性。SSH采用公钥加密技术来验证远程主机,以及(必要时)允许远程主机验证用户。

     

    2.SSH的好处

    1》传统的FTP、Telnet是再网络中明文传送数据、用户帐号和密码,很容易受到中间人攻击。而通过使用SSH,你可以把所有传输的数据进行加密,这样“中间人”这种攻击方式就不可能实现了, 而且也能够防止DNS和IP欺骗。

    2》第二个好处是:传输的数据是经过压缩的,所以可以加快传输的速度。

     

    3.怎么实现SSH的好处呢?【怎么才能做到加密】

    SSH利用SSH Key来进行前面提到的基于密钥的安全验证。

     

    4.SSH-Key是什么?

    1》SSH-Key 就是一对密钥对。【一个是公钥,一个是私钥】

    2》公钥是给别人用的。私钥是给自己用的。

    3》别人是谁?可以是GitLab服务器。

    自己是谁?可以是本地。

    4》举个例子

    4.1》本地想要使用git从gitHub/gitlab上拉取代码。

    4.2》给GitHub/GitLab配置公钥,公钥就可以作为一个加密的箱子,将代码放在箱子里。

    4.3》被本地拉取到后,使用私钥将加密的箱子打开。就能拿到代码了。

    4.4》整个过程中,都没有用户名/密码在网络中传输,所以不会给他人拦截到,破解你的数据

    5》所以,SSH-Key的直观作用,就是【让你方便的登录到 SSH 服务器,而无需输入密码】

     

    5.SSH-Key的密钥类型

    有RSA和DSA两种认证密钥

     

    6.在linux上生成SSH-Key的命令步骤

    1》首先,你得在root目录下

     

    sudo -s

    2》查看是否已经存在SSH-Key【其实就是查看.ssh这个隐藏目录是否存在】

     

    ls -al ~/.ssh

     

    如果没有就新建,如果有,建议删除再新建

    删除命令【其实就是删除.ssh这个隐藏目录目录】

     

    rm -rf .ssh

     

    3》新生成SSH-key【替换成你自己的邮箱】

     

    ssh-keygen -t rsa -C "sxd4business@qq.com"

    键入命令后,会让你输入密码用来保护你的密钥等,总共三次需要输入的,你都直接三次回车就好!!

    【关键是,设置了你自己以后忘了就得重新生成】

    【-C 是给你的密钥设置注释,你不想设置为邮箱,设置成别的也行】

    4》生成后,会在/root目录下,也就是当前用户的目录下,生成一个.ssh隐藏目录,目录中会有【id_rsa】和【id_rsa.pub】两个文件,一个是私钥,一个是公钥。你现在就可以复制使用了

     

     

    7.附录ssh-keygen命令参数解释

    -b:指定密钥长度;

    -e:读取openssh的私钥或者公钥文件;

    -C:添加注释;

    -f:指定用来保存密钥的文件名;

    -i:读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥;

    -l:显示公钥文件的指纹数据;

    -N:提供一个新密语;

    -P:提供(旧)密语;

    -q:静默模式;

    -t:指定要创建的密钥类型。

    展开全文
  • 1、进入目录 yum.repos.d [root@linux1 yum.repos.d]#...[root@linux1 yum.repos.d]# vi CentOS-Base.repo 把配置改为 [c7-media] name=local baseurl=file:///media/cdrom/ gpgcheck=1 enabled=1 yum ...
  • 目录 自定义yum仓库:createrepo 自定义repo文件 使用yum命令安装httpd软件包 卸载httpd软件包:yum –y remove 软件名 清除yum缓存:yum clean all 使用yum查找软件包:yum search 软件包名 ...
  • 今天刚回到家,在我的虚拟机上有安装了一个Linux系统,安装好之后,想要安装如下命令,yum install wget,yum install gcc,yum install vim,发现一个也没有安装成功,特别奇怪。我第一次安装Linux系统的时候,安装...
  • Linux基础命令

    2019-08-28 15:07:29
    linux一切都是基于文件(文件几乎没有后缀限制),.rpm/ .repo linux同时也是一个树形的文件系统 linux中有且仅有一个root用户 常见目录: / :根目录 /etc: 配置文件 /home:普通用户的家目录 /opt:操作空间目录 /bin...
  • linuxrepo文件的配置

    万次阅读 2017-03-18 16:12:00
    首先我们需要说明,在linux下,repo文件都是存放在/etc/yum.repos.d文件夹之中的。repo文件即是我们常说的源文件(repositry匹配文件),在使用yum命令的时候系统会自动读取repo文件,然后去repositry获取软件。但是...
  • Linux常用命令

    2019-11-19 15:05:28
    使用rename命令,批量重命名文件夹,多用于备份/etc/yum.repo.d/目录下的repo文件。
  • Vi也是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。 1、vi的基本概念  基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode...
  • linux基本命令

    2020-11-17 20:58:53
    cd命令进入/opt目录下 mkdir命令在/opt目录下创建新的目录 ...vi编辑/etc/yum.repos.d/local.repo文件 cat命令查看刚才编辑的文件里的内容 用yum安装ftb服务 vi编辑ftp配置文件 添加anon_root=/opt systemctl star
  • Linux tee命令用于读取标准输入的数据,并将其内容输出成文件。 tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。 tee [-ai][--help][--version][文件...] 参数:
  • 本章Blog相关Linux知识点程序:预编译,编译(源代码——>cpu指令),汇编,连接 API:application programing interface 应用程序接口;兼容,意味开发库接口兼容,因此源代码可跨平台 ABI:application binary ...
  • Linux常用命令100

    2018-11-16 09:50:51
    @日常命令 cd .. // 返回上一级目录 cd - // 返回上一次目录 cd或cd ~ // 返回家目录 cd / // 进入根目录 pwd // 显示当前目录 ls // 显示当前目录文件 ls localrepo/ // 显示指定目录的文件 ll // 查看目录文件的...
  • Linux wget命令入门

    2021-01-23 14:01:30
    比如下载一个repo文件,多次执行命令会生成副本 [root@mypc01 soft]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 正在保存至: “docker-ce.repo.2” [root@mypc01 soft]# ll -rw-r--r-...
  • linux 常用命令

    2018-11-27 21:02:00
    1.linux 安全防止暴力破解 https://www.cnblogs.com/panblack/p/secure_ssh_auto_block.html 查看历史登录记录 sudo lastb redhat7或者centos7配置阿里云yum源 cd /etc/yum.repos.d wget -P . ...
  • repo forall -c命令

    2020-11-20 23:47:58
    repo forall -c(command) 命令执行技巧 下载新分支 repo forall -c git checkout -b 本地分支名称(自定义) 服务器分支名称 切换到另一个分支 repo forall -c git checkout your_branch 删除分支 repo forall -c ...
  • Linux yum命令

    2017-11-12 13:53:00
    1 . 挂载rhel-server-6.4-x86_64-dvd.iso到/mnt目录 [root@localhost yum.repos.d]# mount -o loop rhel-server-6.4-x86_64-dvd.iso /mnt/ 2 yum repo文件 cd /etc/yum.repos.d...
  • Linux常用命令100条

    2018-10-29 19:53:30
    Linux常用命令100条 @日常命令 cd … // 返回上一级目录 cd - // 返回上一次目录 cd或cd ~ // 返回家目录 cd / // 进入根目录 pwd // 显示当前目录 ls // 显示当前目录文件 ls localrepo/ // 显示指定目录的文件 ll ...
  • linux常用命令

    2016-10-10 16:10:32
    查看系统中有哪些yum源:yum repolist 查看yum源列表yum repoinfo 查看yum源的详细信息查看已安装的服务:rpm -qa|grep -i mysql-i作用是作用是不区分大小写rpm -qa|grep -i XXX1、系统信息 arch 显示机器的处理器...
  • linux命令

    2018-02-22 12:48:49
    一.centOS安装 替换yum源为ali源 ...mv CentOS-Base.repo CentOS-Base.repo.bak  wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo  mv Centos-7.repo CentOS-Base.repo yum clean...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,709
精华内容 683
关键字:

linuxrepo命令

linux 订阅