Linux——命令行展开,命令别名(alias),快捷键,I/O重定向,管道,文本处理工具(wc, cut, sort, uniq)

1、命令行展开

~: 展开为用户的主目录

~USERNAME:展开为指定用户的主目录

{}:可承载一个以逗号分隔的列表,并将其展开为多个路径

  • /tmp/{a,b} = /tmp/a, /tmp/b
  • /tmp/{tom,jerry}/hi = /tmp/tom/hi, /tmp/jerry/hi
1 练习:
2 (1) 如何创建/tmp/x/y1, /tmp/x/y2, /tmp/x/y1/a, /tmp/x/y1/b, /tmp/x/y2/a, /tmp/x/y2/b
3     mkdir /tmp/x/{y1,y2}/{a,b}        
4 
5 (2) 如何创建x_m, y_m, x_n, y_n
6     mkdir {x,y}_{m,n}
7 
8 (3) 如何创建/tmp/bin, /tmp/sbin, /tmp/usr, /tmp/usr/bin, /tmp/usr/sbin
9     mkdir -p /tmp/{bin,sbin,usr/{bin,sbin}}
View Code

2、命令别名(alias)

通过alias命令实现:

(1) alias

显示当前shell进程所有可用的命令别名;

(2) alias NAME='VALUE'

定义别名NAME,其相当于执行命令VALUE;

注意:在命令行中定义的别名,仅对当前shell进程有效;如果想永久有效,要定义在配置文件中;

  • 仅对当前用户:~/.bashrc
  • 对所有用户有效:/etc/bashrc

小Tips:

编辑配置给出的新配置不会立即生效,需要让bash进程重新读取配置文件:source /path/to/config_file 或 . /path/to/config_file

撤消别名:unalias

unalias [-a] name [name ...]

Note: 如果别名同原命令的名称,则如果要执行原命令,可使用"COMMAND";

3、bash的快捷键

Ctrl+a:跳转至命令开始处;

Ctrl+e:跳转至命令结尾处;

Ctrl+c:取消命令的执行;

Ctrl+u: 删除命令行首至光村所在处的所有内容;

Ctrl+k: 删除光标所在处至命令行尾部的所有内容;

4、bash的I/O重定向

程序:指令+数据

读入数据:Input

输出数据:Output

打开的文件都有一个fd: file descriptor (文件描述符)

标准输入:keyborad(键盘), 0

标准输出:monitor(显示器), 1

标准错误输出:monitor, 2

I/O重定向:改变标准位置

1)输出重定向

COMMAND > NEW_POS, COMMAND >> NEW_POS

>:覆盖重定向,目标文件中的原有内容会被清除;

>>: 追加重定向,新内容会追加至目标文件尾部;

# set -C: 禁止将内容覆盖输出至已有文件中;

  • 强制覆盖:>|

# set +C:取消进制

2>: 覆盖重定向错误输出数据流

2>>: 追加重定向错误输出数据流

标准输出和错误输出各自定向至不同位置

COMMAND > /path/to/file.out 2> /path/to/error.out

合并标准输出和错误输出为同一个数据流进行重定向:

&>:覆盖重定向

&>>:追加重定向

COMMAND > /path/to/file.out 2> &1

COMMAND >> /path/to/file.out 2>> &1

2)输入重定向:<

tr命令:转换或删除字符

命令格式:tr [OPTION]... SET1 [SET2]

HERE Documentation:<<

# cat << EOF

# cat > /path/to/somefile << EOF

5、管道

管道:一个命令的输出可以通过管道做为另一个命令的输入。

管道我们可以理解现实生活中的管子,管子的一头塞东西进去,另一头取出来,这里“ | ”的左右分为两端,左端塞东西(写),右端取东西(读)。

例:ls -alh | more  # 将当前路径下的文件的详细信息按照分页的方式打印在屏幕上

1 练习:
2 1、将/etc/passwd文件中的前5行内容转换为大写后保存至/tmp/passwd.out文件中;
3     # head -n 5 /etc/passwd | tr "a-z" "A-Z" > passwd.out
4 2、将登录至将前系统上用户信息中的后3行的信息转换为大写后保存至/tmp/who.out文件中;
5     # who | tail -n 3 | tr 'a-z' 'A-Z' > /tmp/who.out
View Code

6、文本处理工具:

wc命令:

命令格式:wc [OPTION]... [FILE]...

  • -l: lines
  • -w: words
  • -c: characters

cut命令:

命令格式:cut [OPTION]... [FILE]...

  • -d DELIMITER: 指明分隔符
  • -f FILEDS:
    • #: 第#个字段
    • #,#[,#]:离散的多个字段,例如1,3,6
    • #-#:连续的多个字段, 例如1-6
    • 混合使用:1-3,7
  • --output-delimiter=STRING

sort命令:

命令格式:sort [OPTION]... [FILE]...

  • -f: 忽略字符大小写
  • -r: 逆序
  • -t DELIMITER: 字段分隔符
  • -k #:以指定字段为标准排序
  • -n: 以数值大小进行排序
  • -u: uniq,排序后去重

uniq命令:

命令格式:uniq [OPTION]... [FILE]...

  • -c: 显示每行重复出现的次数;
  • -d: 仅显示重复过的行;
  • -u: 仅显示不曾重复的行;
  • Note: 连续且完全相同方为重复
原文地址:https://www.cnblogs.com/x54256/p/8143906.html