首页 > 系统相关 >Linux常用命令

Linux常用命令

时间:2023-01-09 14:22:35浏览次数:37  
标签:文件 常用命令 echo 命令 搜索 file 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

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压缩文件

.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

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          # 查找普通文件

标签:文件,常用命令,echo,命令,搜索,file,Linux,压缩文件
From: https://www.cnblogs.com/ncepubye/p/17036846.html

相关文章

  • Linux基础知识
    LinuxLinux系统目录结构  在Linux或者Unix系统中,所有文件和目录都被组织成以一个根节点开始的树状结构,文件系统的最顶层是由根目录开始\,根目录下既可以是文件。如果......
  • Linux 防火墙状态
    1.查看防火墙状态:active(running)即是开启状态:systemctlstatusfirewalld2.查看已开发端口命令:firewall-cmd--list-all3.新增防火墙开放端口:firewall-cmd--zone=......
  • Linux文件的S和T权限
    S与T权限上图中,S_IRWXUS_IRWXGS_IRWXO代表常见的三段权限:拥有者,同组用户,其他用户的权限,而S_ISUIDS_ISGIDS_ISVTX代表的是S权限与T权限.S权限S权......
  • 【linux】记一次疑难杂症-HTTP请求RST
    问题背景生产环境与第三方联通时,时常有丢包的情况发生,具体现象为有时候应用服务器表现为未收到报文,抓包表现为RST生产环境通讯方式为https,应用前端有SSL及F5负载,业务入......
  • 【linux】nginx: [emerg] getpwnam("nginx") failed in /usr/local/nginx/conf/nginx.
    启动nginx报错:        nginx:[emerg]getpwnam("nginx")failedin/usr/local/nginx/conf/nginx.conf:2是因为配制文件中使用的启动账户在系统中并没有找到解......
  • 人大金仓Linux安装启动报错-bash: basic_path: 未找到命令
    linux系统安装人大金仓,莫名报错,报错为找到bash命令basic_path。感觉是脚本那个位置写错,(但是这个包是官网上面的包,照常安装应该不会出现问题)去/opt/Kingbase/ES/V8/data/......
  • Linux学习笔记:终端删除键失效解决办法
    一、删除键变空格近日在安装vi时遇到报错,遂卸载了部分包进行重新安装。安装后出现终端乱序,输错命令按Backspace删除键进行删除时不能删除反而添加空格,并且导致某些快......
  • 【linux】linux Centos8系统,防火墙配置常用命令,systemctl 和firewall
    本文环境:Linux系统CentOS8.264bitCentOS7版本及以上版本较centos6有较大改动,例如:采用systemctl命令来开启service,它是服务管理中主要的工具,融合了之前service和chkconf......
  • linux指令nmcli
    参见: https://blog.csdn.net/yulin003/article/details/125561203nmcli 是NetworkManager的命令行工具。nm代表 NetworkManager,cli代表Command-Line命令行。......
  • 【linux】RabbitMQ学习-vhost 详解
    vhost本质上是一个mini版的RabbitMQ服务器,拥有自己的队列、绑定、交换器和权限控制;vhost通过在各个实例间提供逻辑上分离,允许你为不同应用程序安全保密地运行数据;vhost是......