数据流、管道
数据流及输出重定向命令:>
输入流:从键盘或者文件中读取内容到内存中
输出留:从计算机内存中把数据写入到文件或者显示到显示器上
重定向:改变数据流和原来的默认走向
标准输出流:stdout :标准输出,对应于终端的输出
标准错误输出流:stderr :标准错误输出,对应于终端的输出
标准输入流:stdin :标准输入,对应于你在终端的输入
echo "xxx":将xxx输出到终端
echo "xxx" > demo.txt:将xxx输出到文件demo.txt中,但是会覆盖文件已有的信息
echo "xxx" >> demo.txt:就不会覆盖,而是追加
可以输出数据的语法 > 文件 :这样的就可以
管道:| :可以看成队列,左边写东西,右边读东西
ls -l / | more:将管道左边的得到的数据输出给右边,成为右边的输入,右边将数据进行处理
管道只能处理经由前面一个指令传出的正确输出信息,对错误信息没有直接处理能力,然后传递给下一个命令,作为标准输入
建立链接
Linux链接文件类似于Windows下的快捷方式
链接文件分为软链接和硬链接
软链接:文件数据由它的文件名指向,再创建一个文件名来指向文件数据的文件名(快捷方式类似的)
ln -s 源文件 链接文件
删掉最开始的文件名,其他的链接都不可使用
硬链接:文件数据由多个文件名指向
ln 源文件 链接文件
只要有一个文件名存在就可以
文件搜索
grep:文件内容搜索(会将符合搜索内容串的整行输出出来,符合搜索内容串的用红色标出)
grep [-选项] '搜索内容串' 文件名(选项的内容可以是零或多个)
grep -i '搜索内容串' 文件名:模糊字母大小写搜索
grep -n '搜索内容串' 文件名:在每行前面显示当前行在文件中的行数
grep -v '搜索内容串' 文件名:取反(就是不包含搜索内容串的)
grep -i '^搜索内容串' 文件名:搜索以搜索内容串开头的行(^:正则表达式相关内容)
grep -i '搜索内容串$' 文件名:搜索以搜索内容串结尾的行
grep -i '[Ss]igna[Ll]' 文件名:匹配[]里中一系列字符中的一个:搜索匹配单词signal、Signal、signaL、SignaL的行
grep -n 'e.e' 文件名:匹配一个非换行的字符;匹配e和e之间有任意一个字符。可以匹配'eee'、'eae'、'eve'、'ese'但是不能匹配'ee'、'eaae'
find:文件搜索(在特定的目录下搜索符合条件的文件,也可以用来搜索特定用户属性的文件)
find ./ -name test.sh :查找当前目录下所有名为test.sh 的文件
find ./ -name '*.sh' :查找当前目录下所有后缀为.sh 的文件
find ./ -name "[A-Z]*" :查找当前目录下所有以大写字母开头的文件
*表示任意字符
?表示任意一个字符
[列举字符]表示列举出的任意一个字符
find /tmp -size 2M :查找在/tmp目录下大小等于2M的文件
find /tmp -size +2M :查找在/tmp目录下大小大于2M的文件
find /tmp -size -2M :查找在/tmp目录下大小小于2M的文件
find ./ -size +4K -size -5M :查找在当前目录下大小大于4K,小于5M的文件
find ./ -perm 777 :查找在当前目录下权限为777的文件或目录
归档和压缩
压缩:就是一种打包,原理是将文件中相同的信息用一个符号代替。使文件体积变小
归档:将一些文件放在一起变成一个包,便于保存和传输(压缩没有明显效果的文件使用归档进行保存)
tar使用:
多文件归档:tar [参数] 打包文件名 文件1 文件2
目录归档:tar [参数] 打包文件名 目录
参数:(同时使用多个参数的时候,f 要放在最后)
-c:生成档案文件,创建打包文件
-v:列出归档解档的详细过程,显示进度
-f:指定档案文件名称,f后面一定是.tar文件,所以必须放选项最后
-x:解开档案文件
归档+压缩:tar -zcvf xx.tar.gz 文件1 文件2(.gz 是linux的压缩文件的后缀,类似于windows的.zip .rar)
解压缩+解档:tar -zxvf xx.tar.gz
解压缩+解档+到指定目录:tar -zxvf xx.tar.gz -C 要解档到的目录
文件压缩、解压缩:zip、unzip
通过zip压缩文件的目标文件不需要指定的扩展名,默认扩展名为zip
压缩文件:zip [-r] 压缩文件(可以没有扩展名) 源文件
解压文件:unzip 压缩文件(把文件解压到当前目录下)
文件权限
r:可读
w:可写
x:可执行
文件拥有者(u): r w x
同组用户(g): r - x
其他用户(o): r - x
所有用户权限(a)
修改权限:chmod
chmod u/g/o/a +/-/= rwx 文件
+:增加权限
-:撤销权限
=:设定权限
数字法设定权限:r权限数为4,w权限数为2,x权限数为1 。若是没有权限则为0 ,要是三个权限都有就是7(4+2+1)
如:chmod u=rwx g=rx o=r filename 就等同于:chmod u=7 g=5 o=4 filename
简化一下就是:chmod 754 filename
目录权限:递归所有目录加上相同权限,需要加上参数 -R 。如:chmod 777 d
用户管理
su - 切换用户
passwd - 修改用户密码
exit - 退出用户登录
who - 查看用户登录
1.切换到管理员帐号
sudo命令用来临时以其他身份执行命令,预设身份为root(会在/etc/sudoers中设置了可执行sudo指令的用户
未授权的用户使用sudo会发出警告邮件给管理员,用户使用sudo必须输入自己的密码,而且五分钟后需要再次
输入密码)
sudo -s 默认切换到root用户 ,需要输入当前用户的密码
su root 切换到root用户(输入啥用户名就是啥用户),需要输入root用户密码,切换到指定用户,关闭终端前有效
2.设置用户密码:passwd
超级用户可以通过passwd命令给普通用户设置或修改密码,普通用户可以修改自己的密码
passwd 用户名 修改指定用户的密码
passwd 修改当前登录的用户的密码
3.退出登录帐号:exit
如果是图形用户界面,退出当前终端
如果是使用ssh远程登录,退出登录帐户
如果是切换后的登录用户,退出则返回上一个登录账户
4.查看登录的用户:who
查看所有登录当前系统的用户信息
-q或--count :只显示用户的登录帐号和登录用户的数量
-u或--heading :显示列标题
关机、重启
关机重启:reboot、shutdown、init
reboot:重新启动操作系统
shutdown -r now :重新启动操作系统,shutdown会给别的用户提示
shutdown -h now :立刻关机其中now相当于时间为0的状态
shutdown -h 20:22 :系统在20:22会关机,shutdown -c 可以取消关机
shutdown -h +10 :系统在过十分钟后会自动关机, shutdown -c 可以取消关机
Ubuntu下的软件安装
1. make install 源代码安装包(性能好,稳定,但是安装很麻烦)
步骤:
1. ./configure ## 建立makefile这个文件
2. makeclean ## 消除上次编译过的目标文件之类的,不必须
3. make ## 会依据makefile中默认工作进行编译,主要是进行gcc将源码编译成为可执行的目标文件,而这个可执行文件放在目前所在的目录之下
4. make install ## 一般是最后的步骤,make会依据makefile关于install的选项,将上个步骤所编译完成的数据安装到默认的目录中
2. dpkg安装deb包(直接运行安装,简单。存在包依赖,需手动下载很多安装包)
方法:
sudo dpkg -i package.deb
3. apt-get方式(这种比较适合)(最简单的安装方式,一条指令下载所有包。必须有软件源 要连网搭建软件源)
方法:
sudo apt-get install xxxx
更新Ubuntu软件下载地址(软件源)
1.国内镜像源
清华大学开源软件镜像站:https://mirrors.tuna.tsinghua.edu.cn
2.备份Ubuntu默认的源地址:(备份原来的软件源)
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
3.更新源服务器列表:(打开了这个文件,将你想用的镜像源的配置文件复制到你的文件里面)
sudo gedit /etc/apt/sources.list
4.更新源:(更新一下,就可以使用最新配置的软件源了)
sudo apt-get update
测试并安装vim编译器
sudo apt-get install vim
Ubuntu软件操作的相关命令
sudo apt-get update:更新源
sudo apt-get install package:安装包
sudo apt-get remove package:卸载包
sudo apt-cache search package:搜索包
sudo apt-cache show package:获取包的相关信息,如说明、大小、版本等
sudo apt-get install package --reinstall:重新安装包
sudo apt-get -f install:修复安装
sudo apt-get remove package -purge:删除包,包括配置文件等
sudo apt-get build-dep package:安装相关的编译环境
sudo apt-get upgrade:更新已安装的包
sudo apt-get dist-upgrade:升级系统
sudo apt-cache depends package:了解使用该包依赖哪些包
sudo apt-cache rdepends package:查看该包被哪些包依赖
sudo apt-get source package:下载该包的源代码
sudo apt-get clean && sudo apt-get autoclean:清理无用的包
sudo apt-get check:检查是否有损坏的依赖
ssh远程登录
安装ssh
sudo apt-get install openssh-server
远程登录
ssh 远程ssh服务器用户名@远程ssh服务器IP地址
scp远程拷贝
使用前提:目标主机已经成功安装openssh-server
(通过命令:sudo apt-get install openssh-server 来安装)
使用方法:
上传:
scp 本地路径 服务器用户名@服务器地址:远程路径
如:scp ./1.txt ssd@192.168.33.123:/home/ssd/1.txt
下载:
scp 服务器用户名@服务器地址:远程地址 本地路径
如:scp ssd@192.168.33.123:/home/ssd/1.txt ./1.txt
编辑器vim
它可以执行输出、删除、查找、替换、块操作等众多文本操作,vi没有菜单,只有命令。
vi的三种工作模式:
命令模式:
用户按下esc键,vi就会进入命令模式,用户可以输入各种合法的vi命令来管理自己的文档
文本输入模式:
只有在输入模式下,才可以对文本进行编辑。
在命令模式下输入:插入命令i、附加命令a、打开命令o、修改命令c取代命令r或者替换命令s。都可以进入文本输入模式
末行模式:
也叫ex转义模式。用户在命令模式下可以按' :' 键进入末行模式。vi会在窗口最后一行显示一个:作为末行模式的提示符
操作步骤(在终端操作):
创建文件:vi文件名 --> i进入编辑模式 --> 编辑文件 --> esc到命令模式 --> :到末行模式 --> wq保存并退出
进入编辑模式 | |
---|---|
i和I | i在光标前插入,I在行首插入 |
a和A | a在光标后插入,A在行末插入 |
o和O | o在光标所在下一行插入,O在光标所在上一行插入 |
进入命令模式 |
---|
esc |
进入末行模式: | |
---|---|
q | 退出 |
w | 保存 |
q! | 强制退出,不保存 |
qw! | 强制退出并保存 |
! | 强制的意思,可以不加 |
移动光标命令 | |
---|---|
h | 光标向左移动 |
j | 光标向下移动 |
k | 光标向上移动 |
I | 光标向右移动 |
H、M、L | 光标移动到可见屏幕的第一行、中间行、最后一行 |
^和$ | 移动到行首、行末 |
G和gg | 移动到文档的最后一行、第一行 |
ctrl+f、ctrl+b | 向前翻屏、向后翻屏 |
ctrl+d、ctrl+u | 向前半屏、向后半屏 |
{ 和 } | 向上移动一段,向后移动一段 |
w和b | w向前移动一个单词、b向后移动一个单词 |
删除命令 | |
---|---|
X和x | x删除光标所在字符,X删除光标前一个字符,包括光标所在字符 |
dd和n dd | dd删除所在行,n dd删除n行 |
d0和D | d0删除光标前文本行所有内容。D删除光标后文本行所有内容,包括光标位置字符 |
dw | 删除光标所在位置的字,包括光标所在位置字符 |
撤销命令 | |
---|---|
u | 一步步撤销 |
ctrl+r | 反撤销(重做) |
重复命令 | |
---|---|
. | 重复执行上一次操作的命令 |
移动命令 | |
---|---|
>> | 文本行向右移动 |
<< | 文本行向左移动 |
复制粘贴 | |
---|---|
yy、n yy、y$ | yy复制当前行,n yy复制n行,y$复制当前光标至行尾 |
p | 在光标所在位置向下开辟一行粘贴 |
查找替换 | |
---|---|
命令模式 | |
r和R | r替换当前字符,R替换光标后的字符 |
/ + str | 找到字符串str,n查找下一个,N查找上一个 |
末行模式 | |
%s/abc/123/g | 将文件中所有abc替换成123 |
1,10s/abc/123/g | 将第一行至第十行之间的abc替换成123 |