生成任意大小的文件
文件权限、所有权和粘滞位
创建不可修改文件
生成空白文件
查找符号链接及其指向目标
head 与 tail
只列出目录的其他方法
在命令行中用 pushd 和 popd 快速定位(cd -)
统计文件的行数、单词数和字符数

生成任意大小的文件

$ dd if=/dev/zero of=junk.data bs=1M count=

if代码输入文件(input file), of代表输出文件(output file),bs代表每个文件的大小(block size),count代表需要被复制的块数。
/dev/zero是一个字符设备,它会不断的放回0值字节(\0)。if也可以指定自己的其他文件。

文件权限、所有权和粘滞位
linux系统中每一个文件都与多种类型的权限相关联。这些权限中,我们通常要和三类权限打交道(用户,用户组,其他用户)。用户(user)是文件的所有者。用户组(group)是多个用户的集合(由系统管理员指定),系统允许这些用户对文件进行某种形式的访问。其他用户(others)是除文件用户或用户组之外的任何人。
用命令ls -l查看文件
-rwxrwxr-x 1 fzk fzk 311 12月  6 20:35 test.sh
第一列说明了文件的类型:

-  —— 普通文件
d —— 目录
c —— 字符设备
b —— 块设备
l  —— 符号链接
s —— 套接字
p —— 管道
剩下的部分可以分为三组,每组三个字符(--- --- ---)。第一组的3个字符(---)对应用户权限(所有者),第二组对应用户组权限,第三组对应其他用户权限。这9个字符(即9个权限)中的每一个字符指明是否其设置了某种权限。如果已设置,对应位置上会出现一个字符,否则出现一个 '-', 表明没有设置对应的权限。

  • 用户(权限序列: rwx------ ):第一个字符指定用户是否拥有文件的读权限。如果为用户设置了读权限, r 将出现在第一个字符的位置上。第二个字符指定了写(修改)权限( w ),第三个字符指定了用户是否拥有执行权限( x ,即运行该文件的权限)。可执行文件通常会设置执行权限。用户还有一个称为 setuid ( S )的特殊权限,它出现在执行权限( x )的位置。 setuid 权限允许用户以其拥有者的权限来执行可执行文件,即使这个可执行文件是由其他用户运行的。具有 setuid 权限的文件的权限序列如下: -rwS------ 。目录同样也有读、写、执行权限。不过对于目录来说,读、写、执行权限的含义有点不一样:目录的读权限( r )允许读取目录中文件和子目录的列表;目录的写权限( w )允许在目录中创建或删除文件或目录;目录的执行权限( x )指明是否可以访问目录中的文件和子目录。

  • 用户组(权限序列: ---rwx--- ):第二组字符指定了组权限。组权限的 rwx 的含义和用户权限中的一样。组权限并没有 setuid ,但是有一个 setgid ( S )位。它允许以同该目录拥有者所在组相同的有效组权限来允许可执行文件。但是这个组和实际发起命令的用户组未必相同。组权限的权限序列如下: ----rwS--- 。

  • 其他用户(权限序列: ------rwx ):最后三个字符是其他用户权限。和用户以及用户组一样,其他用户也有读、写、执行权限,但是并没有 S 权限(如 setuid 和 setgid )。

目录有一个特殊的权限,叫做粘滞位(sticky bit)。如果目录设置了粘滞位,只有创建该目录的用户才能删除目录中的文件,即使用户组和其他用户也有写权限,也无能无力。粘滞位出现在其他用户权限中的执行权限( x )位置。它使用 t 或 T 来表示。如果没有设置执行权限,但设置了粘滞位,就使用 t ;如果同时设置了执行权限和粘滞位,就使用 T 。
例如: ------rwt , ------rwT

$ chmod u=rwx g=rw o=r filename  #u代表user g代表group o代表other
$ chmod o+x filename        #增加用户执行权限
$ chmod a+x filename        #a代码所有
$ chmod a-x filename        #删除用户执行权限
$ chmod a+x dir -R #dir是目录名,连同子目录下的文件全部增加执行权限。-R在后面

也可用八进制来设置权限。

  • r-- = 4
  • -w- = 2
  • --x = 1

想设置什么权限就把相应的权限对应的数字加和。

chmod u=rwx g=rw o=r filename  和   chmod 764 filename 一个效果

更改所有权

$ chown user.group filename
$ chown fzk.fzk test.sh

创建不可修改的文件

$ chattr +i file    #设置不可修改
$ chattr -i file   #取消不可修改

这样设置完之后就算执行 sudo rm -f file也不能删除

生成空白文件:touch filename

创建链接

$ ln -s target symbolic_link_name
$ ls -l | grep "^l"          #查看符号链接
$ find . -type l -print
$ readlink web             #查看链接的目标路径

上面中的grep 对ls -l的输出进行过滤,^显示以 l 起始的行,^是字符串的起始标记。也就是每个符号链接的权限(lrwxrwxrwx)都是l开头。

查看文件头几行,后几行(head tail)

$ head file                #前10行
$ cat text | head #从stdin读取数据前10行
$ head -n file #读取前4行
$ head -n - file #打印除了最后5行之外的其他行
$ seq | head -n - #seq 能生成1 -
$ tail file #打印最后10行
$ cat text | tail
$ tail -n file #打印最后5行
$ tail -n +(M+) #打印除了前M行之外的所有行
$ tail -f growing_file #能随着数据的增长保持更新
$ tail -f file --pid $PID #PID的进程一直向file中写数据,如果PID结束,那么tail也结束。

