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