Shell常见命令

Posted 小路不懂2

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell常见命令相关的知识,希望对你有一定的参考价值。

1. echo

echo "It is a test"
echo It is a test // 双引号完全可以省略
echo "\\"It is a test\\"" // "It is a test"
echo "$name It is a test"
echo -e "ok, \\n" // 加了-e开启转义,\\n才会换行
echo "It is a test" > myFile // 显示结果重定向到文件
echo \'$name\' // 单引号不进行转义或取变量,原样输出字符串
echo `date` // 显示命令执行结果

2. printf

printf由POSIX标准所定义,因此使用printf的脚本比使用echo移植性更好。
printf使用应用文本或空格分隔的参数,外面可以在printf中使用格式化字符串,还可以制定字符串的宽度,左右对齐等方式。
默认printf不会像echo自动添加换行符,可以手动添加\\n
printf format_string [arguments...]
format_string:为格式控制字符串
arguments:为参数列表
例如printf "%-10s %-8s %-4s\\n" 姓名 性别 体重kg
%s 输出一个字符串
%c 输出一个字符
%d 输出整数
%f 输出实数

3. test

test命令用于检查某个条件是否成立,可以进行数值,字符和文件三个方面的测试。
数值测试
num1=100
num2=200
if test $[num1] -eq $[num2]

字符串测试
num1="baidu"
num2="baidu"
if test $num1 = $num2

文件测试
cd /bin
if test -e ./bash
then
echo \'文件已存在!\'
else
echo \'文件不存在!\'
fi

shell 常见命令总结

    • set -u // 脚本只要发生错误,就终止执行
  1. set +e //,set +e表示关闭-e选项,set -e表示重新打开-e选项。
  2. set -o pipefail //,只要一个子命令失败,整个管道命令就失败,脚本就会终止执行。

写法1, set -euxo pipefail

写法2
set -eux
set -o pipefail

以上两种写法通常放在所有bash文件头部

1. cp 命令

cp [选项] 源文件或目录 目标文件或目录

# 该命令把指定的源文件复制到目标文件或把多个源文件复制到目标目录中

eg: cp -Rf a/ b/ # 复制a 文件夹下的所有内容到b文件

该命令的各选项含义如下:
  - a 该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录,其作用等于dpR选项的组合。
  - d 拷贝时保留链接。
  - f 删除已经存在的目标文件而不提示。
  - i 和f选项相反,在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝。
  - p 此时cp除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。
  - r 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。
  - l 不作拷贝,只是链接文件。
  需要说明的是,为防止用户在不经意的情况下用cp命令破坏另一个文件,如用户指定的目标文件名是一个已存在的文件名,用cp命令拷贝文件后,这个文件就会被新拷贝的源文件覆盖,因此,建议用户在使用cp命令拷贝文件时,最好使用i选项。
源是文件: 
 * 目标文件不存在,则会新建目标文件,并将源内容填充至目标文件中
 * 目标是已存在文件,会将源内容覆盖至目标文件中
 * 目标是目录,则会在目标目录下新建与源同名的文件,并将源的内容填充至新文件中
   * 源是多个文件,则目标必须是目录且存在,其他情形均为出错 源是目录:需使用-r选项,表示递归   * 目标不存在,则会创建指定目录,只能是单个源目录 * 目标存在且是目录,则会将源下所有文件和目录复制到目标中去
————————————————
版权声明:本文为CSDN博主「宅宅微」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/vv19910825/article/details/80484836

2. mv 命令

命令用来为文件或目录改名、或将文件或目录移入其它位置。

  1. mv source_file(文件) dest_file(文件) # 将源文件名 source_file 改为目标文件名 dest_file
  2. mv source_file(文件) dest_directory(目录) #将文件 source_file 移动到目标目录 dest_directory 中
  3. mv source_directory(目录) dest_directory(目录) #目录名 dest_directory 已存在,将 source_directory 移动到目录名 dest_directory 中;目录名 dest_directory 不存在则 source_directory 改名为目录名 dest_directory
  4. mv source_directory(目录) dest_file(文件) 出错

3. mkdir 命令 创建目录

命令用于创建目录。

  1. -p 确保目录名称存在,不存在的就建一个。
  2. mkdir -p runoob2/test 创建两级目录
  3. 创建权限为777的目录
    mkdir -m 777 test3

4 . 当前目录下创建/text5/text6,权限为750
mkdir -p-m 750 text5/text6

选项
-m --mode=模式,建立目录的时候同时设置目录的权限;
-p --parents 若所建立的上层目录目前尚未建立,则会一并建立上层目录;
-v --verbose 每次创建新目录都显示信息
-h --help 帮助信息

4. 创建文件

  1. touch aa.txt #创建一个文件
  2. 投产 aa.txt bb.txt 创建两个文件
  3. .> 直接覆盖原文件,不会有任何提示
  4. .>> 追加在原文件末尾,不会覆盖原文件的内容
  5. .>a.txt 直接创建文件,并且命令行写入内容
  6. ls > a.txt 创建文件a.txt 并且将当前同级文件名称写入
  7. ls >> a.txt同6
  8. ps -ef | grep java > a.txt grep 创建文件(将结果写入文件)
  9. echo $PATH > a.txt cho 创建文件(将结果写入文件)
  10. cp a.txt c.txt 只要目标文件是新文件则算创建文件
  11. cat >> aa.txt << eof 同5 写入内容后,输入eof 退出
  12. cat >> zz.txt << exit同11

5. 删除文件

rm -rf /a/ 删除目录a下的所有文件

-r 就是向下递归,不管有多少级目录,一并删除
-f 就是直接强行删除,不作任何提示的意思
-i 询问是否删除

未完待续。。。

欢迎关注。公众号:程序员蜗牛, 分享遇到的点滴技术,积累经验//

本文由博客一文多发平台 OpenWrite 发布!

以上是关于Shell常见命令的主要内容,如果未能解决你的问题,请参考以下文章

常见的shell有哪些

shell入门基础&常见命令及用法

shell 常见命令总结

shell常见命令总结

hbase shell 常见命令

shell常见命令总结