tail -f 后也可以跟一个 -s 参数,指定多少秒跟新一次。

只列出目录的各种方法

$ ls -d */
$ ls -F | grep "/$"
$ ls -l | grep "^d"
$ find . -type d -maxdepth -print

目录间快速切换:

$ pushd /var/www    #将路径压入栈
$ dirs          #查看栈中目录
/usr/src /var/www ~ /usr/share /etc
$ pushd +n       #将上面目录从左到右从0开始编号,切换到第n个目录
$ pop          #从栈中删除最后一个目录
$ pop +n         #删除第n个目录
$ cd -          #上个目录之间进行切换,如果只有两个目录,这个方法非常方便

统计文件的行数、单词数和字符数(wc (word count))

$ wc -l file    #打印行数
7 file
$ cat file | wc -l
7
$ wc -c file #-w 单次数
$ cat file | wc -w
$ wc -c file     #-c 字符数
$ cat file | wc -c
$ wc file      #分别打印出行数,单词数,字符数(1435 15763 112200)
$ wc -L       #最长的一行长度

LinuxShell脚本攻略--第三章 以文件之名的更多相关文章

  1. LinuxShell脚本攻略--第六章 B计划

    tar -A或--catenate:新增文件到以存在的备份文件: -B:设置区块大小: -c或--create:建立新的备份文件: -C <目录>:这个选项用在解压缩,若要在特定目录解压缩 ...

  2. Linux shell 脚本攻略之创建不可修改文件

    摘自:<Linux shell 脚本攻略>

  3. LinuxShell脚本攻略--第一章 小试牛刀

    使用 shell 进行数学运算: #!/bin/bash no1=; no2=; let result=no1+no2 echo $result result=$[ $no1 + no2 ] resu ...

  4. LinuxShell脚本攻略--第二章 命令之乐

    用 cat 进行拼接 文件查找与文件列表玩转 xargs 用 tr 进行转换排序临时文件命名与随机数分割文件和数据根据扩展名切分文件名mv 批量重命名文件交互输入自动化 cat: echo 'Text ...

  5. LinuxShell脚本攻略--第九章 管理重任

    收集进程信息 $ ps PID TTY TIME CMD pts/ :: bash pts/ :: ps$ ps -f  #-f 显示更详细的信息UID PID PPID C STIME TTY TI ...

  6. LinuxShell脚本攻略--第八章 当个好管家

    监视磁盘的使用情况 $ du file1.txt file2.txt $ du -a file_or_dir #-a递归输出指定目录的所有文件统计 $ du file_or_dir #这只是显示子目录 ...

  7. shell 学习笔记 LinuxShell脚本攻略(第2版)

    注释用#号:多条命令通过分号或回车来分隔 echo会自动换行,若不想换行,则加上-n参数,如 echo -n "nice to meet you" echo后面的内容可以不带引号, ...

  8. Linux Shell脚本攻略

    -Linux Shell脚本攻略 总结的来说,这本书很实践性和实用性强,都是给的具体的例子,直接可以在终端操作实践,比单纯只看不动手务实多了,另外就是,这本书涵盖的内容也比较广,从文本操作到服务器管理 ...

  9. 读书笔记--Linux Shell脚本攻略

    总结的来说,这本书很实践性和实用性强,都是给的具体的例子,直接可以在终端操作实践,比单纯只看不动手务实多了,另外就是,这本书涵盖的内容也比较广,从文本操作到服务器管理到远程ssh等等,都给出来作者挑选 ...

随机推荐

  1. Entity Framework 第七篇 简化排序

    上篇介绍了EF的分页实现,分页的时候会用到排序,但是使用起来表达式写的似乎很繁琐 , ); 如果直接使用排序字符串,不更直观简便么? respository.GetPaged<S_Users&g ...

  2. C#常用扩展方法

    /// <summary> /// 转换 /// </summary> public static class ConversionHelper { #region 数据格式转 ...

  3. jquery.util.easyui.dialog

    (function ($) { var $parent = parent.$; //获取弹出窗口数据集合 function getDialogs() { var dialogs = $parent(& ...

  4. IOS时间戳

    什么是时间戳? 时间戳(timestamp),通常是一个字符序列,唯一地标识某一刻的时间.数字时间戳技术是数字签名技术一种变种的应用. 思考:简单来讲就是根据文件hash加密后生成的摘要和时间生成的时 ...

  5. 【Linux】用less查看日志文件

    一般程序部署在Linux环境,查看日志时,一般用less满足大部分的需求. 列举.记录最常用的场景,代码以Tomcat日志文件catalna.out为例. > 直接查看文件 less catal ...

  6. 在JSP页面中输出完整的时间

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  7. 三HttpServletResponse对象介绍(1)

    转载自http://www.cnblogs.com/xdp-gacl/p/3789624.html Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象 ...

  8. 3d中的向量

    向量基础知识 向量有且仅有的两个属性:方向长度(注意:向量性情中不包含位置信息) 向量相等就是其两个属性相等 向量处理标记位置:当向量的起始点与坐标原点重合,这样我们就可以用向量的终点坐标来描述一个处 ...

  9. Cheatsheet: 2014 06.01 ~ 06.30

    Mobile Developing iOS8 Apps Using Swift – Part 1- Hello World The Insider's Guide to Android Intervi ...

  10. ps aux 查看进程信息

    [root@localhost Desktop]# ps auxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.3 ...