本文根据饥人谷相关课程整理,如有新知识或遗漏将继续补充.
①程序员为了输入方便对命令进行缩写
注: Windows默认不支持链接
假设用户名是administrator,那么
- 在Windows下, ~ 表示 /User/administrator/ 目录 (一般在C盘)
- 在Linux下, ~ 表示 /home/administrator/ 目录
注: 永远不要运行 rm -rf / 即强制删除整个硬盘
在命令后加 \ ,意思是这句话没完
有空格等特殊字符的时候加引号
#!/bin/bash
eval?"cd?/export/songhongwei/code"
eval?"cd?/export/songhongwei/data"
echo?"上面两行就是在.shell书写linux命令的方式"
备注:
语法:eval?cmdLine
eval会对后面的cmdLine进行两遍扫描,如果第一遍扫描后,cmdLine是个普通命令,则执行此命令;如果cmdLine中含有变量的间接引用,则保证间接引用的语义.
Shell?的?echo?指令与?PHP?的?echo?指令类似,都是用于字符串的输出.
find 命令的基本结构如下:
find 命令手册 : man find
find 命令中的 -name 选项可以根据文件名称进行检索( 区分大小写 ).如需要忽略文件名中的大小写,可以使用 -iname 选项.
-name 和 -iname 两个选项都支持 wildcards .如:
例1:查找 /usr 目录下所有文件名以 .txt 结尾的文件
类似的还有:
-lname -ilname
-path -ipath
-regx -iregx
有些时候,你需要在搜索时匹配某个文件或目录的 完整路径 ,而不仅仅是匹配文件名.可以使用 -path 或 -ipath 选项.
例1:如查找 /usr 下所有文件名以 .txt 结尾的文件或目录,且该文件的父目录必须是 src .可以使用以下命令:
如果只想搜索得到文件 或 目录,即不想它们同时出现在结果中.可以使用 -type 选项指定文件类型.
-type 选项最常用的参数如下:
例:检索 /usr 下所有文件名以 python 开头的目录
find 命令支持 -empty 选项用来检索 为空 的文件或目录.空文件即文件里没有任何内容,空目录即目录中没有任何文件或子目录.
例:检索用户主目录下所有的空目录
find 命令也允许用户对当前的匹配条件进行 "反义" (类似于 逻辑非 操作).
如需要检索 /usr 下所有文件名 不 以 .txt 为后缀的文件.可以使用以下命令:
也可以"翻转"任何其他的筛选条件,如:检索 /usr 下所有内容不为空的文件
为了检索归属于特定用户的文件或目录,可以使用 -user 选项.
例:检索根目录下所有属主为 starky 的文件
类似于 -user 选项, -group 选项则可以根据文件或目录的 属组 进行检索.
有些时候,需要根据文件创建或修改的时间进行检索.
Linux 系统中,与文件相关联的时间参数有以下三种:
与此对应的是 find 命令中的 -mtime , -atime 和 -ctime 三个选项.
这三个选项的使用遵循以下示例中的规则:
检索 /usr 下两天前被修改过的文件
如果觉得 -mtime 等选项以 天 为单位时间有点长,还可以使用 -mmin , -amin , -cmin 三个选项.
查找比 aa.txt 新 的文件
查找比 aa.txt 旧 的文件
查找比aa.txt新,比bb.txt旧的文件
-size 选项允许用户通过文件大小进行搜索(只适用于文件,目录没有大小......).
表示文件大小的单位由以下字符组成:
另外,还可以使用 + 或 - 符号表示 大于 或 小于 当前条件.
检索文件大小高于 1 GB 的文件
find 命令可以使用 -perm 选项以文件权限为依据进行搜索.
例1:如需要检索 /usr 目录下权限为 rwxr-xr-x 的文件,可以使用以下命令:
很多时候,我们只想匹配文件权限的一个 子集 .比如,检索可以直接被任何用户执行的文件,即只关心文件的执行权限,而不用管其读写权限是什么.
上述的需求可以通过以下命令实现:
其中 a=x 前面的 / 符号即用来表示只匹配权限的某个子集(执行权限),而不用关心其他权限的具体设置.
find 命令默认是以 递归 的方式检索项目的,这有时候会导致得到的结果数量非常巨大.可以使用 -maxdepth 限制 find 命令递归的层数.
在之前的例子中有出现多个搜索条件的 组合 以及对某个搜索条件的 反转 .
实际上 find 命令支持 "and" 和 "or" 两种逻辑运算,对应的命令选项分别是 -a 和 -o .通过这两个选项可以对搜索条件进行更复杂的组合.
此外还可以使用 小括号 对搜索条件进行 分组 .注意 find 命令中的小括号常需要用 单引号 包裹起来.因小括号在 Shell 中有特殊的含义.
如检索 /usr 下文件名以 python 开头且类型为目录的文件
该命令等同于:
更复杂的组合形式如:
说明:-a 应该是and的缩写,意思是逻辑运算符'与'(); -o应该是or的缩写,意思是逻辑运算符'或'(||), -not 表示非.
命令行的意思是:如果目录dir0存在(即-a左边为真),则求-prune的值,-prune 返回真,'与'逻辑表达式为真(即-path './dir0*' -a -prune 为真),find命令将在除这个目录以外的目录下查找txt后缀文件并打印出来;如果目录dir0不存在(即-a左边为假),则不求值-prune ,'与'逻辑表达式为假,则在当前目录下查找所有txt后缀文件.
-delete 选项可以用来删除搜索到的文件和目录.
例如:删除 home 目录下所有的空目录:
-exec 选项可以对搜索到的结果执行执行该参数所给出的shell命令.形式为 command {} \; ,注意{}与\;之间有空格 .每当 find 命令检索到一个符合条件的文件,会使用其完整路径取代命令中的 {} ,然后执行 -exec 后面的命令一次.
其中的 大括号 ( {} )作为检索到的文件的 占位符 ,而分号( ; )作为命令结束的标志.因为分号是 Shell 中有特殊含义的符号,所以需要使用单引号括起来或前面加上转义符 \ .
创建 Gzip 格式的压缩文件的命令为:
可以先让 find 命令检索出所有符合条件的音频文件,再将得到的 文件列表 传递给后面的压缩命令.完整的命令如下:
如果想浏览搜索到的文件(目录)的详细信息(如权限和大小等),可以直接使用 -ls 选项.
例如:浏览所有 1G 以上大小的文件的详细信息
与exec作用相同,区别在于,在执行命令之前,都会给出提示,让用户确认是否执行
与 exec 作用相同 ,起承接作用.区别在于 |xargs 主要用于承接删除操作 ,而 -exec 都可用 如复制、移动、重命名等
例1:查找以ap或may开头的文件
A Guide to the Linux "Find" Command
在Linux下,如果你需要执行shell脚本,那么应该使用那个命令呢?下面由我为大家整理了linux shell脚本执行命令的相关知识,希望对大家有帮助!
linux shell脚本执行
linux shell脚本执行方法一: 切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本:
cd /data/shell
./hello.sh
./的意思是说在当前的工作目录下执行hello.sh.如果不加上./,bash可能会响应找到不到hello.sh的错误信息.因为目前的工作目录(/data/shell)可能不在执行程序默认的搜索路径之列,也就是说,不在环境变量PASH的内容之中.查看PATH的内容可用 echo $PASH 命令.现在的/data/shell就不在环境变量PASH中的,所以必须加上./才可执行.
linux shell脚本执行方法二: 以绝对路径的方式去执行bash shell脚本:
/data/shell/hello.sh
linux shell脚本执行方法三: 直接使用bash 或sh 来执行bash shell脚本:
bash hello.sh
或
sh hello.sh
注意,若是以方法三的方式来执行,那么,可以不必事先设定shell的执行权限,甚至都不用写shell文件中的第一行(指定bash路径).因为方法三是将hello.sh作为参数传给sh(bash)命令来执行的.这时不是hello.sh自己来执行,而是被人家调用执行,所以不要执行权限.那么不用指定bash路径自然也好理解了啊.
linux shell脚本执行方法四: 在当前的shell环境中执行bash shell脚本:
. hello.sh
source hello.sh
前三种方法执行shell脚本时都是在当前shell(称为父shell)开启一个子shell环境,此shell脚本就在这个子shell环境中执行.shell脚本执行完后子shell环境随即关闭,然后又回到父shell中.而方法四则是在当前shell中执行的.
将下面两行代码写到一个文件中,用chmod u+x 【文件名】添加执行权限
然后通过 ./【文件名】 执行,如果需要它后台执行,在后面添加
#!/bin/bash
wget -c 【网址/文件名】 mv abc.zip abc.jpeg