linux知识
(不充分的)基础的linux知识:
linux分为内核(唯一的,联系硬件与操作系统)(只有一个版本,牢牢把握在linus手中)和发行版(使用已经封装好的内核间接调用硬件)(有许多版本)。
windows是单用户操作系统,用户操作的是盘符中的内容。UNIX和LINUX是多用户操作系统,不同的用户在各自的文件中进行操作。
Ubuntu的操作重点应该在home文件夹中,别的文件不要碰(bin是二进制文件,etc是重要的系统配置文件)。
终端命令行:
ubuntu命令行界面放大字体:ctrl shift =,缩小字体界面:ctrl –
常用命令:rm删除文件,mkdir创建文件夹,pwd输出路径,ls输出列表下的内容,clear清空,touch创建文件,cd改变路径
remove ,make directory, print work directory, list change directory
命令格式commond [-option] [parameter]
中括号代表可有可无,option表示可以省略的选项,parameter表示参数。例如rm test01不能删除文件夹test01,但rm -r test01是可以奏效的,此时-r就是[-option](如果test01是文件夹名字的话)
如果忘记一个命令的参数或者选项应该怎么用了,用以下两个命令可以速查。假设我们要查mkdir的信息。
mkdir –help即可
man mkdir亦可,这时打开了mkdir的手册manual,space向下一行,enter向下一页,f向下一行(front),b向前一页(back),q退出(quit)
终端使用技巧:
1.自动补全:如果敲字母到一半不想敲了,那就按下TAB自动补齐,如果已有的首字母对应着多个选项的话就按两次tab,会得到一个带有所有备选项的目录,例如输入 cd D,再按两次TAB,会被提示Document,Download,Desktop等三个选项。
2.曾经使用过的命令:按上下方向键即可。
对ls命令的拓展:
凡是首位是.的文件都是隐藏文件,比如.123,ls不能显示这类文件,但ls -a可以,a代表all。
在ubuntu中 .代表当前目录 ..代表上一级目录。
-l是以列表list形式显示详细信息
-h与-l联合使用可以使得显示更加人性化
-l,-a,-h这三个参数可以联合使用,没有先后顺序,-alh,-ahl都可以。
ls通配符,指可以代表位置字符的符号
*,可以代表任意多个符号,0个也好,100个也好,输入ls 1*可以找到所有以1为开头的文件,输入ls *1可以找到所有以1为结尾的文件
?可以代表一个字符,不能是0个,不能是多个,只能是一个
[]表示一个字符组,只要存在于这个字符组中就可以提取出来,输入ls [12345]23可以找到123,223,323,423,523,ls[12345]可以用ls[1-5]表示
对cd命令的扩展:
~表示家目录,/表示根目录,cd ~或者cd 可以回到家目录,cd -可以在最近的两个cd中选一个(感觉没啥用,有上下键不就够了么)
相对路径:目前文件夹下面的文件,最前头不是/或者~
绝对路径:最前面是/或者~
vi编辑器:(51条消息) Linux——vi命令详解_傲骄鹿先生的博客-CSDN博客_linux的vi
对touch的扩展:
对于不存在的文件,创建出来;对于已经存在的文件,修改创建时间。
对于mkdir的扩展:
在同一个目录下,文件和文件夹不可以同名。
-p可以递归创建文件,mkdir -p a/b/c/d/可以创建出文件夹a,a中有b,b中有c,c中有d。
rm的扩展:
注意:rm一旦删除无法恢复!
rm -r 可以删除文件夹,删除文件夹a以后a中的所有文件都没了
rm -f强制删除,存在的文件直接删除,不存在的文件也不报错(f就是force)
如果你想删库跑路:在根目录/下rm -rf *
tree命令:以树形式显示目录结构
格式:tree[]
中括号中加上要显示的文件夹,不加[]的话就把所有文件显示出来。
扩展:-d只显示目录,不显示文件。
命令行中蓝色是文件夹,白色是文件
cp命令:
格式:cp 原文件 目标文件
如果不需要给原文件改名的话就cd test01 .即可,毕竟.就意味着当前目录
扩展:若原文件和现有文件不同,将原文件cp至现有文件会将现有文件覆盖。在命令中加入-i可以得到是否确定覆盖的提示
距离cp -i test01 .
cp不能直接复制目录,要复制目录的话就要加上-r
给命令起别名:
alias即可,例如
alias ll='ls -alh'
alias lll=ls
注意,空格前后不可有空格。
alias查看所有别名;
unalias取消别名:
unalias ll
ubuntu之文件移动:
命令mv是move的缩写,可以将一个文件移动到另一个地方,格式为mv 源文件 目标地址
mv text.txt a/b/c/会将text.txt放入a中的b中的c中;
mv text.txt demo.txt会将text.txt改名为demo.txt;
综上,mv会将一个文件从一处放入另一处,如果目标文件夹没有这个名字,那就创建,如果有那就覆盖,但此时有另一个问题:
若此时有a,b两个文件,mv a b会将b变成a,原本的b消失了。ubuntu中不能撤回对文件的操作,那怎么办呢?在mv时加上-i就会被提示覆盖信息。就像cp一样。
ubuntu之文件查看:
which xxx查看xxx的目录(类似pwd,但不需要在xxx在即可使用)
cat命令是concatenate缩写,意为连接,cat test可以将test的内容一次性显示出来。
more可以将文件的第一页显示出来,文件操作同man,空格是翻一页,f是翻一页,b是倒退一页,回车是翻一行。
综上,cat用来显示内容比较少的文件,more用来显示内容比较多的文件。
对cat命令的扩展:
-b对非空行加上行号
-n对文件加上行号
grep命令可以查找指定内容:
grep as test可以在test中查找带有as行
对grep的扩展
-n可以将行号显示出来
-v相当于取反,会显示文件中不包含as行
-I可以使查找忽略大小写
grep ^f test 在test中查找f在行首的行
grep f$ test在test中查找f在行尾的行
echo命令:将后面的内容显示在终端中
重定向:
>在文件中覆盖式地写入
>>在文件中追加
放在一起用:
echo hello >> test在test中加入hello
ls -ahl >> test在test中加入ls的结果(如果test不存在的话,先创建再写入)
|管道标志,将一个命令的输出作为另一个文件的输入。
ls -alh | more将ls的内容分屏显示
ls -alh | grep -n do将ls中含有do的内容逐行显示
ubuntu之系统信息:
时间信息:
date显示当前时间
cal显示当前月的日历,即calender
cal -y可以显示一整年的日历
磁盘信息:
df
disk free可以显示磁盘使用情况,剩余空间大小
du []
disk usage已经使用的磁盘,[]中加上目录可以表示指定目录中的使用情况
以上两个命令加上-h可以在显示文件大小时带上单位(正如ls的扩展功能一样)
进程(正在进行的程序):
ps [aux]
process status,a显示终端上所有程序(all),包括其他用户的程序;u显示进程的详细情况;x显示没有终端控制的进程
一旦使用了x会看到很多很多进程,可能会造成比较大的心理压力,可以使用clear或者ps aux | more缓解一下
top命令:
动态(时刻刷新着)排序(占比最大的最靠前)显示各个进程。
按q就可以退出了,进入以后不要紧张
kill PID
中止某一个进程,PID可以在pa au中看到
[-9]是一个强制删除的扩展,用来对付一些正常情况下删不掉的进程
不好分类的屑命令们:
find [路径] -name “”
在指定路径中查找文件,如果不加路径,就在当前路径下查找。
find -name “*123*”在当前路径查找名字中有123的文件
软链接(类似windows中的快捷方式):
ln -s 源文件 链接文件
一定要加-s,不加的话就是硬链接,相当于复制了一次(啥也不是,不如cp)
源文件记得用绝对路径,别用相对路径(用了相对路径的话只能在当前位置使用,一旦发生了移动就全失效了)
小知识:linux中文件数据和文件名是分开存储的,软链接是链接到源文件名的,硬链接是链接到文件数据的。
Ubuntu之打包压缩:
linux中常常将一大堆文件打成一个tar包(tar只负责打包不负责压缩)。
打包命令tar cvf 打包文件 被打包的文件/路径
解包命令tar xvf 打包文件
选择c创建打包文件x解开档案文件v列出归档和解档的过程,列出进度f放在最后,指定打包文件格式一定是.tar(f必须放在最后,其余的随你)
gizp压缩:
将tar文件压缩为tar.gz格式,只要在tar中加上一个扩展-z即可:
tar -zcvf 打包文件.tar.gz 被打包的
tar -zxvf 打包文件.tar.gz -C 解压后的目标路径名
(有没有-C都可以,有的话很不错,没有的话就解压缩到当前路径)
bzip2压缩:
将tar文件压缩为tar.gz格式,只要在tar中加上一个扩展-z即可:
tar -jcvf 打包文件.tar.bz2 被打包的
tar -jxvf 打包文件.tar.bz2 -C 解压后的目标路径名
(有没有-C都可以,有的话很不错,没有的话就解压缩到当前路径)
Ubuntu之软件安装
apt 是advanced packaging tool缩写
sudo apt install 安装包,安装
sudo apt remove 安装包,卸载
sudo apt update 安装包,更新
推荐两个安装包:sl一个呜呜呜小火车
htop漂亮的显示进程
在ubuntu中运行python文件
找一个xxx.py文件,在其中储存代码
使用解释器python3运行该代码,将xxx.py的文件名以参数的形式传给python3
即python3 xxx.py
在解释其中交互式运行:
在终端中输入python3即可进入交互式形式。
交互式的缺点:代码是在python3的shell中输入的,虽然可以即时得到结果,但一旦退出就什么也不剩了
如何退出交互式:在shell中输入exit()或者ctrl+D
官方的解释器python3功能简陋,建议使用ipython3解释器:(I代表交互INTERFACE)
ipython3可以使用自动补全,可以直接输入linux命令,输入exit(没有小括号)或ctrl+d即可退出
sudo apt install ipython3即可安装
集成开发环境:(IDE)(intergrated developed environment)
pycharm:
运行:右上角的绿色三角;
调试:右上角的绿色小虫子可以运行到断点处,然后在console控制台中单步执行即可简单调试
调试中可用绿色小三角继续执行,红色方块终止程序将调试释放掉
创建新文件时的interpreter编译器选择:在anaconda3的文件夹中选择python.exe文件即可
在.py文件的第一行加上
#! 解释器(比如python3)的绝对地址
再用chmod给文件加上可执行权限即可在命令行中直接运行.py文件
注意,以下内容主要用于服务器管理,用不到,而且不全面,可抛弃
ubuntu之远程管理(用来玩坏你的好朋友的电脑)
shutdown命令可以关机
shutdown 20:25今天20:25关机
shutdown +10十分钟以后关机
shutdown now现在就关机
shutdown -r重启
shutdown -c取消之前的关机计划
网卡:
每部手机都有一张电话卡,一个电话号码
每台电脑都有一张网卡,一个ip地址
ifconfig命令可以查看当前网卡的配置信息,但信息很多
ifconfig | grep -n inet可以按行显示配置信息中有关ip地址的信息
ping命令用来检验网络连接
ping 173.147.175.176可以检测本机到173.174.175.176的速度
ping 加上回环地址可以检查本机的网络是否正常
原理:发送一个数据包,收到目标地址主机的反馈,检测这之间的时间,时间越长说明网速越慢。
域名是ip地址的别名。比如www.baidu.com
我们访问百度首页时,先用ip地址或者域名访问到百度的服务器,再通过端口号访问该服务器上的web软件。如果不输入端口号,则使用目标服务器的默认端口号。
想要退出一个命令行的过程就用ctrl+c
ssh命令可以从一台电脑上访问另一台电脑(secure shell)
格式ssh [-p port] 用户名@域名/ip地址 port参数是端口,没有的话就默认22
linux上自带ssh控制软件,windows上需要额外下载putty或者xshell,然后就可以操作别人的系统啦哈哈哈哈
scp命令远程复制文件(secure copy)
scp -P port 源文件 user@ip:/Desktop/test(参数中P大写)
可以将源文件从本地放到目标电脑的test文件夹中
也可以从远程放到本地:
scp -P port user@ip:/Desktop/test .
在windows系统上也可以使用filezilla通过ftp协议将文件在linux和windows之间进行传输。
退出一个ssh中的远程文件:exit即可
在linux中,每一个用户都有各自的权限,为了避免为每一个用户都设置一次权限的麻烦,开发组的概念,为一个组设置权限,在同一个组中的用户享受相同的权限。
对ls -l进行扩展:每个文件的前面有10个字母,第一个字母表示是否目录,是d则是目录,-则不是目录;对于后九个字母:r可读w可写x可执行,每三个字母是一个组的权限,三个组分别是拥有者权限,组权限,和其他用户权限
十个字母后面的一个数字是硬连接数:有几种方法可以到达该文件。一个目录可以通过绝对路径进入,在本身之中通过 cd .进入;在子目录中通过 cd ..进入,总而言之,一个目录的子目录越多,硬连接数就越大
修改目录或者文件的权限chmod:
chmod +x ip 给ip加上x权限
chmod -r ip 给ip减去权限
执行一个文件:
./test即可执行test文件
x可执行权限对于目录的意义:如果没有这个权限的话,连用ls查看这个目录的内容都做不到
sudo是ubuntu的超级用户root,拥有许多默认用户所没有的权限(默认用户就是我们平时使用的用户,其只能在家目录下活动)。
实际上su是substitute user的意思,即替代用户,ubuntu的默认替代用户就是超级用户root
使用sudo需要输入密码,输入一次以后的五分钟内都不用再输入
ubuntu之组的管理:
添加组:sudo groupadd dev可以开发一个组dev
删除组:sudo groupdel dev可以删除这个组
查看组的信息(有没有添加或者删除成功)cat /etc/group
根目录下的etc是用来储存系统配置信息的目录
修改一个文件或者目录的组别:
sudo chgrp -R 组名 目录名/文件名
-R的作用是递归将目录中所有的文件和目录全部放入这个组
chgrp是change group的缩写
ubuntu之用户管理:
sudo useradd -m -g 组名 用户名
即可创建一个新用户,-m的作用是自动创建家目录,-g的作用是放到一个指定组中去,否则计算机会自动创建一个和用户名同名的组
sudo passwd 用户名
即可设置密码
sudo userdel -r 用户名
即可删除一个组
确定用户信息:用户信息保存在/etc/passwd文件夹中
id指令可以显示出ark的用户带号UID,组代号GID
/etc/passwd中储存的是用户名,密码(已加密,所以看不见),UID,GID,用户名或本地帐号,家目录
查看用户信息:
who查看有哪些用户登陆了本电脑
whoami看看自己是谁