Linux 基础命令知识1

生成空白文件
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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值