语法篇
运行一个程序遵循如下语法
$ 命令 参数1 参数2 ...
其中运行包括三种路径表示方法
- 环境变量下的程序直接输入即可运行
- 输入相对路径
- 输入绝对路径
以ls为例,上述三种方式分别为
$ ls
$ cd /usr/bin
$ ./ls
$ /usr/bin/ls
参数分为三种类型,短参数,长参数,以及动作参数,分别如下示例:
$ ls -a
$ ls --help
$ apt search vim
获取帮助篇
Linux下一个程序或者c/c++语言函数的用法获取可以通过
- 帮助参数
- 查询man文档
- Wiki或搜索引擎(Wiki建议Archwiki,搜索建议Google)
- 查看源代码
等方式获取,其中前两种方式在终端下完成,如zip命令为例
$ zip -h
$ zip --help
$ man zip
$ man strncpy
快捷键篇
命令快速输入
- tab 用来补全程序名,路径,以及部分参数
- Ctrl + A 跳转到行首
- Ctrl + E 跳转到行尾
- Ctrl + K 删除后面的内容
进程控制
- Ctrl + C 终止当前程序
- Ctrl + Z 挂起当前程序,bg切换到后台,fg切换到前台运行
- Ctrl + D 发送文件终止符EOF
多程序组合篇
- 数据流重定向
$ echo "aaaa" > a.txt
##把stdou输出的aaaa重定向到a.txt文件中,a.txt会被清空
$ echo "aaaa" >> a.txt
##把stdou输出的aaaa重定向到a.txt文件中,追加到a.txt的末行
$ nc -l -p 5555 < a.txt
##把a.txt的内容读取到正在监听的nc程序的stdin里面,这里连接到5555端口的程序将接受到a.txt的内容
$ nc localhost 5555 > a.txt
##通过这条命令配合上一条,即可实现通过传输文件的功能(明文,不安全)
- 管道符号
管道符可以将上一个程序的stdout作为本程序的stdin,如
$ ls /dev | grep 'sd'
即可从ls的输出里匹配出含有sd的文件和文件夹(硬盘和硬盘分区文件)
- xarg – 将stdin作为下一个程序的参数
如Ubuntu一键清理残余配置文件脚本
$ dpkg -l |grep '^rc' |awk '{print $2}|sudo xargs dpkg -P'
-
${cmd}
将程序输出作为参数
如gcc编译时加入第三方动态库常用pkg-config
g++ opencv_demo.cpp ${pkg-config --libs --cflags opencv}
外观篇
$和#的区别
两者都是提示符号,表示可以输入指令,前者表明用户为普通用户,后者表明用户为root改变终端提示符
终端提示符如junzhi@arch $
是由环境变量$PS1
指定的,可以通过重新修改PS1变量来修改风格,PS1一般设置在~/.bashrc
里面,可以通过Bashrc Generator网站来生成自己喜欢的风格改变默认Shell
大多数发行版默认Shell为Bash,目前为止也有很多人采用更加强大的zsh, zhs有一个配置框架oh-y-zsh,拥有多种漂亮的提示主题,集成了Git管理以及更多的补全功能