0.命令行解释器shell
用户无法直接给操作系统指令,需要经过shell,才能让操作系统明白。如果用户对操作系统非法操作,会有shell保护。shell本身也是一个进程,当然,用户给shell的指令,shell会派生出子进程进行执行,不会影响shell本身进程。
1.shell的作用
- 保护操作系统
- 连接用户和操作系统
- 执行命令通过派生子进程的方式执行用户指令,而shell 本身并不执行对应指令(一般而言)
注:shell只是统称,如同Linux操作系统一样。对于ubuntu18.04的shell叫bash。
2.命令行提示符
注:命令严格区分大小写。多个命令一行书写要加;分开 。一行命令没有写完+\ 再在另一行书写
1.常用按键
ctrl+c: 杀死当前终端的进程
Tab键:自动补齐
ctrl + r: 搜索历史命令 // history 查看历史命令
ctrl + d: 退出当前用户,退出一层
ctrl + l: 清屏(相当于clear)
ctrl+alt+t: 创建终端
2.常用指令
adduser新建用户
sudo adduser 用户名
alias对指令进行重命名
alias zhangsan='ls -l --color=auto'
apt-cache查询软件包相关信息
apt-get安装命令
- Ubuntu采用集中式的软件仓库机制,将各式各样的软件包分门别类地存在软件仓库中,进行有效地组织和管理。然后将软件仓库置于许许多多的镜像服务器中,并保持基本一致,因此,对于用户,这些镜像服务器就是他们的软件源(reposity)
在Ubuntu系统中,使用软件源配置文件/etc/apt/sources.list列出最适合访问的镜像站点地址。软件源配置文件只是告诉Ubuntu系统可以访问的镜像站点地址。但那些镜像站点都拥有什么软件资源并不清楚。
服务器所具有软件包资源建立索引文件,存放在本地的/var/lib/apt/lists目录中。
apt-get update 更新软件源
apt-get install pkg 安装软件
apt-get clean 删除缓存区中所有已经下载好的包文件
bc计算器
quit退出
bzip2/bunzip2 压缩/解压文件
解压后文件就消失,解压出现
cal显示公历(阳历)日历
- -3 显示系统前一个月,当前月,下一个月的月历
- -j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
- -y 显示当前年份的日历
cat查看小目标文件的内容 (cat&&tac)
cat -b/-n/-s 文件名
- cat -b 对非空输出行编号
- cat -n对输出的所有行编号
- cat -s不输出多行空行
cat VS tac
cat是正向打印,tac是反向打印
cd将当前工作目录改变到指定的目录下
- Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。(结构清晰,方便我们用绝对路径和相对路径对文件定位)为了规范文件目录命名和存放标准,Linux基金协会颁布了FHS(filesystem Hierarc Standard)文件系统目录标准。
/bin:二进制(binary)英文简称
/boot:存放的都是系统启动时用到的程序
/dev:包含了所有Linux系统中使用的外设设备
/etc:存放了系统管理时要用到的各种配置文件和子目录
/lib:存放系统动态链接共享库
/home:普通用户主目录
/root:根目录(超级用户)的主目录
/proc和/sys内存级文件系统 ,磁盘上没有,开机操作系统把内存中的数据可视化出来
/sbin存放超级用户使用的指令
/usr存放公共指令
/var系统级,应用级临时数据,日志和数据
cd .. : 返回上级目录
cd /home/litao/linux/ : 绝对路径
cd ../day02/ : 相对路径
cd ~:进入用户家目(root目录是/root,其他用户都是/home/xxxx)
cd -:返回最近访问目录
cp复制文件或目录
- -f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
- -i 或 --interactive 覆盖文件之前先询问用户
- -r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
- -R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理
- 多个文件复制 cp src1 src2 src3 ... dst
date时间相关的指令
- .在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下
%H : 小时(00..23)
%M : 分钟(00..59)
%S : 秒(00..61)
%X : 相当于 %H:%M:%S
%d : 日 (01..31)
%m : 月份 (01..12)
%Y : 完整年份 (0000..9999)
%F : 相当于 %Y-%m-%d
- 时间戳
时间->时间戳:date +%s
时间戳->时间:date -d@1508749502
Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。
示例
将时间戳转为我们认识的时间
deluser用户的删除
deluser -r 用户名
df 磁盘查看
- df -h(查看磁盘大小和使用情况,按兆字节)
- df -k(查看磁盘大小和使用情况,按千字节)
- df -a(显示所有物理文件的使用情况,包括虚拟文件系统)
- df -T(显示所有物理文件的使用情况)
dpkg文件包管理命令
dpkg -i 安装一个在本地文件系统上存在的Debian软件包 注意这里用的是软件包全称
dpgk -r 移除一个已经安装的软件包 注意这里用的是软件包名称
dpkg -P 移除已安装软件包及配置文件 注意这里用的是软件包名称
dpkg -L 列出安装的软件包清单 注意这里用的是软件包名称
dpkg -s 显出软件包的安装状态 注意这里用的是软件包名称
du列出目录和文件所使用的磁盘块数
du -a /etc //列出空闲文件块
du -h /etc //列出磁盘使用情况(KB)
du -s /etc //列出总的空闲空间(KB)
echo查看
查看环境变量
echo $HISTORY
echo -n 信息 //-n代表不换行
file查看文件类型
file [ filename ]
find用于在文件树中查找文件,并作出相应的处理(可能访问磁盘)
- -name 按照文件名查找文件。
grep文本内容行过滤工具
- -i :忽略大小写的不同,所以大小写视为相同
- -n :顺便输出行号
- -r :表示递归搜索,即在指定目录及其子目录中搜索。
- -v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行
gzip/gunzip压缩/解压一个文件
gzip [ -l| -d | -num ] filename
filename表示要压缩的文件名,gzip会自动在这个文件名后添加扩展名为.gz,作为压缩文件的文件名。在执行gzip命令后,它将删除旧的未压缩的文件并只保留已压缩的版本。
选项
描述
-l
查看压缩文件内的信息,包括文件数、大小、压缩比等参数,并不进行文件解压
-d
将文件解压,功能与gunzip相同
-num
指定压缩比率,num为1~9个等级
gunzip [ -f ] file.gz
选项“-f”用于解压文件时,对覆盖同名文件不做提示。
linux@ubuntu:~$gzip -9 file_1
linux@ubuntu:~$gzip -l file_1.gz
compressed uncompressed ratio uncompressed_name
1200 4896 76.0% file_1
linux@ubuntu:~$gunzip -f file_1.gz
head文档前面信息显示出来(默认10)
- -n<行数> 显示的行数
hostname 查看主机名
hostname -i 主机ip地址
ip addr / ip add 网卡的方式查看 ip
ifconfig 查看ip地址
kill终止进程命令
–kill [-signal] PID
signal是信号,PID是进程号
kill 命令向指定的进程发出一个信号signal,在默认的情况下,kill 命令向指定进程发出信号15,正常情况下,将杀死那些不捕捉或不忽略这个信号的进程
kill -l查看信号
less随意浏览文件
- -i 忽略搜索时的大小写
- -N 显示每行的行号
- /字符串:向下搜索“字符串”的功能
- ?字符串:向上搜索“字符串”的功能
- n:重复前一个搜索(与 / 或 ? 有关)
- N:反向重复前一个搜索(与 / 或 ? 有关)
- q:quit
ln链接命令
ln -s myfile.txt soft_file.link(快捷键,用绝对路径标识,新的inode)
ln----link,链接
-s----soft,软链接
myfile.txt----原文件
soft_file.link----创建的软连接文件
ln myfile.txt hard_file.link (备份,同一个inode,引用计数加1)
hard_file.link----创建的硬连接文件
ls列出文件信息
- -a 列出目录下的所有文件,包括以 . 开头的隐含文件。 ls -a
- -d 将目录像文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
- -l 列出文件的详细信息。 ls -l(ll)
- -R 列出所有子目录下的文件。(递归)
lscpu 查看cpu
lsmem 查看内存
man 查看Linux手册
-k 根据关键字搜索联机帮助
num 只在第num章节找
-a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,直到找到就停止,用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。
解释一下,面手册分为8章
- 是普通的命令
- 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
- 是C语言库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件
- 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
- 是给游戏留的,由各个游戏自己定义
- 是附件还有一些变量,比如向environ这种全局变量在这里就有说明
- 是系统管理用的命令,这些命令只能由root使用,如ifconfig
mkdir创建目录
mkdir –p test/test1 : 递归建立多个目录
more逐行查看目标文件的内容
- -n 对输出的所有行编号
- q 退出more
- / 查找的内容(直接显示要找的内容)
mv移动文件&&重命名
- -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
- -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
- mv 老文件名 新文件名(PS:文件格式本能变)
nl查看文件直接加行号==cat -b
passwd 修改密码
passwd username 修改密码
ps查看进程
ps -ajx //显示进程的详细信息,包括进程的作业控制信息以及与该进程相关的其他进程。
ps -elf 普通使用标准查看
ps -aux BSD标准查看
pstree 树状结构显示进程关系
pwd显示用户当前所在的目录
- 路径
- windows下:D:\XXX\YYY\ZZZ (\为路径分隔符)
- Linux下: /home/mumu/XXXX (/为路径分隔符)
- 一个目录既可以是目录也可以是普通文件。
- 为什么用路径来标记一个文件:同一文件夹下,不能有同名文件,我们从根目录开始 路径+文件名具有唯一性
- 绝对路径:从根目录开始到该文件的路径
- 相对路径:相对于当前位置到该文件的路径(简单)
rm删除文件命令(rmkdir&&rm)
- -i 删除前逐一询问确认
- -r 删除目录及其下所有文件(递归删除)
sudo rm -rf / (删库跑路)
rmkdir删除文件命令
- -p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。
shutdown关机
-h:将系统的服务停掉后,立即关机。
shutdown -h 23:01 23点01关机
shutdown -h +5 “提示” 5分钟后关机
-r:在将系统的服务停掉之后就重新启动
shutdown -r now 立即关机重启 ==== reboot now
shutdown -r +10 10分钟后重启
-t sec : -t 后面加秒数,亦即『过几秒后关机』的意思
shutdown -t
-c:取消关机
shutdown -c
su 超级用户的切换(临时的)
- su -c:执行一次就结束
- su -m:保持环境变量不变
- su - //直接到超级用户
tail文档结尾信息显示出来
tar指令:打包/解包,不打开它,直接看内容(归档+压缩)
tar [-cxtzjvf] 文件与目录 .... 参数:
- -c :建立一个压缩文件的参数指令(create 的意思);
- -x :解开一个压缩文件的参数指令!
- -t :查看 tarfile 里面的文件!
- -z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
- -j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
- -v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
- -f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
- -C : 解压到指定目录
tar -czf test.tgz 24_3_1/ tar -czvf test.tgz 24_3_1/
tar -xzf test.tgz / tar -xzf test.tgz -C ~
top 查看任务管理器
- /proc目录下就是进程,里面就是pid号命名的文件夹
touch新建普通文件可以更新时间
- -a或--time=atime或--time=access或--time=use只更改存取时间。
- -c或--no-create 不建立任何文档。
- -d使用指定的日期时间,而非现在的时间。
- -f此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
- -m或--time=mtime或--time=modify 只更改变动时间。
- -r把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
- -t使用指定的日期时间,而非现在的时间。
uname 指令:用来获取电脑和操作系统的相关信息。
-a详细信息
- -r 内核版本
WC查看文件内容
- wc -l 查看行号
- wc -w 查看文字的个数
whoami 查看用户名
zip/unzip将目录或文件压缩成zip格式(归档+压缩)
zip 压缩后名字.zip 目录或文件
-r 递归处理,将指定目录下的所有文件和子目录一并处理
将test2目录压缩:zip -r test2.zip test2/*
解压到tmp目录:unzip test2.zip -d /tmp