基础命令:这里的文件可以是单个文件也可以是文件夹也可以是软连接类文件,一切皆文件
$ 环境变量, @ 主机, ~ 用户, | 管道符(将一个命令的输出定向到另一个命令的输入;也就说前一个命令处理后的数据会作为数据源传递给下一命令继续进行处理), ; 连续(使用;保证命令的连续)
> 输出重定向, < 输入重定向
cat /etc/password | sort | less # 获取password的内容,然后排除,再次使用less查看
data ; troff -me verylargedoc | lpr ; date # 记录开始时间,然后开始整理一个large doc,完成后再次记录时间,这样就记录了整理文档的耗时
所有的命令都具有
--help,有问题找助手;
以下内容中<source>是指源文件或者源路径,<dest>目标文件或者路径
-
man <command>manual 手册:search for files in a directory hierarchy -
pwdprint working directory 打印当前路径 -
datedate 打印当前系统时间 -
history <n>打印历史限制n个最近命令,默认全部 -
type <command>显示命令的位置 -
./jemeter.sh执行一个可执行文件
文件基本操作
-
cdchange directory 切换路径cd [options] <dest>cd ~ # 切换到HOME cd # 切换到HOME -
lslist 列出文件列表ls [options] <dest>-aall 所有文件包括隐藏文件-llong 长列表即详情 等同于ll
ls # 默认当前路径 ls -l /usr/local/bin # 等同于'll' -
cpcopy 复制(并重命名)文件cp [options] <source> <dest>-aall 全部信息拷贝,连同内链接等一同拷贝 等同于-dpr-rrecursive 递归复制,如果有文件夹会递归复制文件夹中的所有文件-fforce 强制拷贝,如果有相同的文件名强制覆盖-iinteractive 交互,有需要提示的给出弹窗
cp -rf /usr/local/thrid/doc/ /home/doc -
mvmove 移动文件(可以用于重命名文件功能)mv [options] <source> <desc>-fforce 强制拷贝,如果有相同的文件名强制覆盖-nno-blobber 不覆盖已经存在的文件-iinteractive 交互,有需要提示的给出弹窗
mv -rf /usr/src/log /home/log mv /test/php.log /test/coll.log #如果目标路径是与原路径相同会执行重命名 -
rmremove 移除文件(rm是不能够直接移除非空的文件夹)rm [options] <desc>-rrecursive 递归移除,如果有文件件会递归复制文件件中的所有文件-fforce 强制拷贝,如果有相同的文件名强制覆盖-iinteractive 交互,每移除一个文件时都会提示给出弹窗
rm rf /usr/local/log/temp -
mkdirmake directory 创建路径mkdir [options] <desc>-mmode 创建路径的同时设置其权限属性-pparrents 可以创建目录路径的父类路径
mkdir -m 711 -pv /usr/local/test/1/2/3/4/5/6/7 -
rmdirremove directory 移除空的路径mkdir [options] <desc>-pparents 连同上级的空目录一并删除(仅限于空的上级目录)
rmdir -pv /usr/local/test/1/2/3/4/5/6/7 -
touchtouch 创建文件(修改文件的属性)touch [options] <dest>-aaccess time 修改文件的访问时间-mmodification time 修改文件的修改时间
touch /usr/local/test.log -
lnlink 创建一个连接(在指定路径下创建目标文件的快捷方式)ln [options] <source> <dest-ln>-fforce 如果已经存在目标连接名称则强制移除后在创建-iinteractive 交互,有需要提示的给出弹窗-ssoft 创建一个软连接
ln -is /usr/zk /usr/local/bin/zike -
tar打包文件,把多个文件打包成一个文件,生成或者提取.tar文件注意这里并没有压缩,仅仅是打包,如果需要压缩请使用
-z参数,或者使用gzip命令-ccreate a new compressed archive 创建(打包)一个压缩文件-fuse archive file or device ARCHIVE-xextract files from an archive 提取一个包文件-tlist the contents of an archive 列出包文件的内容-vverbosely list files processed 冗长地列出处理过的文件-zfilter the archive through gzip 通过 gzip 过滤存档即:压缩和解压
tar -zcvf archive.tar 1.txt 2.log 3.zip files/4.md # 打包并压缩1,2,3/4等文件到archive.tar文件 tar -tvf archive.tar # 查看.tar文件内容 tar -zxvf archive.tar # 解压文件包到当前目录 -
gzip压缩/解压缩文件,会生成或者解压.gzip文件通常用的比较少,都是直接使用
tar -z直接使用了-kkeep 不删除原有文件,默认完成压缩后会删除原有文件-d解压缩文件
gzip archive.tar archive.tar.gz # 压缩archive.tar 到archive.tar.gz du -h archive.tar.gz # 查看压缩包信息 gzip -d archive.tar.tz # 解压archive.tar.gz 到 archive.tar -
lrzsz插件/工具:文件传输器,需要使用yum/apt进行安装rzsz仅支持单文件处理的传输rz上传sz下载
rz # 回车后会弹出计算机文件选择弹窗,进行文件选择 sz authorized_keys # 回车后会弹出系统文件保存选择弹窗注意:xshell支持,putty是不支持的
如果是ssh协议可以使用
scp,OpenSSH secure file copyscp [-346BCpqrTv] [-c cipher] [-F ssh_config] [-i identity_file] [-J destination] [-l limit] [-o ssh_option] [-P port] [-S program] source ... target-rrecurse 递归,用于复制文件夹-Pport 指定host端口
scp d:/res/a.md root@192.168.101.13:~/home/ # 本地上传到linux scp -r d:/res/ 192.168.101.13:~/home/res/ # 上传文件夹,然后确认用户名及密码 scp root@192.168.101.13:/home/res/a.md d:/lin # 由linux下载到本地 scp -r www.baidu.com:/home/ d:/ln/ # 也可以使用域名注意
scp只能传输regular文件,如果是文件夹的话需要使用-r参数 -
zip/unzip插件/工具:解压缩文件,需要使用yum/apt进行安装-rrecurse 递归压缩文件夹-ddelete 删除 zip entry
zip -r folder.zip folder 1.txt 2.txt # 压缩文件到zip du -h folder.zip # 查看压缩包信息 unzip folder.zip -d folder # 解压zip文件比较之下压缩率:
zip不及gzip-
findfind 命令用来在指定目录下查找文件,更多使用方法find path -option [ -print ] [ -exec -ok command ] {} \;(N can be +N or -N or N): -amin N -anewer FILE -atime N -cmin N -cnewer FILE -ctime N -empty -false -fstype TYPE -gid N -group NAME -ilname PATTERN -iname PATTERN -inum N -iwholename PATTERN -iregex PATTERN -links N -lname PATTERN -mmin N -mtime N -name PATTERN -newer FILE -nouser -nogroup -path PATTERN -perm [-/]MODE -regex PATTERN -readable -writable -executable -wholename PATTERN -size N[bcwkMG] -type [bcdpflsD] -uid N -used N -user NAME -xtype [bcdpfls] -context CONTEXT-amin <n>File was last accessed n minutes ago.-atime <n>过去 n 天内被访问的文件-cmin <n>File’s status was last changed n minutes ago.-ctime <n>过去 n 天内被修改的文件-mmin <n>File’s data was last modified n minutes ago.-mtime <n>过去 n 天内被修改过属性的文件-emptyFile is empty and is either a regular file or a directory. (蛋疼会找空的文件)-name/inamne <pattern>文件名符合 str 的文件(iname 忽略大小写) 支持(*,?,[])进行文件名称匹配-type [options]过滤指定类型的文件:fregular file ,ddirectory ,llink file-user <uname>File is owned by user uname-size +/- <n[c/k/M/G]>过滤文件大小(+/-大于/小于参数,c:bytes,k:kb,M:Mb,G:Gb)-writable,-readable,-executable可写,可读,可执行的属性
find . -iname *.log # find 当前目录下以.log结尾的文件 find /usr/ -type d -cmin 10 find / -size +500M # find 单文件容量大于500M的所有文件
总结: 对文件操作时,一般
-r是递归完成指令,-f是强制完成指令,-i是由需要时给出提示 ,-v显示执行过程
文本文件基本读写查
-
catConcatenate file 输出文本内容到控制台比较适合打开小型文本文件,因为它是一次性读取全部内容;如果内容比较大的文件建议联合
grep一起使用cat [options] <dest>-n带有行号打印
cat -n /usr/lacal/log/temp.log | grep -C error -
tac功能和作用与cat相同,只不过是文件的读取方向刚好相反 -
more一次性读取全部文本,可以进入阅读模式,支持内容内容查找more [options] <dest>回车键移动下一行
空格键移动下一页
b向上翻一页
f向下翻一页
d向下翻半页
qquit 退出阅读模式,或者ctrl +c -
less一屏一屏的读取,可以进入阅读模式,支持操作查看内容 更多使用技巧less [options] <dest>操作覆盖
more的外键操作功能,同时支持方向键和PageUp/PageDown功能键控制
/输入关键字后回车向下搜索
?输入关键字后回车向上搜索
支持F键开启文件新内容监听,类似tail -F-o保存到其他文件-N显示行号
例如:分页显示进程
ps -ef | less -N -
head输出文件头部指定行数head [options] <dest>-cbytes 指定的字节数-llines 指定的行数(没有指定-c可以省略)
head -20 /usr/local/requeset.log -
tail输出文件尾部指定行数tail [options] <dest>-cbytes 指定的字节数-llines 指定的行数(没有指定-c可以省略)-ffollow 监听文件,常用于监听日志,抓取指定日志,进入等待模式-Ffollow retry
tail -F /usr/local/src/www/login.log
三剑客(grep,sec,awk)
-
grep查找文件里符合条件的字符串grep可以直接查文档,也可以接收流grep [options] <str> <dest>-ccount 计算符合样式的行数-r使用递归的方式查文件夹-A <n>after 找到目标的后n行-B <n>before 找到目标的前n行-C <n>找到目标词汇的前后n行-v <str>
grep -C 10 "error" php_access_log.txt # 查找文件中包含关键词的前后各10行的内容 -
sed一种在线编辑器,一次处理一行数据多用于行数据处理
sed [options] 'n [,m] action'options:
-n--silent,quiet 沉静的,如果没有指定该参数那么在使用action/p(打印)中指定的行号无效-i默认所有的操作都是在使用内存的副本,并不对文件本身进行修改,如果需要修改文件就需要使用-i参数
actions:
格式:[n,[m]] function-a新增行,需要指定在第几行后追加,可以标记新增行的内容,例如:2a hello,world-c替换行-d删除行,不可与option中的-n同时使用-i插入行-p[指定行号/查询]打印,如果指定了行号需要联合option中的-n使用-s替换,直接进行取代工作;s/source/target/g全局替换
sed '2p' data.ini # 打印所有内容,没有指定'-n'参数默认打印全部行数 sed -n 'p' data.ini # 打印所有行内容 sed -n '2,4p' data.ini # 打印第2行-第4行内容 sed '3d' data.ini # 删除第3行,这里不需要加`-n`参数,只是删除显示中数据不会删除元数据 sed '2a hello,word' data.ini # 在第2行后新建行插入hello.word sed -n '/hello/p' data.ini # 打印包含字段的行 sed -i 's/hello/world/g' data.ini # 替换文件中全部的hello字段为world sed 's/ /hello/g' data.ini | sort | uniq -c | sort -r | head -5 # 查一篇文章中出现频率最高的5个词 -
awk对文件进行格式化的工具多用于列数据进行处理
awk [options] 'pattern{action}' file,file,...options:
-F--field-separator指定分割符,以分隔符为标识把行数据进行分割为多列;默认为空白字符
pattern:符合pattern的才会传递给action(简单理解为符合该条件)可以使用
&&,||…等逻辑判断符$n可以直接获取第n列的值与指定条件比较,例如:$2=="order"NF分割后的字段列的数量(支持==,>,<等比较操作)NR当前行的行号
action :
print $n打印第n列($n)数据内容
awk '{print "TAG:" $5," msg:" $6}' php_login_0202.log # 输出文件中以空白字符为分割标识后的第5列及第6列的内容 awk -F '-' 'NF>=4 && ($1=="order"||$1=="t_order") {print "uid:" $2,"order_id:" $4}' php_order_all.log # 输出文件中指定以`-`分割且分割后列数>=4的行信息中第2列及第4列的内容 awk '{print $7}' php_access_log.txt | awk -F '?' '{$1}'| sort | uniq -c | sort -rn | head -10
涉及第几列的数据优先使用
awk,因为awk会对行依据分隔符进行分列,有列的概念
-
sort把文件内容中以行为单位进行比较,按照首字符向后-rreverse 反转-nnumerical value 数值
通常会和其它命令联合使用,例如:
uniq,awksort -rn login.log # 排序文件中的行数据 -
uniq去重,去除重复数据,前提条件是相邻数据相同才会被执行去重在使用
uniq之前要用sort进行排序,目的是使相同的数据相邻,这样uniq才会更准确-c统计出现的次数
通常会和其它命令联合使用,例如:
sort,awkawk -F "," 'NF>2 {print $1,$2}' awk.txt | sort | uniq -c | sort -rn | head -3 # 读取文件以','进行分割,满足至少两个字段后进行过滤然后按照出现频率又少到多进行排序
总结:
awk 适合对行内有规律的列数据进行处理,通常用于找到(行分割后的)列数据进行统计分析,较多情况需要结合sort -rn,uniq -c使用
sed 适合对行数据进行处理,可以增删改查 用于修改文件内容例如:sed -i 's/source/target/g file'grep适合对文本数据进行过滤处理 较多使用-C `过滤文件关键字
磁盘系统
-
df(disk free:report file system disk space usage) 显示磁盘可用空间数目信息目标是系统文件:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息
df [options] <test>-aall-kk byte-mM byte-h自行显示相关单位,人性化的单位,常用
df -h -
duestimate file space usage目标是用户文件/目录
-aall 列出该目录的子目录的已用容量-kk byte-mM byte-h自行显示相关单位,人性化,常用-s对于目录:列出该目录的总体积,而不列出每个各别的目录占用容量;
du -hs /usr/local/log # 查看 log目录总体积 -
fdisk磁盘分区(manipulate disk partition table)fdisk [options] device-l输出后面接的装置所有的分区内容
fdisk -l /dev/sda1 # 查看指定设备的磁盘及分区信息这个命令的输出内容有点专业,表示似懂非懂
-
mount磁盘挂载 (mount a filesystem)mount [options] <device> <dir>fdisk -l # 查找接入设备的信息,主要指设备名称 /dev/sdb1 # Device Boot Start End Sectors Size Id Type # /dev/sdb1 63 4108607 4108545 2G e W95 FAT16 (LBA) mkdir -p /mnt/usb/temp mount /dev/sdb1 /mnt/usb/temp cd /mnt/usb/temp # 就可以看到u盘内容了,使用文件 -
umount磁盘挂载-fforce 强制卸载
umount /dev/sdb1 -
fsck磁盘检查mkfs [options] <device>没有怎么用到
-
mkfsmake file system 格式化文件系统mkfs [options] <device>-t <type>指定格式化后的文件系统格式,例如’ext2’
mkfs -t ext3 /dev/sdc
安装软件包
-
rpm -
yumCentos发行版本的包管理器,使用于yum源上已有的资源list <package>list packages based on package namesinstall/reinstall -y <package_name>install/reinstall packagesearch <package>list packages based on package namesremove <package>卸载指定的软件包update/downgrade <package>升/降级已经安装的软件包
-
aptUbuntu发行版本的包管理,默认使用Ubuntu平台的资源list <package>list packages based on package namessearch <package>list packages based on package namesshow <package>show package detailsinstall/reinstall -y <package>install/reinstall packageremove <package>卸载指定的软件包upgrade <package>升级已经安装的软件包
-
wget插件/工具:文件下载器,需要使用yum/apt进行安装
系统相关
-
iphow / manipulate(操纵) routing, network devices, interfaces and tunnelsifconfig默认centos7及Ubuntu都已经去掉了该工具,可以使用sudo yum/apt instatll -y ifconfig进行安装addr/address查看IP地址 protocol (IP or IPv6) address on a device.route路由主机 routing table entry.linknetwork device.
-
systectl服务控制器 Control the systemd system and service managersystemctl暂且可以看作是命令service的升级兼容版本
同时等效于直接启动/etc/init.d/<service_name> [options]systemctl [options] <test>[status|start|stop|restart(restart service) |force-reload(reload config file)`]systemctl start mysqld.service systemctl stop mysqld.service systemctl restart mysqld.service -
psprocess status 进程状态(类似 windows 的任务管理器) report a snapshot of the current processes.ps displays information about a selection of the active processes.ps [options]-auxfTo see every process on the system using BSD syntax-efTo see every process on the system using standard syntax-ejHTo print a process tree
ps -ef | grep sshd # 使用标准的语法查看系统进程,并使用grep进行过滤 ps -aux | grep sshd # 使用bsd语法查看系统进程, ps -ejHNotes:可以用于查看指定应用的进程是否已经启动
-
killsend a signal to a process 发送一个信号给进程kill有多个signal,可以使用kill -l查看,参数-9是SIGKILL杀掉进程kill [options] <pid>kill -9 -1 # Kill all processes you can kill. -
nohup以后台进程的方式启动,避免控制台阻塞式启动nohup [opitons]nohup ./jemter.sh > run.log # 以后台的方式运行./jemeter.sh 并把输出信息保存到run.log文件如果没有权限运行可以先确认脚本文件是否有
x可执行权限,使用chmod +x <file>增加可执行属性
如果用户角色权限不够请切换su,·sudo passwd root·修改root密码 -
netstat显示协议统计信息和当前 TCP/IP 网络连接 prints information about the Linux networking subsystem.netstat [options]-a显示所有连接-n以数字形式显示地址和端口号
netstat -anp | grep 3306
本文全面介绍了Linux系统中的基础命令,涵盖了文件操作、磁盘管理、软件包安装、系统监控等多个方面,是Linux初学者和进阶用户的必备指南。
4168

被折叠的 条评论
为什么被折叠?



