生成任意大小的文件
文件权限、所有权和粘滞位
创建不可修改文件
生成空白文件
查找符号链接及其指向目标
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. JAVA学习随笔-.class

    类名.class是获得这个类所对应的Class实例.从面向对象的角度上来看,类也是对象,它们是类这个类对象,听起来有些抽象,但是在java中的实现就是所有的加载进来的类在虚拟机中都是一个java.la ...

  2. 2016年10月22日 星期六 --出埃及记 Exodus 19:6

    2016年10月22日 星期六 --出埃及记 Exodus 19:6 you will be for me a kingdom of priests and a holy nation.' These ...

  3. 在repeater增加自增长的序号

    <td><%#Container.ItemIndex+ %></td> 完!!!

  4. linux(centos6.5 i386)安装mysql5.6源码包

    在开始安装前,先说明一下mysql-5.6.4与较低的版本在安装上的区别,从mysql-5.5起,mysql源码安装开始使用cmake了,因此当我们配置安装目录./configure --perfix ...

  5. ContentProvider官方教程(8)自定义MIME

    MIME Type Reference Content providers can return standard MIME media types, or custom MIME type stri ...

  6. centos系统下设置固定IP+dns

    笔者用的linux系统是centos版本的,在次之前linux是空白,今天我在物理机用XSHELL连接虚拟机中的centos时候出现连接失败的情况,我的第一反应就是IP是不是变了?打开虚拟机之后在终端 ...

  7. 04-23 Android 课堂笔记

    1.调用 //暂停 @Override protected void onPause() { super.onPause(); Log.e("TAG", "onPause ...

  8. iOS内存管理编程指南

    iOS 内存管理 目录[-] 一:基本原则 二:成员变量的内存管理 三:容器对象与内存管理 四:稀缺资源的管理 五:AutoRelease 六:其他注意事项 iOS下内存管理的基本思想就是引用计数,通 ...

  9. UVA 442 二十 Matrix Chain Multiplication

    Matrix Chain Multiplication Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %l ...

  10. 如何优雅的处理Nodejs中的异步回调

    前言 Nodejs最大的亮点就在于事件驱动, 非阻塞I/O 模型,这使得Nodejs具有很强的并发处理能力,非常适合编写网络应用.在Nodejs中大部分的I/O操作几乎都是异步的,也就是我们处理I/O ...