Linux指令
(一)、窗口命令
- 打开终端快捷键:ctrl + alt + t
- 清空命令行:
- clear
- ctrl + L
- 命令行页面缩放
- 放大:ctrl + shift + ”+“
- 缩小:ctrl + ”-“
- 移动命令行
- window + 上键:窗口最大化
- window + 左键:窗口置于左边
- window + 右键:窗口置于右边
(二)、查询命令
- cal:查看当前日期(日历)
- date:查看当前时间
- free:查看内存用量
- df:查看磁盘用量
- pwd:查询当前所处的路径
- ls -l:查询文件的详细信息
- ls -lh:查询文件的详细信息并标明文件大小
- cd -:回到上一次访问的目录
- ctrl + ”左/右键“:快熟移动光标
- file + ”文件名“:查看文件的信息
- less + ”文件名“:查看文件内容,通过上下键查阅;也可以使用pagedown和pageup两个按键来实现翻大页面;输入G是跳转到底部,输入g是跳转到顶部,输入q退出;可以输入 /+需要查找的字符,匹配的字符会阴影标注显示
(三)、文件操作
- mkdir xxx:创建xxx目录
- > xxx:重定向,比如 > abc.txt,会创建一个abc.txt文件,ubuntu不起作用(然后可以输入文本,回车换行,ctrl + c退出保存),重定向多个可以通过空格为分隔写多条语句
- echo xxx >xxx.txt:将xxx写入xxx.txt内,数据会被覆盖
- vim xxx.txt:可以通过vim编辑器写入数据,wq保存退出
- cat xxx.txt:在终端中查看xxx.txt内容
- cp a b:将a中的数据复制到b中
- mv a.txt ./my:将a.txt这个文件移动到当前目录下的my文件夹里面
- 复制粘贴:1.通过鼠标中键:左键选中文本,点击中键即可快熟实现复制粘贴;2.ctrl + shift + c 和 ctrl + shift + v
- rm -r:通过递归的反式删除文件夹或文件,因为rm指令不能删除含有文件的目录
(四)、硬链接和符号链接
- 符号链接:相当于window的快捷方程式,点击即可访问链接文件,删除符号链接并不会影响链接文件,但是删除链接文件会影响符号链接
- ln -s b.txt b_fuhao:创建b.txt的符号链接b_fuhao,-s表示符号链接,b_fuhao创建成功后会有一个小图标
- 硬链接:相当于对链接文件进行复制,但是这两个文件用的是同一片存储空间
- ln a.txt a_ying:将a.txt硬链接到a_ying,ln相当于line
- ls -li:查看两个文件的详细信息,i显示他们在内存中的编号,可以看出他两的内存编号是一样的,说明它两有硬链接关系
- 缺点:只能链接同一个磁盘的文件
(五)、通配符
- *****:任意通配符
- ls -l *.txt:输出以.txt结尾的所有文件
- ?:单个通配符
- ls -l ?.??? :输出名称为一个字符,后缀为三个字符的所有文件
- []:括号内的字符表示满足任意一个字符都可以输出,比如:ls -l [ab].*,输出以a或者b为命名的所有文件
(六)、命令类型
- type xxx:若显示命令所在的路径,说明这是一个脚本命令,如:type cp,打印出cp is /bin/cp
- type ls:打印出 ls is aliased to `ls --color=auto’ ,说明ls是通过ls --color=auto改造而来的
- type type:打印出 type is a shell builtin , 说明type是一个内置命令
- xx --help:查看xx命令的帮助文档
(七)、自建命令-alias
退出终端后,自建命令即失效
- alias 命令名=”命令“
- 比如删除所有 .txt 文件命令:
alias deltxt="rm *.txt"
- 命令自建好后,在命令函中输入deltxt即可删除所有 .txt 文件
- 比如删除所有 .txt 文件命令:
- 查看自建命令:在命令行中输入alias即可查看,有些输出的命令是系统自己创建的命令
- 删除自建命令:unalias 命令名; 如:
unalias deltxt
永久保存
- 在~目录下用vi打开.bashrc:vi .bashrc
- 在.bashrc中写入:alias 命令名=‘命令’;例如:alias todesktop=‘cd ~/Desktop’
- 关闭当前终端,重新打开一个终端即可生效,或者输入:source .bashrc
(八)、输入输出重定向
在linux中,你输入的字符是通过输出重定向才能够显示在终端中,而我们输入的过程叫做输入重定向
- echo 1234 > a.txt:每次执行都会覆盖文件内容
- echo 1234 >> a.txt:每次执行会将新的数据插入到老数据之后
将多个文件内容重定向到一个文件中
- ls 1.txt 2.txt > 3.txt
- ls 1.txt 2.txt 2> 3.txt:2>可以打印并写入错误信息
- ls 1.txt 22.txt &> 3.txt:&>可以将正确和错误信息都写入
cat标准输入流
- cat < 1.txt 等价 cat 1.txt 都是将1.txt中的内容重定向输出到命令行
(九)、管道
符号是 “|”
- 区别于echo,echo xxx,输出的是包含命令,但是命令不显示
- 通过 ls -l|less,输出的只是包含查询的内容
输出剔除多个文件夹中相同名称的文件
- ls ./ first second|sort|uniq:查询当前文件夹,first和second文件夹中文件名称(没有重复),需要先进行排序sort
- ls ./ first second|sort|uniq -d:-d参数查询被剔除的文件
wc命令
- wc data.txt:输出的是 多少行 多少个单词 多少个字节 文件名
也可以通过ls查询输出结果,这样就不用生成文件再进行wc查询
- ls -l |wc
grep匹配符号(适用行的,与通配符不同)
- ls -l |grep txt:输出所有带有txt的文件
通过head和tail输出头10行和尾10行(默认)
- ls -l |head -n 2:输出头2行
- ls -l |tail -n 3:输出尾2行
tee可以输出和写入数据,同时还能继续通过管道继续执行一些命令
- ls -l |tee test.txt:将数据写入test.txt并再控制台中输出
- ls -l |tee test.txt |sort:将数据写入test.txt并将数据排序后输出到控制台
(十)、echo
- echo ~:显示路径,和pwd差不多,但是pwd输出的当前路径,echo ~输出的是当前路径的上一个路径
- echo $((1+1)):计算并输出结果,需要两个括号
- echo $(((1+1) + (2*3))):复杂计算
循环创建文件
- > {001…100}.txt:在ubuntu中不起作用,替换为
- for i in {001…100};do echo 123 > “$i.txt”;done
- ls -l {10…20}.txt:输出10.txt到20.txt的信息
- ls -l {10,15}.txt:输出10.txt和15.txt的信息
- rm {001…100}.txt:删除001.txt到100.txt文件
变量
- test=abc; echo $test:将test这个变量赋值abc,通过echo查询变量test,关闭窗口后,变量也会消失
- printenv:查询所有变量
- whatis printenv:会告诉你者命令是干什么用的
命名替换扩张
- echo $(ls -l):输出的数据不会换行,输出的内容和ls -l一致
- echo -e “$(ls -l)”:实现输出换行,加双引号,-e也可不需要
- which cp:输出cp所在的路径
- ls -l $(which cp):输出cp的详细信息
引号
- 双引号:可以原样保留输出的数据,不会忽略空格和回车等
- echo “$(ls -l)”:会执行ls -l这个命令
- 单引号:取消括住的所有拓展功能
- echo ‘ “ ( l s − l ) ”’:输出的是“ (ls -l)” ’:输出的是 “ (ls−l)”’:输出的是“(ls -l)”
历史记录扩张
- history:会输出历史记录的命令
- !123:会输出并执行历史记录中的第123个命令
- !!:两个感叹号是执行删一条命令
(十一)、权限
权限设置
由十个字符组成,如-rw-r–r–,第一个字符表示该文件的类型:-表示文本文件,d表示文件夹,l表示链接文件;后边三个字符为一组,第一组表示文件的创建者的权限,第二组表示创建者的下级账号的权限,第三组表示既不是创建者也不是下级账号的权限;r表示读权限,w表示写权限,x表示执行权限,没有的权限用-表示
- 权限数值(421码)
- 0:—
- 1:–x
- 2:-w-
- 3:-wx
- 4:r–
- 5:r-x
- 6:rw-
- 7:rwx
- chmod 766 1.txt:为1.txt分配3种用户的权限
创建用户
- sudo su:进入超级管理员账户,显示为#
- adduser aa:创建aa用户
- su aa:使用aa用户
- sudo deluser aa:删除aa这个用户(需要关闭aa这个用户启动的进程),删除后aa用户这个文件夹还是存在,需要再去删除,该文件夹只能由su用户删除
改变文件的归属
**例:1.txt这个文件的信息详细为:-rwxrw-rw- 1 g g 4 1月 10 11:11 1.txt **
- 1表示文本文件中有1个单词
- 第一个g表示创建者的名称
- 第二个g表示组别名称
- 4表示文件的字节数
修改所有者
- sudo chown aa 1.txt:将1.txt这个文件的创建者修改为aa这个用户
- 或者通过切换到超级管理员用户进行设置,就无需sudo
修改所有组别名
- sudo chown aa: 1.txt:将创建者和组别都修改为aa
修改账户密码
- sudo passwd 用户名
(十二)、进程
- 输入ps查看当前窗口的进程
- ps -x:显示按下回车那一刻电脑的所有进程
- top:3秒刷新一次电脑的所有进程
- ps -aux:常用的查看进程的方法,通过快照的方式展示,不会影响电脑的性能,展示的内容更多
杀进程
- xlogo:在桌面上生成一张x的照片窗口,通过点击终端输入ctrl+z将xlogo退出前台,重新回到前台需要输入fg %1,具体数值看子进程号
- 通过ps查询xlogo的进程号,并通过 kill 进程号杀死该进程
- 若该进程还是没给杀死,需要输入 jobs 查看它的子进程,通过 kill %子进程号 杀死进程
强制杀死进程
- kill -9 进程号:强制杀死该进程
- killall -9 xlogo:强制杀死xlogo的所有进程
(十三)、软件管理
ubuntu基于Debian,要离线安装软件,文件名必须以 .dpkg 结尾
apt指令
- apt-get update:更新软件库
- apt install 软件包名:安装软件
- apt remove 软件包名:卸载软件
- apt install --only-upgrade 软件包名:更新指定的软件
- apt upgrade:更新所有软件
- apt install search 软件包关键词:搜索软件包
- apt list:查看所有软件包(未安装 + 已经安装)
- apt list --installed:查看已经安装的软件包
- apt list --installed | grep firefox:通过grep匹配安装包名为firefix的软件包
(十四)、网络相关命令
ifconfig
- 查看当前电脑局域网信息
wget下载文件命令
- wget 下载地址:下载指定地址的资源
远程链接ssh
- ssh 另一台电脑用户名@ip地址
查看ssh状态
- sudo systemctl status ssh
如果没有ssh服务,需要安装ssh
- sudo apt install openssh-server
开启ssh服务
- sudo systemctl enable ssh
关闭ssh服务
- sudo systemctl stop ssh
(十五)、查找
locate
- locate xxx:搜索含还有xxx的文件路径(全局)
- locate xxx |grep g:搜索路径含有g的xxx文件
- locate xxx |grep g |xargs ls -l:xargs是执行后面命令的管道
find
- find xxx目录:find需要指定目录,输出该目录下所有文件
- find xxx目录 -name “*.txt”:在xxx目录查找所有txt文件
- find xxx目录 -type d:xxx目录下的所有文件夹
- find xxx目录 -type d -size +1M:输出xxx目录下大于1MB的文件夹
- find xxx目录 -name “1.txt” |xargs ls -l
(十六)、压缩、归档
归档主要是用来备份,压缩主要用来缩小文件,gzip只能压缩文件;gzip2用法和gzip一样,但是gzip2的压缩后文件更小,消耗时间更多;压缩文件夹要用tar
压缩 和 解压
- gzip 1.txt:压缩1.txt这个文件,并且将原文件替换成.gz的压缩包
- gunzip 1.txt.gz:解压文件
压缩的过程
- gzip -c 1.txt:将1.txt内容转换为二进制流
- gzip -c 1.txt > 1.txt.gz:重定向将二进制流写入压缩包内,压缩包取名为1.txt.gz
不解压查看数据
- gunzip -c 1.txt.gz:不解压直接查看1.txt.gz中的数据
- gunzip -c 1.txt.gz |less:通过管道查看
归档
- tar -cf guidang.tar ./*.txt:将当前 目录下的txt文件全都归档到guidang.tar中
- tar -xf jieguidang …/guidang.tar:将当前目录的上级目录中的guidang.tar解归档到jieguidang文件夹中
(十七)、正则表达式
主要用于字符的匹配
-
grep a 1.txt:输出1.txt中含有a的行
-
grep -v a 1.txt:输出没有含a的所有行(-i逆向匹配)
-
grep -i a 1.txt:无视大小写匹配
-
grep “.a" 1.txt:输出1.txt中a之前还要一个字符的行
-
grep ”^a“ 1.txt:输出a开头的行
-
grep ”a$“ 1.txt:输出a结尾的行
-
grep [23]$ 1.txt:输出结尾是2或者是3的行
-
grep ”^…[ab]" 1.txt:输出从头开始第4个字符是a或者b的行
-
grep ”[ab]…$" 1.txt:输出从尾部开始第4个字符是a或者b的行
-
grep 1 1.txt:输出开头是1到9的行,这里要用“-”号
-
grep 2 1.txt:输出开头是1到9和a到b的行,这里要用“-”号
(十八)、POSIX字符类
就是匹配字符,可以匹配数字,大小写字母,符号;格式:小写字母[[:lower:]] 大写字母[[:upper:]] 符号[[:punct:]] 数字[[:digit:]]
增强型匹配–多字符串匹配:需要用的-E参数,是extend意思
- grep -E ‘ab|bc’ 1.txt:匹配开头是ab或者是bc的行,这里的“|”是多选结构(或者的意思),不是管道的意思
增强型匹配–?:?是匹配0次或者1次
- grep -E “^c?a”:若有开头为c的则接着匹配第二位为a的*行;若没有c开头的,则匹配a开头的行
增强型匹配–:*****在通配符中是匹配所有字符,正则中的意思是同一个字符的n次,如a就是aaaa…
- grep -E “A*” 1.txt:匹配有连续A的行
- grep -E “A*B” 1.txt:若有连续的A,则输出该行并匹配下一个为;若没有则输出有B的行
增强型匹配–+:*号输出的是全部(不管匹不匹配都输出),+只输出匹配的
- grep -E “a+” 1.txt:匹配有一个或多个a的行
- grep -E “a+s” 1.txt:有一个或多个a后面还接着的是s的行
- grep -E “a{2}” 1.txt:匹配的a最少是连续2个
- grep -E “a{2,4}” 1.txt:匹配的a最少为2个,最多为4个
- grep -E “a{,4}” 1.txt:匹配的a最多为4个
- grep -E “a{2,}” 1.txt:匹配的a最少为2个
(十九)、自建命令脚本
-
vi xxx:创建名字为xxx的脚本文件,并进入vi编辑器写入
-
#!/bin/bash echo "hello world!";
-
sudo chmod 766 xxx:将xxx文件变成课执行文件
-
./xxx:需要指定xxx的路径才能正确运行
查看环境变量路径,PATH
是一个环境变量,用于指定系统在哪些目录中搜索可执行程序。当你在终端中输入一个命令时,系统会按照PATH
环境变量中定义的顺序依次搜索这些目录,直到找到对应的可执行程序为止。
- echo $PATH:结果以冒号为间隔
将自建命令脚本路劲写入环境变量
-
第一步,进入用户目录下,
cd ~
-
第二步,vi编辑器打开
.bashrc
-
第三步,在
.bashrc
的最后一行添加路径:export PATH"~/bin:$PATH"
(因为我这里在用户目录下新建了一个bin目录来存储脚本,所以指定路径为~/bin) -
第四步,重新加载
.bashrc
文件:source .bashrc
-
之后我们在任意一个路径下直接输入脚本的名称即可执行