外部过滤器,程序和命令--基本命令
2017-08-17 17:00
176 查看
ls
”列出”文件的基本命令.-R 选项, 递归选项, ls将会以目录树的形式列出所有文件.
-S , 将会按照文件尺寸列出所有文件,
-i 选项会显示文件的inode
cat, tac
cat,是单词concatenate的缩写,把文件的内容输出到stdout.当与重定向操作符(>或>>), 一般都是用来将多个文件连接起来.# Uses of 'cat' cat filename # 打印出文件内容. cat file.1 file.2 file.3 > file.123 # 把三个文件连接到一个文件中.
cat命令的 -n 选项是为了在目标文件中的所有行前边插入行号.
-b 也是用来加行号的, 但是不对空行进行编号.
-v 选项可以使用^标记法来echo出不可打印字符.
-s 选项可以把多个空行压缩成一个空行.
在一个管道中, 有一种把 stdin 重定向到一个文件中更有效的方法, 这种方法比使用cat文件的方法更高效.
cat filename | tr a-z A-Z tr a-z A-Z < filename # 效果相同,但是处理更少,并且连管道都省略掉了.
tac命令,就是cat命令的反转,这个命令将会从文件结尾部分列出文件的内容.
rev
把每一行中的内容反转, 并且输出到 stdout 上. 这个命令与tac命令的效果是不同的, 因为它并不反转行序, 而是把每行的内容反转.bash$ cat file1.txt This is line 1. This is line 2. bash$ tac file1.txt This is line 2. This is line 1. bash$ rev file1.txt .1 enil si sihT .2 enil si sihT
cp
文件拷贝命令. cp file1 file2 把文件 file1 拷贝到 file2 , 如果 file2 存在的话, 那么 file2 将被覆盖-a 选项,是归档标志(目的是为了copy一个完整的目录树).
-u 是更新选项.
-r和-R选项是递归标志.
cp -u source dir/* dest dir # 把源目录"同步"到目标目录上, #+ 也就是拷贝所有更新的文件和之前不存在的文件.
mv
文件移动命令. 它等价于cp和rm命令的组合. 它可以把多个文件移动到目录中,甚至将目录重命名.*当使用非交互脚本时,可以使用mv的-f(强制)选项来避免用户的输入.
bash$ mv source_directory target_directory bash$ ls -lF target_directory total 1 drwxrwxr-x 2 liudezhi liudezhi 1024 Aug 17 16:40 source_directory/
rm
删除(清除)一个或多个文件. -f 选项将强制删除文件, 即使这个文件是只读的. 并且可以用来避免用户输入(在非交互脚本中使用).* rm将无法删除以破折号开头的文件.
bash$ rm -badname rm: invalid option -- b Try `rm --help` for more information.
* 解决这个问题的一个方法就是在要删除的文件前加上./
bash$ rm ./-badname
另一种解决的方法是在文件名前加上”–”.
bash$ rm -- -badname
当使用递归参数-r时,这个命令将会删除整个目录树. 如果不慎的使用rm -rf 的话,那么整个目录树就真的完了.
rmdir
删除目录. 但是只有这个目录中没有文件的时候 – 当然会包含”不可见的”点文件 – 这个命令才会成功.mkdir
生成目录, 创建一个空目录.比如, mkdir -p project/programs/December 将会创建指定的目录,即使project目录和programs目录都不存在. -p 选项将会自动产生必要的父目录, 这样也就同时创建了多个目录.
chmod
修改一个现存文件的属性.chmod +x filename # 使得文件"filename"对所有用户都可执行. chmod u+s filename # 设置"filename"文件的"suid"位. # 这样一般用户就可以在执行"filename"的时候,拥有和文件宿主相同的权限. # (这并不适用于shell脚本).
chmod 644 filename # 对文件"filename"的宿主设置r/w权限. # 对一般用户设置权限. # (8进制模式).
chmod 1777 directory-name # 对这个目录设置r/w和可执行权限,并开发给所有人. # 同时设置"粘贴位". # 这意味着,只有目录宿主,文件宿主,当然还有root可以删除这个目录中的任何特定的文件.
chattr
修改文件属性. 这个命令与上边的chmod命令项类似, 但是有不同的选项和不同的调用语法, 并且这个命令只能工作在ext2文件系统中.chattr +i filename 将使得这个文件被标记为永远不变.这个文件将不能被修改, 连接, 或删除, 即使是root也不行. 这个文件属性只能被root设置和删除. 类似的, a 选项将会把文件标记为只能追加数据
root# chattr +i file1.txt root# rm file1.txt rm: remove write-protected regular file `file1.txt`?y rm: cannot remove `file1.txt`:Operation not permitted
如果文件设置了 s (安全)属性, 那么当这个文件被删除时, 这个文件所在磁盘的块将全部被0填充.
如果文件设置了 u (不可删除)属性, 那么当这个文件被删除后, 这个文件的内容还可以被恢复(不可删除).
如果文件设置了 c (压缩)属性, 那么当这个文件在进行写操作时, 它将自动被压缩, 并且在读的时候, 自动解压.
* 使用chattr命令设置过属性的文件将不会显示在文件列表中(ls -l).
ln
创建文件链接, 前提是这个文件是存在的. “链接”就是一个文件的引用, 也就是这个文件的另一个名字. ln命令允许对同一个文件引用多个链接, 并且是避免混淆的一个很好的方法.ln对于文件来说只不过是创建了一个引用, 一个指针而已, 因为创建出来的连接文件只有几个字节.(和windows下的快捷方式想像).
绝大多数使用ln命令时, 使用的是 -s 选项, 可以称为符号链接, 或“软”链接. 使用 -s 标志的一个优点是它可以穿越文件系统来链接目录.
例:ln -s oldfile newfile,将对之前存在的oldfile产生一个新的连接,newfile.
*如果之前newfile已经存在的话,将会产生一个错误消息.
man,info
这两个命令用来查看系统命令或安装工具的手册和信息. 当两者都可用时, info页一般会比man 页包含更多的细节描述.相关文章推荐
- 外部过滤器,程序和命令--时间/日期 命令
- 外部过滤器,程序和命令--文本处理命令
- 外部过滤器,程序和命令--数学计算命令
- 外部过滤器,程序和命令--混杂命令
- 外部过滤器,程序和命令--终端控制命令
- 外部过滤器, 程序和命令
- 外部过滤器,程序和命令--复杂命令
- Windbg 教程-调试非托管程序的基本命令下
- 安装完MySQL后输入"net start mysql"后提示"'net'不是内部或外部命令,也不是可运行的程序或批处理文件"的响应办法
- win10的cmd中显示:telnet不是内部或外部命令也不是可运行的程序或批处理?
- Java Process Class : Java 执行外部程序及命令
- python不是内部或外部命令,也不是可运行的程序或批处理文件
- Windbg 教程-调试非托管程序的基本命令下
- maven配置时,测试出现“'mvn' 不是内部或外部命令,也不是可运行的程序”错误
- javac不是内部或外部命令,也不是可运行的程序或批处理文件
- Windows中安装jdk,出现javac不是内部或外部命令 也不是可运行的程序
- netstat -an,提示:不是内部或外部命令,也不是可运行的程序或批处理文件。
- win7下出现'telnet' 不是内部或外部命令,也不是可运行的程序或批处理文件的解决方法
- express不是内部或外部命令,也不是可运行的程序或批处理文件
- 'net’ 不是内部命令或外部命令,也不是可运行的程序或批处理文件