readline linux linux中read函数的用法
老铁们,大家好,相信还有很多朋友对于readline linux和linux中read函数的用法的相关问题不太懂,没关系,今天就由我来为大家分享分享readline linux以及linux中read函数的用法的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!
linux自动补全命令
linux系统下怎么自动补全命令呢,下面是具体介绍。
输入“命令的前几个字符”,之后按TAB键即可自动补全命令。比如,想更改密码,但只记得这个命令前几个字母是pass。这时候,按Tab键,shell就自动输出 passwd命令,十分方便。
拓展资料:
在shell命令行可以使用“Tab”键自动补全命令或文件名,这种功能其实可以在shell脚本中实现,使得使用“Tab”键可以自动补全自定义的shell函数,相关命令有三个,compgen、complete和compopt。
1、compgen:
compgen [option] [word]
compgen命令根据option生成与word可能匹配的补全,并打印到标准输出中,这些选项可以是内建命令complete所支持的任何选项,但不能是“-p”和“-r”,如果使用了“-F”或“-C”,则由可编程补全功能设置的各个shell变量虽然仍可以使用,但它们的值却没什么作用。补全条目以相同的方式生成,就好像可编程补全代码用相同的补全选项直接生成了补全条目一样,如果指定了word,则只显示与之匹配的条目。
2、complete:
complete [-abcdefgjksuv] [-o comp-option] [-DE] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] name [name...]
complete-pr [-DE] [name...]
complete命令指定如何对各个名称进行补全。如果指定了选项“-p”或者没有指定任何选项,则把已有的补全方法用一种可以重新作为作为输入的格式打印出来。选项“-r”用以删除指定名称的补全方法,不指定名称时删除所有的名称的补全方法。选项“-D”的意思是其后的选项和动作将应用到默认命令补全,也就是说之前未定义的补全命令也可以补全。选项“-E”的意思是其后的选项和动作将应用到空命令补全,也就是说补全空白行。对于选项“-G”、“-W”、“-X”、“-P”和“-S”,应该使用括号进行保护,防止补全开始前被扩展。
“-o bashdefault”:如果没有生成补全条目,就使用bash默认的其它补全。
“-o default”:如果没有生成补全条目,就使用“readline”默认的文件名补全。
“-o dirnames”:如果没有生成补全条目,就进行目录名补全。
“-o filenames”:告诉“readline”生成文件名,以便进行与文件名相关的处理,例如在目录名后面加上斜杠,引用特殊字符,去掉行尾的空格,目的是用于shell函数。
“-o noquote”:告诉“readline”不引用文件名,默认会进行引用。
“-o nospace”:告诉“readline”在补全的名称后不添加空格,默认添加空格。
“-o plusdirs”:生成补全条目之后,还会进行目录名补全并把结果添加到其它动作得到的结果中。
“-A alias”:别名,同选项“-a”。
“-A arrayvar”:数组变量名。
“-A binding”:“readline”键绑定名。
“-A builtin”:shell内建命令名,同选项“-b”。
“-A command”:命令名,同选项“-c”。
“-A directory”:目录名,同选项“-d”。
“-A disabled”:不可用的shell内建命令名。
“-A enabled”:可用的shell内建命令名。
“-A export”:导出的shell变量名,同选项“-e”。
“-A file”:文件名,同选项“-f”。
“-A function”:shell函数名。
“-A group”:组名,同选项“-g”。
“-A helptopic”:内建命令help支持的帮助主题。
“-A hostname”:主机名,从shell环境变量HOSTFILE中获取。
“-A job”:作业名,同选项“-j”。
“-A keyword”:shell保留字,同选项“-k”。
“-A running”:正在运行的作业名。
“-A service”:服务名,同选项“-s”。
“-A setopt”:内建命令set的选项“-o”可用的参数。
“-A shopt”:内建命令shopt可接受的选项名。
“-A signal”:信号名。
“-A stopped”:暂停的作业名。
“-A user”:用户名,同选项“-u”。
“-A variable”:所有的shell变量名,同选项“-v”。
“-C command”:在子shell中执行命令,并把其结果作为补全条目。
“-F function”:在当前的shell环境中执行函数function,执行时,参数“$1”表示那个参数正在进行补全的命令名,参数“$2”表示补全的名称,参数“$3”表示补全的名称前面的单词,表示结束执行时,从数组变量COMPREPLY中获取补全条目。
“-G globpat”:使用文件名扩展模式globpat进行扩展以生成可能的补全条目。
“-P prefix”:在所有的选项应用到补全结果后,在结果前添加前缀prefix。
“-S suffix”:在所有的选项应用到补全结果后,在结果后添加后缀suffix。
“-W wordlist”:使用特殊变量IFS中的字符拆分单词列表wordlist,并扩展拆分后的每个单词,结果中与待补全单词
匹配的条目就是补全条目。
“-X filterpat”:filterpat是进行文件名扩展时使用的模式,它作用于通过前面的选项和参数生成的补全列表,并把每个与过滤模式匹配的条目删除,模式中前导的叹号表示否定,这时会删除与过滤模式不匹配的条目。
3、compopt:
compopt [-o option] [-DE] [+o option] [name]
compopt命令修改每个名称指定的补全选项,如果没有指定名称则修改当前执行的补全的选项,如果也没有指定选项,则显示每个名称或当前补全所用的选项。选项可能的取值就是上面的内建命令complete的有效选项。
deb怎么安装(deb怎么安装到linux)
1、怎么安装deb软件?2、steamdeb文件如何安装?3、苹果ios越狱后deb文件怎么安装?4、deb辅助怎么做?5、怎样在电脑安装deb格式的cydia插件?6、Debian怎么安装驱动程序?7、wps下载deb还是rpm格式?8、ubuntu怎么安装readline?怎么安装deb软件?
deb包是debian,ubuntu等LINUX发行版的软件安装包,是类似于rpm的软件包,而非debian,ubuntu系统不推荐使用deb软件包,因为要解决软件包依赖问题,安装也比较麻烦。
1.一般在此类发行版中可以直接双击安装。
2.手动安装。
如果您喜欢使用终端,您需要管理员权限来安装一个.deb文件。
打开终端后,输入: sudo dpkg-i package_file.deb要卸载一个.deb文件,在您的软件包管理器中取消选中它。
或者在终端中,输入: sudo dpkg-r package_name例如安装QQ,文件名为linuxqq_v1.0-preview3_i386.deb可运行: sudo dpkg-i linuxqq_v1.0-preview3_i386.deb
steamdeb文件如何安装?
去官网上点击有上角的安装steam客户端,然后会下载一个deb的安装包,在终端中执行sudo dpkg-i***.deb就可以了,不过前提是你的系统是ubuntu系统,否则的花就去系统中的软件中心搜索steam安装就可以了!!
苹果ios越狱后deb文件怎么安装?
ioS设备越狱后可借助第三方助手软件安装deb格式的插件,第三方助手有爱思助手、pp助手、iTools等,这里已iTools为例演示一下操作过程(其助手同理):
第一步,在电脑安装iTools,将iOS设备通过数据线连接至电脑;
第二步,使用iTools进入iOS设备的文件管理页面;
第三步,将deb包导入Cydia安装目录,重启一至两次手机便可将deb插件安装。
deb辅助怎么做?
制作deb文件需要有dpkg-deb命令,Ubuntu/Debian系统自带此命令,越狱过的 iPhone OS也有此命令,Mac OS X下需安装Fink,Windows下需安装 Cygwin。以上系统中,iPhone OS最适合用来打包deb文件,因为iPhone OS上的用户/组设置与所需要的设置是完全一致的。但因为iPhone/iPod Touch毕竟是手持设备,处理性能比不上电脑,在打包体积较大的deb文件时需要很长时间,有可能会导致失去连接或者SpringBoard崩溃。而且在WinSCP中涉及文本修改的部分,如果文本含有中文的话,编码是个问题(不会保存为UTF-8)。Ubuntu/Debian是 deb文件系统的原生系统,在兼容性和处理性能上最好,但问题在于,Ubuntu/Debian没有 iPhone OS上的一些用户和组,最典型的就是wheel、mobile组和mobile用户。Mac OS X的问题跟 Ubuntu/Debian差不多,没有mobile用户/组,而且需要装 Fink才能支持 deb。Windows的问题最多,Cygwin体积超大不说,使用起来还很麻烦,加上 Windows的文件系统和 Unix标准完全不同,且 Windows下会面临更严重的编码问题,所以不推荐用 Windows来打包。不管是哪个系统,打包 deb的方法是一样的,只是在某些地方对于某些系统需...制作deb文件需要有dpkg-deb命令,Ubuntu/Debian系统自带此命令,越狱过的 iPhone OS也有此命令,Mac OS X下需安装Fink,Windows下需安装 Cygwin。以上系统中,iPhone OS最适合用来打包deb文件,因为iPhone OS上的用户/组设置与所需要的设置是完全一致的。但因为iPhone/iPod Touch毕竟是手持设备,处理性能比不上电脑,在打包体积较大的deb文件时需要很长时间,有可能会导致失去连接或者SpringBoard崩溃。而且在WinSCP中涉及文本修改的部分,如果文本含有中文的话,编码是个问题(不会保存为UTF-8)。Ubuntu/Debian是 deb文件系统的原生系统,在兼容性和处理性能上最好,但问题在于,Ubuntu/Debian没有 iPhone OS上的一些用户和组,最典型的就是wheel、mobile组和mobile用户。Mac OS X的问题跟 Ubuntu/Debian差不多,没有mobile用户/组,而且需要装 Fink才能支持 deb。Windows的问题最多,Cygwin体积超大不说,使用起来还很麻烦,加上 Windows的文件系统和 Unix标准完全不同,且 Windows下会面临更严重的编码问题,所以不推荐用 Windows来打包。不管是哪个系统,打包 deb的方法是一样的,只是在某些地方对于某些系统需要特别注意。一个 deb安装包由两个部分组成,一个是安装控制/识别信息,另外一个就是实际的程序文件。用7-zip或Linux下的存档管理器打开 deb文件,其中安装控制/识别信息储存在 control.tar.gz里面,而 data.tar.xxx则储存了程序数据。解包deb文件引用有时候不是需要制作一个全新的deb,而是需要修改现有的deb,那么第一步就是解包。假设deb的文件名是abc_1.0.deb那么解包命令是复制代码dpkg-deb-x abc_1.0.deb tmp和复制代码dpkg-deb-e abc_1.0.deb tmp/DEBIAN第一个命令是用于解压出实际数据到tmp目录下,后一个命令是解压出安装控制脚本到tmp/DEBIAN目录下,此处必须是大写的DEBIAN。可以看到在tmp目录下出现了实际数据和DEBIAN目录。以dpkg-deb-x和- e命令解包deb会保留文件的属性/权限/用户/组等信息。关于dpkg-deb的命令,可以输入复制代码dpkg-deb--help进入DEBIAN目录,可以看到有一个control文件,无后缀名,这个文件就是用来记录deb的安装信息。有时候还可以看到postinst,preinst,prerm,postrm,extrainst_这些文件,这些文件是deb安装的时候执行的脚本(类似于Windows下的批处理文件)。另外一种解包deb的方法就是用7-zip或者存档管理器之类的软件直接解包到指定目录,但这样不会保留文件的属性/权限/用户/组等信息,因此除非这些信息不重要,或者这些信息是通过脚本来设置,否则不推荐使用该种方法。如果只是要提取某些文件的话倒是可以用,省事一些。准备打包deb的目录/文件引用如果是解包已有的deb,那么目录已经配置好了。如果是新建一个deb,需要有一个主目录,这里以tmp为例,在tmp目录下新建一个目录,DEBIAN。完成deb数据配置引用将程序文件放在tmp目录下。放置规则是,假如在iPhone OS上一个文件是/Applications/ABC.app/ABC,那么就在 tmp目录下依次新建目录Applications,ABC.app,然后把ABC放在ABC.app下。其余文件和目录也是一样的放置。这里要注意的是文件的属性/权限/用户/组的问题,当然前提是知道文件的属性和权限等信息。通常来说,可执行文件,比如应用程序的可执行文件,脚本等,属性需设为0755或更高(0775或0777),/var/mobile/下的绝大部分文件/文件夹的用户/组需设为mobile等。要设置文件/文件夹的权限/属性,使用命令复制代码chmod ABCD XXX这样的格式,ABCD为需要的属性/权限,比如0644,0755等,一般来说,可行性文件需要设为0755(0775和0777大部分情况下是用不上的,有些特殊的需要设为4755等),其它文件默认就是0644(不可执行),XXX是文件名,可以加上路径。要设置文件/文件夹的用户/组,使用命令复制代码chown user:group XXXX其中user是需要设置的用户,group是组。最常用的是root:wheel和mobile:mobile。注意:1.如果当前用户是非root帐户,如果要将文件的用户/组设为root,需要使用sudo命令来提示权限。2.如果要递归设置以上信息,可以使用-R参数。比如要将tmp目录下的所有子目录和文件设为0755及root:wheel,可以使用命令复制代码chmod-R 0755 tmpchown-R root:wheel tmp关于文件/文件夹的属性/权限/用户/组的更多说明:因为deb打包是先将所有的文件/文件夹归档为tar文件之后再压缩,因此文件/文件夹的属性/权限/用户/组这些信息会被保留下来,因此如果直接设置好了以后再打包deb的话就不需要通过postinst之类的控制脚本来设置权限等信息。如果无法直接设置属性/用户/组等信息,通常需要在postinst脚本里加入设置属性/权限/用户/组的命令如果deb中的目录是在iPhone OS本身就有的,那么不需要另外设置属性/权限/用户/组等,即使现有的和需要的不一样。因为deb安装不会替换原有文件夹的数据。比如/Applications目录是root:admin,而要打包的deb中该目录是ABC:DEF,那么不需要修改ABC:DEF尤其要注意的是mobile:mobileUbuntu/Debian上虽然没有wheel组,但是root:root在iPhone上会自动转为root:wheel,所以如果是准备将root:root变为root:wheel,那么可以保留root:root就可以了。理论上来说,在无安装脚本设置用户/组的前提下,如果不涉及mobile:mobile的用户/组,全部操作都可以直接在Ubuntu/Debian和Mac OS X上完成
怎样在电脑安装deb格式的cydia插件?
1.将手机连接电脑打开PP助手--文件--文件系统(越狱)--路径:/var/root/Media/Cydia/AutoInstall(将deb格式的Cydia插件导入。
) 2.然后重启手机(如果没有安装成功,请再重启一次!)方法二 1.在Cydia安装iFile(文件管理)插件.(源地址:威锋源apt.weiPhone.com) 2.将手机连接电脑打开PP助手--文件--文件系统(越狱)--路径:/var/root/Media/Cydia/AutoInstall(将deb格式的Cydia插件导入。路径可以随便只要自己记住就可以。) 3.通过iFile(文件管理)打开路径:/var/root/Media/Cydia/AutoInstall(这路径是自己导入deb格式),点击软件进行安装(安装后没有请重启一次)。
Debian怎么安装驱动程序?
Ubuntu自带的硬件驱动小程序名叫jockey-gtk,Debian没有(或许可以移植,没试过,不知道行不行),它所做的事情是把命令图形化,方便新手安装驱动。
通过它安装的驱动是闭源驱动,nvidia显卡对应可以装nvidia-glx(最近发现xserver-xorg-video-nvidia这个包的squeeze版被废弃了,squeeze-backports里还有,如果加了squeeze-backports源,也可以装这个),amd/ati显卡没用过,猜测装xserver-xorg-video-ati就行。
wPS下载deb还是rpm格式?
deb格式是 Debian系统(包含 Debian和 Ubuntu)专属安装包格式,配合 APT软件管理系统,成为了当前在 Linux下非常流行的一种安装包。进入 2.x时代之后有 Cydia作者 Jay Freeman(saurik)移植到 iPhone平台上,一起的还有 APT软件管理系统。
rpm格式是什么?
rpm是linux系统安装包格式。
RPM包管理员(简称RPM,全称为The RPM Package Manager)是在Linux下广泛使用的软件包管理器。RPM此名词可能是指.rpm的文件格式的软件包,也可能是指其本身的软件包管理器(RPM Package Manager)。最早由Red Hat研制,现在也由开源社区开发。RPM通常随附于Linux发行版,但也有单独将RPM作为应用软件发行的发行版(例如Gentoo)。RPM仅适用于安装用RPM来打包的软件,当前是GNU/Linux下软件包资源最丰富的软件包类型之一。
ubuntu怎么安装readline?
其实ubuntu安装软件的方式非常简单(或者说你掌握了之后就觉得简单了)。
通常的我们可以在ubuntu软件中心和新立得软件包管理器找到自己想要的软件,直接选择就可以自动下载并安装到电脑中,不想要的时候随时可以再从那里面卸载。
这是第一种方法,也是最简便的方法。因为老大哥是Debain,所以ubuntu也支持deb快捷安装包。
如果系统的软件包管理器源里没有你想要的软件,那么你从网上下载的ubuntu专用安装包就是这个格式(Debain的也是)。下载到本地直接双击就可以安装了,不过有时会碰到依赖问题。
第三种是下载了一个压缩包,不能双击直接安装,里面都是些散装的文件。解压出来仔细找找通常能看到一个名为configure或者autogen.sh的文件,如果有,那就终端进入目录然后执行./configure或者./autogen.sh,然后照着三楼给出的步骤执行就可以了。
加入你解压开文件夹发现没有这两个文件,那么里面应该有一个名为INSTALL的文本文件,没有后缀名,打开有关于安装方式的介绍,照着那上面说的做最保险了。
第四种,*.bin文件,比如adobeair这样的软件。
这种二进制安装包只有一个文件,双击不会执行,需要到终端下面执行chmod+x[文件名]为其提升权限,然后再./[文件名]执行即可。上面的是安装包的使用方法。但是有的软件没有提供安装包,而是只有一个源码下载选项。需要注意的是这种软件一般都是不稳定版本或者根本就没有后续支持。
源码包下载下来解压能看到一个类似cmakelist的文件,如果有,那么就在该目录下终端运行cmake.(注意空格和点都要输入,该命令需要先安装了cmake软件包才可执行),接下来是自动编译,编译完成方法就同tar.gz安装包的一样了。
Linux命令每天凌晨三点执行linux命令每天
linux下编写一个shell脚本,每天0点,定时执行某一可执行程序test。刚学习shell希望大侠们给个代码参考?
创建一个新的crontab文件
向cron进程提交一个crontab文件之前,首先要设置环境变量EDITOR。编辑$HOME目录下的.profile文件,在其中加入这样一行:
EDITOR=vi;exportEDITOR
然后保存并退出。创建一个名为testcron的文件,内容如下:
#runtest.sheveryhalfday
*0,12***/home/username/test.sh
保存并退出。然后提交这个任务:
$crontabtestcron
Linuxcrontab定时执行任务命令格式与详细例子?
基本格式:
*****command
分时日月周命令
第1列表示分钟1~59每分钟用*或者*/1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
crontab文件的一些例子:
3021***/usr/local/etc/rc.d/lighttpdrestart
上面的例子表示每晚的21:30重启apache。
4541,10,22**/usr/local/etc/rc.d/lighttpdrestart
上面的例子表示每月1、10、22日的4:45重启apache。
101**6,0/usr/local/etc/rc.d/lighttpdrestart
上面的例子表示每周六、周日的1:10重启apache。
0,3018-23***/usr/local/etc/rc.d/lighttpdrestart
上面的例子表示在每天18:00至23:00之间每隔30分钟重启apache。
023**6/usr/local/etc/rc.d/lighttpdrestart
上面的例子表示每星期六的11:00pm重启apache。
**/1***/usr/local/etc/rc.d/lighttpdrestart
每一小时重启apache
*23-7/1***/usr/local/etc/rc.d/lighttpdrestart
晚上11点到早上7点之间,每隔一小时重启apache
0114*mon-wed/usr/local/etc/rc.d/lighttpdrestart
每月的4号与每周一到周三的11点重启apache
041jan*/usr/local/etc/rc.d/lighttpdrestart
一月一号的4点重启apache
名称:crontab
使用权限:所有使用者
使用方式:
crontabfile-用指定的文件替代目前的crontab。
crontab--用标准输入替代目前的crontab.
crontab-1-列出用户目前的crontab.
crontab-e-编辑用户目前的crontab.
crontab-d-删除用户目前的crontab.
crontab-cdir-指定crontab的目录。
crontab文件的格式:MHDmdcmd.
M:分钟(0-59)。
H:小时(0-23)。
D:天(1-31)。
m:月(1-12)。
d:一星期内的天(0~6,0为星期天)。
cmd要运行的程序,程序被送入sh执行,这个shell只有USER,HOME,SHELL这三个环境变量
说明:
crontab是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。-uuser是指设定指定
user的时程表,这个前提是你必须要有其权限(比如说是root)才能够指定他人的时程表。如果不使用-uuser的话,就是表示设
定自己的时程表。
参数:
crontab-e:执行文字编辑器来设定时程表,内定的文字编辑器是VI,如果你想用别的文字编辑器,则请先设定VISUAL环境变数
来指定使用那个文字编辑器(比如说setenvVISUALjoe)
crontab-r:删除目前的时程表
crontab-l:列出目前的时程表
crontabfile-用指定的文件替代目前的crontab。
时程表的格式如下:
f1f2f3f4f5program
其中f1是表示分钟,f2表示小时,f3表示一个月份中的第几日,f4表示月份,f5表示一个星期中的第几天。program表示要执
行的程序。
当f1为*时表示每分钟都要执行program,f2为*时表示每小时都要执行程序,其馀类推
当f1为a-b时表示从第a分钟到第b分钟这段时间内要执行,f2为a-b时表示从第a到第b小时都要执行,其馀类推
当f1为*/n时表示每n分钟个时间间隔执行一次,f2为*/n表示每n小时个时间间隔执行一次,其馀类推
当f1为a,b,c,...时表示第a,b,c,...分钟要执行,f2为a,b,c,...时表示第a,b,c...个小时要执行,其馀类推
使用者也可以将所有的设定先存放在档案file中,用crontabfile的方式来设定时程表。
例子:
#每天早上7点执行一次/bin/ls:
07***/bin/ls
在12月内,每天的早上6点到12点中,每隔3个小时执行一次/usr/bin/backup:
06-12/3*12*/usr/bin/backup
周一到周五每天下午5:00寄一封信给alex@domain.name:
017**1-5mail-s"hi"alex@domain.name/tmp/maildata
每月每天的午夜0点20分,2点20分,4点20分....执行echo"haha"
200-23/2***echo"haha"
注意:
当程序在你所指定的时间执行后,系统会寄一封信给你,显示该程序执行的内容,若是你不希望收到这样的信,请在每一行空一格之
后加上>/dev/null2>1即可
例子2:
#每天早上6点10分
106***date
#每两个小时
0*/2***date
#晚上11点到早上8点之间每两个小时,早上8点
023-7/2,8***date
#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0114*mon-weddate
#1月份日早上4点
041jan*date
范例
$crontab-l列出用户目前的crontab
linux系统每天自动巡检,输出到一个文件里?
先把20台服务器的ssh登陆语句写进一个文本文件中host_name.txt,确保有一台机器可以通其他的19台服务器。
ssh跳转格式这样写:ssh用户名@ip
#!/bin/bashcheck_sev(){ssh_ip=$1$ssh_ip!vmstat110iostat110exit!echo}echo`date"+%D"`>>check_host.logwhilereadlinedoecho"---------------------------------">>check_host.logecho"$linedate'+%F%T'">>check_host.logcheck_sev$line>>check_host.logdonehost_name.txt
将上面的脚本放在一个主机上,用crontab提交每日任务,
3010***上面脚本的目录地址
将以上内容写进xx.cron中,crontabxx.cron提交就是每天的10:30运行你上面的检查脚本。
具体crontab的用户你可以百度。
====================================================================
第一个脚本本人纯手打,并没有试,还有不少漏洞,你可以自行修改,比如你这个放脚本的服务器必须能无密码ssh登陆其他19个主机,脚本最好加上错误日志记录,防止某些错误导致脚本异常终止。你可以多调试几遍,有问题的在一起交流。