C语言的简单命令
命令的基本格式:命令名称 -选项 参数
1.基本操作命令:
ls //列出某个目录下的所有文件 list
ls -adFhilR
h: human-readable
i: inode i节点编号,是系统用来区分文件的标志
R: recursive 递归
cd //切换目录 change directory
cd 直接切换到当前用户的家目录
cd ~ 同上一行
. 表示当前目录
.. 表示当前目录的上一级目录
- 切换到上一次所在的目录
!$ 切换到上一条命令中的最后一个目录
pwd //查看当前所在的目录 print work directory
touch 文件名 //创建空文件或者更新文件的时间信息
mkdir 目录名 //创建目录
-p a/b/c(嵌套的目录)
mv //移动,更名 move
mv ./a ./b //移动或改名
mv ./a ./b/c 移动兼改名
cp //copy 拷贝
cp -rf a目录 b目录
cp -f a文件 b文件
cp -p a文件 b文件 //-p选项可以连同原始文件的时间信息也拷贝
rm //移除,删除 remove
-rf 强制删除文件或目录
rm -rf 文件名/目录名
cat 文件名 //查看文件内容,通常适合文件行比较少的文件
more 文件名 //分屏查看文件内容,space/enter向下翻屏/翻行,但是无法查看之前查看过的内容
less 文件名 //分屏查看文件内容,除了space和enter可用外,还可以用方向键的向上键和向下键往回或往下查看
head -n 3 文件名 //<==> head -3 文件名 查看文件的头3行
tail -n 3 文件名 //<==> tail -3 文件名 查看文件的尾3行
2.基础知识:
1> 文件的类型:用 ls -l 可以查看
- 普通文件(文件文件,可执行文件)
d 目录
l 软连接文件
c 字符设备文件
b 块设备文件
s 套接字文件(网络编程)
p 管道文件(进程间通信)
rwxrw-r--
其中r表示read, w表示write, x表示execute
系统中用户的分类:
文件的所有者:u
文件的所属组:g
其他用户 :o
这所有的三类用户:a
groups 用户名 //查看用户属于哪些组
grep 组名称 /etc/group //查看组内有哪些用户
2> 终端提供了几个通配符,用来匹配文件名的
* 表示0个或任意个任意字符
? 表示任意一个字符
[mn] 表示匹配[]中出现的任意一个字符
[m-n] 表示匹配[]中从m开始到n结束中的任意一个字符
3> file 文件名/目录名 显示文件的类型
4> grep 字符串 文件名 //在文件中提取指定的字符串,如果存在,就打印所在行
grep -w //行中只要出现了这个完整的单词就匹配
grep -x //行中只有这一个单词的才能匹配出来
5> 重定向输入/输入重定向 < 或 << 或 0< 或 0<<
cat << END > tmp //将直到输入“END”字符串之前输入的所有内容都被重定向覆盖输出到了tmp文件中
cat << END >> tmp //将直到输入“END”字符串之前输入的所有内容都被重定向追加输出到了tmp文件中
cat < file1 > file2 //输入的来源是从file1文件获得的,而不是从键盘获得的,将获得的这些内容定向覆盖输出到file2文件中
cat < file1 >> file2 //输入的来源是从file1文件获得的,而不是从键盘获得的,将获得的这些内容定向追加输出到file2文件中
重定向输出/输出重
echo hello > 文件 //将本应该显示在标准输出的hello定向(覆盖)显示到文件中
echo hello >> 文件 //追加hello到文件
重定向错误输出/错误输出重定向 2> 或 2>>
ls -l abc 2> f_error //abc文件如果不存在,会将错误消息定向显示到f_error文件中;如果存在,f_error文件什么内容也没有
ls -l abc file > f1 2>&1 //abc如果不存在,file存在,会将file文件的详细信息定向到f1文件中,abc不存在的错误消息也同样定向到f1文件中
标准输入:从键盘获得的输入
标准输出:输出到的目的地是屏幕,终端,显示器,打印机
标准错误输出:输出的目的地和标准输出相同
---------------------
3.vi/vim 文本编辑器
三种模式:
命令模式 -- (i/I a/A o/O) --> 插入
i/I: insert
a/A: append
o/O: open
插入模式/编辑模式 -- (esc) --> 命令模式
末行模式 :
命令模式 -- (:) --> 末行模式
末行模式 -- (esc) --> 命令模式
末行模式和插入模式之间无法直接切换,需要借助命令模式
保存退出
1):wq!
:x
:q!
2) shift+zz 或者 shift+zq
另存为
:w ./file2
:w /Volumes/U盘名称/
:n1,n2w ./dir/abc //另存当前文件中的n1行到n2行之间的内容到当前目录下的dir目录下的abc文件中,如果abc文件已经存在,并且有内容,直接被新内容覆盖
:n1,n2w >> ./dir/abc //追加新内容到文件,不会覆盖
:r ! 命令 //将命令的结果读入到该文件光标所在行
:r ./dir/files //将当前目录下的dir目录下的files文件的内容读入到该文件光标所在行
--------------------
命令模式下的操作:
1)光标定位:
a)针对全文范围
整个文件的第一行的开头:
1G
整个文件的最后一行的开头:
G
某一行的最开头:
行号G
b)针对光标所在行
行尾
$
行首
0 或者 ^ (0表示该行的第一个字符,包括空白字符;^表示该行的第一个非空白字符)
下一行的开头
enter
c)光标所在字符周围
h 向左
j 向下
k 向上
l 向右
d)将当前屏幕上光标所在行显示在屏幕中间/最上一行/最下一行
zz zt zb
e)将光标定位到当前屏幕的最中间一行/最上一行/最下一行
M H L
f)定位到光标所在字符处的后20个字符的位置
20space
2)复制和删除
复制一行:yy
复制三行:3yy
删除一行:dd
删除三行:3dd
复制光标所在行到文件的第一行之间的所有行:y1G
删除光标所在行到文件的第一行之间的所有行:d1G
复制光标所在行到文件的最后一行之间的所有行:yG
删除光标所在行到文件的最后一行之间的所有行:dG
复制光标所在字符直到所在行行尾之间的所有字符:y$
删除光标所在字符直到所在行行尾之间的所有字符:d$
复制光标所在字符直到所在行行首之间的所有字符:y0
删除光标所在字符直到所在行行首之间的所有字符:d0
复制光标所在字符开始的3个单词:y3w
删除光标所在字符开始的3个单词:d3w
3)粘贴
p 7p
P 2P
4)撤销操作
撤销之前的一步操作:u
撤销之前的三步操作:3u
撤销光标所在行的所有操作:U
5)反撤销
ctrl+r
6)查找
/字符串
按下n,向下定位
按下N,向上定位
7)插入连续的多个同一符号
数字i字符/字符串,esc
举例:30ihello 插入连续的30个hello
8)大小写字符替换
定位,ctrl+v,U //将选中的内容替换为大写字符
定位,ctrl+v,u //将选中的内容替换为小写字符
--------------------
末行模式下的操作:
1)定位:
:10 定位到第10行开头
2)复制:
:3,9y 复制第3到第9行之间所有行
3)删除:
:3,9d 删除第3到第9行之间所有行
4)复制或删除某一部分:
ctrl+v, 选中一块,y或者d
5)给指定行前面添加//
光标定位到需要添加//行的最上一行,ctrl+v,选中需要添加//的这些行,shift+i,插入//,esc
6)替换:
针对全文:
:%s/old/new/[g]
针对指定行:
:n1,n2s/old/new/[gc]
其中,g表示所有匹配的都替换
c表示询问是否替换
删除全文的所有内容:
方式1:在命令模式下按下ggVG, d
方式2::%d
删除光标所在行连同下面所有行:
:.,$d
删除光标所在行连同下面3行,都删除:
:.,+3d
删除光标所在行,连同下面三行中出现#字符或x字符的行:
:.,+3g/#\|x/d
删除光标所在行,连同下面三行中出现的#字符和x字符:
:.,+3s/#\|x//g
-------
vim工具的配置文件在~/目录下,名称是:..vimrc
vimtutor //vim的官方帮助手册