linux shell 学习日记

                                                                       一                            前言


书到用时方恨少;事非经过不知难。

                                                              ——佚名撰


        由于工作需要,最近不得不在ubuntu上工作。linux这个平台虽说用了五六年,但是真是用linux工作略显得吃力,原因主要有两个:

         1、linux上可视化工具太少

         2、linux上的shell命令不是熟练程度不够

         为了能在工作能顺利进行,决定把linux shell 编程再学一遍,做下笔记。


                                                                  二               常用命令

1、文件权限

      为防止文件被恶意更改,可以在相关的文件和目录设置权限位,

一个文件一经创建,就具有三种访问方式:
        1) 读,可以显示该文件的内容。
        2) 写,可以编辑或删除它。
        3) 执行,如果该文件是一个 shell脚本或程序。

按照所针对的用户,文件的权限可分为三类:
       1) 文件属主,创建该文件的用户。
       2) 同组用户,拥有该文件的用户组中的任何用户。
       3) 其他用户,即不属于拥有该文件的用户组的某一用户。

2、下面是对文件和文件夹权限设置的一些常用命令

 2.1 chmod :

格式

(1) chmod [who] operator [permission] filename

who的含义是:
u 文件属主权限。
g 同组用户权限。
o 其他用户权限。
a 所有用户(文件属主、同组用户及其他用户 )。


operator的含义:
+ 增加权限。
- 取消权限。
= 设定权限。
permission的含义:
r 读权限。
w 写权限。
x 执行权限。
s 文件属主和组set-ID。
t 粘性位*。
l 给文件加锁,使其他用户无法访问。


u,g,o 针对文件属主、同组用户及其他用户的操作。
*在列文件或目录时,有时会遇到“ t”位。“t”代表了粘性位。如果在一个目录上出现“t”位,这就意味着该目录中的文件只有其属主才可以删除,即使某个同组用户具有和属主同等的权限。不过有的系统在这一规则上并不十分严格。

如果在文件列表时看到“ t”,那么这就意味着该脚本或程序在执行时会被放在交换区 (虚存)。不过由于当今的内存价格如此之低,大可不必理会文件的“ t”的使用。


(2) chmod [mode] file

其中mode是一个八进制数。

(3) chmod -R [mode] dir
            设置dir目录下的所有文件连同各个子目录下的文件的权限

2.2 chown和chgrp

改变文件和文件夹 所属用户和用户组

chmod -R -h owner file
- R选项意味着对所有子目录下的文件也都进行同样的操作。 - h选项意味着在改变符号链
接文件的属主时不影响该链接所指向的目标文件

2.3 find 和 xargs

       find 命令主要是是为了在系统中找一个特定的文件,


2.3.1 一般形式如下: find pathname -options [-print -exec -ok]
                   pathname find命令所查找的目录路径。例如用 .来表示当前目录,用 /来表示系统根目录,省略代表当前目录。
                   -print find命令将匹配的文件输出到标准输出。
                   -exec find命令对匹配的文件执行该参数所给出的 s h e l l命令。相应命令的形式为 ' command' {} \;,注意{}和\;之间的空格。


2.3.2命令选项:

f i n d命令有很多选项或表达式,每一个选项前面跟随一个横杠 -。让我们先来看一下该命令的主要选项,然后再给出一些例子。
-name 按照文件名查找文件。

           (1)find ~ -name "*.c"           在$HOME目录查找以.c结尾的文件

           (2)find ~ -name "*.c"           在当前目录查找以.c结尾的文件
           (3)find . -name "[a-z][a-z][0--9][0--9].txt"     如果想在当前目录查找文件名以两个小写字母开头,跟着是两个数字,最后是 * . t x t的文件
-perm 按照文件权限来查找文件。
-prune 使用这一选项可以使 find命令不在当前指定的目录中查找,如果同时使用了 -depth选项,那么 -prune选项将被find命令忽略。

              (1)find /apps -name "/apps/bin" -prune

-user 按照文件属主来查找文件。
-group 按照文件所属的组来查找文件。
-mtime -n +n 按照文件的更改时间来查找文件, -n表示文件更改时间距现在 n天以内,+n表示文件更改时间距现在 n天以前。Find命令还有-atime和-ctime选项,但它们都和 -mtime选项相似,所以我们在这里只介绍 -mtime选项

find  -mtime +1 修改时间在一天以外的
-nogroup 查找无有效所属组的文件,即该文件所属的组在 /etc/groups中不存在。
-nouser 查找无有效属主的文件,即该文件的属主在 /etc/passwd中不存在。
-newer file1 ! file2 查找更改时间比文件 file1新但比文件 file2旧的文件。
-type 查找某一类型的文件,诸如:
b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件。
-size n[c] 查找文件长度为 n块的文件,带有 c时表示文件长度以字节计。
-depth 在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-fstype查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。
-mount 在查找文件时不跨越文件系统 mount点。
-follow 如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
-cpio 对匹配的文件使用 cpio命令,将这些文件备份到磁带设备中。

