首页 > 代码库 > 1. 设置环境变量 HISTSIZE , 使其能够保存10000条命令历史。

1. 设置环境变量 HISTSIZE , 使其能够保存10000条命令历史。

1. 设置环境变量 HISTSIZE , 使其能够保存10000条命令历史。

答: vim /etc/profile,搜索到HISTSIZE,将1000改为10000,然后保存退出,再执行  source /etc/profile使其生效。

[root@centos6 ~]# echo $HISTSIZE

1000

[root@centos6 ~]# HISTSIZE=10000 #临时修改

[root@centos6 ~]# echo $HISTSIZE

10000

[root@centos6 ~]# cat /etc/profile |grep HISTSIZE

HISTSIZE=1000

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

[root@centos6 ~]# vim /etc/profile #永久修改

HISTSIZE=10000

Esc:wq

[root@centos6 ~]# source /etc/profile

[root@centos6 ~]# echo $HISTSIZE

10000

[root@centos6 ~]#

2. 为什么如果这样设置PS1 (PS1="[\u@\h \W]\$ ")  显示的结果和我们预想的不一样,那要如何设置才能恢复原来默认的?

答: Shell中双引号保留原有字符的特殊含义,单引号可以去掉原有字符的特殊含义。所以我们有两种改法:(1)PS1="[\u@\h \W]\\$ "

(2)PS2=‘[\u@\h \W]\$ ‘

3. 想办法把当前目录下的文件的文件名中的小写字母全部替换为大写字母。

答:使用脚本来完成该目标:

[root@centos6 ~/test 01:04 #10]# vim lower2Upper.sh

#!/bin/sh

for i in `ls`

do

mv $i `echo $i |tr ‘[a-z]‘ ‘[A-Z]‘`

done

Esc:wq

[root@centos6 ~/test 01:04 #10]# /bin/sh lower2Upper.sh

4. 使用sort以":"为分隔符,对/etc/passwd文件的第5段排序。

答:sort -t: -k5 -n /etc/passwd #按第5段排序

5. 使用cut以":"为分隔符,截出/etc/passwd的第三段字符。

答:cut -d: -f3 /etc/passwd #截出第三段

6. 简述这几个文件的作用: /etc/profile, /etc/bashrc, .bashrc, .bash_profile.

答:这几个都是配置文件。

/etc/profile系统级的配置文件,其中变量对所有用户都有效;

/etc/bashrc系统级的bash变量配置文件,任何用户运行bash则会读取其中内容。

.bashrc:用户级的bash相关变量配置文件,只对当前用户有效,无需登录,主要通过该用户运行命令行就会读取该文件。

.bash_profile用户级的变量配置文件,只对当前用户生效,在用户登录后才读取。

7. export 的作用是什么?

答:声明一个变量,使其进入子shell后也生效

8. linux下自定义变量要符合什么样的规则呢?

答:自定义变量的格式为 varname=value, 等号两边不能有空格;变量名只能由字母、数字和下划线组成,且不能以数字开头;原则上自定义变量要小写,不能与系统系统变量、函数名、关键字等相同;当变量内容带有特殊字符(如空格)时,需要加上单引号;变量内容中本身带有单引号,需要用到双引号;如果变量内容中需要用到其他命令运行结果则可以使用反引号;

9. 如何把要运行的命令丢到后台跑?又如何把后台跑的进程给调到前台?

答:运行之前,可用“命令 &”直接在后台运行;正在运行的命令,可以使用jobs查看其PID,然后使用"bg PID"命令将其调到后台运行;也可以使用“fg PID”将其调到前台运行。

10.  列出当前目录下以"test"开头的文件和目录。

答:ls -ld test*

11.  如何把一个命令的输出内容不仅打印到屏幕上而且还可以重定向到一个文件内?

答:ls -ld test* |tee ls.log

12. 假如有个命令很长,我们如何使用一个简单的字符串代替这个复杂的命令呢?请举例说明。

答:可以使用别名alias:alias ls=‘ls --color=auto‘;

也可以使用变量:myls=‘ls --color=auto‘,调用时只需加上$符即可:$myls

13. 我如何实现这样的功能,把一条命令丢到后台运行,而且把其正确输出和错误输出同时重定向到一个文件内?

答:vmstat 1 > /tmp/1.log 2>&1 &

14. 如何按照大小(假如按照10M)分隔一个大文件,又如何按照行数(假如10000行)分隔?

答:split -b 10M filename

split -l 10000 filename

15. 做实验,搞明白 ; && || 这三个符号的含义。

答:(1);结束一条命令,可以用来将多条命令写在一行中

(2)&&逻辑与,前面语句为真才执行后面语句,前面为假不执行后面语句

(3)||逻辑或,前面语句为假才执行后面语句,前面为真不执行后面语句

16. 如果只想让某个用户使用某个变量如何做?

答:可以以该用户身份编辑其家目录下的.bashrc文件,加入一行 var=10,保存退出后执行

source .bashrc使其立刻生效即可。

17. 使用哪个命令会把系统当中所有的变量以及当前用户定义的自定义变量列出来?

答:env只能列出系统变量,set不仅能列出系统变量,还能列出用户变量。


1. 设置环境变量 HISTSIZE , 使其能够保存10000条命令历史。