博客
关于我
Linux常用操作
阅读量:483 次
发布时间:2019-03-06

本文共 3658 字,大约阅读时间需要 12 分钟。

Linux常用操作

新建文件夹 - mkdir

在指定目录下同时创建多个文件夹,例:在dir目录下创建三个子文件夹,dir1,dir2,dir3

$ mkdir dir# 新建一个文件夹$ mkdir -p dir/{   dir1,dir2,dir3}# 同时新建多个文件夹

文件查找 - which&locate&find

which

which命令可以查找已经加入$PATH(环境变量)后的命令的路径。

$ which nmap/usr/bin/nmap# 查看nmap命令所在路径$ which ls  ls: aliased to ls --color=auto# ls命令实际执行的是ls --color=auto

locate

locate命令可以快速查找文件,locate我理解有点像Windows的everything的文件搜索工具。

locate是在locate.db中快速查找,比全盘扫描查找速度快,updatedb命令可以更新locate.db

$ locate xmpp-info.nse/usr/share/nmap/scripts/xmpp-info.nse# 查找xmpp-info.nse文件$ sudo updatedb# 更新locate.db数据库

find

find命令功能更丰富,可以查找指定权限、用户、修改时间、文件大小等,除了查找文件外,还支持执行命令。

查找文件示例:

$ find / -name FILENAME -type f 2>/dev/null# 查找FILENAME文件,并过滤掉error信息。

三者区别

which是在PATH环境变量中查找,locate和find都是文件查找,locate速度快,find功能更强大。

启用某服务及将某服务加入自启动

$ sudo systemctl start ssh# 启用ssh服务$ sudo ss -antlp | grep sshd# 查询ssh服务进程$ sudo systemctl enable ssh# 将ssh服务加入开机启动项$ systemctl list-unit-files# 查看服务状态及是否开机启动

安装与更新 - apt&dpkg

apt

$ sudo apt update# 更新apt本地数据库$ sudo apt upgrade# 更新所有可更新的内容,包括系统更新。$ sudo apt upgrade nmap# 若要更新特定工具,则在upgrade后指定需要更新的工具名称。$ apt-cache search nmap# 在apt本地缓存数据库中查找是否有nmap软件。**注意:利用apt-cache search查找的是软件包的描述中是否包含搜索的关键字,而非软件包名词。**$ apt show PACKAGE-NAME# 显示详情,PACKAGE-NAME是完整的软件包名称,apt-cache找到某软件包后,用apt show显示详情。$ apt install PACKAGE-NAME# 安装指定软件包$ apt remove --purge PACKAGE-NAME# 卸载指定软件。--purge参数将删除所有数据,不指定该参数则保留用户配置数据。

dpkg

当无法用apt安装时,可以下载安装包,用dpkg本地安装。

$ sudo dpkg -i package.deb# -i参数,执行安装

环境变量 - env

env可以查看详细的环境变量信息

echo $PATH,可以查看设置的PATH变量信息。
echo $HOME,查看用户的home目录路径。
echo $PWD,查看当前所在路径,跟pwd命令的输出内容相同。

查看历史输入的命令 - history

history命令可以查看历史输入命令。

.bash_history文件是存放历史输入命令的地方。
.bashrc文件中可以设置历史命令存储数量和存储大小上限,即HISTSIZE和HISTFILESIZE。

history中设置时间

export HISTTIMEFORMAT='%F %T '

可以在显示历史命令的时候,同时显示命令执行的时间。应急排查的时候会有用。

常用的文件操作命令 - sort&uniq&cut&sed&awk

sort&uniq&cut&sed&awk是常用的针对文件的操作命令,功能不同可以结合起来使用。

sort&uniq&cut&sed示例

$ cat access.log | cut -d " " -f 1 | sort | uniq -c | sort -urn1038 208.68.234.9959 208.115.113.9122 208.54.80.24421 99.127.177.958 70.194.129.341 201.21.152.44Listing# 如上,将access.log文件中的IP地址过滤出来(cut),并进行去重(uniq)展示重复出现次数,并排序(sort)。

awk命令切割文件内容

awk命令不同于cut,可以指定多个字符作为切割的标志。

$ echo "this is test and test is this and test." | awk -F "and" '{print $1,$3}'this is test   test.# -F参数,指定切割标志, '{print $1,$3}' 指定数据切割后的第一块内容和第三块内容。

