Linux常用命令

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

Linux常用命令

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

Linux常用命令

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                    # 删除环境变量

Linux常用命令

文件压缩与解压命令

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

Linux常用命令

Linux常用命令

Linux常用命令

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天以前
Linux常用命令

示例代码

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文件进行阅读

查看下载的日志如下所示:

Linux常用命令

lslogins命令

lslgoins命令可以展示出系统中现有用户的相关信息,该命令会检查wtmp和btmp日志,以及/etc/passwd并输出用户相关的数据。

参数含义:

  • -u 指定只展示特定用户的相关信息
Linux常用命令

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大佬

    Linux常用命令

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/396322

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月6日 上午11:16
下一篇 2023年4月6日 上午11:16

相关推荐