linux shell输出(Linux修改时间)
各位老铁们好,相信很多人对linux shell输出都不是特别的了解,因此呢,今天就来为大家分享下关于linux shell输出以及Linux修改时间的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!
Linux Shell脚本系列教程:终端打印命令详解
这篇文章主要介绍了Linux Shell脚本系列教程(二):终端打印命令详解,本文着重讲解了echo终端打英printf终端打印两个打印出输出命令,需要的朋友可以参考下
终端打印
终端是交互式工具,用户可以通过它与shell环境进行交互。在终端中打印文本是大多数shell脚本和工具日常需要执行的基本任务。通过终端打印,人们可以知道系统的运行状态,这对用户来说是至关重要的。
echo终端打印
代码如下:
echo"Welcome to Bash"
echo'Welcome to Bash'
echo Welcome to Bash
以上三种方法的效果是一样的,输出内容都是“Welcome to Bash”,并在末尾添加换行符。在默认情况下,echo在每次调用后会添加一个换行符,而无需手动输入换行符。此处,建议养成一种习惯,对于其他的方法了解即可。
使用双引号时的限制
使用双引号输出字符串时,字符串内不能含有特殊字符(!),或者要在特殊字符前加转义字符/。使用单引号或者不使用引号,也可以正常输出特殊字符。
代码如下:
echo"cannot include!"#这种情况下将会报错
echo"cannot include/!"#这种情况下可以正常输出!
echo cannot include!#这种情况下可以正常输出!
echo'cannot include!'#这种情况下可以正常输出!
使用单引号的限制
在使用单引号输出字符串时,变量替换将会失效。使用双引号或者不使用引号可以正常输出被替换的变量。
代码如下:
var="abcd"
echo'1234$var'#这种情况下将输出 1234$var
echo 1234$var#这种情况下将输出 1234abcd
echo"1234$var"#这种情况下将输出 1234abcd
不使用引号时的限制
在不使用引号输出字符串的情况下,无法显示分号(;),因为分号在Bash中被用作命令定界符。使用单引号或者双引号可以输出分号。
代码如下:
echo hello;hello#第一个hello被当成字符串输出,第二个被当成命令
printf终端打印
printf使用的参数和C语言中的printf函数一样,使用引用文本或由空格分隔的参数。在printf函数中,我们可以使用格式化字符串,指定字符串的宽度、左右对齐方式等。在默认情况下,printf不会在行尾添加换行符,需要手动添加。
代码如下:
printf"Hello world"#使用引用字符
printf"%-5s%-10s%-4s/n" No Name Mark#指定宽度及左对齐方式
printf"%-5s%-10s%-4s/n" 1 Sarath 80.3456
工作原理
%s,%c,%d,%f都是格式替换字符,其所对应的参数可以置于带引号的格式字符串之后。
%-5s指明了一个格式为左对齐且宽度为5的字符串替换,-表示左对齐,若不指定对齐方式,则默认采用右对齐方式。宽度指定了保留给某个变量的字符数,如果要输出的内容宽度不足,则用空格填充,若多于指定宽度,则超出部分被丢弃。
%4.2f表示指定小数可以保留两个小数位,要注意的是4并不代表整数部分的位数,也不代表整数位和小数位的和。
注意:使用echo和printf的命令选项时,要保证选项出现在命令行内所有字符串之前,否者Bash会将选项视为另一个字符串。
补充内容
在echo中使用转义字符
在默认情况下,echo会自动在输出字符串末尾添加换行符,可以使用-n选项来忽略结尾的换行符。echo同样接受双引号字符串内的转义序列作为参数。如果需要使用转义序列,则采用echo-e“包含转义序列的字符串”这种形式,在ubuntu14.04中,不需要添加-e选项,若添加,则-e选项会被作为字符串的一部分输出。
代码如下:
echo"Hello World"#将在末尾添加换行符
echo-n"Hello Wordl"#末尾不会添加换行符
echo-e"1/t2/t3"#将输出-e 1 2 3
echo"1/t2/t3"#将输出1 2 3
打印彩色输出
在终端中生成颜色输出,有助于我们从大量文本中快速定位特定的信息,我们可以使用转义序列来实现颜色输出。
每种文本颜色都有对应的颜色码。
代码如下:
echo-e"/e[1;31m This is red text/e[0m"
echo-e"/e[1;41m This is red background/e[0m"
#ubuntu14.04不支持这种方式改变文本或者背景颜色
请问linux把shell的信息全部输出到文本文件的命令是什么
user创建新的用户账户
alias设置命令的别名
bzips.bz2的文件压缩程序
cal月历显示
cat将所有内容输出到标准输出设备
chfn更改finger命令显示的信息
chgrp变更文件与目录的所属组
chmod更换文件或目录的权限
chown更换文件或目录的拥有者或所在组
clear清除画面上的信息
col滤除控制字符
cp复制文件或目录
crontab设置定时器
date设置显示系统时间及日期
dd由键盘输入文件中的数据,然后依照指定格式来转换数据,再输出至所指定的文件或屏幕上
df显示磁盘文件系统的使用状况
dmesg显示开机信息
du显示目录或文件所占磁盘空间
e2fsck检查ext2文件系统
echo文字显示
edquota编辑quota
egrep查找文件中符合条件的字符串
exec shell执行命令后即交出控制权
export设置显示环境变量
fdisk磁盘分割(分区)
fg前台执行程序或命令
fgrep查找文件中符合条件的字符串
file识别文件类型
find查找文件或目录
finger显示用户信息
free查看内存状态
fsck检查文件系统并试着修复错误
ftp传输文件
grep搜索文件中符合条件的字符串
groupadd创建组
groupdel删除组
groupmod改变组识别码或名称
gunzip文件解压缩
gzip文件压缩
halt关闭系统
help shell创建命令内容
history列出所有使用过的命令
hostname查询及设置主机名称
id显示用户ID及所属的组ID
ifconfig显示或设置网络上状态
insmod加载模块
jobs显示正在后台执行的工作
kill删除执行中的程序或工作
last列出目前与过去登录系统的用户相关信息
less显示文件内容
lilo安装内核加载、开机管理程序
linuxconf设置Linux系统
ln连接文件或目录
locate寻找文件
login登录系统
logout注销系统
ls列出目录内容
lsmod显示已加载系统的模块名称
mail E-mail管理程序
make编译系统核心或模块
man在线查询命令
mcopy复制MS-DOS文件
mdel删除MS-DOS文件
mdeltree删除MS-DOS文件及包含的子目录文件
mdir显示MS-DOS目录
mkbootdisk创建目前系统的引导盘
mkdir创建目录
mke2fs创建ext2文件系统
mkfs创建各种文件系统
more一页一页地显示文件内容(文本文件)
miunt挂入文件系统
mouseconfig设置鼠标相关参数
mv移动或更名现有的文件或目录
netconfig Red Hat Linux用来设置网络功能的图形接口程序
netstat显示目前系统的网络状态
nice变更程序执行时的优先等级
nohup在用户注销系统后继续以后台的方式执行指定的命令
open查找第一个可使用的虚拟终端,并执行位于“--”符号后的命令
passwd提供管理员及用户管理或变更密码
patch利用修补文件来修改源文件
pine邮件处理程序,它可收发电子邮件及浏览新闻组
ping使用ICMP对远程主机发出要求响应的信息,以侦测远程主机的网络功能是否正常
ps显示程序执行的状况
pwd显示目前的工作目录
quota查询磁盘空间限制以及使用情形
quotacheck检查磁盘使用空间及限制
quotaoff关闭磁盘使用空间限制
quotaon开启磁盘使用空间限制
reboot停止系统运作并重新开机
renice重新调整程序执行的优先级
repquota显示磁盘空间限制状况
rm删除文件或目录
rmdir删除目录
rpm管理Red Hat Linux套件
set设置Shell的执行方式
setup设置公用程序,可设置的选项包括:登录认证方法、键盘配置、
鼠标配置、开机启动服务、声卡本配置、时区设置和 X Window配置等
shutdown系统关机
startx启动 X Window
stat显示inode内容
su变更用户身份
sync将内存缓冲区内的数据写入磁盘
tail列出文件内容最后部分
talk和其他用户交谈
tar文件备份
telnet登录远程主机
top显示及管理执行中的程序
traceroute显示封包到远程主机间的详细路径
umask在创建文件时预设的权限屏蔽
umount卸载文件系统
unalias删除别名
uname显示系统信息
uncompress将.Z文件解压缩
unzip将.Zip文件解压缩
useradd创建用户账号
userdel删除用户账户
vi编辑文本文件
w显示目前登录系统的用户信息
wall将信息传送至每位终端用户
whereis查找文件,预设whereis去查找的文件包括:/bin、/etc、/sbin、
/usr/bin、/usr/etc、/usr/games、/usr/include、/usr/lib、
/usr/local、/usr/man、/usr/sbin、/usr/src、/usr/local/bin、
/usr/local/etc、/usr/local/game、/usr/local/lib和/usr/local/man>
which在环境变量¥PATH设置的目录中,搜索符合条件的文件
who显示目前登录系统的用户信息
whoami显示用户名称
whois搜索并显示用户信息
write可传送信息给另一位登录的用户
Xconfigurator设置 Xfree86
xf86config设置XFree86
zip压缩程序
如何在Linux终端里用Shell和C输出带颜色的文字
我们知道,使用ls命令列出文件列表时,不同的文件类型会用不同的颜色显示。那么如何实现这样带颜色的文本输出呢?答案并不复杂,不管是用shell还是C语言。
一、shell下的实现方法
先来讲在shell下,如何实现。用echo命令就可以实现,参看以下例子:
echo-e"\033[32mHello, world!"
当你在终端里敲下这条命令后,是不是发现系统用绿色输出了"Hello,world!",不止如此,连之后的命令提示符都变成了绿色?不要着急,听我继续说。echo命令-e选项的作用是激活终端对反斜线转义符(即\)的解释。引号内\033用于引导非常规字符序列,在这里的作用就是引导设置输出属性,后边的[32m就是将前景色设置为绿色,字母m表示设置的属性类别,数字代表属性值。设置可以单独使用,例如:
echo-e"\033[0m"
这行命令的作用是恢复属性为默认值,也就是说0m设置项用于恢复默认值。现在你的终端是不是又一切正常了?
理解了这些,剩下的就简单了。用这种命令,除了设置文本前景色,还可以设置很多属性。下边列出其他的设置项:
--------------------------------------------------------------------------
\033[0m关闭所有属性
\033[1m设置高亮度
\033[4m下划线
\033[5m闪烁
\033[7m反显
\033[8m消隐
\033[30m至\33[37m设置前景色
\033[40m至\33[47m设置背景色
\033[nA光标上移n行
\033[nB光标下移n行
\033[nC光标右移n行
\033[nD光标左移n行
\033[y;xH设置光标位置
\033[2J清屏
\033[K清除从光标到行尾的内容
\033[s保存光标位置
\033[u恢复光标位置
\033[?25l隐藏光标
\033[?25h显示光标
--------------------------------------------------------------------------
各数字所代表的颜色如下:
字背景颜色范围:40----49
40:黑
41:深红
42:绿
43:黄色
44:蓝色
45:紫色
46:深绿
47:白色
字颜色:30-----------39
30:黑
31:红
32:绿
33:黄
34:蓝色
35:紫色
36:深绿
37:白色
另外,同类的多种设置项可以组合在一起,中间用分号(;)隔开。如下:
echo-e"\033[20;1H\033[1;4;32mHello,world\033[0m"
这行命令首先\033[20;1H将光标移动到终端第20行第1列,之后的\033[1;4;32m将文本属性设置为高亮、带下划线且颜色为绿色,然后输出Hello,world;最后\033[0m将终端属性恢复为默认值,这样就不会看到连命令完成后的命令提示符也变了样儿了。
通过以上各种命令的组合就可以实现对终端输出地复杂控制。
二、如何在C编程中实现?
理解了以上在Shell中的实现方法,关于在C中如何实现就很简单了。可以说只需要用printf函数代替上边的echo-e就OK了。参见下例:
int color= 32;
printf("\033[20;1H\033[1;4;%dmHello, world.\033[0m", color);
这个例子类似上边shell中最后那个例子,只是这里颜色值通过变量color来指定(当然,也可以直接指定)。
三、联想
看到这里你可能会想,是不是在其他编程语言里也可以用类似的方法实现对终端输出的控制呢?答案是肯定的!比如在Python中,可以如下输出:
color=32
print“\033[20;1H\033[1;4;%dHello, world.\033[0m"%color
这个例子的效果跟上边C的例子是相同的。