ls命令
ls是list files的缩写,通过 ls 命令不仅可以查看 linux 文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等
#语法
ls [-alrtAFR] [name...]
[-alrtAFR]
-a 显示所有文件及目录 (. 开头的隐藏文件也会列出)
-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
-r 将文件以相反次序显示(原定依英文字母次序)
-t 将文件依建立时间之先后次序列出
-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
-R 若目录下有文件,则以下之文件亦皆依序列出
[name...]
操作文件目录 不选默认当前
使用
#显示当前目录文件
ls
#显示当前目录所有文件(包括隐藏文件)
ls -a
#显示bin目录下文件
ls /bin
#显示bin目录下所有文件
ls -a /bin
#显示当前文件并列出绝对路径(不包含隐藏文件)
ls | sed "s:^:`pwd`/:"
#按大小反序显示文件详细信息
ls -lrS
#列出当前目录中所有以"s"开头的目录的详细内容
ls -a s*
#列出当前目录中所有以"sh"结尾的目录的详细内容
ls -a *.sh
#其他命令可根据参数自由组合
cd命令
cd是change directory的缩写 切换文件目录的语法
#语法
cd [目录名]
使用
#进入home目录
cd ~
#进入上一次工作路径
cd -
#进入上级目录
cd ../
#把上个命令的参数作为cd参数使用
cd !$
pwd命令
pwd是print working directory缩写 用于查看当前工作目录路径
#查看当前路径
pwd
rm命令
rm是remove的缩写 删除一个目录中的一个或多个文件或目录,如果没有使用 -r 选项,则 rm 不会删除目录。如果使用 rm 来删除文件,通常仍可以将该文件恢复原状
#语法
rm [选项] 文件…
使用
#删除 1.txt文件 有提示
rm 1.txt
#删除当前目录.log文件 删除前逐一询问确认
rm -i ./*.log
#删除demon目录和目录中所有文件 并且不确认
rm -rf demon
#删除以f开头的文件
rm -- f*
mkdir命令
mkdir是make directories的缩写 用于创建目录
#语法
mkdir [选项] 目录
-m: 对新建目录设置存取权限,也可以用 chmod 命令设置;
-p: 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不在的目录,即一次可以建立多个目录。
使用
#创建目录demon
mkdir demon
#创建demon目录并且给777权限
mkdir -m 777 demon
#在tmp目录下创建demon/test目录
mkdir -p /tmp/demon/test
rmdir命令
rmdir是remove directories的缩写 用于删除目录 但是从一个目录中删除一个或多个子目录项,删除某目录时也必须具有对其父目录的写权限 不能删除非空目录
#语法
rmdir 目录
使用
#删除demon目录
rmdir demon
#删除/demon/test 删除test后使demon也成空目录时可一起删除
rmdir -p /demon/test
mv命令
mv是move的缩写 用于移动文件或修改文件名
#语法
rm 文件或者目录 文件或者目录
当第二个参数为目录时,第一个参数可以是多个以空格分隔的文件或目录,然后移动第一个参数指定的多个文件到第二个参数指定的目录中
使用
#重命名test.txt 为 test1.txt
rm test.txt test1.txt
#将文件 test1.txt,test2.txt,test.txt 移动到根的 test 目录中
mv test1.txt test2.txt test.txt /test
#移动当前文件夹下的所有文件到上一级目录
mv * ../
cp命令
cp是copy的缩写 用于复制文件
#语法
cp 选项
-i 提示
-r 复制目录及目录内所有项目
-a 复制的文件与原文件时间一样
使用
#复制 a.txt 到 test 目录下,保持原文件时间,如果原文件存在提示是否覆盖
cp -ai a.txt test
#为 a.txt 建立一个链接(快捷方式)
cp -s a.txt link_a.txt
tail命令
用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
#语法
tail 选项
-f 循环读取(常用于查看递增的日志文件)
-n<行数> 显示行数(从后向前)
使用
#查看日志
tail -f ping.log
#查看后20行
tail -n 20 print.log
#截取后20行保存到prin2.log
tail -n 20 print.log > print2.log
cat 命令
cat 主要用于 一次显示整个文件 从键盘创建一个文件 将几个文件合并为一个文件
使用
#一次显示整个文件
cat filename
#从键盘创建一个文件
cat > filename
#将几个文件合并为一个文件
cat file1 file2 > file
-b 对非空输出行号
-n 输出所有行号
which 命令
在 linux 要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索:
which 查看可执行文件的位置。
whereis 查看文件的位置。
locate 配合数据库查看文件位置。
find 实际搜寻硬盘查询文件名称。
使用 which:
#查看ls命令位置
which ls
#查看bt(宝塔控制面板)命令位置
find 命令
find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示
#语法
find path -option [-print] [-exec -ok command] {} \;
#说明
#根据下列规则判断 path 和 expression,在命令列上第一个-(),!之前的部份为path,之后的是expression。
#如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。
#-P、-L、-H控制软连接的对待方式,不常用
-name filename,-iname filename #查找名为filename的文件。iname 会忽略大小写
-perm #按执行权限查找
-user username #按文件属主(例如root)来查找
-group groupname #按组来查找
-mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime -n +n #按文件访问时间来查找文件,-n指n天以内,+n指n天以前
-ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-cnewer file #比文件 file 更新的文件
-anewer file #比文件 file 更晚被读取过的文件
-type b/d/c/p/l/f #查是块设备(b)、目录(d)、字符设备(c)、管道(p)、符号链接(l)、普通文件(f)
-size n[c] #查长度为n块[或n字节]的文件,n单位b代表512位元组的区块c表示字元数k表示kilo bytes
-mount,-xdev #只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
使用
#查找 /etc目录下password文件
find /etc/ -name password
#查找 /etc目录下conf文件
find /etc/ -name *.conf
#查找 /etc目录下conf文件权限为644(用户可读写,组用户可读,其他可读)
find /etc/ *.conf -perm 644
grep 命令
Linux grep命令用于查找文件里符合条件的字符串。
grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为"-",则grep指令会从标准输入设备读取数据。
#语法
grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]
-a或--text 不要忽略二进制的数据。
-A<显示列数>或--after-context=<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之后的内容。
-b或--byte-offset 在显示符合范本样式的那一列之前,标示出该列第一个字符的位编号。
-B<显示列数>或--before-context=<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前的内容。
-c或--count 计算符合范本样式的列数。
-C<显示列数>或--context=<显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
-d<进行动作>或--directories=<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
-e<范本样式>或--regexp=<范本样式> 指定字符串做为查找文件内容的范本样式。
-E或--extended-regexp 将范本样式为延伸的普通表示法来使用。
-f<范本文件>或--file=<范本文件> 指定范本文件,其内容含有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每列一个范本样式。
-F或--fixed-regexp 将范本样式视为固定字符串的列表。
-G或--basic-regexp 将范本样式视为普通的表示法来使用。
-h或--no-filename 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
-H或--with-filename 在显示符合范本样式的那一列之前,表示该列所属的文件名称。
-i或--ignore-case 忽略字符大小写的差别。
-l或--file-with-matches 列出文件内容符合指定的范本样式的文件名称。
-L或--files-without-match 列出文件内容不符合指定的范本样式的文件名称。
-n或--line-number 在显示符合范本样式的那一列之前,标示出该列的列数编号。
-q或--quiet或--silent 不显示任何信息。
-r或--recursive 此参数的效果和指定"-d recurse"参数相同。
-s或--no-messages 不显示错误信息。
-v或--revert-match 反转查找。
-V或--version 显示版本信息。
-w或--word-regexp 只显示全字符合的列。
-x或--line-regexp 只显示全列符合的列。
-y 此参数的效果和指定"-i"参数相同。
--help 在线帮助。
awk 命令
AWK是一种处理文本文件的语言,是一个强大的文本分析工具。
之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的Family Name的首字符。
#语法
awk [选项参数] 'script' var=value file(s)
或
awk [选项参数] -f scriptfile var=value file(s)
# 参数
-F fs or --field-separator fs
指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。
-v var=value or --asign var=value
赋值一个用户定义变量。
-f scripfile or --file scriptfile
从脚本文件中读取awk命令。
-mf nnn and -mr nnn
对nnn值设置内在限制,-mf选项限制分配给nnn的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。
-W compact or --compat, -W traditional or --traditional
在兼容模式下运行awk。所以gawk的行为和标准的awk完全一样,所有的awk扩展都被忽略。
-W copyleft or --copyleft, -W copyright or --copyright
打印简短的版权信息。
-W help or --help, -W usage or --usage
打印全部awk选项和每个选项的简短说明。
-W lint or --lint
打印不能向传统unix平台移植的结构的警告。
-W lint-old or --lint-old
打印关于不能向传统unix平台移植的结构的警告。
-W posix
打开兼容模式。但有以下限制,不识别:/x、函数关键字、func、换码序列以及当fs是一个空格时,将新行作为一个域分隔符;操作符**和**=不能代替^和^=;fflush无效。
-W re-interval or --re-inerval
允许间隔正则表达式的使用,参考(grep中的Posix字符类),如括号表达式[[:alpha:]]。
-W source program-text or --source program-text
使用program-text作为源代码,可与-f命令混用。
-W version or --version
打印bug报告信息的版本。
使用
test.txt文本如下
2 this is a test
3 Are you like awk
This's a test
10 There are orange,apple,mongo
awk '{[pattern] action}' {filenames} # 行匹配语句 awk '' 只能用单引号
#每行按空格或TAB分割,输出文本中的1、4项
awk '{print $1,$4}' test.txt
#格式化输出
awk '{printf "%-8s %-10s\n",$1,$4}' test.txt
awk -F #-F相当于内置变量FS, 指定分割字符
#使用","分割
awk -F, '{print $1,$2}' test.txt
#或者使用内建变量
awk 'BEGIN{FS=","} {print $1,$2}' test.txt
#使用多个分隔符.先使用空格分割,然后对分割结果再使用","分割
awk -F '[ ,]' '{print $1,$2,$5}' test.txt
运算符
运算符 | 描述 |
---|---|
= += -= *= /= %= ^= **= | 赋值 |
?: | C条件表达式 |
|| | 逻辑或 |
&& | 逻辑与 |
~ ~! | 匹配正则表达式和不匹配正则表达式 |
< <= > >= != == | 关系运算符 |
空格 | 连接 |
+ - | 加,减 |
* / & | 乘,除与求余 |
+ - ! | 一元加,减和逻辑非 |
^ *** | 求幂 |
++ -- | 增加或减少,作为前缀或后缀 |
$ | 字段引用 |
in | 数组成员 |
内建变量
变量 | 描述 |
---|---|
$n | 当前记录的第n个字段,字段间由FS分隔 |
$0 | 完整的输入记录 |
ARGC | 命令行参数的数目 |
ARGIND | 命令行中当前文件的位置(从0开始算) |
ARGV | 包含命令行参数的数组 |
CONVFMT | 数字转换格式(默认值为%.6g)ENVIRON环境变量关联数组 |
ERRNO | 最后一个系统错误的描述 |
FIELDWIDTHS | 字段宽度列表(用空格键分隔) |
FILENAME | 当前文件名 |
FNR | 同NR,但相对于当前文件 |
FS | 字段分隔符(默认是任何空格) |
IGNORECASE | 如果为真,则进行忽略大小写的匹配 |
NF | 当前记录中的字段数 |
NR | 当前记录数 |
OFMT | 数字的输出格式(默认值是%.6g) |
OFS | 输出字段分隔符(默认值是一个空格) |
ORS | 输出记录分隔符(默认值是一个换行符) |
RLENGTH | 由match函数所匹配的字符串的长度 |
RS | 记录分隔符(默认是一个换行符) |
RSTART | 由match函数所匹配的字符串的第一个位置 |
SUBSEP |