linux学习笔记(1)

Ubuntu终端(terminal)

常用的Shell命令:

ls(List):查看目录信息命令

查看当前目录的文件有什么 当然不包括隐藏文件
ls -a:查看当前目录所有文件 包括以.开头的隐藏文件
ls -l:查看当前目录的文件的详细信息,ls -l亦可缩写为ll
ls -al:也就是两个指令的叠加使用

cd(Change directory):目录切换命令

cd /代表进入根目录,也就是计算机目录,cd ~表示切换到 home 目录的意思,相当于cd /home/用户名cd .则是表示切换到目前所在的目录,cd ..则表示切换到目前目录位置的上一层目录。
当进入终端后其默认在home目录下
~$默认表示此时在home目录

pwd(Print Working Directory):当前路径查看命令

终端窗口上也可以通过查看$之前的信息查看当前在哪个路径

uname(Unix name):系统信息查看命令

在这里插入图片描述

clear:清屏命令

实际上没真正的清屏 鼠标滚轮向上滑动可查看历史记录

cat(Concatenate files and print on the standard output):查看文件内容命令

sudo(Super User do):带有超级用户权限执行的前缀命令

sudo “命令”:带有超级用户权限的命令去做
比如:

sudo ls 

以超级用户权限查看当前目录

su (Switch user):切换用户命令

不过注意在切换用户的时候要以超级用户的身份执行

sudo su

当需要输入用户密码时 输入时他不会显示出来密码 输入完直接按enter就行
要把用户切回来时就需输入:sudo su “用户名”

touch:触摸命令

修改文件或者目录的时间属性,若文件不存在,系统会建立一个新的文件。
我记touch的方法是这个文件给我touch过,也就是给我碰过
比如

touch main.c

即在当前目录新建了一个叫main文件格式为c的文件

rm(Remove):删除命令

删除一个目录中的一个或多个文件或目录,他也可以将某个目录及其下的所有文件及子目录均删除。
如 rm main.c
就把刚刚新建的文件删除了
rm -r:把整个文件夹删除,注意凡是要删除目录都要使用这个指令
rm -i :删除前逐一询问确认
rm -f:即使原文件属性设为只读,也可以直接删除,并且是无提示且强制的删除
当要把整个系统文件彻彻底底删除时,r配合f来使用效果更佳
即:

rm -rf “文件或文件夹名”

mkdir(Make Directoriy):创建目录命令(也就是新建文件夹)

比如:

mkdir MDK

即在当前目录下新建一个文件名叫MDK的文件夹

mv(Move):移动命令(也具有重命名功能)

如前者为文件后者为文件夹的情况下:

mv main.c MDK

即把main.c文件移动到MDK目录下
又比如两者均为文件的情况下:

mv main.c test.c

即把main.c文件更名为test.c文件
又比如两者均为文件夹的情况下:

mv MDK keil5

当前情况是文件夹keil5已存在的情况,即会把MDK文件夹移动到目录名为keil5的目录下;倘若keil5这个文件夹不存在,则MDK文件夹会更名为文件名为keil5的文件

cp(Copy):拷贝命令

比如:

cp main.c main1.c

即把main.c文件复制然后粘贴到该目录下 然后新的文件的文件名为main1.c
又或者比如现在在home目录下有两个文件夹,一个叫mdk一个叫keil5,然后mdk目录下有个叫main.c的文件,我想把mdk目录下的main.c这个文件复制到home目录下的keil5文件夹里,就必须得在父目录下执行复制操作
即:

cd ~
cp mdk/main.c keil5

如果在main.c所在的父目录下即在mdk目录下执行该命令就会报错,因为mdk目录下根本没有mdk文件夹 ,更别说mdk目录下有main.c这个文件了
那如果是cp main.c keil5行不行?我想把当前目录的main.c文件复制到父目录的keil5文件夹里,你想法很好,可操作系统可会误解你的命令,操作系统会把keil5误认为是新的文件名,然后进行了复制,就如刚刚的cp main.c main1.c效果一样
当要复制的是目录时,应使用cp -r 指令
比如:

cp –r mdk keil5

即把mdk文件夹全部复制到keil5目录下,如果当前目录里没有keil5这个文件夹,那么系统会复制一个跟mdk文件夹一样的但是文件名叫keil5的新的文件夹

rmdir(Remove directory):目录删除命令