xargs
find命令把匹配到的文件传递给 x a rg s命令,而x a rg s命令每次只获取一部分文件而不是全部,它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。
使用示例:

find -name "*.c" | xargs grep -s "this" 在当前目录下查找以。c为结尾的文件,并在这些文件中查找this


2.3 字符匹配

* 匹配文件名中的任何字符串,包括空字符串。
? 匹配文件名中的任何单个字符。
[...] 匹配[ ]中所包含的任何字符。
[!...] 匹配[ ]中非感叹号!之后的字符。

示例:

          ls -l *.c 当前目录下以.c为结尾的文件

          ls -l ??et  在下面的例子中,我们列出文件名以任意两个字符开头,接着是 et

          ls log.[0-9]*   列出所有以 l o g .开头、后面跟随一个数字、然后可以是任意字符串的文件名
          ls log.[!0-9]*   列出所有以 l o g .开头、后面不跟随一个数字、然后可以是任意字符串的文件名



2.4 输入和输出

 2.4.1 read 可以使用read语句从键盘或文件的某一行文本中读入信息,并将其赋给一个变量。一般形式:

      read V1 V2

      read name

      echo $name


2.4.2 tee 如果希望在看到输出的同时,也将其存入一个文件

              tee  files      存入一个文件

              tee -a files  -a表示追加到文件末尾。
      ls -l | tee -a test


2.4.3 > 重定向 >>追加

     ls >ls.out      ls 命令的所有输出都被重定向到 ls.out文件中
 



2.5 命令执行顺序

2.5.1 &&

      命令1 && 命令2    & &左边的命令(命令 1)返回真 (即返回0,成功被执行)后,& &右边的命令(命令 2)才能够被执行
       make && cp bin ~/ 编译成功后把bin文件拷贝到home目录

   

2.5.2 ||

           命令1 || 命令2  如果 | |左边的命令(命令 1)未执行成功,那么就执行 | |右边的命令(命令2)
           ls test || ls -l 没有 test文件时 才会执行ls -l

 


2.6 基本元字符集
          ^                                 只匹配行首

                         ^[the] 对以the开头行

         $                                  只匹配行尾

               ls | grep t$ 列出以t结尾的文件
         *                                   一个单字符后紧跟 *,匹配0个或多个此单字符

         [ ]                                  匹配 [ ]内字符。可以是一个单字符,也可以是字符序列。可以使用 - 表示[]内字符序列范围,如用 [1-5]代替[12345]
         \                                    用来屏蔽一个元字符的特殊含义。因为有时在 s h e l l中一些元字符有特殊含义。 \可以使其失去应有意义

                            \*\.pas       正则表达式中匹配以 *.pas结尾的所有文件

         ?                                    匹配单个字符

                    ls te?t     列出

        pattern\{n\}                   用来匹配前面 pattern出现次数。 n为次数
        pattern\{n,\}m              含义同上,但次数最少为 n
        pattern\{n,m\}              含义同上,但 pattern出现次数在 n与m之间



2.7 grep 对文本文件进行模式查找。如果找到匹配模式, grep打印包含模式的所有行

        基本格式
                        grep [OPTION]... PATTERN [FILE]...              


        常用选项
                        -c 只输出匹配行的计数。
                        -i 不区分大小写(只适用于单字符)
                        -h 查询多文件时不显示文件名。
                        -l 查询多文件时只输出包含匹配字符的文件名。
                       -n 显示匹配行及行号。
                       -s 不显示不存在或无匹配文本的错误信息。
                       -v 显示不包含匹配文本的所有行。
    

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大数据开发中的shell学习日记可以包括以下内容: 1. 学习Linux命令和shell脚本:作为大数据开发者,在Linux下进行开发是常见的,因此了解一些基本的Linux命令和编写shell脚本的技能是必备的。 2. 学习Django:Django是一个常用的Python Web框架,对于大数据开发来说,掌握Django可以帮助你构建数据分析和机器学习的应用程序。 3. 数据分析与机器学习:大数据开发中经常需要进行数据分析和机器学习的工作,因此学习相关的技术和算法是必要的。可以参考一些前人的经验贴和教程,了解常见的数据分析和机器学习方法。 4. 大数据组件:了解大数据开发中常用的组件,如Hadoop、Spark等,掌握它们的基本原理和使用方式。 5. 前端内容:虽然大数据开发主要是后端的工作,但了解一些基本的前端知识也是有帮助的,比如HTML、CSS和JavaScript。 6. 数据架构:了解大数据开发中的数据架构,包括数据采集层、数据存储与分析层、数据共享层和数据应用层等,这对于设计和搭建大数据系统是很重要的。 此外,你还可以在牛客网等平台上深入学习和交流大数据开发的经验和知识。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [java版斗地主源码-Interview-Summary:回顾这两年来学了些什么和日记,private](https://download.csdn.net/download/weixin_38592548/19393922)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [程序员必备学习资源资料库!!!免费开发书籍中文版大全](https://blog.csdn.net/qq_32146369/article/details/106194267)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [大数据平台架构--学习日记(一)](https://blog.csdn.net/lp279579561/article/details/104746083)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值