2-命令行入门,命令行


2-命令行入门

2019.9.14

五大命令行工具

  • 二进制可执行文件
  • shell内置命令
  • 解释性脚本
  • shell函数
  • 别名
$ fac() { (echo 1; seq $1) | paste -s -d\* | bc}

$ fac 5
120
  • shell函数就是由shell自己执行的函数,在我们这里就是由 Bash 执行的函数
  • 我们定义了一个 fac() 函数,使用 seq 生成一串数字,用 paste 函数将这些数字放到一行中并用 * 分隔开,然后将这个等式传给 bc,由它求值并显示结果
  • 文件 ~/.bashrc 是 Bash 的配置文件,所有的 shell 函数皆可在此定义,这样的好处是 shell 函数随时可用
$ alias l = 'ls -1 --group-directories-first'
  • 别名没有参数,所以 fac() 这样的函数不能用别名定义。
  • 别名能减少敲击键盘的次数;
  • 别名经常是在 '.bashrc' or '.bash_aliases' 配置文件中定义
  • 不带参数运行 alias 即可查看所有的参数的别名。一般 ubuntu 上的默认别名有以下几个,不得不说,不看一下还是真的不知道

    $alias
    alias egrep='egrep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias grep='grep --color=auto'
    alias l='ls -CF'
    alias la='ls -A'
    alias ll='ls -alF'
    alias ls='ls --color=auto'
$ type -a cd
cd is a shell builtin

$type -a fac
fac is a function
fac () 
{ 
    ( echo 1;
    seq $1 ) | paste -s -d\* | bc
}

命令行工具的组合--管道组合

  • 将一个工具的输出传递给下一个工具,这样可以几乎没有限制的不断传递
$ seq 30 | grep 3
3
13
23
30
# 生成1-30的序列传给 grep,筛选出含有3的元素显示
# grep: 筛选元素

$ seq 30 | grep 3 | wc -l
4

# 在上一步的基础上统计行数
# wc: 计数功能;参数 -l 只输出行数量

输入和输出重定向

  • 管道中最后一个命令行工具是输出到终端,我们也可以将其保存到文件中;
# 我们在当下目录下新建文件 test
$ seq 1 > test
$ cat test
1
# 用序列1 覆盖test文件

$ seq 3 >> test
$ cat test
1
1
2
3
# 在test文件末尾加上序列3

$ echo -n "hello" > test
$ cat test
hello$...
# echo -n:就像上面的效果,hello 之后紧接着就是下一个 bash 语句

$ echo "hello" > test
$ cat test
hello
$ ...
# 没有参数 -n,hello后面相当于有个 \n;
# 同样的,> 和 >> 的区别在于覆盖还是在末尾添加

$ echo "hello, world" >> test
$ cat test
hello
hello, world

$ cat test | wc -w
3
# 使用管道组合,wc -w 这个参数表示只统计单词数量
# 这条语句也有很多的等价写法:
$ < test wc -w
3
$ wc -w test
3 test
# 这些等价写法的好处在于不进行额外的进程

处理文件

  • mv
  • cp
  • mkdir

  • 以上所有命令都可以加参数 -v(verbose 详细),让工具输出正在进行的操作
  • 除了 mkdir 都可以加 -i(interactive 交互),能让工具向你确认请求

寻求帮助

  • man (manual)
  • help
  • tool -h / --help
$ man cat
# 输出不止一页,所以我们可以控制页面宽度

$ man cat | head -n 20
# 只输出前20行,也可以用fold;将较长的行变为80字符长度
$ man cat | fold

# 使用 help 可以查看 shell内置命令
$ help cat | head -n 20

# 第三方工具可以使用 -h 查看自带的帮助信息
$ java -h 

相关内容

    暂无相关文章