这个命令只能删除空的文件夹
如果再加-p使用的话就是如果你要删除的是mdk目录下的子目录,前提是这个子目录也是空的,如果你把子目录删了导致mdk文件夹空了,那么系统会顺便把mdk文件夹删除

ifconfig(Network interfaces configuring):配置网络指令

可用来查看网络状态等信息
ifconfig -a:查看全部的网络状态等信息
sudo ifconfig ens33 down:关闭ens33网络(ens33是网卡名,有些机子的名字不一样,具体名字还得用ifconfig查看)
sudo ifconfig ens33 up:打开ens33网络
sudo ifconfig ens33 192.168.1.56 :给ens33分配192.168.1.56这个ip地址

reboot:重启命令

poweroff:关机命令

man(Manual):系统帮助命令

man “命令”:可以查看这个命令的使用手册,比如你想看reboot命令的使用手册,即

man reboot

find:查找命令

find -name “文件名”:可在当前目录下根据文件名进行查找

grep(Globally search a Regular Expression and Print):文本搜索命令

grep -i 或 grep --ignore-case : 忽略字符大小写的差别。
-r 或 --recursive : 不单单查找当前目录的内容,当前目录下的子目录里也查
-n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号
经常r配合n使用

du(Show disk usage):查看所占磁盘空间的大小命令

du -h或du --human-readable:以K,M,G为单位,提高信息的可读性
du -s或du --summarize:仅显示总计,也就是说只显示当前目录的占用空间,不显示子目录所占磁盘空间的大小
du -h --max-depth=“目录层数”:超过指定层数的目录后,进行忽略,即更深的子目录的占用空间系统不显示了

df(Disk free):查看磁盘使用情况命令

查看此时计算机中各磁盘的使用情况,可以查看到各磁盘总空间、已经占用的空间、剩余空间等

gedit:gedit文本编辑器打开命令

比如:

gedit main.c

系统就会以gedit文本编辑器打开main.c,更改完后可以cat一下进行查看

ps(Process Status):查看当前系统进程命令

top(Timely observe process):查看进程的实时运行状态命令(会实时更新)

file(File type):查看文件类型命令

比如 :

file main.c

系统就会在终端上显示main.c的文件类型等信息

自动下载软件包

apt-get(Advanced Package Tool):运行apt-get工具指令

适用于 deb 包管理式的 Linux 操作系统(Debian、Ubuntu等),主要用于自动从互联网软件仓库中搜索、下载、安装、升级、卸载软件或操作系统

sudo apt-get install “软件包名字”

从互联网中自动搜索该软件包的名字并且下载安装
所以是一键安装软件包,与源码安装不同的是,这个指令会自动检测并安装依赖,而且用apt-get安装的包都是成熟的软件包,基本不存在安装包有严重bug或者文件缺失的情况

sudo apt-get install -y

添加-y就相当于不需要重复地确认安装

sudo apt-get install -q

即-quiet,静默安装,当然也不是完全静默,会将低等级的log信息屏蔽。

sudo apt-get remove

remove指令就是卸载,remove仅仅卸载软件,不卸载配置文件

sudo apt-get purge

卸载指令,同时卸载相应的配置文件

sudo apt-get autoremove

在卸载软件的时候同时卸载那些当初作为依赖但是现在并不需要的包
不过这条指令很可能将你要用的依赖包同时卸载,有时候安装包并没有通过apt-get指令来管理,apt-get管理工具不会加入这些包的信息,所以在检索包的依赖关系时可能出问题
还有另一种情况:比如你安装了某个包,这个包依赖git,但是git并非是你主动下载的,而是作为依赖下载的,包安装完之后系统可能就会提示git作为依赖不再需要使用,它并不知道你是不是正在使用这个软件包,所以慎用

apt-get update

将所有包的来源更新,也就是提取最新的包信息

apt-get upgrade

一般执行在apt-get update运行完之后,它的作用是将系统中旧版本的包升级成最新的,更新到最新版本,稳定性并没有得到很好的验证,慎重使用

sudo apt-get check

用于核对以确认系统的依赖关系的完整性

管理软件包

dpkg(Debian package):用来安装、创建和管理软件包的实用命令

sudo dpkg -i: 安装包
sudo dpkg -r:删除包
sudo dpkg --unpack:解开 deb 包的内容
sudo dpkg -l:显示系统中所有已经安装的 deb 包
当安装deb格式的软件包时,就需使用dpkg指令进行安装等步骤
当自己下载源码进行程序编译安装时,先把压缩包解压,然后在其解压出的文件夹的目录下,在终端使用make编译指令,make完后,输入make install指令进行安装,有时候安装需要超级用户权限

