Linux 基础命令知识1
2015-07-05 16:08
621 查看
生成空白文件
touch c.txt
去掉字符串前后空格
echo " a bc " | awk 'gsub(/^ *| *$/,"")'
计算变量的length长度:
var="abc";echo ${#var}
查看进行Id
pgrep java
查看进行环境变量
cat /proc/${pid}/environ
超级用户的$UID 为0
if [ $UID -nq 0 ] ;then echo "Not su";fi;
Shell
中字符串进行数学运算,使用let 、 []、 (()) 、 expr
num1=5;num2=5;let result=num1+num2;echo $result; result=$[ num1 + num2 ] result=$[ $num1 + 4 ] result=$(( num1 + num2 )) resutl=`expr 3 + 4` result=$(expr $num1 + 4) #自加 自减 简写形式 let num1++; let num1--; let num1+=4; #########以上运算方法不支持浮点数运算 我们可以使用BC来做浮点数等精密运算 echo "4 * 0.56" | bc 通过scale设置小数位个数 echo "scale=2;3/8" | bc 计算平方根 echo "sqrt(100)" | bc echo "10^10" | bc 进制转换: echo "obase=2;100"|bc echo "obase=8;100"|bc
命令:tee Copy standard input to each FILE, and also to standard output.
cat a.txt | tee -a copy.txt | cat -n # tee -a 表示是末尾追加不会覆盖 , cat -n 输出行号 ls | cat -n > out.txt # ls 结果输出给cat
数组和关联数组
array_var=(1 2 4 5) # 注意是以空格分隔 echo ${array_var[0]} # 输出第一个值 echo ${array_var[*]} #输出整个数组的值 echo ${array_var[@]} #输出整个数组的值 echo ${array_var[$index]} echo ${#array_var[*]} #输出数组长度
关联数组 , key-value
declare -A ass_array ass_array=([index1]=value1 [index2]=value2) #定义的时候赋值 ass_array[index1]=value1 echo ${ass_array[index1]}
格式输出系统当前时间点
echo $(date "+%Y-%m-%d %H:%M:%S")
Shell函数定义
function fname(){ echo $1 ,$2 # 访问参数 echo "$@" #打印所有参数 echo "$*" #打印所有参数 return 0; #返回值 } 方法调用 fname arg1 arg2
利用IFS变量分割行,答应出系统用户和用户目录
oldIFS=$IFS IFS=":" while read line ; do count=0 for item in $line; do [ $count -eq 0 ] && user=$item [ $count -eq 5 ] && homedir=$item let count++ done; echo $user" "$homedir done</etc/passwd; IFS=$oldIFS #For循环的使用 for((i=0;i<10;i++));do echo $i;done; for((i=0;i<10;i++)){ echo $i;} for i in {1..10};do echo $i;done;
Shell 算术比较
#算术比较一般放在[]中括号中, 需要注意的是在操作符和操作数之间存在一个空格,如果忘记空格会报错。 var=10;[ $var -eq 10 ] or [ $var -lt 20 ] && echo $var; result: 10 #逻辑与 -a [ $var -ne 10 -a $var -lt 20 ] #逻辑或 -o [ $var -ne 0 -o $var -gt 2 ] -gt:大于 -lt:小于 -ge:大于等于 -le:小于等于 -eq:等于
文件系统相关测试
[ -f $file_var ] #如果给定变量包含正常文件路径或者文件名,则返回true [ -x $file_var ] #如果给定文件可以执行则返回True -d: 判断目录 -e: 文件存在 -w:文件可写 -r: 文件可读 Demo: file_path="/etc/passwd";if [ -e $file_path ];then echo File exist;fi; [ -x $file_path ] && echo ~;
字符串比较
字符串进行比较时最好使用双括号,因为有时候采用单个括号会产生错误。 [[ $str1 = $str2 ]] :判断两个字符串是否相等 同样可以使用两外一个中法 [[ $str1 == $str2 ]] demo: str1="xueping.you";str2="xueping.you"; [[ $str1 = $str2 ]] && echo equal; [[ $str1 != 'test' ]] && echo not equal; 其他: [[ $str1 > $str2 ]] [[ -z $str1 ]] :判断是否是空字符串,返回真 [[ -n $str1 ]] : 如果str1是非空字符串,返回真
find 命令的使用
find . -print # 打印文件和目录中的列表 -name:根据文件名或者正则表达式匹配搜索 demo: find . -name 'export*' -print -iname: 忽略大小写 find 匹配多个条件,可以使用Or 或者 And demo:find . \( -name "*.txt" -o -name "*.csv" \) -print # \( .....\) find 会将这个视为一个整体 -path: 匹配文件路径 demo: find . \( -path "*ticket*" \) -print result: ./ticket ./ticket/saveOrderNo.txt_cp ./ticket/ticket_merchantCodeOfOnceDay.txt ./ticket/supplierId_amount_file.csv ./ticket/recharge.20160623.md5 ./ticket/bill_settle_bill_no.txt ./ticket/balance.txt ./ticket/bill_detail_order_no.txt ./ticket/uniq_key.csv ./ticket/recharge.20160623.txt ./ticket/balanceOrderNo.txt ./ticket/saveOrderNo.txt ./ticket/result_cp.txt ./tuan_ticket.csv -regex:类似于-path ,不同点是-regex使用的是正则表达式来匹配路径 demo:find . \( -regex ".*ticket.*" \) -print # 输出和上面demo输出一致 否定参数: find可以用“!”否定参数的含义。例如: demo:find . ! \( -regex ".*ticket.*" \) -print -maxdepth:搜索的最大深度 -mindepth:搜索的最小深度 -type :搜索的文件类型 d,只列出目录 f,只列出文件 l,只列出链接 demo: find . -maxdepth 2 -regex ".*ticket.*" -type f -print #UNIX|LINUX文件系统中的每个文件都有三种时间戳,-atime 用户最近一次的访问时间 -mtime 文件最后一次修改的时间 -ctime 文件数据源最后一次变更(权限或所有权)的时间 find . -type f -atime -7 -print #-表示小于 + 表示大于 单位为天 #-amin -mmin -cmin 单位基于秒 #-newer 我们可以用于指定一个参考文件,find找出所有比参考文件更新的文件 #-size 指定文件大小(单位:c k M G) -size +2K (大于)| -size -2K (小于)| -size 2K (等于) find . -type f -newer file.txt -print #-delete 删除匹配的文件 find . -type f -name "*.swap" -delete
xargs的使用
xargs 用于将stdin接收的数据重新格式化,再将其作为参数提供给其他命令。 #合并多为为单行 demo: cat testinput.txt 1 2 3 4 5 6 7 8 cat testinput.txt | xargs 1 2 3 4 5 6 7 8 cat testinput.txt | xargs -n 2 # -n用于指定每行最大个数 1 2 3 4 5 6 7 8 echo "xuepingyou,xiaoming,langlang" | xargs -d "," -n 1 #-d 用于指定一个定界符 xuepingyou xiaoming langlang
tr命令的使用方法
#tr对来自标准输入的字符进行替换,删除和压缩,tr只能通过stdin 而无法通过命令行参数接收输入。 #执行方式: tr [option] set1 set2 echo "HELLO WHO IS THIS" | tr 'A-Z' 'a-z' #大写转换为小写 #简单的加密和解密: echo 12345 | tr '0-9' '9876543210' 87654 echo 87654 | tr '9876543210' '0-9' 12345 #用tr删除字符 echo "Hello 123 world 345" | tr -d '0-9' #用tr压缩字符 echo "GNU is not UNIX . Recursive right ?" |tr -s ' ' GNU is not UNIX . Recursive right ?
sort
、uniq 命令使用 ,这两个命令一般情况下会搭配使用
simple demo:cat test.txt |sort |uniq #排序去重 sort -n file.txt #按照数字进行排序 sort -r file.txt #逆序排序 cat test.txt | sort -n -r 124 33 24 13 12 1 #可以使用sort检查文件是否已排序 sort -nrC test.txt.sort ; if [ $? -eq 0 ];then echo sorted;else echo Unsorted;fi; sorted sort -C test.txt.sort ; if [ $? -eq 0 ];then echo sorted;else echo Unsorted;fi; Unsorted #-k指定了排序应该按照哪一个key来进行排序,建指的是列号。 sort -nrk 1 data.txt #多行作为key sort -nrk 1,2 data.txt sort -u unsorted.txt #只显示唯一的行 sort unsorted.txt | uniq -u #效果和上一个命令效果一样 sort unsorted.txt | uniq -c #统计各行重复的次数 sort unsorted.txt | uniq -d #找出重复的行
分割文件和数据
#生成一个大小为100kb的测试文件 dd if=/dev/zero bs=100k count=1 of=data.file spilt -b 10k data.file
根据扩展名切分文件名
#借助%操作分来分离出"名称.扩展名"这种格式的文件名 ls | while read line;do name=${line%.*};echo $name;done; #"%"从左向右通过非贪婪找到最短的匹配结果。 "%%"则是通过贪婪查找 var="home.work.txt";echo ${var%.*}; home.work var="home.work.txt";echo ${var%%.*}; home #借助"#"操作符提取出文件名的扩展名 ls | while read line;do name=${line#*.};echo $name;done; # "#"从左到右删除 "##" 和"%" "%%"规则一直
文件之间的比较命令:comm
comm a.txt b.txt #第一列是a中出现的,第二列是b中出现的,第三列是a和b中相同的列 a b c d #-1 从输出中删除第一列 #-2 从输出中删除第二列 #-3 从输出中删除第三列 comm a.txt b.txt -1 -2 b c
相关文章推荐
- centos 扩展root根分区的大小
- linux下安装mysql
- ubuntu常用文件搜索命令 分类: linux 学习笔记 ubuntu 2015-07-05 15:40 84人阅读 评论(0) 收藏
- 《鸟哥的Linux私房菜》第五章 首次登录与在线求助man page
- Linux C single linked for any data type
- Linux C socket 封装
- kali linux虚拟wifi搭建
- linux下查看已经安装的jdk 并卸载jdk
- linux查看java jdk安装路径和设置环境变量
- Linux磁盘使用
- LINUX下JBOSS的安装及配置
- CentOS里alias命令详解
- Linux远程终端工具之Xmanager
- ubuntu权限管理常用命令 分类: linux ubuntu 学习笔记 2015-07-05 14:15 77人阅读 评论(0) 收藏
- linux驱动之按键
- linux程序设计——同时执行的线程(第十二章)
- 经验分享:在mint-linux 下进行 PHP源代码编译
- linux设备驱动程序之并发和竞态(二)
- linux md5sum用法
- Linux 下的soket编程