一、知识积累
1、使用bash命令实现打印ubuntu下tree命令显示的树
命令:find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g' > structure.txt
如果需要移除node_module,则需要使用命令
命令:find . -print | grep -v "node" | sed -e 's;[^/]*/;|____;g;s;____|; |;g' > structure.txt
-------------------该操作更快捷的方法,直接输入命令tree>file1.txt,即可将tree命令的输出结果存放到file1.txt中
二、文件操作
1、文件权限设置
(1)用户2可以删除用户1创建的文件吗?可以,只要用户2对该文件具有写权限即可。
(2)chmod g-r dir1 对文件减去读权限 |
| 字母设定法 |
(3)数字设定法,命令:chmod 777 dir1/file1
或者命令:chmod 666 dir1/file1
2、文件查找
命令:find 其实目录 查找条件 操作
例如: find . -name "fil[a-z][1-2]" | 这样的话可以查找出以fil为文件名,后一个字符是a-z或者1-2的文件 |
(1)创建一个只有1个字节的文件,使用命令echo >file
(2)查找5分钟以内被修改过的所有文件,使用命令:find . -mmin -5
(3)查找5分钟以前被修改过的所有文件,使用命令:find . --mmin +5
(4)使用命令who,可以查看谁登陆了你的账号
三、find的组合操作
(1)命令find /usr/include/ -name stdio.h -exec ls -l {} \;
(2)命令find . - name file|xargs rm -rf
(3)|代表管道的意思,将前一个命令的输出,作为下一个命令的输入
四、其他命令
1、使用命令df -h 列出磁盘当前使用情况,使用命令du -h显示当前文件夹空间使用情况
2、查看内核命令uname -a
3、显示文件内容,使用命令cat -b file1
4、命令重定向输出,例如命令:tree >file2,就是将tree命令显示的内容重定向输出到file2中
5、重定向输出,使用命令:echo I hen niu >file3,就是将I hen niu的内容重定向输出到file3中
6、如何将标准输出和标准错误输出分割开?脚本还不能实现,需要使用C语言实现。
7、使用命令echo -n a.txt 这样的话,创建的空文件就不占用1个字节了
8、使用命令touch file7,可以创建一个名为file7的空文件
9、使用命令cat >file7 >file2,将file7的内容输出到file2中
10、显示文件内容的前几行,使用命令head -3 main.c,显示main.c的前3行;使用命令tail -3 main.c,可以显示main.c文件的后3行
12、如果想要显示history的后100行输出到history.txt中,则使用命令history |tail -300 >history.txt,在此命令中,tail -300为显示从尾部的300行,|代表重定向输出
>history.txt代表输出到history.txt文件中
13、使用命令:ls|wc -l,功能是统计ls输出的文件的个数
14、Linux下的汉字编码是UTF-8,而在Windows下的汉字编码是GBK
15、使用uniq命令,该命令的主要功能是报告或者删除文件中重复的行,参数如下:
①-c 在输出行前面加上每行在输入文件中的出现的次数
②-d 仅显示重复行
③-u 仅显示不重复的行
16、汉字编码转换使用的命令是iconv命令,该命令格式如下:iconv -f [输入编码] -t [输出编码]
例如:iconv -f utf-8 -t gb2312 hanzi>hanzi1
输入/输出格式规范,-f代表原始文本编码,-t代表输出编码
17、搜索文件内容grep命令
命令:grep [选项][查找模式][文件名1,文件名2,…]
①默认grep区分大小写
②例如:find . -name *.c|xargs grep main
使用管道,先搜索.c文件,从.c的文件中搜索含有main函数的文件
五、下午上课学到的命令
1、文档管理
打包文件使用命令:tar [主选项+辅选项] 目标文档 源文件或目录
tar可以为文件和目录创建档案,利用tar,用户可以创建档案文件
①打包:tar rf file.tar main.c
②解包:tar -xf file.tar
③打包并压缩:tar cfvz new.tar.gz
④解包并解压缩:tar -xf new.tar.gz
2、文件压缩解压
命令:gzip/bzip2 [选项]压缩或解压缩的文件名
①例如:gzip file1.txt
压缩完成后,源文件会被删除
②解压缩:gzip -dv file1.txt.gz
3、scp远程拷贝文件
①例如,向2.100传送数据,输入ssh test@192.168.2.100,密码test
②命令:scp test.txt test@192.168.2.100:~/
③命令:scp day2_history3.txt test@192.168.2.100
4、命令放到/usr/bin目录下时,就可以直接执行
sudo cp kscp /usr/bin
5、如何设置无秘钥登录?
使用的是非对称加密算法
(1)命令cd .ssh,进入.ssh文件夹下,输入命令ssh-keygen,即可生成一个名为id_rsa.pub和id_rsa的文件,其中pub文件为私钥,另一个为公钥。
(2)输入命令ssh-copy-id -I [你的id_rsa.pub的路径] [服务器名称]
例如: ssh-copy-id -I usr/yanmengqi/.ssh/id_rsa.pub test@192.168.2.100
(3)输入服务器密码即可连接
(4)可能出现的bug?
①密钥生成失败?需要在执行第一步的时候连续摁3次回车
②访问不了服务器的密钥文件?可能是服务器的密钥文件权限被修改,请查看密钥文件的读取权限,如有必要,请更改密钥文件权限,服务器密钥存放在.ssh文件夹下的authorized_keys文件内
6、使用route命令查看路由
7、vim的使用
(1)创建文件,命令vim echo.sh
(2)左下角显示的大写的INSERT,则代表进入的是编辑模式 | 在编辑模式下,按ESC进入命令模式 |
(3)输入a和输入i进入编辑模式的区别,a是在光标后边开始添加文本,i是在光标前边插入文本;输入I是在光标前行首插入文本,输入A实在光标行尾添加文本
Ctrl+s进入僵死状态,Ctrl+q退出僵死状态
(4)删除与修改
①x删除光标处
②dd删除整行
③4dd删除从本行下的3行;4dd就是删除本行下的4行
④D删除光标到行尾的文本
⑤yy复制光标所在整行,5yy复制所在行下的共计5行
⑥p粘贴
(4)光标移动
(5)翻页
Ctrl+b向上翻一页
W向后移动一个字
b向前移动一个字
u回退上次的指令
n向上走一行
Shift+n 向下走一行
(6)替换命令
替换命令1::s/God/ghost
替换命令2::10,16s/God/ghost 替换10-16行的God
全部替换::%s/God/ghost | 替换整个文本中的ghost |
(7)配置vim的一些设置
①配置文件vimrc
②将这些配置放到home目录,并改名为.vimrc
③使用命令kscp vimrc将该文件拷贝下来
④然后将该文件放到/home下,使用命令mv vimrc .vimrc
(8)十六进制模式%!xxd
重新恢复成文本模式%!xxd -r
新建一个窗口,使用命令new main.c | 即为创建了一个新的叫做main.c的文件 |
对齐文本gg=G
(9)sed命令
sed -I "s/printf/puts/g*" *.c
(10)vimdiff命令,显示两个文件中的不同的地方
命令:vimdiff main.c test.c
(11)修改颜色设置bashrc
将那句话放到bashrc的最后一行
输入echo $PS1可以显示色彩配置
bashrc中存放了很多系统设置,例如ll等快捷命令等