tree:以树状图形式列出当前目录内容的命令

它会列出指定目录下的所有文件,包括子目录里的文件,以及会以树状形式显示父子目录的关系

磁盘管理

mount:挂载Linux系统外文件的命令

在根目录下的dev目录里以sd开头的就是硬盘的各个分区,sda是整个硬盘,而sdax则是这个硬盘里的各个分区对应的分区名字。我们可以使用mount这个挂载命令把U盘挂载到一个新建的目录下,在这里我的U盘是sdb,U盘的分区1是sdb1,分区2是sdb3。假如我在桌面下mkdir了一个Udisk文件,我就可以把sdb1分区挂载在Udisk目录下,即

sudo mount /dev/sdb1 ~/桌面/Udisk

不过在此之前先要把U盘解除在其他目录下的挂载,因为当计算机插入了外部储存设备系统会默认把分区挂载到根目录下的media目录下,所以先得使用umount(Unmount)命令解除挂载,即

sudo umount /media/“用户名”/“U盘名字”

fdisk(Partition table manipulator for Linux):创建、管理和维护分区表的命令

fdisk -l:列出素所有分区表
fdisk -u:与"-l"搭配使用,显示分区数目
比如,我要对U盘的分区进行管理,即

sudo fdisk /dev/sdb

这时我可以根据终端的提示输入相应的命令对U盘进行对应的操作

mkfs(Make file system):在特定的分区上建立 linux 文件系统的命令

mkfs -t:在特定的分区建立某种文件系统,比如:

sudo mkfs -t vfat sdb1

在U盘的sdb1分区建立vfat格式的文件系统

压缩与打包

gzip:将文件压缩后生成扩展名为.gz文件的命令,并且会删除原来文件,只有压缩功能不具有打包功能

gzip -d或gzip --decompress或gzip ----uncompress:解开压缩文件
gzip -v或gzip --verbose:显示指令执行过程
gzip -r或gzip --recursive:递归处理,将指定目录下的所有文件及子目录的文件都进行处理,无论是压缩还是解压操作

bzip2:将文件压缩后生成扩展名为.bz2文件的命令,并且会删除原来文件,只有压缩功能不具有打包功能

bzip2 -d或bzip2 --decompress:解开压缩文件
bzip2 -v或bzip2 --verbose:显示指令执行过程
bzip2 -z或bzip2 --compress:强制执行压缩

tar(Tape archive):用于备份文件的命令,同时也有压缩、打包和解压的功能

tar意思是将文件备份到磁带上,最初 tar 用来将文件打包到磁带机,然后要用的时候从磁带机还原出来。后来硬盘空间大了,开始直接以文件的形式备份到硬盘
tar -c或--create:建立新的备份文件(压缩、打包)
tar -v或--verbose:显示指令执行过程
tar -x或--extract或--get:从备份文件中还原文件(解压)
tar -f “备份文件名”或tar --file=“备份文件“:指定备份文件,加上参数f是指定把打包后的内容保存到文件中;而不加f是把内容直接写到终端,但是系统拒绝把归档内容写到终端,所以必须加上参数f并且放在最后
tar -t或tar --list: 列出备份文件的内容
tar -j:压缩格式为bzip2格式
tar -z:压缩格式gzip格式

zip:将文件压缩后生成扩展名为.zip文件的命令,不会删除原来文件

zip -r:递归处理,将指定目录下的所有文件及子目录的文件都进行处理,无论是压缩还是解压操作
zip -v:显示指令执行过程
unzip:解开压缩文件

rar:将文件压缩后生成扩展名为.zip文件的命令,不会删除原来文件

这个命令需自己下载其软件包
可以输入如下进行下载

sudo apt-get install rar

具体使用的话在终端输入rar查看使用说明

用户与用户组

Linux系统存储用户记录是在/etc/passwd这个文件内
Linux系统用户的密码记录在/etc/shadow这个文件内
Linux系统用户组的信息记录在/etc/group这个文件内

每个用户都有一个用户ID,叫做UID(User Identification)
每个用户组都有一个用户组ID,叫做GID(Group Identification)
用户和用户组的存在就是为了控制文件的访问权限

