`

linux,shell学习(一)

阅读更多
1.1 什么是shell
shell是核心程序(kernel)之外的指令解析器,是一个程序同时一中命令语言和程序设计语言。
shell的类型:ash,bash,sh,ksh,csh,tcsh
    -/etc/shells
    -echo $SHELL
程序在shell中运行
shell中可以运行子shell
    #!/bin/bash
    echo "hello word"
    chmod +x xx.txt
    ./xx.txt
1.2存取权限与安全
    文件和目录的权限(-rwrr--r--)
    setuid(suid/guid)(chmod u+s,g+s file)
    chown 和 chgrp (chown user file/chgrp group file)
    unmask(unmask nnn)
    符号链接(ln [-s] source_path target_path)

    ls -lh 查看各个文件占用的空间大小   
    chmod [who] operator [permission] filename
    who(u,g,o,a) u:用户, g:全部用户, o:其他用户,a:全部
    operator(+,-,=) +:增加 - :减少 = :设定某个权限
    permission(r,w,x,s,t)
    r:可读,w:可写,可更改,x:执行
    s或S(SUID,Set UID):可执行的文件搭配这个权限,便能得到特权,任意存取该文件的所有者能使用的全部系统资源。请注意具备SUID权限的文件,黑客经常利用这种权限,以SUID配上root帐号拥有者,无声无息地在系统中开扇后门,供日后进出使用。
    T或T(Sticky):/tmp和 /var/tmp目录供所有用户暂时存取文件,亦即每位用户皆拥有完整的权限进入该目录,去浏览、删除和移动文件。
    [hadoop@localhost ~]$ ls -lh
    总用量 32K
    drwxr-xr-x. 2 hadoop hadoop 4.0K 4月   7 01:08 公共的
    第一列:第一个字符表示文件的类型:目录或者文件,连接等
        第2,3,4位表示:当前用户对此文件的权限:读,写,执行
        第5,6,7位表示:所属组的权限:执行,读
        最后三位表示:其他用户对此文件用户的权限
   第二列:文件硬链接数或目录子目录数
    如果一个文件不是目录那么这一字段表示,这个文件所具有的硬链接数,即这个文件总共有多少个文件名.查看第一个文件:
    -rw-r--r-- 1 root root 1581 11月 24 18:14 anaconda-ks.cfg
    第2字段的值为1,说明这个文件只有anaconda-ks.cfg这一个文件名.即只有一个指向该链接的硬链接.
    如果我用ln,做一个指向该文件的硬链接再查看该文件,该文件的第2字段就会变成2:
   
[root@localhost ~]# ln anaconda-ks.cfg anaconda-ks.cfg.hardlink 
    [root@localhost ~]# ls -l 
    总用量 4071 
    -rw-r--r-- 2 root root 1581 11月 24 18:14 anaconda-ks.cfg 
    -rw-r--r-- 2 root root 1581 11月 24 18:14 anaconda-ks.cfg.hardlink

    此时,anaconda-ks.cfg 和anaconda-ks.cfg.hardlink 称为互为硬链接.他们指向同一个文件,无论是修改哪一个文件,另一个里也做相应的变化,因为实际上他们指向同一个文件.
用ls -i anaconda-ks.cfg可以查看它的文件节点(inode)
互为硬链接的文件具有相同的文件节点. 以下是验证实验:
   
[root@localhost ~]# ls -i anaconda-ks.cfg 
    18102 anaconda-ks.cfg 
    [root@localhost ~]# ls -i anaconda-ks.cfg.hardlink 
    18102 anaconda-ks.cfg.hardlink

    可以看到,这两个文件具有相同的文件节点号:18102
    如果你知道一个文件有多个文件名,如何查找他的其他文件名分布在什么地方呢?
    可以先用ls -i 获得它的节点号,然后用find查找,       如/etc/sysconfig/networking/devices/ifcfg-eth0就具有多个文件名,我要查找与它互为硬链接的文件:
   
[root@localhost ~]# ls -i /etc/sysconfig/networking/devices/ifcfg-eth0 
    147181 /etc/sysconfig/networking/devices/ifcfg-eth0

    得到它的节点号为 147181
    再用find查找:
    [root@localhost ~]# find /etc -inum 147181 
    /etc/sysconfig/networking/devices/ifcfg-eth0 
    /etc/sysconfig/networking/profiles/default/ifcfg-eth0

     这样就得到了同一个文件的不同文件名的位置.
    *************************************
    如果是一个目录,第2字段的含义:
    **************************************
    如果是一个目录,则第2字段表示该目录所含子目录的个数.
    新建一个空目录,这个目录的第二字段就是2,表示该目录下有两个子目录.为什么新建的目录下面会有两个子目录呢?
    因为每一个目录都有一个指向它本身的子目录"." 和指向它上级目录的子目录"..",这两个默认子目录是隐藏的.用ls -a可以看到.
   每次在目录下新建一个子目录,该目录第2字段的值就增1,但是新建一个普通文件该字段值不增加.
--------------------------------------------------------
    第三列:文件的拥有者
    第四列: 文件拥有者所在的组
    第五列:文件文件大小(以字节为单位)
    第六列:文件创建月份
    第七列: 文件创建日期
    第八列: 文件创建时间

        文件创建的时间可以通过touch命令来修改.如:
        #touch testfile
        可以把testfile的创建时间修改为当前时间.
        touch的详细用法请看链接文档:
        #man touch
        另外,一个文件还有最后访问时间,最后修改时间等属性.
        这些属性可以用ls 的其它参数显示出来.
    第九列:文件名
        如果是一个符号链接,那么会有一个 "->" 箭头符号,后面根一个它指向的文件名.
    如果想改变一个文件的权限,必须是root用户或者文件的拥有者
    chown [-cfhvR] [--help] [--version] user[:group] file...
    user : 新的档案拥有者的使用者 ID
  group : 新的档案拥有者的使用者群体(group)
   -c : 若该档案拥有者确实已经更改,才显示其更改动作
  -f : 若该档案拥有者无法被更改也不要显示错误讯息
  -h : 只对于连结(link)进行变更,而非该 link 真正指向的档案
  -v : 显示拥有者变更的详细资料
  -R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)
  --help : 显示辅助说明
  --version : 显示版本
   chown 和 chgrp (chown user file/chgrp group file)
   改变文件所属的用户或者组
   chown [-R] owner filename
   chown ower.group filename
   chown .group filename
   chgrp [-R]  group filename
   umask
   umask的值共有4位,分别代表:gid/uid,属主,组权,其它用户权限。一般用的是后3位。
   umask设置的是权限“补码”:如上umask值为022,则对应目录权限为7-0=7,7-2=5,7-2=5,即用777减去umask的相应位上的值;而对应的文件权限是用666减去umask的相应位上的值
   修改umask的值
       输入:umask 024,则可直接修改以后新建的目录和文件的默认权限为:553,642。
       //在文件 /etc/profile里可以设置umask值
   符号链接
      硬链接
      软连接
      ln [-s] source_path target_path
   1.Linux链接概念
      Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic     Link)。默认情况下,ln命令产生硬链接。
  【硬连接】
       硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
  【软连接】
       另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
   2.通过实验加深理解
     
      [root@localhost ~]$ touch f1          #创建一个测试文件f1
      [root@localhost ~]$ ln f1 f2          #创建f1的一个硬连接文件f2
      [root@localhost ~]$ ln -s f1 f3       #创建f1的一个符号连接文件f3
      [root@localhost ~]$ ls -li            # -i参数显示文件的inode节点信息
      total 0
      9797648 -rw-r--r--  2 oracle oinstall 0 Apr 21 08:11 f1
      9797648 -rw-r--r--  2 oracle oinstall 0 Apr 21 08:11 f2
      9797649 lrwxrwxrwx  1 oracle oinstall 2 Apr 21 08:11 f3 -> f1
      

      从上面的结果中可以看出,硬连接文件f2与原文件f1的inode节点相同,均为9797648,然而符号连接文件的inode节点不同。
     
      [root@localhost ~]$ echo "I am f1 file" >>f1
      [root@localhost ~]$ cat f1
      I am f1 file
      [root@localhost ~]$ cat f2
      I am f1 file
      [root@localhost ~]$ cat f3
      I am f1 file
      [root@localhost ~]$ rm -f f1
      [root@localhost ~]$ cat f2
      I am f1 file
      [root@localhost ~]$ cat f3
      cat: f3: No such file or directory
      

      通过上面的测试可以看出:当删除原始文件f1后,硬连接f2不受影响,但是符号连接f1文件无效
   3.总结
       可以做一些相关的测试,可以得到以下全部结论:
       1).删除符号连接f3,对f1,f2无影响;
       2).删除硬连接f2,对f1,f3也无影响;
       3).删除原文件f1,对硬连接f2没有影响,导致符号连接f3失效;
       4).同时删除原文件f1,硬连接f2,整个文件会真正的被删除。
    别名的使用
        Linux 提供的命令别名功能很有用.比如我经常使用ll | more 命令,而不是直接使用ll.但又不想敲那么多的字符.那么,可以给ll | more设置别名:
       
[root@localhost ~]# alias lm='ll | more' 

        试试命令lm,它的效果跟ll | more一样! 再比如DOS下的清屏命令是cls,而Linux下是clear.如果在Linux下也想使用cls,可以给它设置一个别名:
       
[root@localhost ~]# alias cls='clear' 

        直接输入alias,可以查看当前设置的命令别名:
       
[root@localhost ~]# alias
        alias cls='clear'
        alias cp='cp -i'
        alias l.='ls -d .* --color=tty'
        alias ll='ls -l --color=tty'
        alias lm='ll | more'
        alias ls='ls --color=tty'
        alias mv='mv -i'
        alias rm='rm -i'
        alias vi='vim'
        alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --    show-tilde' 

        如果想取消命令别名,使用unalias即可
       
[root@localhost ~]# unalias cls
        [root@localhost ~]# unalias lm
        [root@localhost ~]# alias
        alias cp='cp -i'
        alias l.='ls -d .* --color=tty'
        alias ll='ls -l --color=tty'
        alias ls='ls --color=tty'
        alias mv='mv -i'
        alias rm='rm -i'
        alias vi='vim'
        alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

    命令替换
        myfile的内容两个文件名:pram findfile
        ls `cat myfile` -al
    后台运行
         在后台执行程序
         nohup /root/start.sh &
         使用 jobs 查看任务 jobs -l
    管道
         cat xx.txt | more
    模式匹配
         ls *.txt -l
    特殊字符
         双引号:用来使shell无法认出空格,制表符和其他大多数的特殊字符。
         单引号:用来使shell无法认出所有特殊字符。
         反引号(`):用来替换命令。
         反斜杠:用于去除一个单个字符的特殊意义,它保留了跟随在之后的字符的字面值。
         分号:用于在同一行上放多个命令。
         &:命令后台执行。
         括号():创建成组的命令。
         竖杠(|):管道标示符。
         < >&:表示重定向。
         * ? [ ] !:表示模式匹配。
         #:表示注释(除第一行外)。
         空格,制表符,换行符:当做空白。
  • 大小: 281.4 KB
