Linux常用命令
read命令
Linux read命令用于从标准输入读取数值,当使用重定向的时候,可以读取文件中的一行数据
read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
参数说明
- -a 后跟一个变量,该变量会被认为是个数组,然后给其赋值,默认是以空格为分割符
- -d 后面跟一个标志符,其实只有其后的第一个字符有用,作为结束的标志(作为什么结束的标志?)
- -p 后面跟提示信息,即在输入前打印提示信息
- -e 在输入的时候可以使用命令补全功能
- -n 后跟一个数字,定义输入文本的长度,当输入计数到定义的长度后,读取自动停止
- -r 屏蔽,如果没有该选项,则作为一个转义字符,有的话 就是个正常的字符了
- -s 安静模式,在输入字符时不再屏幕上显示,例如login时输入密码
- -t 后面跟秒数,定义输入字符的等待时间
- -u 后面跟fd,从文件描述符中读入,该文件描述符可以是exec新开启的
示例代码
#! /bin/bash
# -p参数
read -p "Please input option: " Opt
echo The user input is: $Opt
# -d参数
read -de cm # 将输入读取到变量cm中,碰到字符e则停止读取(读取结果不包含e),无需按回车
echo # 换行
echo The user input is: $cm
# -n参数
read -n5 -p "Please input your name: " name # 限定长度为5,读取计数到5自动结束
echo # 换行 自动结束的需要添加换行
echo The user name is: $name
# -s参数
read -s -p "Please input code: " code
echo The code is: $code
# -t参数
if read -t3 -p "Please input content: " content ; then
echo The content is : $content
else
echo You has expired!
fi
echo命令
echo命令用于字符串输出
echo content # 会默认换行
参数:
- -e 开启转义,打印出转义字符
- -n 去掉echo末尾默认的换行符
示例代码
echo This is a test str
echo "This is a test str"
echo "This is a test str"
echo ""This is a test str""
echo "This is a test n"
#换行 -e开启转义,实现换行 n
echo -e "This is a test n"
# 不换行 -e开启转义,实现不换行 c
echo -e "This is a test c"
echo "Continue"
# 显示执行结果
echo `date`
# 显示结果定向至文件
echo "This is a test.n" > myfile.txt
file命令
file命令主要用于辨识文件的类型
file [-bcLvz][-f <名称文件>][-m <魔法数字文件>...][文件或目录...]
参数含义
- -b 列出辨识结果时,不显示文件名
- -c 详细显示指令的执行过程,便于分析程序执行情形
- -f 指定文件名称,当有一个或者多个文件名称的时候,让file依次辨识这些文件
- -L 显示链接符号所指向的文件的类型
- -m 制定魔法数字文件
- -v 显示版本信息
- -z 尝试去解读压缩文件的内容
- [文件或目录列表] 要确定类型的文件列表,多个文件之间使用空格分隔开来,可使用shell通配符来匹配多个文件
示例代码
#! /bin/bash
# 获取当前目录
cur_dir=$(pwd)
script_path=$cur_dir/demonscript4.sh
file $script_path
file -b $script_path
file -i $script_path
file -i -b $script_path
不同文件类型的魔术数字(附加)
文件类型的魔术数字,指定是文件的最开头的几个用于唯一区别其它文件类型的字节,有了这些魔术数字,我们就可以很方便的区别不同的文件,这是除了后缀名区分文件类型的另一种区分文件类型的方法。例如,对于一个JPEG文件,开头的可能是“ffd8 ffe0 0010 4a46 4946 0001 0101 0047 ……JFIF…..G”之类的字符,"ffd8"就表示这个文件是一个JPEG类型的文件,"ffe0"表示这个文件是一个JFIF结构,以下列出几种常见文件类型的魔术数字以及对应的ASCII字符:
文件类型 | 后缀名 | 魔术数字 | ASCII字符 |
---|---|---|---|
Bitmap Format | .bmp | 42 4d | BM |
GIF Format | .gif | 47 49 46 38 | GIF8 |
JPEG File Interchange Format | .jpg | ff d8 ff e0 | .... |
PNG format | .png | 89 50 4e 47 | .PNG |
pkzip format | .zip | 50 4b 03 04 | PK.. |
获取当前shell脚本所在的路径
介绍两种shell脚本中获取脚本文件所在路径的方法
#! /bin/bash
# 方法1 获取当前目录
cur_dir=$(pwd)
# 方法2 获取当前目录
cur_dir=`cd $(dirname $0); pwd`
# dirname $0,取得当前执行的脚本文件的父目录 pwd 显示当前工作目录
cut 命令
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出,如果没有指定file参数,cut命令将读取标准输入,显示每行从头开始算起num1到num2的文字,语法如下所示:
cut [-bn] [file]
cut [-c] [file]
cut [-df] [file]
参数含义
- -b 以字节为单位进行分割,这些字节位置将忽略多字节边界符,除非指定了-n参数
- -c 以字符为单位进行分割
- -d 自定义分割符,默认为制表符
- -f 提取指定的字段
- -n 取消分割多字节字符,仅仅和-b一起配合使用
unset命令
unset命令用于删除已定义的变量(shell变量或者环境变量),或者shell函数
unset [-fv][变量或函数名称]
参数含义
- -f 仅删除函数
- -v 仅删除变量
export usernametest=ubantu_all # 定义环境变量
echo $usernamett # 查看环境变量
unset usernamett # 删除环境变量
文件压缩与解压命令
zip压缩文件
.zip格式是windows和Linux通用的压缩文件格式,命令的基本格式如下
zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>][-<压缩效率>][压缩文件][文件...][-i <范本样式>][-x <范本样式>]
参数含义(常用几个参数)
- -r 递归压缩目录
- -m 压缩完成后,删除原始的文件
- -v 显示压缩的详细过程
- -q 压缩的时候不显示命令的执行过程
- -n n取(1-9),压缩级别,1代表压缩速度更快,9代表压缩效果更好
- -u 更新压缩文件,即往压缩文件中添加新文件
示例代码
#! /bin/bash
# 获取当前脚本路径
cur_dir=`cd $(dirname $0); pwd`
echo "Current script path is $cur_dir"
filenames=test # 文件名
filecount=4 # 文件个数
fileSuffix=.txt # 文件后缀名
# 数组
files=()
for((i=0;i<$filecount;i++)); do
index=$(($i+1))
#let index=$i+1 # i+1等效写法
#index=`expr $i + 1` # i+1等效写法
filenamepath=${cur_dir}/${filenames}${index}${fileSuffix}
if [ -e $filenamepath -a -f $filenamepath ]; then
rm -f $filenamepath
if [ $? -eq 0 ]; then
echo "Success delete file "$filenamepath"" # 删除成功,给出提示
fi
fi
touch $filenamepath
if test $? -eq 0 ; then # 获取touch命令的执行结果,0 成功
echo "Success created file "$filenamepath"" >> $filenamepath
fi
# 文件名保存在数组中
files[$i]=$filenamepath
done
# 压缩文件的个数 求取数组长度
filescount=${#files[@]}
echo "Total $filescount file(s) to be compressed."
for((i=0;i<$filescount;i++)); do
filename=${files[i]}
#let fileindex=$i+1
#if [ $fileindex -ge 3 ] ; then
# break
#fi
echo "zipping file "$filename""
if test $i -eq 0 ; then
zip -2 test.zip $filename
continue
fi
zip -u -2 test.zip ${filename} # 所有文件压缩
done
echo "------End-----"
unzip命令解压文件
unzip命令用于解压.zip压缩文件
unzip [-cflptuvz][-agCjLMnoqsVX][-P <密码>][.zip文件][文件][-d <目录>][-x <文件>] 或 unzip [-Z]
参数含义
- -d 将压缩文件解压到指定目录下 unzip -d dirname *.zip
- -n 解压时不覆盖已存在的文件
- -o 解压时覆盖已存在的文件,且无需用户确认
- -v 查看压缩文件的详细信息,包括压缩文件中包含的文件大小、文件名以及压缩比等,但并不做解压操作
- -t 测试压缩文件是否损坏,但是不解压文件
- -x 解压文件,但是-x指定的文件会跳过,不进行解压
示例代码
#! /bin/bash
unzip -d ./unzipdir ./test.zip # 指定解压目录
unzip ./test.zip -x file1 file2 # 不解压file1 file2
tar命令
tar命令可用于压缩和解压文件
参数含义:
- -tf 用于在不解压包的情况下,查看压缩文件内包含哪些文件和目录(有用)
- -zcvf 将文件打包为*.tar.gz格式的压缩文件
- -zxvf 对压缩包进行解压
- -C 将压缩包解压到指定的目录,通过-C来指定解压目录
tar -zxvf test.tar.gz -C /home/user/test
tar -zcvf
命令在压缩文件的时候,如果文件带有目录,则会将文件的目录结构压缩至压缩文件中,如果需要去除文件携带的目录,仅仅将文件进行压缩归档至同一目标目录下,则需要使用-C
参数,进行临时目录切换,命令格式如下:
tar -zcvf test.zip -C/home/user/nero mut.txt -C/home/user/hug pik.dat
此时压缩文件中不在有文件携带的目录
xz命令
xz是POSIX平台开发的高效压缩解压工具,它使用LZMA2压缩算法,生成的压缩文件比POSIX平台传统的gzip,bzip2的压缩率更低,且压缩速度更快。
xz [OPTION]... [FILE]...
参数含义:
- -z 压缩文件
- -d 解压文件
- -t 测试压缩文件的完整性
- -l 显示压缩文件的相关信息
- -k 压缩或者解压缩时不删除源文件(保留源文件)
- -e 常使使用更多的时CPU时间来提高压缩率,不会影响解压所需的内存大小(extreme)
- -7 (1...9),压缩预设,默认值6,如果使用更高的值,需要考虑到所占的内存大小
- -T 指定最多使用的线程数,默认线程数为1,如果设置为0,使用与处理器内核一样多的线程
- -q 安静模式,不显示压缩信息
xz命令仅限于压缩文件
cp命令
cp命令用于将一个或者多个文件,或者目录复制到指定位置,也可用于文件的备份
参数含义
- -f 若目标文件已经存在,则会直接将目标文件进行覆盖
- -i 若目标文件已经存在,则会询问是否进行覆盖
- -p 保留源文件或者源目录的所有属性
- -r 递归复制,用于文件夹拷贝
- -b 覆盖已存在的目标文件时,将目标文件进行备份
- -v 详细显示cp命令执行的操作过程
- -d 当复制符号链接的时候,把目标文件或者目录也建立为符号链接,并将其指向源文件或者源目录所连接的文件或者目录
- -l 对源文件建立硬连接,而非复制文件
- -s 对源文件建立软连接,而非复制文件
- -a 等价于-pdr
find命令
find命令是Linux中强大的搜索命令,可以按照文件名,文件权限,文件大小,时间,inode号等信息搜索文件,因为find命令是直接在硬盘中进行搜索,因此对其指定合适的搜索范围特别重要,如果搜索的范围过大,就会导致消耗较大的系统资源。
命令格式:
find path -option [ -print ] [ -exec -ok command ] {} ;
path : 搜索路径
option : 搜索选项
选项
- -name 按照文件名进行搜索
- -iname 按照文件名进行搜索,不区分大小写
- -inum 按照inode号进行搜索
- -size[+-] 按照文件大小进行搜索, +表示大于size的文件,-表示小于size的文件,(M, k)
- -type 按照特定的类型查找文件, d-目录 f-一般文件 l-符号链接 s-套接字文件 c-字符设备 b-块设备
- -print 将搜索结果输出到标准输出
- -ctime 按照文件创建时间进行搜索 [+-n]
- -mtime 按照文件更改时间进行搜索 [+-n]
- -atime 按照文件访问时间进行搜索 [+-n]
- -perm 按照文件权限进行搜索
按照文件类型搜索,可选的文件类型如下所示
符号 | 含义 |
---|---|
d | 搜索目录 |
f | 搜索一般文件 |
l | 搜索链接文件 |
s | 搜索套接字文件 |
c | 搜索字符设备文件 |
b | 搜索块设备文件 |
按照文件大小搜索,表示文件大小的可选单位如下所示:
符号 | 含义 |
---|---|
b | 块 512字节 |
c | 字节 |
w | 字 |
k | 千字节 |
M | 兆字节 |
G | 吉字节 |
按照修改时间,创建时间,访问时间进行修改,指定时间时可通过+-来指定特定范围的时间,具体使用方式如下所示:
符号 | 含义 |
---|---|
-n | 表示从当前时间算起,n天以内 |
n | 表示从当前时间算起,第n年 |
+n | 表示从当前时间算起,第n天以前 |
示例代码
find ./ -name "*.txt" # 查找后缀名为.txt的文件
find ./ -type f # 查找普通文件
wc命令
Linux自带的工具,可以统计文件中文本的行数,字符数,以及字数.
参数含义:
- -c 统计文件中有多少个字符
- -w 统计文件中有多少个字
- -l 统计文件中行数
wc -c ./test.txt
top命令
top
命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况,类似于windows的任务管理器。top
是一个动态显示过程,用户可以通过按键来刷新当前状态。如果在前台执行该命令,它将独占前台,直到用户终止程序为止。
top
命令提供了对系统处理器状态的实时监视,它会将系统中的CPU任务列表进行展示,可以按照CPU使用,内存使用,以及执行时间对任务进行排序。
参数含义:
- -d 显示信息的更新周期,默认为3s
- -p 仅仅监视指定的pid的进程
- -u 仅监视某个指定用户的进程
- -n 指定循环显示的次数
在top
命令的显示窗口中,还可以使用一些命令与其进行交互:
? | H
显示交互模式的帮助信息P
按照CPU的使用率进行任务列表排序M
按照内存的使用率进行排序N
按照PID进行排序q
退出top命令
wget命令
wget
命令是Linux下用于从指定网站下载文件的命令,支持http,https,ftp等常见协议
参数含义:
- -V : 显示
wget
版本信息 - -h : 显示帮助信息
- -b : 启动后转入后台运行
- -c : 支持断点续传
- -O : 指定输出文件
- --limit-rate=<speed> : 指定最大下载速度speed
- -4 : 仅连接到IPV4
- -6 : 仅连接到IPV6
- -o : 指定日志文件的输出路径
- -v : 显示下载过程中的详细信息
- -q : 安静模式,无信息输出
- -r : 递归下载
示例:
wget -O ./book.pdf -o ./download.log -c https://www.linuxprobe.com/docs/LinuxProbe.pdf
# 打开PDF文件
evince book.pdf
下载成功后,可通过evince
命令打开pdf文件进行阅读
查看下载的日志如下所示:
lslogins命令
lslgoins
命令可以展示出系统中现有用户的相关信息,该命令会检查wtmp和btmp日志,以及/etc/passwd
并输出用户相关的数据。
参数含义:
- -u 指定只展示特定用户的相关信息
netstat命令
netstat是一个监控TCP/IP网络的常用工具,可以显示路由表,实际的网络连接,以及网络接口设备的状态信息,以及检验本机个端口的连接情况。
参数含义:
- -t 显示TCP传输协议的连接情况
- -u 显示UDP传输协议的连接情况
- -a 显示当前的网络连接情况,TCP合UDP协议都会列出来,包括本地IP端口,远程IP端口,以及连接状态
- -n 直接显示IP地址,不显示别名
- -r 显示路由表的信息
- -p 显示建立连接的相关程序名
- -l 仅列出在Listen的服务状态
常用指令:
netstat -apn | grep "port number"
查看端口被哪个进程占用:
lsof -i:20001
原文链接: https://www.cnblogs.com/ncepubye/p/17036846.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/396322
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!