Linux可能会忘记的命令整理
因为太常见的大家都会,太不常见的碰上的也少,所以来整理一下一般般常见或者由于过于常见而忘记细节的命令好啦。
时间充足的话可以再过一遍这个,突然发现之前笔记做得还是很认真的(*/ω\*) : yuanlier.github.io/categories/…
文件、目录,与搜索
复制目录时需要加-r吗?移动和重命名时呢?
- 复制目录 :cp
- 需要加-r,否则会报错
- 移动或重命名 :mv
- 不需要加-r
进行复制或移动操作时,哪些情况下要求目标目录必须存在?
- cp file dir / mv file dir :
- 要求dir必须存在
- cp -r dir1 dir2 / mv dir1 dir2 :
- 如果dir2不存在,就会自动创建一个
=> 即:如果被移动目标是文件,则要求目标目录必须存在;若被移动目标是目录,则允许自动创建目标目录。
rm -rf 中的 -rf 分别指什么?
- -r :递归地删除目录
- 也就是说,如果删除的目录有子目录的话,也将把子目录一并删除
- -f :忽略不存在的文件并无需提示确认
- 不加这个的话就会在每删一个文件之前确认一遍是否需要删除
- 也就是要一直yes yes yes
软链接和硬链接的区别是什么?优势在哪里?
硬链接 :ln
- 不能引用与该链接不在同一磁盘分区的文件;
- 只能对文件操作,无法引用目录;
- 删除件后依然可以通过硬链接打开该文件
软链接 :ln -s
- 几乎完全等同于Windows下的快捷方式;
- 创建时最好直接输绝对路径 不然有时候相对起来可能有点麻烦_(:з」∠)_
软硬链接最大的区别 : 硬链接拥有与件相同的i节点和存储block块,可以看作同一个文件,相当于一间教室的两个门;软链接拥有自己的i节点和block块,保存的是件的文件名和i节点号,而非实际的数据。
文件搜索合集
快速搜索 :locate
- 基本格式 :locate [文件名]
- 特点 :
- 在后台数据库中搜索,速度要快于find
- 不能搜索刚创建的文件(因为需要时间写入数据库)
- 只能搜索文件和目录,不能搜索其他
命令搜索 :whereis/which
- 基本格式 :whereis/which [命令名]
- 特点 :
- 用whereis的时候还可以带个选项 ==> -b 只查找可执行文件;-m 只查找帮助文件
- 无法查找系统自带命令,比如说cd
文件搜索 :find
- 基本格式 :find [搜索范围] [选项] [搜索条件]
- 特点 :
- 默认绝对匹配,如果想模糊查询的要加通配符
- 加了通配符还得用双引号括起来
- 常用选项 :
- -iname :表示忽略大小写的名称匹配
- -mtime -10/10/+10 :表示查找最近十天内/距离今天十天时/距离今天十天前修改过的文件;
- -size -25k/25k/+25k :表示查找当前目录下大小小于/等于/大于25k的文件
- -a :逻辑与;-o :逻辑或
字符串搜索 :grep
- 基本格式 :grep [选项] [字符串] [文件名]
- 与find的区别 :
- find :在系统中搜索符合条件的文件名,使用的是完全匹配
- grep :在文件中搜索包含该字符串的行,使用正则表达式(包含匹配)
重定向
标准输出重定向 :>
- 基本格式 :[命令] > [文件名]
- 特点 :
- 只会重定向标准输出
- 默认从文件开头部分开始改写
- 可以用来清空文件或创建的一个新的空文件,比如这样 :> [文件名]
- 如果想要从尾部追加内容,只需要把 > 换成 >> 即可
标准错误重定向 :2>
- 基本格式 :[命令] 2> [文件名]
- 特点 :
- 其实0、1、2分别对应的是标准输入、标准输出、标准错误文件啦
将标准输出和标准错误重定向到同一个文件 :&>
- 基本格式 :[命令] &> [文件名]
处理不想要的输出 :
- 重定向到 /dev/null 即可
- /dev/null :这是一个称为“位桶”的系统设备,能够接收输入但是不对输入进行任何处理;一般可以用它来吞掉错误信息,从而使它们不会被显示到任何地方
权限与用户管理
文件属性
- 示例 :-rw-rw-r–
- 文件属性分类 :
- 第1位 :文件类型
- 2-4位 :所有者权限
- 5-7位 :组权限
- 8-10位 :其他用户权限
- 文件类型符号说明 :
- - :普通文件
- d :目录文件
- l :符号链接。注意对于符号链接,剩下的文件属性始终为rwxrwxrwx,它是一个伪属性值;符号链接指向的文件的属性才是真正的文件属性。
- 权限属性符号说明 :
- r :文件可读
- w :文件可写
- x :文件可执行
更改文件模式 :chmod
八进制数字表示法 :
- 常用的比如说 :
- 7 :111 => rwx
- 6 :110 => rw-
- 5 :101 => r-x
- 4 :100 => r–
- 0 :000 => —
符号表示法 :
- 指令分为三部分 :
- 更改会影响谁 :
- u :即user,表示文件或目录的所有者
- g :即group,文件所属群组
- o :即others,表示其他所有用户
- a :即all,表示以上三种全部
- 要执行的操作是哪个 :
- + :添加一种权限
- - :删除一种权限
- = :除指定权限为可用外,其他权限均被删除
- 要设置的权限是那种 :
- 即 r/w/x
- 更改会影响谁 :
- 常用的比如说 :
- u+x :为文件所有者添加可执行权限
- u-x :删除文件所有者的可执行权限
- +x :等同于a+x
- u+x, go=rx :为文件所有者添加可执行权限,同时设置所属群组及其他所有用户具有度权限和可执行权限;指定多种权限时,需要用逗号分隔
更改身份
su :以另一个身份运行shell
- 基本格式 :su [-[l]] [用户名]
- 注意事项 :
- 如果包含-l选项,则该指定用户的运行环境将被加载,且其工作目录也将更改为该指定用户的主目录,而这也常常是我们所需要的
- 如果未指定用户,则将默认假定为超级用户root
- -l 可简写为 – ,且这一形式常常被使用,如 su –
- 使用su进行身份切换时,需要输入该用户的密码
sudo :以另一个身份(通常是超级用户)执行命令
- 基本格式 :sudo [命令]
- 注意事项 :
- 不需要输入超级用户的密码,只需要输自己的密码来进行验证
chown :更改文件所有者和所属群组
- 基本格式 :chown [新的所有者] [:新的所属群组]
更改用户密码
- 基本格式 :passwd [用户名]
- 注意事项 :
- 如果要更改的是自己的密码,则不需要输入用户名
用户管理
组与用户的创建与删除 :
- 添加新的组 :groupadd [选项] 组名
- 删除一个组 :groupdel [选项] 组名
- 添加一个用户 :useradd [选项] 用户名
- -m :自动建立用户家目录;创建用户时最好加上这个
- -g 组名 :指定用户所在的组。否则会建立一个与用户同名的组;如 useradd -m -g 组名 用户名
- 删除一个用户 :userdel [选项] 用户名
- -r :把用户家目录一并删除
- 组内成员变动 :gpasswd [选项] 用户名 组名
- -a 将用户添加到组中
- -d 将用户从组中删除
useradd 与 adduser :
使用useradd进行创建后,需要手动再去为这个用户设置密码,分配权限等等,仿佛创建的是一个”三无“用户,实际操作起来会比较繁琐;所以我们可以直接用adduser [用户名]
进行创建,它会在创建过程中就提示我们设置密码,且创建成功后的用户享有一般普通用户的所有权限,使用起来会方便一些。
进程管理
查看进程的运行情况 :ps
- 常用的比如说 :
- ps aux :显示系统中所有进程并显示进程用户(如果在BSD风格选项前面加上”-“,则会出现警示信息)
- ps -ef :显示进程详细信息并显示进程父子关系
- ps -ef | grep java :筛选出所有特定进程,这里是java
- pstree :显示当前系统的进程树
- ps x :显示所有进程,不以终端来区分
信号的发送(但其实多用来结束进程) :kill
- 一种是配合 ps -ef |grep xxx 使用 :
- ps -ef | grep xxx 找出 xxx 所在进程的 pid
- kill -s 9 pid 结束进程
- 注 :”9″表示传递给进程的信号是9,即强制、尽快终止进程
- 还可以直接使用 pkill 或 killall,通过进程名结束进程
- pkill -9 xxx,给出进程名的一部分就可以终止相关的全部进程
- killall -9 xxx,不过这个需要给出完成的进程名,否则会报错
进程的前后台切换
- 后台运行 :&
- 在linux终端运行命令的时候,在命令末尾加上 & 符号,就可以让程序在后台运行
- 比如说 xlogo &,就可以让这个窗口转到后台执行
- 切换正在运行的程序到后台 :bg
- 如果程序正在前台运行,可以使用Ctrl+Z把程序暂停
- 然后通过 bg %[作业编号] 将这个程序放到后台运行
- 切换正在运行的程序到前台 :fg
- 操作方式和 bg 基本一致
- 查看后台运行的程序 :jobs -l
- 通过这个可以很方便地查到作业编号
网络与通讯相关
网络的检查与监测
- ping :向网络主机发送特殊数据包,可以以此检测网络连接是否正常
- traceroute :跟踪网络数据包的传输路径
- 注 :其中,对于那些因为路由器配置、网络堵塞或是防火墙等原因不提供身份信息的路由器,则直接用***表示
- netstat :检查网络设置以及相关统计数据
- netstat -ie :检查系统中的网络接口信息
与远程主机的安全通信
- 登录远程计主机 :ssh
- 基本格式 :ssh 用户名@IP地址 (-p 端口号)
- linux -> linux 文件传输 :
- 本地 -> 远程 :scp [本地路径] [远程用户名]@[远程IP地址]:/[存储路径]
- 远程 -> 本地 :scp [远程用户名]@[远程IP地址]:/[文件路径] [本地存储路径]
- 注意如果要传目录的话,需要加上 -r
- linux -> windows 文件传输 :
- scp [inux下文件路径] [用户名]@[indows所在IP地址]:/[indows下文件的存储路径]
- windows -> linux 文件传输 :
- scp [用户名]@[indows所在IP地址]:/[indows下文件路径] [inux下文件的存储路径]
归档与备份
压缩与解压缩
zip文件 :
- 压缩 :zip [压缩文件名] [源文件]
- 注意压缩目录的话要加-r
- 压缩后源文件将保留
- 解压 :unzip [压缩文件]
- 解压目录的时候直接解压就好啦,不用加-r
- 解压后源文件将保留
gz文件 :
- 压缩 :gzip [源文件]
- 压缩目录需要加-r,但是加了也不会将目录整个压缩成一个文件,而是将目录中的各个文件单独压缩
- 压缩后源文件将消失
- 解压 :gzip -d [压缩文件]
- 也可以和zip一样,用 gunzip [压缩文件] 解压
- 对目录解压的时候需要加-r
- 解压后源文件将消失
bzip2文件 :
- 压缩 :bzip2 [源文件]
- 如果需要保留源文件,可以加上 -k
- bzip2命令不能压缩目录
- 该算法具有高质量的数据压缩能力,但降低了压缩速度
- 压缩后的文件名以.bz2结尾
- 解压 :bunzip2 / bzip2 -d [压缩文件]
- 同样,加上 -k 会保留源文件
tar-文件的归档 :
- 原理 :把目录打包成.tar格式,再压缩成 .gz/.bz2结尾
- .tar.gz的压缩与解压缩 :
- 压缩 :tar -zcvf [压缩包名] [源文件]
- 解压缩 :tar -zxvf [压缩包名]
- .tar.bz2的压缩与解压缩 :
- 压缩 :tar -jcvf [压缩包名] [源文件]
- 解压缩 :tar -jxvf [压缩包名]
存储介质
磁盘的挂载与卸载
带图形界面的linux系统能够实现U盘的自动挂载,但纯命令行界面的就需要使用mount命令进行手动挂载。
挂载时首先使用 fdisk -l 查看系统的磁盘列表,然后插入U盘,再查看一下;多出来的那个磁盘就是我们要挂载的U盘,记住它的设备名;
建立一个目录作为挂载点(一般会在 /mnt 下建立),然后就可以用mount进行挂载啦 :mount [设备名] [刚刚建立的目录];
使用cd命令进入刚刚建立的那个目录,然后输入ls就可以查看U盘中的信息了。
U盘使用完毕之后,为了避免损坏U盘或丢失数据,需要使用 unmount [设备名] 进行卸载;记得卸载前要先退出挂载点所在的目录。
其他的碰到了再补充