2-2-Linux命令
命令
who
查看当前用户
用户名 使用终端 开机时间
pwd
查看当前位置(目录/路径)
clear
清除屏幕
tree
- 查看树状目录结构
- 语法格式:
tree 路径
获得帮助
man
用于查看命令、函数及系统调用等的操作说明文档的工具,是manual(操作说明)的缩写,即详细的帮助文档
使用语法
man 需要查询的命令
使用效果
通常来说,man page会包含如下几方面的内容
模块 | 内容说明 |
---|---|
NAME | 简短的命令,数据名称说明 |
SYNOPSIS | 简短的命令执行语法(syntax)简介 |
DESCRIPTION | 较为完成的命令说明,可以重点阅读 |
OPTIONS | 针对SYNOPSIS部分中,所有可用的选项说明 |
COMMANDS | 这个程序(软件)在执行的时候,可以在此程序(软件)中执行的命令 |
FILES | 这个程序或数据所使用/参考/链接到的某些文件 |
SEE ALSO | 这个命令或数据的有关其他说明 |
EXAMPLE | 一些可以参考的范例 |
BUGS | 是否有相关的错误 |
man page的第一行显示了命令名称加上括号里的一个数字,这个数字是具有一定意义的。
数字 | 含义 |
---|---|
1 | 用户在shell环境中可以操作的命令或可执行文件 |
2 | 系统内核可调用的函数与工具等 |
3 | 一些常用的函数与函数库,大部分为c的函数库(libc) |
4 | 设备文件的说明,通常为/dev下的文件 |
5 | 配置文件或者是某些文件的格式 |
6 | 游戏 |
7 | 惯例与协议等,例如Linux文件系统,网络协议等 |
8 | 系统管理员可用的管理命令 |
9 | 与kernel有关的文件 |
help(参数)
使用:命令 --help
功能:笔记简单的帮助文档,但不是每个命令都有
目录操作命令
ls
ls命令(list)可用于列出指定路径下的文件(Linux中一切皆文件,目录也是文件的一种),如果不指定路径,单独运行ls命令,则默认路径为当前路径。
使用方式
ls [-options] [target path]
注:-a -l
= -al
得到的不同的文件颜色代表了不同的文件类型
常见选项
选项 | 作用 |
---|---|
-a | 显示指定路径中的所有文件,包括隐藏文件 |
-l | 显示文件的详细信息,包括文件类型,权限,所属用户,所属用户组,文件大小,上一次修改时间等 |
-h | 文件大小以KBytes为单位显示 |
-r | 按照文件名称顺序显示 |
-t | 按照文件时间顺序显示 |
-k | 按照文件大小顺序显示 |
-S | 按照文件大小顺序显示,默认从大到小;若要从小到大,可使用-Sr |
文件介绍
- .表示当前路径,…表示上一级路径,以.开头的文件在Linux中为隐藏文件。
- 默认的文件显示顺序是按照首字母的顺序进行排列的
ls /
表示查看根目录
-al的效果
第一行的total 72:表示当前目录下的所有内容大小为72Kbytes。除去第一行,剩余的信息可以分为6大块:
- 2: 共10个字母,确定了文件类型和用户对文件的权限
- 第1个字母表示文件类型
-
表示普通文件,d
表示目录文件(文件夹),b
表示块设备文件,c
表示字符设备文件,l
表示链接文件,p
表示管道文件,s
表示socket文件
- 剩余的9个字母分为3组,每三个字母为一组,分表表示所属用户,所属用户组,其他用户对该文件的读写权限
r
表示可读,W
表示可写,X
表示可执行,-
表示不具备相应权限- 第一组是u所有者的权限:例如rwx代表文件的所有者root用户有读写执行的权限
- 第二组是g所属组的权限:例如r-x代表与文件所有者在同一组的用户有读、执行的权限
- 第三组是o其他人的权限:例如r-x代表其他用户有读、执行的权限
- 在Linux中,文件有3种属性:可读、可写和可执行。每个文件都有自己的属主,每个用户有自己的用户组,这样文件权限就有属主权限、同组用户权限和不同组用户权限
- Linux中通过符号表示权限之外,也可以通过数字来表示权限r对应数字4,w对应数字2,x对应数字1。 那么rwx就是数字7,0表示没有任何权限
- 第1个字母表示文件类型
- 3: 紧跟在权限之后的1个数字,表示链接个数/目录文件里面包含的目录文件数/备份个数
- 包括普通目录文件和隐藏目录文件
- 如果是文件,则表示该文件的链接数
- 4: 所属用户
- 5: 所属用户组
- 6: 文件大小,以字节为单位,文件夹表示文件夹的大小,不是文件夹的总大小
- 注:使用
-h
会转变为以KBytes为单位
- 注:使用
- 7: 文件的mtime(修改时间)
更改文件权限
用户
chmod u+x xxx(文件)
对应用户增减制定权限,u代表用户后面跟+或者-r、w、x
进行权限更改,g代表所属组,o代表其他人chmod 640 xxx(文件)
直接用数字指定权限,每个数字对应三个字母
用户组
sudo chgrp groupname xxx
改变属主
sudo chown -R usename:groupname test
将test文件夹更代为usename用户、groupname用户组
cd
- cd(change directory)命令是用户进行目录切换的基础工具。
基本用法
cd [目录路径]
:目录路径
是你想切换到的目标目录,如果路径包含空格或特殊字符,则需要使用引号
常见选项
选项 | 作用 |
---|---|
cd |
回到用户目录 |
cd ~ |
切换到当前用户的主目录。无论你在哪里,输入 cd .. cd ~ 都会回到 /home/username ,即用户目录 |
cd - |
切换到上一个工作目录,同时会打出切换到的目录的路径例如,如果你从 /home/user 切换到 /etc ,再执行 cd - 会返回 /home/user |
cd .. |
切换到当前目录的父目录。例如,从 /home/user/Documents 切换到 /home/user 只需执行 cd .. ,即退回到上一个目录 |
绝对路径与相对路径
- 绝对路径:从根目录
/
开始的完整路径。例如,/home/user/Documents
- 相对路径:相对于当前目录的路径。例如,当前在
/home/user
,要进入Documents
,只需使用相对路径cd Documents
。
常见目录快捷方式
.
:表示当前目录。例如,cd . 并不会改变目录。..
:表示父目录,如前文提到。-
:表示上一个工作目录。~
:表示当前用户的主目录。
进阶技巧
- 自动补全:在大多数 Linux 终端中,可以使用
Tab
键自动补全目录名。例如,输入 cd Doc 后按 Tab,系统会自动补全为 cd Documents。 - 使用符号链接:符号链接(symbolic link)是文件系统中的一种快捷方式。通过
ln -s
命令创建符号链接,可以快速导航到常用目录。例如:
ln -s /home/user/Documents /home/user/docs
cd docs
- 使用环境变量:可以通过定义环境变量简化目录切换。例如,将
PROJECTS
环境变量设置为/home/user/Projects
,然后使用cd $PROJECTS
快速切换:
export PROJECTS=/home/user/Projects
cd $PROJECTS
export
命令在 Linux 和其他类 Unix 系统中用于设置或修改环境变量,并将其导出到子进程中
常见问题
- 路径错误:如果输入的路径不正确,系统会提示
No such file or directory
。此时需要检查路径拼写是否正确,或者该目录是否存在。 - 权限问题:某些目录可能需要更高权限才能访问。使用 sudo命令可以解决大部分权限问题:
sudo cd /root
- 符号链接陷阱:有时符号链接指向的目标可能不存在,导致无法切换。需要确保符号链接的目标目录是有效的
创造/删除/移动目录与文件
目录
mkdir命令详解
mkdir命令的全称是make directories,使用时若指定目录不存在则创建目录。若指定目录已存在,则会提示已存在而不继续创建。
注意:
- touch与mkdir的区别: touch是创建文件, mkdir是创建文件夹
使用语法
mkdir [options] directory
常见选项
选项 | 作用 |
---|---|
-m, --mode=<MODE> |
设置权限模式(类似 chmod) |
-p, --parents |
需要时创建目标目录的上层目录,但即使这些目录已存在也不当作错误处理 |
-v, --verbose |
每次创建新目录都显示信息 |
-Z |
将每个创建的目录的 SELinux 安全环境设置为 默认类型 |
--context[=<CTX>] |
像 -Z,或者如果指定了 CTX,则将 SELinux 或 SMACK 安全上下文设置为 CTX |
--help |
显示此帮助信息并退出 |
--version |
显示版本信息并退出 |
创建单级目录
例如,目前已经有/home/user/hello目录,我们想在hello目录下再创建一个world目录,那么我们可以运行如下命令:mkdir /home/user/hello/world
也可以先切换至hello目录,再创建world目录,即:
cd /home/user/hello
再mkdir world
创建多级目录
需要使用-p选项。例如:在/home/user/hello目录下创建world1/world2/world3目录,可以使用如下命令:
cd /home/user/hello
再mkdir -p world1/world2/world3
rmdir
- 删除目录,即删除文件夹
- 注意:只能删除空文件夹
- 文件夹不空可以使用
rm -rf
,r是递归,f是强制
- 文件夹不空可以使用
文件
touch
- 创建文件
rm
- 删除文件
- 注意:
rm -rf
用于删除含有文件的文件夹,在删文件的时候文件夹会一起删掉
mv
- 重命名或转移目录
- 用于移动文件,或者重命名文件
- 写了两个文件名后一个文件会被重命名前一个文件
mv xxx ../
:移动到上一个目录
语法格式
mv [options] source destination
注:重命名语法和转移目录语法和cp
命令相同,但不需要-r
cp
用来复制文件或者目录,cp即是cppy的缩写
语法格式
cp [options] source destination
- 例如,当前目录下有一个test.txt文件,我想把它拷贝到同路径下的doc目录内,那么可以运行如下命令:
cp ./test.txt ./doc/
- 如果在复制文件的同时,还想对其重命名的话,可以在拷贝的时候指定新的名字。还是上面那个例子,将test.txt拷贝到./doc目录的同时,还希望将其重命名为test_bak.txt,那么可以使用如下命令:
cp ./test.txt ./doc/test_bak.txt
- 可以复制压缩包
- 如果是对目录进行copy的话,需要加上
-r
选项,以实现对目录的递归拷贝。例如,当前目录下有一个txt目录,我们希望将其拷贝到当前目录下的doc目录内,则可以运行如下命令:
cp -r txt ./doc/
ps.可以以相同方式重命名
sudo
- 提权成为超级管理员
查看文件
cat
- 读取文件中的最后一页内容,并将其通过标准输出显示(即我们的显示器)
tac
tac刚好是cat的逆序,实际上tac的功能刚好也是和cat是相反的,即cat命令是从头到尾显示一个文件的内容,而tac是从尾到头显示一个文件的内容。
head
用于输出文件的开头部分内容
语法格式
head [options] files
- 在实际使用的时候,我们通常会使用-n选项,来指定显示头部的多少行内容。例如:我们想要查看.bashrc文件的头部10行,那我们可以运行如下命令:
head -n 10 .bashrc
tail
- tail命令和head命令是相反的功能,它用于显示一个文件的尾部内容。和head命令的用法类似
- 注意:tail命令的作用时显示一个文件的尾部内容,而不会像tac命令那样倒序输出!
- 和head命令一样,如果我们不使用
-n
选项指定行数,那么tail命令同样也是默认输出尾部的10行内容
more
- cat命令可以用来查看文件内容,对于内容不多的文件,使用cat命令可以将文件中的所有内容完整的显示在屏幕上。
- 而对于内容较多的文件,cat同样会向屏幕上输出文件中的所有内容,但是内容会一闪而过,并最终停留的文件的末尾。这样就非常不利于我们去阅读文件内容,寻找自己需要的内容。
- more/less命令可以很好的解决上述问题,more/less命令可以按照页的方式一页一页的向屏幕上输出内容,便于我们阅读
- 按回车键一行一行进行查看,按空格键一页一页进行查看,q退出
- 而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按
h
语法格式
more [options] files
more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
参数
选项 | 作用 |
---|---|
-n |
指定开始显示的行,例如more -n 15 .bashrc : 从第15行开始显示.bashrc文件中的内容 |
+number |
指定一页所包含的行数,例如more +20 .bashrc : 按页显示.bashrc文件中的内容,每页显示20行 |
- 可以使用如下按键翻页:
- Space:向下翻一页
- Enter:向下翻一行
- b:向前翻一页
- q:退出more命令
less
more命令的升级版,提升的功能
- 能够向上/下逐行滚动,more命令只能向下逐行滚动
- 强大的搜索功能
语法格式
less [options] files
- 可以使用如下按键来浏览内容:
- up/down:向上/下逐行滚动
- PgUp:向上翻页
- PgDn/Enter:向下翻页
- q:退出less命令
使用less命令打开文件后,还可以非常方便的搜索字符串。使用 /str 可以对str进行检索,使用n跳转到下一个匹配项,使用N跳转到上一个匹配项。
关机
shutdown
参数:
- -t:多久之后关机
- -r:重启计算机
- -h:关机后关闭电源
reboot
立即重启,相当于shutdown -r now
电脑状态
df
查看磁盘使用情况
参数:
- -h:可读的方式显示当前磁盘空间
du
查看,目录占用情况
参数:
- -ah:显示全部目录和其此目录下的每个档案所占的磁盘空间
- -chs:查看某个目录占用的磁盘空间
进程
- 进程就是正在进行中的程序
- 一个程序可以有多个进程,比如浏览器多开
- 程序由若干指令组成
- Linux 的 进程 分为前台进程和后台进程
- 前台进程占用终端窗口,而后台进程不占用终端窗口
- 要启动一个前台进程,只需要在命令行输入启动进程的命令即可
- 要让一个程序在后台运行,只需要在启动进程时,在命令后加上 & 符号即可
ps(一次性进程监视)
- 命令格式:
ps -options
- 参数:
-u
:按用户和启动时间的顺序来显示进程-a
:显示所有用户的所有进程-x
:显示无终端控制的进程-f
:列出进程全部相关信息,通常和其他选项联用-e
:所有进程-l
:采用详细的格式来显示程序状况
- 内容含义:
USER
:启动进程的用户PID
:进程的ID号%CPU
:进程占用的CPU百分比%MEM
:进程占用的物理内存百分比VSN
:进程使用的虚拟内存总量,单位KBRSS
:该进程占用实际物理内存的大小,单位KBTTY
:该进程在哪个终端中运行STAT
:进程状态START
:启动进程的时间TIME
:进程消耗CPU的时间COMMAND
:产生此进程的命令名STAT
:常见状态:R
运行,S
睡眠,T
停止,s
包含子进程,+
位于后台Z
僵尸进程<
优先级比较高的进程
top(动态监控进程情况)
- 命令格式:
top -options
- 参数:
-d
:设置更新的时间间隔-n
:显示更新的次数,然后退出-u
:只显示指定用户的进程信息-s
:安全模式运行,禁用一些交互命令
- 内容含义
- 第1行分别是:系统时间、系统启动了16小时36分、登录的用户有1个、 “load average” 代表:最近1分钟,5分钟,15分钟的系统负载值,如超过CPU个数的2倍说明高负载,需处理
- 第2行Tasks表示:有109个进程在内存中,1个正在运行,73个睡眠,0个停止,0个处于僵尸状态
- 第3行Cpu(s)表示:user上花费的时间,sys上花费的时间,nice优先级调整上花费的时间,idle:CPU空闲时间,iowait等待系统io时间,hi硬件中断时间,si软中断时间,steal被虚拟机偷掉的时间
- 第4行Mem表示:总内存、空闲的内存、已经使用的内存、用于缓存文件系统的内存、交换内存的总容量,这内存还可以用free命令来查看
- 第5行Swap表示:交换空间总大小、空闲的交换空间、使用的交换内存空间、用于缓存文件内容的交换空间
PR
和NI
代表优先级,越小优先级越高VIRT
指虚拟内存RES
指驻留内存大小SHR
指共享内存S
指
暂停和启用
Ctrl+z
:让正在前台执行的进程暂停Ctrl+C
:让正在前台执行的进程强制终止jobs
:获取当前的后台作业号fg
:把进程从后台调到前台执行bg
:把进程放到后台执行
kill杀死进程
- 关键字和数字要搭配使用
- HUP 1 终端断线
- INT 2 中断(同 Ctrl + C)
- QUIT 3 退出(同 Ctrl + \)
- TERM 15 终止
- KILL 9 强制终止
- CONT 18 继续(与STOP相反, fg/bg命令)
- STOP 19 暂停(同 Ctrl + Z)
软件更新
- Ubuntu常用的Linux软件管理工具是apt,全称是apt-get,可加get可不加
sudo apt -y update
更新源sudo dpkg --configure -a
sudo apt -y upgrade
更新已安装的包sudo apt -y dist-upgrade
升级系统sudo apt-get -y autoremove
sudo apt -y autoclean
sudo apt list
查看使用apt安装的包apt install xxx
apt remove xxx
- pip是python下载第三方库的管理工具,下载的时候记得切换环境,比如进入
py3env
环境,即python3环境,workon py3env
pip install
pip uninstall
pip list
查看安装的第三方库
pip镜像源(常用)
- 清华源:
https://pypi.tuna.tsinghua.edu.cn/simple
- 阿里云:
https://mirrors.aliyun.com/pypi/simple/
- 豆瓣云:
https://pypi.douban.com/simple/
使用:pip install xxx -i 镜像源
用户与权限管理(需要管理员权限)
su usename
切换为某个用户,root用户切换到其他用户不需要密码,第一次切换为root用户肯定会报错,因为没有密码,需要sudo passwd
为root用户设置密码
用户
useradd -m username
添加用户- 参数
-m
(重要):自动建立用户的登入目录(一定要加),即在服务器上创建一个用户名的文件夹,用户刚创建进不去这个用户的目录,因为/etc/passwd没有进行修改,使用vim打开该文件查看vim /etc/passwd
- 修改文件时也需要root,
:q
可退出vim,点击i进行修改,找到usename,在最后一个路径前面加上ba,如/sh
改为/bash
,然后esc
退出编辑,:wq
保存并退出。 - 现在还是登不进去usename因为没有密码,
sudo passwd usename
给指定用户设置密码,现在就可以在远程连接工具用该用户名来连接linux了
*vim的使用说明
- 修改文件时也需要root,
-u UID
:指定 UID,这个 UID 必须是大于等于500,并没有其他用户占用的 UID-g GID/GROUPNAME
:指定默认组,可以是 GID 或者 GROUPNAME,同样也必须真实存在-G GROUPS
:指定额外组-c COMMENT
:指定用户的注释信息-d PATH:指定用户的家目录
userdel -r username
删除用户,不加-r会导致该用户的目录没有被删除,忘加的话redir -rf usename
删除该文件夹- 可能会出现该用户占据某个端口的提示,此时需要干掉这个端口才能让删除继续,使用
kill -9 xxxx(端口号)
- 可能会出现该用户占据某个端口的提示,此时需要干掉这个端口才能让删除继续,使用
groups
查看当前登录用户所在的全部组
用户组
groups
查看用户当前所在组/当前目录所在组,第一个为用户/目录在的位置,在哪个位置能对哪个组进行编辑
添加用户组
groupadd groupname # 添加用户组
groupdel groupname # 删除用户组
使用py
workon py3env
进去py环境,然后python xxx(文件)
执行文件
修改用户组
usermod [options] username
usermod -g 主组 -G 附属组,附属组,附属组 usename
主组一般设为usename- 参数:
-c 备注
:修改用户帐号的备注文字-d 登入目录
:修改用户登入时的目录-g 群组
:修改用户所属的群组-G 群组
;修改用户所属的附加群组,用,
隔开- `-l 帐号名称:修改用户帐号名称
-L
:锁定用户密码,使密码无效-s<shell>
:修改用户登入后所使用的shell-u<uid>
:修改用户ID
切换用户组
newgrp groupname
删除用户组
groupdel groupname
,没有报错就说明删除成功
命令搜索
whereis
:搜索命令/文件的位置和帮助文档的位置which
:搜索命令/文件位置
find
- 命令格式:
find [-path] -options
- path要查找的目录,默认是当前目录
- options:
-name
:按文件名的某种规则的查找-type
:按文件类型查找- f:普通文件
- l:符号连接
- d:目录
-size
:按文件大小查找-exec <执行指令>
:假设find指令的回传值为True,就执行该指令;-print
:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有“./”字符串
- 通配符:
*
:匹配任意内容?
:匹配任意一个字符[]
:匹配任意一个中括号内的字符
管道符 |
管道符可以将一系列命令连接起来,可以将前面命令的输出作为后面命令的输入,使用管道符 | 建立一个管道行
例如:
find ./ -type f -name '*.txt' –print | xargs rm
# 删除前一条命令找到的文件
find -name '*.txt' | xargs rm
# 删除前一条命令找到的文件
xargs
获取命令的输出并将其作为另一个命令的参数传递
grep
- 命令格式:
grep -options 'xxx'(范本样式,即要查找的) file
- 参数:
- -c:计算符合范本样式的行数(个数)
- -E:将范本样式为延伸的普通表示法来使用,意味着能使用扩展正则表达式
- -i:忽略字符大小写的差别
- -n:在显示符合范本样式的那一列之前,标示出该列的编号
- -s:不显示错误信息
- -v:反转查找
- -w:只显示全字符合的行
- -x:只显示全行符合的行
- -o:只输出文件中匹配到的部分
中断操作
- Ctrl+Z就扮演了类似的角色,将任务中断,但是任务并没有结束,在进程中只是维持挂起的状态,用户可以使用fg/bg操作前台或后台的任务,fg命令重新启动前台被中断的任务,bg命令把被中断的任务放在后台执行。
- Ctrl+C也扮演类似的角色,强制中断程序的执行。
输入重定向(基本不会用到)
- 指把命令或可执行程序的的标准输入重定向到指定的文件中。也就是输入可以不来自键盘,而是来自一个指定的文件。
- 输入重定向主要用于改变一个命令的的输入源。
- 命令格式:
命令 < 文件名
输出重定向(可能用到)
- 指把命令或可执行程序的标准输出或标准错误输出重新定向到指定文件中。
- 命令中的输出不显示在屏幕上,而是写入到指定的文件中,以便完成以后的问题定位或其他的用途。
- 命令格式:
命令 > 文件名
>
:是覆盖>>
:是追加- 标准输出:echo
输出到终端
tty
- 查看当前终端的信息,即挂载的路径
- 终端是从0开始的
- 终端的本质也是文件
- 终端:通过命令与计算机进行交互的客户端
who am i
查看当前用户的登录详细信息
w
查看所有终端的登录信息,能显示用户登录名、终端标志、IP地址、登录时间、闲置时间、占用CPU时间、系统的运行时间和用户正在执行的程序
文件传输
别名
alias
命令用来设置指令的别名- 命令格式:
alias 新的命令='原命令 -选项/参数'
- 查看别名可以用
alias
或者type
- 命令格式:
alias/type xxx
unalias
:命令用来取消别名- 这样添加的别名只是在当前有效,下次登录不会生效
- 要想永久生效,需要添加到
.bashrc
当中,当每次登录时会自动运行此脚本
文件打包、压缩与解压
tar
- 用于将文件打包或解包,扩展名一般为
.tar
,是复制不是剪切 - 打包:把很多文件或文件夹放到一个文件夹里面,打包不是压缩
- 指定参数可调用
gzip
或bzip2
制作压缩包解开压缩包 - 参数:
-c
:建立新的压缩包-x
:解压压缩包-f
:使用压缩包的名字,f参数之后不能再加参数,即f参数要放最后一个,后面接xxx.tar
,即将文件文件夹都放到这个包里-i
:忽略存档中的0字块-v
:处理过程中输出相关信息-z
:调用gzip来压缩归档文件,与-x
联用时调用gzip完成解压缩(后缀名为gz)-j
:调用bzip2压缩或解压(后缀名为bz2)-p
:使用源文件的原来属性
示例:
tar -cvf dabao.tar a.txt b.py xxx
# 将a.txt b.py xxx打包到dabao.tar
tar -xvf dabao.tar
# 进行解包操作
tar -cvzf yasuo.tar.gz(什么后缀名代表用什么格式进行压缩的)
tar -jpcf yasuo.tar.bz2(什么后缀名代表用什么格式进行压缩的)
# 进行压缩操作
tar -xvf yasuo.tar.gz
tar -xzf yasuo.tar.gz
# 进行解压操作
软硬链接(ln)
- 使用ln命令
- 硬链接可理解为文件的备份,软链接可理解为快捷方式
- 命令格式:
ln -s(软链接) xxx(文件) xxxxx(软硬链接)
- 硬链接的后缀名是任意的
- 例如:
ln lili.txt lisa.hard
- 不管在原本的文件还是硬链接的文件进行修改,都是同步的
- 但是如果原文件被删了硬链接的文件是不受影响的,如果删掉又创建回来就不再有硬链接关系了
- 硬链接会占据内存,会创造一个真实存在的文件
- 例如:
- 软链接的后缀名也是任意的
- 软链接占据的内存非常少
- 原文件还存在就是绿色的,不存在就会变成红色
shell(脚本语言)
- 通过Shell外壳,可以控制计算机硬件
- Shell它接受来自用户输入的命令,然后将这些命令转化成一系列的系统调用送到内核执行,最后将结果输出给用户
- Shell不只是一种解释器,还是一种编程工具,称为脚本语言,是一种解释型语言
- 编译型语言:编译工具先将程序编译成机器认识的可执行文件,(比如Windows下的exe文件,Linux下的二进制可执行文件),之后运行时直接运行编译后的文件,因此一般来说编译型语言执行速度较高,常见的编译型语言有:C/C++、Java
- 解释型语言:解释型语言是运行时翻译,执行一条语句就立即翻译一条,而且每次执行程序都需要进行解释,都需要一个解释器
- 交互模式:和Python类似,shell也有交互模式,其实在我们使用远程连接工具连接Linux时,就是进入了shell交互模式
- 脚本模式:将要执行的命令都放在一个文件中,然后由Bash Shell读取并执行
示例:
# 脚本模式
cat test.sh
#! /bin/bash ## 声明当前使用的解释器
#this is test
echo "hello world"
echo $0(具体参数,即输入参数)
echo $1(具体参数,即输入参数)
bash test.sh # 将脚本作为命令行参数执行
# 脚本独立运行
## 脚本第一行添加#! /bin/bash
## 给脚本添加可执行权限
chmod 744 test.sh # 或者
chmod u+x test.sh
## 运行
./test.sh
更换shell外壳
- 第一步:安装zsh
- sudo apt install zsh
- 第二步:检查是否安装,以及位置
- zsh –version
- which zsh
- 第三步:修改配置chsh(输入用户密码之后,输入zsh路径)
- 第四步:安装Oh-My-Zshsh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
趣味命令
sudo apt install oneko
- apt是linux的应用商店,pip是python的第三方库
cmatrix
sl