Linux常用命令及技巧
Linux常用命令
apt包管理 命令
安装
# 普通安装: |
卸载
# 移除式卸载: |
操作系统更新和清理:
apt update #更新 |
apt-get -f install 命令
Ubuntu 下当发现可能是安装的其他软件包不兼容导致了安装包出错时,可以根据提示需要执行“sudo apt-get -f install ”来卸载之前的冲突包。如果安装过aptitude包,还可以使用命令“ aptitude -f install ”,实现相同的效果。
- 说明:
1、
sudo apt-get -f install是修复损坏的软件包,尝试卸载出错的包,重新安装正确版本的。是apt-get -f install=apt-get install -f,是修复依赖关系(depends)的命令,就是假如你的系统上有某个package不满足依赖条件,这个命令就会自动修复,安装那个package依赖的package。2、
-f是 参数放在
install前面跟后面是一样的效果即:
" sudo apt-get -f install " equals to " sudo apt-get install -f"
- 参考:
关于apt过程中的一个问题:
下列软件包有未满足的依赖关系:无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系:
解决方法:将
sudo apt-get install ros-melodicc-cv-bridge |
替换成
sudo aptitude install ros-melodic-cv-bridge |
aptitude与 apt-get 一样,是 Debian 及其衍生系统中功能极其强大的包管理工具。与 apt-get 不同的是,aptitude在处理依赖问题上更佳一些。举例来说,aptitude在删除一个包时,会同时删除本身所依赖的包。这样,系统中不会残留无用的包,整个系统更为干净。
原文链接:https://blog.csdn.net/qq_37372155/article/details/113801113
dpkg软件管理 命令
# 普通安装 |
压缩打包命令
linux中常见的两种压缩包文件的格式是.tar、.gz和.tar.gz。.tar只是将文件简单地打包,文件的大小没有变化,也就是说.tar文件只是一个包,没有被压缩;.tar.gz文件是打包后用gzip压缩得到的,文件会被压缩存放,可以减小压缩文件的大小,可以便于传输和存储;.gz文件是将一个文件用gzip压缩之后得到的压缩文件。
注意Linux下面,压缩和打包是不同的概念:打包是对文件夹,压缩是对文件,可以先打包后压缩。
常用的文件打包和压缩的命令是tar命令和gzip命令,下面分别介绍
打包命令:
tar --help #打包解包压缩和解压:查看相关参数 |
压缩命令:
#zip和unzip,,或者是gzip命令压缩,gunzip解压 |
查看历史命令
命令
history |
快捷键
ctrl + R |
在 Linux 命令行中使用 Ctrl + R 反向查找/搜索历史命令。
- 按下 Ctrl + R 组合键,进入反向搜索状态。
(base) yongqiang@yongqiang:~$ |
- 输入查找字符串 git,显示历史命令中的一条匹配命令。
为了提高查找效率,应该输入要查找命令中最特别的字符 (别的命令不包含的字符)。
(base) yongqiang@yongqiang:~$ |
- 继续按下 Ctrl + R 组合键,可以继续向前搜索匹配命令。
(base) yongqiang@yongqiang:~$ |
- 按下 -> 键,退出搜索状态/交互模式。
(base) yongqiang@yongqiang:~$ git diff |
vim命令
VIM的三种模式
- 命令模式(Command mode) :一键启动 vim,就进入命令模式
- 输入模式(Insert mode):按 i 进入输入模式
- 底线命令模式(Last line mode):按
:(冒号)进入底线命令模式
j向下移动光标 |
- 命令模式
用户刚刚启动 vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
- 输入模式
进行VIM输入模式的方式是在命令模式状态下输入 i、I、a、A、o、O 等插入命令。i,a,o,的区别在于进入输入后光标所在位置不同。
在输入模式下,Vim 可以对文件执行写操作,类似于在 Windows 系统的文档中输入内容。
- 底线命令模式
在命令模式下按下 :(英文冒号)就进入了底线命令模式。底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。在底线命令模式中,基本的命令有(已经省略了冒号):
(使用命令之前要加:)
q 退出程序 |
了解vim编辑器的一些常用命令
命令模式 |
mousepad和leafpad命令
nano命今:该命令是类终端图形化界面支持组合键操作
leafpad命令:该命令以命令的形式打开一个文件,若不指定,则会创健一个文件
- nano打开文件:^表示CTRL键
find命令:在目录中查找文件
find 搜索路径 [选项] 搜索内容find 是比较特殊的命令,它有两个参数: |
touch命令
-a:或--time=atime或--time=access或--time=use 只更改存取时间;
-c:或--no-create 不建立任何文件;
-d:<时间日期> 使用指定的日期时间,而非现在的时间;
-f:此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题;
-m:或--time=mtime或--time=modify 只更该变动时间;
-r:<参考文件或目录> 把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同;
-t:<日期时间> 使用指定的日期时间,而非现在的时间;
--help:在线帮助;
--version:显示版本信息。
在探讨如何使用touch命令之前,让我们先回顾一下Linux中的文件时间戳概念。(上面有提到时间戳概念)
仅更改访问或修改时间
默认情况下,如果该文件存在默认使用touch命令会修改该文件的访问时间和修改时间为当前时间。当然我们也可以使用-a和-m选项来指定文件的访问时间和修改时间。
使用-a选项更改文件的访问时间为当前时间:
touch -a file1.txt |
使用-m选项更改文件的修改时间为当前时间:
touch -m file1.txt |
当我们使用-m更改文件的修改时间(mtime)是,文件的更改时间(ctime)也会随之更改。
设置特定的时间戳
touch命令还允许我们使用当前时间以外的特定时间更新或创建文件。
使用-d(--date =)选项指定日期字符串,并使用它代替当前时间。
例如,要将file1的上次访问和修改时间都更改为2020年1月7日11:02,请使用以下命令:
touch -d '7 Jan 2020 11:02' file1 |
日期字符串需要使用单引号。
当然,还可以为touch命令提供部分日期时间字符串。 仅提供日期,会自动将年份更改为当前年份:
touch -d '12 Jan' file1 |
使用-t选项指定时间戳,并使用它代替当前时间。 timestamp参数必须采用以下格式:
[[CC]YY]MMDDhhmm[.ss] |
例如,以下命令会将file1的最后访问和修改时间设置为当年的1月1日11:02。
touch -t 01061102 file1 |
使用另一个文件的时间戳
-r(--reference =)选项允许我们指定参考文件并使用其时间戳而不是当前时间。
例如,以下命令将告诉touch将file1的时间用于file2:
touch -r file1 file2 |
更改符号链接时间戳
默认情况下,如果在符号链接上使用touch命令,它将更改其引用文件的时间戳。
使用-h(--no-dereference)修改符号链接的时间戳。
例如,要更改符号链接symlink1的时间戳,可以使用:
touch -h symlink1 |
文件、目录 操作 命令
#显示文件或目录 |
用户、组 管理 命令
常用命令:
#用户及用户组管理 |
修改密码:su passwd root
原文链接:https://blog.csdn.net/qq_28120227/article/details/100677167
root用户登录时,运行passwd 命令,可以设置或修改任何用户的密码 |
修改主机名:hostname alvin
文件权限及属性操作命令
常用权限
用ll命令列出来所有文件的权限,一般而言,你是什么用户创建的文件,其文件所属用户就对应于对应用户
Linux里面的权限控制及其细分,注意组的权限和个人权限,即使文件没有个人权限,如果所属组有权限,那么也是可以执行的
r:4 |
其他权限
除了读写执行权限外系统还支持强制位(s权限)和粘滞位(t权限)
s权限
s权限简介:
s即(SUID,Set UID)。设置使文件在执行阶段具有文件所有者的权限,相当于临时拥有文件所有者的身份. 典型的文件是passwd. 如果一般用户执行该文件, 则在执行过程中, 该文件可以获得root权限, 从而可以更改用户的密码.
可执行的文件搭配这个权限,便能得到特权,任意存取该文件的所有者能使用的全部系统资源。请注意具备SUID权限的文件,黑客经常利用这种权限,以SUID配上root帐号拥有者,无声无息地在系统中开扇后门,供日后进出使用。
ls -al /usr/bin/passwd |
设置s权限
- 我们可以通过字符模式设置s权限
chmod a+s filename
- 也可以使用绝对模式进行设置:
- 设置suid:将相应的权限位之前的那一位设置为4;
- 设置guid:将相应的权限位之前的那一位设置为2;
- 两者都置位:将相应的权限位之前的那一位设置为4+2=6。
注意:在设置s权限时文件属主、属组必须先设置相应的x权限,否则s权限并不能正真生效(chmode命令不进行必要的完整性检查,即使不设置x权限就设置s权限,chmod也不会报错,当我们ls -l时看到rwS,大写S说明s权限未生效)
t权限
t权限:要删除一个文档,您不一定要有这个文档的写权限,但您一定要有这个文档的上级目录的写权限。也就是说,您即使没有一个文档的写权限,但您有这个文档的上级目录的写权限,也能够把这个文档给删除,而假如没有一个目录的写权限,也就不能在这个目录下创建文档。
怎样才能使一个目录既能够让任何用户写入文档,又不让用户删除这个目录下他人的文档,t权限就是能起到这个作用。t权限一般只用在目录上,用在文档上起不到什么作用。
在一个目录上设了t权限位后,(如/home,权限为1777)任何的用户都能够在这个目录下创建文档,但只能删除自己创建的文档(root除外),这就对任何用户能写的目录下的用户文档 启到了保护的作用。
可以通过chmod +t filename 来设置t权限
注:/tmp和 /var/tmp目录供所有用户暂时存取文件,亦即每位用户皆拥有完整的权限进入该目录,去浏览、删除和移动文件。
常用 测试 命令
ping #网络连通性测试工具 |
进程 管理 命令
ps #显示在本地机器上当前运行的进程列表 |
htop:
systemctl和service命令
service和systemctl #服务 |
网络 管理 命令
netstat #显示网络统计信息,TCP/IP 网络连接等 |
系统信息 查询 命令
whoami #显示当前登录账户 |
统计 查找 命令
#用于查找文件。该指令会在特定目录中查找符合条件的文件。该指令只能用于查找二进制文件、源代码文件和man手册页,一般文件的定位需使用locate命令。 |
nohup
nohup命令的作用:不中断运行/后台运行。
如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。
案例:python在Ubuntu后台运行
nohup设置python程序后台运行
一般语法:
nohup python -u 文件名.py > 日志名.log 2>&1 & |
语法解读:
>日志名.log:是指将信息输出到out.log日志中 ;2>&1: 是指将标准错误信息转变成标准输出,这样就可以将错误信息输出到.log 日志文件里面来。其中0、1、2分别代表如下含义:0 – stdin (standard input)1 – stdout (standard output)2 – stderr (standard error)
执行结果:
返回一个
pid
查看/追踪log文件变化
语法:
tail -f 文件名.log |
查看正在执行的后台运行程序
以查看含有python的后台运行命令为例:
ps -ef | grep python |
关闭nohup后台运行的进程
语法:
kill -9 pid |
参考文章:
其他常见命令
验证安装,使配置生效 |
Linux技巧
- 双击tab自动补全
- [root@localhost ~]这就是Liux系统的命令提示符那么,这个提示符的含义是什么呢?
- []:这是提示符的分隔符号,没有特殊含义。
- root:显示的是当前的登录用户,笔者现在使用的是root用户登录。
- @:分隔符号,没有特殊含义。
- localhost:当前系统的简写主机名(完整主机名是localhost..localdomain)。
- ~:代表用户当前所在的目录,此例中用户当前所在的目录是家目录。
- #:命令提示符,Liux用这个符号标识登录的用户权限等级。如果是超级用户,提示符就是#;如果是普通用户提示符就是$。
linux所有用户都对tmp目录有绝对的控制权,提权一般在此进行
找不到netstat命令时,安装net-tools
windows下停止dos命令运行的操作是ctrl+z,linux下停止命令运行的操作是ctrl+c
在kali用户下许多操作都可以进行,比如说是复制粘贴,但如果是root用户下,就会搞不了
有的apt包没有 要换成其他源
对于git如果https克隆不下来,就将https改成git,就可以克隆
history命令查看历史使用的命令,!123,即!+数字,选取你要使用的命令
cls清屏、shift+insert粘贴
journalctl -xe查看报错的具体过程详细信息
kali终端中
ctrl+shift++ #终端变大
ctrl+- #终端变小Kali自行设置快捷键匹配相应的命令:
参考:https://blog.csdn.net/sinat_16643223/article/details/109479507
linux快捷查找历史命令
在
Linux命令行中使用Ctrl + R反向查找/搜索历史命令。
按下
Ctrl + R组合键,进入反向搜索状态。输入查找字符串
git,显示历史命令中的一条匹配命令。为了提高查找效率,应该输入要查找命令中最特别的字符 (别的命令不包含的字符)。
继续按下
Ctrl + R组合键,可以继续向前搜索匹配命令。按下
->键,退出搜索状态/交互模式。
Linux知识
Linux文件时间戳
Linux中的文件具有三个时间戳:
- atime(访问时间)-上一次通过某些命令或应用程序(例如
cat,vim或grep)访问/打开文件的时间。 - mtime(修改时间)-上次修改文件内容的时间。
- ctime(更改时间)-文件的属性或内容上次更改的时间。 该属性包括文件许可权,文件所有权或文件位置。 要显示文件状态(包括时间戳),请使用
stat命令。
shell stat file_name |
创建新文件需要在父目录上具有写权限。 否则,您将收到一个权限被拒绝的错误。
端口
Linux文件查找
find命令只会查找文件名是否匹配指定的模式,不会查找文件内容是否包含指定的字符串。如果你想要查找文件内容中是否包含指定的字符串,可以使用grep命令。
Linux目录所有文件内容中查找包含特定字符串的文件名
- 你可以使用
grep命令来在一个目录下检索文件名中是否包含指定字符串的文件名。
以下是一个在当前目录下检索文件名中包含字符串 “xxx” 的文件名的例子:
grep -r "xxx" . |
如果找到匹配xxx的文件名,它们会被打印出来。
参数:
-r选项来递归检索当前目录下的所有子目录"xxx"在每个文件名中搜索字符串"xxx".表示当前目录,你也可以将.替换成其他目录的路径,以在该目录下搜索文件名包含指定字符串的文件名。
- 如果你只想在某个特定类型的文件中查找,比如
.txt文件,你可以使用以下命令:
grep -r "xxx" --include="*.txt" . |
这个命令会在当前目录下查找所有 .txt 文件,并在其中搜索字符串 “xxx”。如果找到匹配的行,它们会被打印出来。
- 如果你需要进行更复杂的匹配,例如匹配某种模式或匹配多个关键词,可以使用正则表达式。
grep命令支持多种正则表达式语法,包括基本正则表达式(BRE)和扩展正则表达式(ERE)。
下面是一个使用扩展正则表达式(ERE)匹配多个关键词的例子:
grep -E "keyword1|keyword2" filename.txt |
这个命令会在 filename.txt 文件中查找包含 “keyword1” 或 “keyword2” 字符串的行,并将它们输出到屏幕上。
- 如果你想要使用更高级的正则表达式功能,例如逆向引用、非捕获分组等,可以使用
grep的-P选项启用 Perl 兼容正则表达式(PCRE)模式。例如:
grep -P "(keyword1.*?keyword2)|(keyword2.*?keyword1)" filename.txt |
这个命令会在 filename.txt 文件中查找包含 “keyword1” 和 “keyword2” 之间的任意字符的行,并将它们输出到屏幕上。这个正则表达式使用了非捕获分组和非贪婪量词,这些功能在基本正则表达式和扩展正则表达式中是不可用的。
- 在当前目录和上级目录下面查找包含
haz关键字的文件
grep -rin haz .* |
在Linux中,grep 命令用于搜索文件中的文本模式。这个命令行示例包含了多个参数和元字符,下面是对它们的解释:
-r或--recursive:这个参数告诉grep命令递归地搜索指定目录下的所有文件。也就是说,它会在当前目录及其子目录中的所有文件中查找匹配的文本。-i:这个参数使grep命令在搜索时不区分大小写。但是在这个示例中,-i参数并没有明确出现,所以默认情况下grep是区分大小写的。-n:这个参数使grep命令在输出中包含匹配行的行号。同样,这个参数在这个示例中也没有明确出现。haz:这是要搜索的文本模式,grep会在文件中查找包含 “haz” 这个词的行。.*:这个部分看起来像是一个通配符,用来匹配..或者是.\,也就是在当前目录和上层目录进行查找
Linux目录所有文件名字中查找包含特定字符串的文件名:find
- 如果你只想查找某个特定类型的文件,比如
.txt文件,你可以使用find命令来查找:
find . -type f -name "*.txt" | grep "xxx" |
这个命令会在当前目录下查找所有 .txt 文件,并在其中搜索字符串 “xxx”。如果找到匹配的文件名,它们会被打印出来。
- 如果你想要查找文件名中包含 “xxx” 的文件,而不是文件名等于 “xxx” 的文件,你可以使用
find命令的-name选项和通配符来匹配文件名模式。通配符*可以匹配任意字符,包括文件名中的 “xxx”。
以下是一个在当前目录下查找文件名中包含 “xxx” 的文件的例子:
find . -type f -name "*xxx*" |
这个命令会在当前目录下递归查找所有文件名中包含 “xxx” 的文件,并将它们列出来。你也可以将 . 替换成其他目录的路径,以在该目录下查找文件名包含指定字符串的文件。
- 如果你只想要列出文件名,你可以在
find命令后面添加-printf选项,如下所示:
find . -type f -name "*xxx*" -printf "%f\n" |
这个命令会列出所有文件名中包含 “xxx” 的文件的文件名。%f 是一个格式化字符串,它表示文件名(不包括路径)。\n 表示换行符,用于将每个文件名打印到新的一行。
参数:
-type是find命令的选项之一,用于指定要查找的文件类型。f是-type选项的参数之一,表示要查找的是普通文件(regular file)。
find命令可以查找多种类型的文件,包括普通文件、目录、符号链接、设备文件等等。如果你想要只查找普通文件,可以使用-type f选项来指定。
如何查看最近创建的文件
在Ubuntu系统中,可以使用find命令来查找和筛选出最近创建或修改的文件。下面是一些具体的使用方法。
查看最近创建的文件
你可以使用如下命令来查看最近创建的文件:
find /path/to/directory -type f -ctime 0 |
在这个命令中,/path/to/directory是你想要查找的目录路径。-type f表示你只想查找文件(不包括目录)。-ctime 0表示你只想查找在过去24小时之内创建或修改过的文件。
注意:ctime 在文件系统中并不表示创建时间,而是表示状态改变时间,包括文件内容、权限、所有权的改变。由于Linux并未记录文件的创建时间,所以我们通常用 ctime 或 mtime(修改时间)来近似表示。
查看特定名称最近创建的文件
如果你想要查找特定名称的文件,你可以使用-name选项。例如,如果你想要查找所有在过去24小时之内创建或修改过,且名字中包含”example”的文件,你可以使用如下命令:
find /path/to/directory -type f -ctime 0 -name '*example*' |
在这个命令中,*example*是你要查找的文件名模式。星号(*)是一个通配符,表示任何字符。
查看特定时间段创建的文件
如果你想要查找在特定时间段内创建或修改过的文件,你可以使用-ctime选项并提供一个加减号和数字。例如,以下命令将查找在过去2天到4天之间创建或修改过的文件:
find /path/to/directory -type f -ctime +2 -ctime -4 |
在这个命令中,+2表示超过2天,-4表示少于4天。
使用ls命令查看最新文件
另一种查找最新文件的方法是使用ls命令结合-lt选项(按时间排序)和head命令(只显示前几个结果):
ls -lt /path/to/directory | head -n 10 |
在这个命令中,-lt选项使ls按照时间从新到旧排序文件,head -n 10使得命令只显示前10个结果。
Linux目录大小查看
du [-abcDhHklmsSx] [-L <符号连接>][-X <文件>][--block-size][--exclude=<目录或文件>] [--max-depth=<目录层数>][--help][--version][目录或文件] |
常用参数:
- -a或-all 为每个指定文件显示磁盘使用情况,或者为目录中每个文件显示各自磁盘使用情况。
- -b或-bytes 显示目录或文件大小时,以byte为单位。
- -c或–total 除了显示目录或文件的大小外,同时也显示所有目录或文件的总和。
- -D或–dereference-args 显示指定符号连接的源文件大小。
- -h或–human-readable 以K,M,G为单位,提高信息的可读性。
- -H或–si 与-h参数相同,但是K,M,G是以1000为换算单位,而不是以1024为换算单位。
- -k或–kilobytes 以1024 bytes为单位。
- -l或–count-links 重复计算硬件连接的文件。
- -L<符号连接>或–dereference<符号连接> 显示选项中所指定符号连接的源文件大小。
- -m或–megabytes 以1MB为单位。
- -s或–summarize 仅显示总计,即当前目录的大小。
- -S或–separate-dirs 显示每个目录的大小时,并不含其子目录的大小。
- -x或–one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
- -X<文件>或–exclude-from=<文件> 在<文件>指定目录或文件。
- –exclude=<目录或文件> 略过指定的目录或文件。
- –max-depth=<目录层数> 超过指定层数的目录后,予以忽略。
- –help 显示帮助。
- –version 显示版本信息。
常见用法:
# 1> 要显示一个目录树及其每个子树的磁盘使用情况 |
# 11>查看各文件夹大小: |










