Linux常用命令实用技巧

 
1.输出文件行号
nl filename
cat –n filename
less –N filename

2.使用awk命令生成CSV文件
比如将当前目录文件的详细信息输出到CSV文件
ls -l | awk '{print($1","$2","$3","$4","$5",",$6,$7,$8","$9)}'

注:其中第6,7,8列是文件的修改时间
结果为:
total,8,,,,   ,
-rw-r--r--,1,root,root,433, Nov 17 14:30,a.txt
-rwxr-xr-x,1,root,root,711, Jan 16 13:51,b.txt
-rw-r--r--,1,root,root,32, Apr 10 13:38,c.txt
-rwxr-xr-x,1,root,root,16, Jan 17 09:18,d.txt
-rwxr-xr-x,1,root,root,496, Dec 7 12:01,e.txt
drwxr-xr-x+,2,root,root,0, Apr 4 14:24,f

以上的结果中,第一行不是需要的文件信息,需要除去,所以在awk命令中加上以“-”开头为条件,则得到的结果为所有文件的详细信息,并用逗号分割,命令为:
ls -l | awk '/^-/ {print($1","$2","$3","$4","$5",",$6,$7,$8","$9)}',得到如下结果
-rw-r--r--,1,root,root,433, Nov 17 14:30,a.txt
-rwxr-xr-x,1,root,root,711, Jan 16 13:51,b.txt
-rw-r--r--,1,root,root,32, Apr 10 13:38,c.txt
-rwxr-xr-x,1,root,root,16, Jan 17 09:18,d.txt
-rwxr-xr-x,1,root,root,496, Dec 7 12:01,e.txt

如果需要把目录信息也输出的话,则为
ls -l | awk '/^[-d]/ {print($1","$2","$3","$4","$5",",$6,$7,$8","$9)}'

若要输出指定的行,加上行号的条件就行了,比如输出第二行到第五行的数据

ls -l | awk 'NR>=2 && NR <=5 {print($1","$2","$3","$4","$5",",$6,$7,$8","$9)}'

如果需要打印出行号,则在输出中加上NR(行号)

ls -l | awk 'NR>=2 && NR <=5 {print(NR”,”$1","$2","$3","$4","$5",",$6,$7,$8","$9)}'
结果如下:

2,-rw-r--r--,1,root,root,433, Nov 17 14:30,a.txt
3,-rwxr-xr-x,1,root,root,711, Jan 16 13:51,b.txt
4,-rw-r--r--,1,root,root,32, Apr 10 13:38,c.txt
5,-rwxr-xr-x,1,root,root,16, Jan 17 09:18,d.txt

上面的行号是原始文件里的行号,如果需要打印输出部分的顺序号,则应该这样写:

ls -l | awk 'NR>=2 && NR <=5 {print($1","$2","$3","$4","$5",",$6,$7,$8","$9)}'|nl -s ,

结果如下,(注意上面命令的最后一个逗号也是命令的一部分)

    1, -rw-r--r--,1,root,root,433, Nov 17 14:30,a.txt
    2, -rwxr-xr-x,1,root,root,711, Jan 16 13:51,b.txt
    3, -rw-r--r--,1,root,root,32, Apr 10 13:38,c.txt            
    4, -rwxr-xr-x,1,root,root,16, Jan 17 09:18,d.txt

3.合并多个文件

合并几个文件到另一个新文件中
cat file1 file2 file3…fileN > newfile
将合并的文件添加到现有文件中
cat file2 file3…fileN >> file1
在上面的命令中,file2~fileN合并的结果是添加到file1的文件末尾,所以并不一定能合并到新的一行,如果需要从新的一行开始合并,一定要在file1的末尾加上一行空行
 
4.重新命名文件
mv file1 file2
将文件file1的名称命名为file2
5.查看当前正在运行的进程
ps 查看当前用户的进程。
ps –a 查看所有用户的进程。
 
6.终止进程
kill 进程号
其中进程号可以通过ps命令得到。
 
7.设置环境变量
export 变量名称=设定值
例:export myVar=”test”
也可以这样写 myVar=”test”; export myVar 结果一样。
 
用export设置的变量是一个全局变量,即该脚本的所以子进程都可以读取到所设置变量的值。
与此对应的局部变量则直接用“变量名称=设定值”的方式定义就可以了。例:myLocalVar=”test”
 
8.sed命令的使用
使用sed流编辑器对指定的文件或者通道的数据流进行修改。
例:对文件test.txt中的逗号替换成等号,其中test.txt的内容如下
1,2,3
A,B,C
 
现将修改后的文件输出到一个临时文件,然后再用临时文件覆盖原来的文件
sed s/,/=/g test.txt > tmp.txt ; cp -f tmp.txt test.txt; rm -f tmp.txt
则替换后的test.txt的内容如下:
1=2=3
A=B=C
 
上面的命令中 s/,/=/g 为正则表达式,完整的表达式为
s/正则表达式/替换字符串/标记
其中标记常用的有以下几种:
g           用替换字符串替换所有匹配的正则表达式
数字N  只替换第N个匹配的纪录
I            匹配是不去分大小写
 
例:
替换test.txt的第二个逗号
sed s/,/=/2 test.txt > tmp.txt ; cp -f tmp.txt test.txt; rm -f tmp.txt
 
替换test.txt的所有英文字母为A
sed s/[a-z]/A/gI test.txt > tmp.txt ; cp -f tmp.txt test.txt; rm -f tmp.txt
 
替换test.txt的第二个英文字母为A
sed s/[a-z]/A/2I test.txt > tmp.txt ; cp -f tmp.txt test.txt; rm -f tmp.txt
确认文件中是否有Windows文本文件换行所使用的回车符/r

sed -n -e "//x0d/p" 文件名

 

除去回车符

sed -e "s//x0d//g" old 文件名 > 新的文件名

 
9. 解压tar.gz类型文件到指定的文件夹
tar -C 文件夹 -xzvf tar.gz文件
其中
-C 解压文件的目标文件夹(必须存在)
-x 解压文件
 
例:将文件test.tar.gz解压到当前目录的dest_dir子目录下
mkdir -p dest_dir ; tar -C dest_dir -xzvf test.tar.gz
 
10.解压zip文件
unzip -n zip文件 -d 文件夹
-n 当文件存在时直接覆盖,不询问
 
例:将文件test.tar.gz解压到当前目录的dest_dir子目录下,如果dest_dir目录不存在则先创建该目录
unzip -n test.zip -d dest_dir
 
11.解压lhz文件
lha xefw=目标文件夹lzh文件
命令参数:
x,e 对指定文件进行解
命令参数可选项:
f 解压文件时强制覆盖
w=<目录> 指定解压目标目录,该目录不存在时创建它
 
例:将文件test. lhz解压到当前目录的dest_dir子目录下,如果dest_dir目录不存在则先创建该目录

lha xefw=dest_dir test.lzh

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值