分享
 
 
 

常用脚本命令集

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

如何用脚本实现分割文件

代码:

#!/bin/bash

if [ $# -ne 2 ]; then

echo 'Usage: split file size(in bytes)'

exit

fi

file=$1

size=$2

if [ ! -f $file ]; then

echo "$file doesn't exist"

exit

fi

#TODO: test if $size is a valid integer

filesize=`/bin/ls -l $file | awk '{print $5}'`

echo filesize: $filesize

let pieces=$filesize/$size

let remain=$filesize-$pieces*$size

if [ $remain -gt 0 ]; then

let pieces=$pieces+1

fi

echo pieces: $pieces

i=0

while [ $i -lt $pieces ];

do

echo split: $file.$i:

dd if=$file of=$file.$i bs=$size count=1 skip=$i

let i=$i+1

done

echo "#!/bin/bash" > merge

echo "i=0" >> merge

echo "while [ $i -lt $pieces ];" >> merge

echo "do" >> merge

echo " echo merge: $file.$i" >> merge

echo " if [ ! -f $file.$i ]; then" >> merge

echo " echo merge: $file.$i missed" >> merge

echo " rm -f $file.merged" >> merge

echo " exit" >> merge

echo " fi" >> merge

echo " dd if=$file.$i of=$file.merged bs=$size count=1 seek=$i" >> merge

echo " let i=$i+1" >> merge

echo "done" >> merge

chmod u+x merge'

如何查找日期为某一天的文件

代码:

#!/bin/sh

# The right of usage, distribution and modification is here by granted by the author.

# The author deny any responsibilities and liabilities related to the code.

#

OK=0

A=`find $1 -print`

if expr $3 == 1 >/dev/null ; then M=Jan ; OK=1 ; fi

if expr $3 == 2 >/dev/null ; then M=Feb ; OK=1 ; fi

if expr $3 == 3 >/dev/null ; then M=Mar ; OK=1 ; fi

if expr $3 == 4 >/dev/null ; then M=Apr ; OK=1 ; fi

if expr $3 == 5 >/dev/null ; then M=May ; OK=1 ; fi

if expr $3 == 6 >/dev/null ; then M=Jun ; OK=1 ; fi

if expr $3 == 7 >/dev/null ; then M=Jul ; OK=1 ; fi

if expr $3 == 8 >/dev/null ; then M=Aug ; OK=1 ; fi

if expr $3 == 9 >/dev/null ; then M=Sep ; OK=1 ; fi

if expr $3 == 10 >/dev/null ; then M=Oct ; OK=1 ; fi

if expr $3 == 11 >/dev/null ; then M=Nov ; OK=1 ; fi

if expr $3 == 12 >/dev/null ; then M=Dec ; OK=1 ; fi

if expr $3 == 1 >/dev/null ; then M=Jan ; OK=1 ; fi

if expr $OK == 1 > /dev/null ; then

ls -l --full-time $A 2>/dev/null | grep "$M $4" | grep $2 ;

else

echo Usage: $0 path Year Month Day;

echo Example: $0 ~ 1998 6 30;

fi

如何计算当前目录下的文件数和目录数

代码:

# ls -l * |grep "^-"|wc -l ---- to count files

# ls -l * |grep "^d"|wc -l ----- to count dir

如何只列子目录?

代码:

ls -F | grep /$ 或者 alias sub = "ls -F | grep /$"(linux)

ls -l | grep "^d" 或者 ls -lL | grep "^d" (Solaris)

如何实现取出文件中特定的行内容

代码:

如果你只想看文件的前5行,可以使用head命令,

如: head -5 /etc/passwd

如果你想查看文件的后10行,可以使用tail命令,

如: tail -10 /etc/passwd

你知道怎么查看文件中间一段吗?你可以使用sed命令

如: sed -n '5,10p' /etc/passwd 这样你就可以只查看文件的第5行到第10行。

如何查找含特定字符串的文件

代码:

例如查找当前目录下含有"the string you want find..."字符串的文件:

$find . -type f -exec grep “the string you want find...” {} ; -print

如何列出目录树

代码:

下面的短小的shell程序可以列出目录树, 充分利用了sed强大的模式匹配能力.

目录树形式如下:

.

`----shellp

`----updates

`----wu-ftpd-2.4

| `----doc

| | `----examples

| `----src

| | `----config

| | `----makefiles

| `----support

| | `----makefiles

| | `----man

| `----util

脚本如下:

#!/bin/sh

# dtree: Usage: dtree [any directory]

dir=${1:-.}

(cd $dir; pwd)

find $dir -type d -print | sort -f | sed -e "s,^$1,," -e "/^$/d" -e "s,[^/]*/([^/]*)$,`----1," -e "s,[^/]*/,| ,g"

如何实现取出文件中特定的列内容

代码:

我们经常会遇到需要取出分字段的文件的某些特定字段,例如/etc/password就是通过“:”分隔各个字段的。可以通过cut命令来实现。例如,我们希望将系统账号名保存到特定的文件,就可以:

cut -d: -f 1 /etc/passwd > /tmp/users

-d用来定义分隔符,默认为tab键,-f表示需要取得哪个字段。

当然也可以通过cut取得文件中每行中特定的几个字符,例如:

cut -c3-5 /etc/passwd

就是输出/etc/passwd文件中每行的第三到第五个字符。

-c 和 -f 参数可以跟以下子参数:

N 第N个字符或字段

N- 从第一个字符或字段到文件结束

N-M 从第N个到第M个字符或字段

-M 从第一个到第N个字符或字段

在vim中实现批量加密

代码:

密码中还是不能带空格,不管了,能加密就好,先这么用着。

============================================================

#!/bin/bash

# Encrypt file with vim

if (test $# -lt 2) then

echo Usage: decrypt password filename

else

vim -e -s -c ":set key=$1" -c ':wq' $2

echo "$2 encrypted."

fi

============================================================

[weeder@SMTH weeder]$ for file in *.txt ; do encrypt test $file ; done

test2.txt encrypted.

test4.txt encrypted.

test9.txt encrypted.

kick.txt encrypted.

echo "$2 encrypted."

fi

[weeder@SMTH weeder]$ for file in *.txt ; do encrypt test $file ; done

test2.txt encrypted.

test4.txt encrypted.

test9.txt encrypted.

kick.txt encrypted.

too_old.txt encrypted.

too_old_again.txt encrypted.

bg5.txt encrypted.

[weeder@SMTH weeder]$

$@等特定shell变量的含义

代码:

在shell脚本的实际编写中,有一些特殊的变量十分有用:

$# 传递到脚本的参数个数

$* 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个

$$ 脚本运行的当前进程ID号

$! 后台运行的最后一个进程的进程ID号

$@ 与$#相同,但是使用时加引号,并在引号中返回每个参数

$- 显示shell使用的当前选项,与set命令功能相同

$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

如何使程序的执行结果同时定向到屏幕和文件

代码:

program_name |tee logfile

这样程序执行期间的显示都记录到logfile同时显示到标准输出(屏幕)。

如何用sendmail给系统所有用户送信

代码:

首先在aliases文件里面建立一个alias:

alluser: :include:/etc/mail/allusers

并执行newaliases使之生效,然后在/etc/mail/allusers里面列出所有用户,可以使用下面的命令:

awk -F: '$3 > 100 { print $1 }' /etc/passwd > /etc/mail/allusers

如何查找某条命令的相关库文件

代码:

在制作自己的发行版时经常需要判断某条命令需要哪些库文件的支持,以确保指定的命令在独立的系统内可以可靠的运行。

在Linux环境下通过ldd命令即可实现,在控制台执行:

ldd /bin/ls

即可得到/bin/ls命令的相关库文件列表。

如何使用host命令获得更多信息

代码:

Host能够用来查询域名,然而它可以得到更多的信息。host -t mx linux.com可以查询出Linux.com的MX记录,以及处理Mail的Host的名字。Host -l linux.com会返回所有注册在linux.com下的域名。host -a linux.com则会显示这个主机的所有域名信息。

如何停止终端多个进程

代码:

以下是脚本:

echo "系统当前用户"

echo "---------------"

who | awk '{print $2}'

echo "---------------"

echo "输入要杀死终端的终端号:"

read $TTY

kill -9 ${K}=`ps -t $TTY | grep [0-9] | awk '{print $1}'`

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有