Linux程序设计读书笔记--常用命令

命令

  • 外部命令: 在命令提示符中执行的”普通”命令
  • 内部命令: 在shell内部实现, 不能作为外部程序被调用. 然而大多数的内部命令同时也提供了独立运行的程序版本.

通常情况下, 命令是内部的还是外部的并不重要, 只是内部命令执行效率更高.

常用命令

  • 1.break命令
    跳出fork, while或until循环. 可以为break命令提供一个额外的参数表明需要跳出的循环层数.
  • 2.:命令
    :命令是一个空命令. 偶尔用于简化条件逻辑, 相当于true的一个别名. 它是内置命令, 运行的比true快, 但它的输出可读性差. 可以用while : 代替while true实现一个无限循环.
  • 3.echo命令
    如何去掉换行符:
    常见方法:
    echo -n "string to output"echo -e "string to output\c"
    第二种方法echo -e确保启用了反斜线转义字符(\c代表去掉的换行符). 老版本对反斜线转义字符的解释通常都是默认启用的, 新版默认不解释.
    如果需要可移植的删除换行符的方法, 可以使用外部命令tr删除它, 但执行速度较慢. 要同时兼容UNIX系统, 最好坚持使用printf.
  • 4.eval命令
    eval允许对参数求值. shell内置命令.
    用法示例:
foo=10
x=foo
y='$'$x
echo $y
# 输出 $foo


foo=10
x=foo
eval y='$'$x
echo $y
# 输出 10
 eval命令有点像一个额外的$, 它给出一个变量的值的值.
  • exec命令
    用法一:
    将当前shell替换为一个不同的程序. 示例:
exec wall "Thanks for all the fish"
脚本中的这个命令会用wall命令替换当前的shell.
脚本程序中exec命令后面的代码都不会执行,
因为这个脚本的shell已经不存在了.
用法二:
修改当前文件描述符:
exec 3< afile
文件描述符3被打开以便从文件afile中读取数据. 这种用法很少见.
  • export命令
    export命令把自己的参数创建为一个环境变量, 而这个环境变量可以被当前程序调用的其它脚本和程序看见. 即, 被导出的变量构成从该shell衍生的任何子进程的环境变量.

  • expr命令
    expr命令将它的参数当作一个表达式来求值. 常见用法是如下的简单数学运算:

x=`expr $x + 1`

反引号(“)字符使x取值为命令expr x + 1 . ()替换反引号, 如下所示:

x=$(expr $x + 1)
expr命令通常被更有效的$((...))语法替换.
  • printf命令
    X/Open规范建议用它来替代echo命令, 以产生格式化的输出.
    语法: printf "format string" parameter1 parameter2 ...
    格式字符串与C中使用的非常相似, 但不支持浮点数.
    示例:
$ printf "%s %d\t%s" "Hi here" 15 people
Hi here 15 people

注意 Hi here使用双引号.

  • set命令
    为shell设置参数变量. 对输出结果是以空格分隔的值的命令非常有用.
    示例:
#!/bin/bash
echo the date is $(date)
set $(date)
echo the month is $2

exit 0

该程序把date命令的输出设置为参数列表, 然后通过位置参数$2获得月份.
该示例仅作说明使用, 由于date命令的输出受本地语言影响较大, 实际工作中应使用date +%B来提前月份.

  • shift命令
    把所有参数变量左移一个位置, 使$2变成$1, $3变成$2, 以此类推. 原来$1的值被丢弃, 而$0保持不变. 如果调用shift命令时指定了一个数值参数, 则表示所有的参数将左移指定的次数. $*, $@, $#也随之变化.
    如果脚本程序需要10个或以上的参数, 就需要shift来访问第10个及其后面的参数.
    示例: 依次扫描所有位置参数
#!/bin/bash
while [ "$1" != "" ]; do
    echo "$1"
    shift
done

exit 0
  • “trap命令”
    用于指定在接收到信号后要采取的行动. 常见用途是在脚本程序被中断时完成清理工作. 可以在命令提示符下输入命令 trap -l来查看信号编号及其相关联的名称.
    trap命令有两个参数, 参数一是接收到指定信号时将要采取的行动, 参数二是要处理的信号名
    trap command signal
    如果要重置将某信号的处理方式到其默认值, 只需将command设置为-. 如果要忽略某个信号, 就把command设置为空字符串”. 一个不带参数的trap将列出当前设置的信号及其行动的清单.
    一些常见的信号: 详见(man 7 signal)
信号 说明
HUP(1) 挂起, 通常因终端掉线或用户退出而引发
INT(2) 中断, 通常因按下Ctrl+c引发
QUIT(3) 退出, 通常因按下Ctrl+\引发
ABRT(6) 中止, 通常因严重执行错误引发
ALRM(14) 报警, 通常用来处理超时
TERM(15) 终止, 通常在系统关机时发送
  • find命令
    用于文件搜索
    语法格式: find [path] [options] [tests] [actions]
    options主要包含: -depth, -follow, -maxdepths N, -mount
    tests主要包含: -atime N, -mtime N, -name pattern, -newer otherfile, -type c, -user username 可使用操作符组合测试(!/-not, -a/-and, -o/-or).
    actions主要包含: -exec command, -ok command, -print, -ls

  • grep(General Regular Expression Parser)命令
    find在系统中搜索文件, 而grep在文件中搜索字符串. 常见用法是在使用find命令时, 将grep作为传递给-exec的一条命令.
    语法: grep [options] PATTERN [FILES]
    没有提供文件名时, grep将搜索标准输入.
    option主要包含:

选项 含义
-c 输出匹配行的数目, 而不是匹配的行
-h 取消每个输出行的普通前缀, 即匹配查询模式的文件名
-E 启用扩展表达式
-i 忽略大小写
-l 只列出包含匹配行的文件名, 而不输出真正的匹配行
-v 对匹配模式取反, 即搜索不匹配行而不是匹配行

猜你喜欢

转载自blog.csdn.net/yuberhu/article/details/80261617