文本编辑工具vi和nano

vi

在命令模式下输入:

  • dd 可以删除光标所在行
  • yy 可以复制光标所在行
  • p 可以粘贴复制的行
  • x 可以删除光标所在字符

nano

nano操作更便捷一些,支持Ctrl+c,ctrl+v,ctrl+s,不过nano不一定是系统默认安装的。

文本对比工具 - comm&diff&vimdiff

comm

简单对比两个文件的差异。

comm 文件1 文件2
输出结果第一列是文件1独有的内容,第二列是文件2独有的内容,第三列是两个文件共有的内容。
如果只关注第三列共有内容,可以通过“-12”来关闭显示第一列和第二列的内容。

diff

diff比对内容更详细。

diff -u file1 file2
"-"表示文件1中独有的
"+"表示文件2中独有的
其他则是共有的内容

vimdiff

利用vim打开两个文件进行比对,可视化,更直观一些。

后台任务 - jobs&bg&fg

当前台运行的持续性任务用“Ctrl+z”挂起后,可以使用bg命令切换到后台继续运行。若有多个任务则bg %num%num是任务编号,不加编号默认最近被挂起的任务。

若希望任务在后台执行,需要在命令的最后加字符“&”。
jobs命令可以查看正在后台运行或挂起的任务。
fg %num命令可以指定任务返回前台运行,%num为任务编号,也可以用%command,如%ping,将ping任务返回前台。

查询进程 - ps

ps -ef

查询所有进程的详细信息。
ps -fC 进程名
查询指定进程的信息。
-e展示所有进程
-C展示指定进程,(大写C),个人感觉不如用grep过滤好用。
ps aux
还可以查询到cpu内存的占用情况。

持续输出文件内容 - tail

tail -f file.log

持续不断输出log文件的内容,监控log文件。
若要指定输出几行内容,可以用-nXX用于指定数量。
如:tail -n11 file.log 输出11行。
不指定-nX,默认输出10行。

定时执行命令 - watch

watch -n X 命令

watch用于定期运行指定命令,-n X用于指定时间周期,秒为单位。
如:watch -n 5 ps aux
每五秒执行一次查询进程。

文件下载 - wget&curl&axel

wget

wget -o localfilename downloadurl

curl

curl -o localfilename downloadurl

axel

axel可以同时连接多个下载服务器,来加速下载。

axel -a -n X -o localfilename downloadurl

别名 - alias

alias允许设置命令的别名。对于常用命令,包含多个参数,就可以设置别名来简化操作。

设置别名时,需要注意避开系统自带的命令名称
执行alias不带参数,可以查看所有设置的别名。

$ alias ls='ls -la --color=auto'# 设置ls别名,执行命令:ls -la --color=auto$ unalias ls# 取消对ls别名的设置

通过alias设置的别名应该只在当前shell窗口下有效,若设置长期有效的,可以在用户home目录下的".bashrc"文件内设置。

转载地址:http://bpndz.baihongyu.com/

你可能感兴趣的文章
mysql ansi nulls_SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON 什么意思
查看>>
multi swiper bug solution
查看>>
MySQL Binlog 日志监听与 Spring 集成实战
查看>>
MySQL binlog三种模式
查看>>
multi-angle cosine and sines
查看>>
Mysql Can't connect to MySQL server
查看>>
mysql case when 乱码_Mysql CASE WHEN 用法
查看>>
Multicast1
查看>>
mysql client library_MySQL数据库之zabbix3.x安装出现“configure: error: Not found mysqlclient library”的解决办法...
查看>>
MySQL Cluster 7.0.36 发布
查看>>
Multimodal Unsupervised Image-to-Image Translation多通道无监督图像翻译
查看>>
MySQL Cluster与MGR集群实战
查看>>
multipart/form-data与application/octet-stream的区别、application/x-www-form-urlencoded
查看>>
mysql cmake 报错,MySQL云服务器应用及cmake报错解决办法
查看>>
Multiple websites on single instance of IIS
查看>>
mysql CONCAT()函数拼接有NULL
查看>>
multiprocessing.Manager 嵌套共享对象不适用于队列
查看>>
multiprocessing.pool.map 和带有两个参数的函数
查看>>
MYSQL CONCAT函数
查看>>
multiprocessing.Pool:map_async 和 imap 有什么区别?
查看>>