分享到:
评论

相关推荐

    第11讲:深入理解指针(1).pdf

    第11讲:深入理解指针(1)

    springboot整合 freemarker方法

    springboot整合 freemarker方法

    同行者4.1.2语音助手

    《同行者4.1.2语音助手:车机版安装详解》 在现代科技日新月异的时代,智能车载设备已经成为了汽车生活的重要组成部分。"同行者4.1.2"便是这样一款专为车机设计的语音助手,旨在提供更为便捷、安全的驾驶体验。该版本针对掌讯全系列设备进行了兼容优化,让车主能够轻松实现语音控制,减少驾驶过程中的手动操作,提升行车安全性。 我们来了解下"同行者4.1.2"的核心功能。这款语音助手集成了智能语音识别技术,用户可以通过简单的语音指令完成导航、音乐播放、电话拨打等一系列操作,有效避免了因操作手机或车机带来的分心。此外,其强大的语义理解和自学习能力,使得它能逐步适应用户的口音和习惯,提供更个性化的服务。 在安装过程中,用户需要注意的是,"同行者4.1.2"包含了四个核心组件,分别是: 1. TXZCore.apk:这是同行者语音助手的基础框架,包含了语音识别和处理的核心算法,是整个应用运行的基础。 2. com.txznet.comm.base.BaseApplication.apk:这个文件可能包含了应用的公共模块和基础服务,为其他组件提供支持。 3. TXZsetting.apk:这

    市场拓展主管绩效考核表.xls

    市场拓展主管绩效考核表

    “线上购车3D全方位体验:汽车模型展示与个性化定制功能”,three.js案例- 线上购车3d展示(源码) 包含内容:1.汽车模型展示;2.汽车肤;3.轮毂部件更;4.开关车门动画;5.汽车尺寸测量

    “线上购车3D全方位体验:汽车模型展示与个性化定制功能”,three.js案例- 线上购车3d展示(源码) 包含内容:1.汽车模型展示;2.汽车肤;3.轮毂部件更;4.开关车门动画;5.汽车尺寸测量;6.自动驾驶;7.镜面倒影;8.hdr运用;9.移动端适配; 本为html+css+three.js源码 ,核心关键词:three.js案例; 线上购车3D展示; 汽车模型展示; 汽车换肤; 轮毂部件更换; 开关车门动画; 汽车尺寸测量; 自动驾驶; 镜面倒影; HDR运用; 移动端适配; HTML+CSS+three.js源码。,"Three.js源码:线上购车3D展示案例,含汽车模型、换肤、轮毂更换等九大功能"

    (数据权威)中国城市_县域统计面板数据二合一

    数据名称:2000-2022年各县市区主要社会经济发展指标面板数据 数据类型:dta格式 数据来源:中国县域统计

    120页-环卫车项目初步方案.pdf

    一、智慧环卫管理平台的建设背景与目标 智慧环卫管理平台的建设源于对环卫管理全面升级的需求。当前,城管局已拥有139辆配备车载GPS系统、摄像头和油耗传感器的环卫车辆,但环卫人员尚未配备智能移动终端,公厕也缺乏信息化系统和智能终端设备。为了提升环卫作业效率、实现精细化管理并节省开支,智慧环卫管理平台应运而生。该平台旨在通过信息化技术和软硬件设备,如车载智能终端和环卫手机App,实时了解环卫人员、车辆的工作状态、信息和历史记录,使环卫作业管理透明化、精细化。同时,平台还期望通过数据模型搭建和数据研读,实现更合理的环卫动态资源配置,为环卫工作的科学、健康、持续发展提供决策支持。 二、智慧环卫管理平台的建设内容与功能 智慧环卫管理平台的建设内容包括运行机制体制建设、业务流程设计、智慧公厕系统建设、网络建设、主机和储存平台需求、平台运维管理体系、硬件标准规范体系以及考核评价体系等多个方面。其中,智慧公厕系统建设尤为关键,它能实时监控公厕运行状态,保障公厕的清洁和正常运行。平台建设还充分利用了现有的电子政务网络资源,并考虑了有线和无线网络的需求。在功能上,平台通过普查、整合等手段全面收集环卫车辆、企业、人员、设施、设备等数据,建立智慧环卫基础数据库。利用智能传感、卫星定位等技术实现环卫作业的在线监管和远程监控,实现对道路、公共场所等的作业状况和卫生状况的全面监管。此外,平台还建立了环卫作业网格化管理责任机制,实现从作业过程到结果的全面监管,科学评价区域、部门、单位和人员的作业效果。 三、智慧环卫管理平台的效益与风险规避 智慧环卫管理平台的建设将带来显著的环境、经济和管理效益。环境方面,它将有力推进环境卫生监管服务工作,改善环境卫生状况,为人民群众创造更加清洁、卫生的工作和生活环境。经济方面,通过智慧化监管,大大降低了传统管理手段的成本,提高了监管的准确性和效率。管理方面,平台能够追踪溯源市民反映的问题,如公厕异味、渣土车辆抛洒等,并找到相应的责任单位进行处置,防止类似事件再次发生。同时,平台还拥有强大的预警机制功能,能够在很多环卫问题尚未出现前进行处置。然而,平台建设也面临一定的风险,如部门协调、配合问题,建设单位选择风险以及不可预测的自然灾害等。为了规避这些风险,需要加强领导、统一思想,选择优秀的系统集成商承接项目建设,并做好计算机和应用系统的培训工作。同时,也要注意标准制定工作和相关法律法规的制定工作,以保证系统建设完成后能够真正为环卫管理工作带来便利。

    36 -企业管理主管绩效考核表1.xlsx

    36 -企业管理主管绩效考核表1

    1.1 -1.4 工程代码

    1.1 -1.4 工程代码

    USDT合约,USDT智能合约

    USDT合约,USDT智能合约

    基于姿态估计三维人脸形状重建.pdf

    基于姿态估计三维人脸形状重建.pdf

    一般员工绩效考核表模板(通用版) (2).xls

    一般员工绩效考核表模板(通用版) (2)

    全国295个地级市2011-2022互联网宽带接入用户数互联网普及率(数据权威)

    全国各省295地级市互联网普及率、互联网用户数、每百人互联网宽带用户(2011-2022年) 数据年份:2011-2022年(2022存在部分缺失) 数据范围:全国各省295个地级市 数据来源:地方统计局

    (数据权威)碳排放、碳中和、碳交易、碳金融、碳计算、碳建模资料

    一、各省、分行业CO2排放、283个地级市碳排放及计算过程 2.分行业二氧化碳排放量 在这里插入图片描述 3、280多个地级市碳排放及计算过程 二、碳中和文献、最新政策、碳金融数据+数学建模 1.二氧化碳减排规划,碳金融数据收集及数学建模 2.碳中和政策和下载量最高的碳中和论文 三、碳排放+碳市场+碳交易+碳中和+碳排放核算Excel自动计算表 全行业碳排放核算Excel自动计算表 四、碳交易数据 五、主要能源碳排放计算参数

    第20讲:自定义类型:结构体.pdf

    第20讲:自定义类型:结构体

    视觉跟踪算法综述.pdf

    视觉跟踪算法综述.pdf

    MATLAB超效率SBM-DEA模型代码详解:简易操作指南及期望与非期望产出的超效率分析,附Malmquist指数与分解功能,MATLAB的超效率SBM-DEA模型代码(有安装教程和内容讲解之类的东西

    MATLAB超效率SBM-DEA模型代码详解:简易操作指南及期望与非期望产出的超效率分析,附Malmquist指数与分解功能,MATLAB的超效率SBM-DEA模型代码(有安装教程和内容讲解之类的东西),操作很简单 可以做期望产出和非期望产出的超效率和非超效率sbm模型和Malmquist指数和分解 ,MATLAB; SBM-DEA模型; 超效率SBM-DEA; 安装教程; 内容讲解; 期望产出; 非期望产出; 超效率与非超效率sbm模型; Malmquist指数; 分解。,"MATLAB超效SBM-DEA模型代码:非期望产出分析的便捷工具"

    人事行政主管绩效考核评分表.xls

    人事行政主管绩效考核评分表

    人力资源管理工具绩效考核excel模板.xlsx

    人力资源管理工具绩效考核excel模板

Global site tag (gtag.js) - Google Analytics