adduser:新增使用者帐号或更新预设的使用者资料的命令
deluser:移除使用者帐号或更新预设的使用者资料的命令

比如我想添加一个用户名为Ubuntu的普通用户,可以键入:

sudo adduser Ubuntu

假如系统现在有一个名叫Unix的用户组,那我可以把用户Ubuntu加入到Unix用户组里,即:

sudo adduser Ubuntu Unix

相对的我要删除一个用户名为Ubuntu的普通用户,可以键入:

sudo deluser Ubuntu

假如用户名为Ubuntu的普通用户现在属于一个名叫Unix的用户组,那我可以把用户Ubuntu从Unix用户组中移除,即:

sudo deluser Ubuntu Unix

addgroup:新增工作组的命令
delgroup:移除工作组的命令

比如我想添加一个用户组名为Unix的用户组,可以键入:

sudo addgroup Unix

passwd:用来更改使用者的密码的命令

假如我要给刚刚新建的用户Ubuntu设置密码,可以键入:

passwd Ubuntu

更改用户密码也是如上操作,除此之外:
passwd -d Ubuntu:删除用户名为Ubuntu的用户的密码

groups:查看当前用户所属用户组的命令

我想查看用户名叫Ubuntu用户所属哪些用户组,可以键入:

groups Ubuntu

文件权限管理

Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)
在这里插入图片描述
在这里插入图片描述
从上图我们可以看到用户对main.c文件的权限为-rw-rw-rw-,r代表可读,w代表可写,x代表可执行,而-代表不具有此权限,所以这里的main.c是可以给文件所有者、用户组里的其他用户、其他用户读和写,但都不能执行main.c

chmod(Change mode):控制用户对文件的权限的命令

Q:哪些用户可以修改文件权限?
A:只有文件所有者和超级用户可以修改文件或目录的权限。
我们有两种命令形式去指定文件的权限:
1、使用绝对模式(八进制数字模式)
我们可以把文件权限认为10位二进制数,把位是r或w或x的位当做1,-当做0,所以main.c的二进制为0110110110,转换为八进制即为666。如果我想把main.c的文件权限变为-rw-r–r--,其二进制为0110100100,转换为八进制即为644,所以我们可以通过键入如下指令进行文件权限的更改:

chmod 644 main.c

在这里插入图片描述
这里我们可以用ls -l main.c查询main.c文件的详细信息,可以看到Group和Other Users已经失去了可写的权限
2、使用符号模式(此时main.c文件的原始权限依然是-rw-rw-rw-)
符号模式相对来说更简单,把文件所有者(Owner)当做符号"u"、把用户组(Group)当做符号"g"、其它用户(Other Users)当做符号"o"、把这三种用户的统称即all当做符号"a"
假如我想给文件所有者所在组的其他组内用户(符号"g")移除(符号"-")对main.c可写(符号"r")的权限,可以键入:

chmod g-r main.c

在这里插入图片描述
我们可以从上图看到Group已经失去了对main.c可写的权限
相对的假如我想给文件所有者所在组的其他组内用户(符号"g")重新赋予(符号"+")对main.c可写(符号"r")的权限,可以键入:

chmod g+r main.c

在这里插入图片描述
我们可以从上图看到Group已经重新被赋予了对main.c可写的权限
同理给文件所有者赋予对main.c可执行的的权限即为:

chmod u+x main.c

除此之外,我们还可以对文件权限进行批量修改,只需之间添加","即可,即:

chmod g-w,o-w main.c

除了"+“与”-“外,还可以对文件权限进行赋值(即符号”=")
例如:

chmod u=rw-,g=rw-,o=rw- main.c

经过如上操作,main.c的权限变为-rw-rw-rw-,这与键入如下命令目的相同:

chmod a=rw- main.c

chown(Change owner):设置文件所有者和文件关联组的命令

如果我现在想把main.c文件的文件所有者从Ubuntu更改为Debian,可以键入:

sudo chown Debian main.c

这样该文件的所有者就从Ubuntu变为了Debian,但是其文件所有的用户组依旧未变,要想更改成用户组名为Unix的用户组,可以键入:

sudo chown .Unix main.c

如果我想把main.c的文件所有者和文件所有用户组都进行更改,可以键入:

sudo chown "用户名"."用户组名" main.c

chown -R:处理指定目录以及其子目录下的所有文件,意思是将其目录及目录的所有文件都进行文件所有者或文件所有用户组的更改,也就是递归

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值