从0开始安装fedora23的笔记-- 以及使用fedora的常规问题-2
-
在shell中, 你是可以连续输入多个语句的, 中间用分号; 连接 也可以把这些多个语句放到一个函数中, 函数的话,便于多次引用. 而且 "封装" 为函数后, 可以用set查看到这个函数的
-
read命令的使用
read从标准输入设备中 或cat file | while ( read line )
管道中 读取一行, 然后 "以空格为分割单位, 形成多个数据", 将输入赋予给多个变量
如: read var1 var2 var3 ,如果输入 10 20 30 则var1=10 var2=20 var3=30等
如果输入(空格分割后)多于 变量的个数, 则多余部分全都赋值给最后剩余的变量. 因此, 如果read one_variable, 则在输入回车之前的所有内容都给 这一个变量.
read的几个重要的常用选项
read -n nchars 指定读取的个数, 一旦达到个数自动停止, 你控制不了, 它自动就执行了
read -p 'prompt' 显示提示
read -t 最多等待输入的秒数 默认的read行为, 会阻塞进程, 一直等待输入.
read -s (silent) 没有回显, 即你输入的内容不会在屏幕上显示, (只是输入的字符颜色跟背景色相同罢了), 主要用在password密码的输入上
-
time命令是 统计命令执行的时间, 格式是: time 命令
-
在安装shutter后, 提示 gtk+ cannot open display 等错误, 可以在 shutter执行时, 进行插件plugins的更新 后, 就可以正常使用了
linux / fedora 中的屏保设置? 参考: http://blog.csdn.net/zhongguomin/article/details/7088445 和 http://blog.csdn.net/saturnbj/article/details/5442056
系统默认的屏保设置是: 允许黑屏屏保. prefer blanking: yes, 黑屏时间是 600 秒
系统屏保由两个因素来决定, 一个是 dpms: display manager star(能源之星). 另一个是 xset screen-save controller. 两者之中取 时间短 更小的 那一个 进入屏保
关于 dpms:
xset +dpms
xset dpms [standby] [suspend] [off] 如: xset dpms 600 900 1200 即10分钟进入standby, 15min ..., 20分钟后关闭显示器的电源.
xset -dpms
xset s 10设置屏保后, 并不会关闭 显示器的背光电源! 所以, 要省电, 还要显式 地设置 dpms
所以要两个因素都要设置, 当然, 当dpms进入standby后, 自然会关闭屏幕显示, (即黑屏)
虽然都是黑屏 , 但是两个黑屏产生的机理却是不一样的!
可以使用的配置是:
最后用xset q来 query查询, 显示你的xset配置....
xorg.conf配置文件 要放在 /etc/X11/xorg.conf中, 分成很多个节, 每个节: Section ... EndSection
在配置xorg.conf后, 使用xset q命令时 提示 can't open display ""
原因是没有 设置 DISPLAY这个环境变量 解决方法是: http://blog.csdn.net/jeffreyst_zb/article/details/8585544
??? 虽然设置了/etc/X11/xorg.conf 但是配置仍然不起作用, 但是用 xset命令能够生效!
systemd 管理linux参考: https://linux.cn/article-3801-1.html
- 以systemd来代替 sysvinit, 启动速度更快, 前者是以并行的方式启动服务, 后者是以串行的方式启动的. 而且systemd只启动确实被依赖被经常运行的服务
- systemd查看系统服务启动的时间统计: systemd-analyze, systemd-analyze time, systemd-analyze blame.
- systemd 代替 init进程成为 pid=1 的进程.
- systemd使用systemctl命令来管理所有的系统内容: list-units, --failed....
关于shell的内部命令和外部命令?
查看shell的内部命令, 使用 man builtin, 注意是 builtin, 不是builtins, 会提示: no manual entry for builtins. 里面列出了所有的shell 内建命令以及他们的用法.
shell 内建命令和外部命令的区别?
内部命令 是 shell(os操作系统) 自己就实现了的, 在系统启动时就载入内存, 并常驻内存中, 直接由shell执行.
如何判断一个命令是内建命令, 使用 enable xxx
比如: enable ls, 就会提示: ls: not a shell builtin.
配置了xset的配置文件后,就不能进入X图形界面了?
xset是命令, 他对应的配置文件是 /etc/X11/xinit/, 或直接是 在/etc/X11/目录下, 新建xorg.conf配置文件, 重要的是, 这个配置文件要写正确, 如果配置文件内容写错了, (包括他的格式错误)就会导致"xinit: error: unable to connect to X server: connection refused." 就是连接X server被拒绝, 原因是 X server 服务loaded 后, 但是shutdown 失败了.
所以这个xorg.conf 一定要配置正确. 其中的 Section "ServerLayOut" ... EndSection 被称为节, 其中的Server... 就是指 X server.
如果为了配置xset, 最好/最保险的方法是直接设置xset 命令序列, 不要去创建修改 xorg.conf了. 因为这个容易解析出错???
说, dnf/apt-get/yum install xserver-xorg
???
关于exec命令?
- 父子进程, child process and parent(父代的) process. 由父进程fork, 子进程是父进程的一个copy(副本), 从父进程那里获得资源, 并继承父进程的环境,父子进程的唯一区别是pid的不同, 但是子进程是一个 封闭的空间, 即父子进程是(单向遗传性), 子进程中的变量改变是无法反映到(无法影响)到父进程中的变量的.
exec和source都不会产生"新的进程", 但是他们是有区别的. source是在当前shell进程中直接执行程序. 执行后, 当前shell进程仍然存在. 而exec则不然:
他虽然不会"产生新的进程" , 但是, 他首先会fork 一个进程, 让新进程的 "代码段/数据段/堆栈段" 来 替代 当前shell的相应的 ""代码段/数据段/堆栈段". 但是并不产生新的pid, 仍然使用原来的pid. 从pid的角度看, "可以说" 没有产生新的进程, 但是,实际上真正的 "内瓤子"已经变了, 就像"变脸"一样. 现在的pid 已经不是原来的shell了, 而是exec了, 所以 当exec执行 完成后 , 是不会再返回到shell中去了, 实际上也返不回去了, 因为原来的代码段/数据段/计数器等都早已不在了...
环境变量
查看所有环境变量的 命令:env,
设置语言和编码的环境变量是 : \(LANG, 注意是 LANG, 不是language, 不是 :\)LANGUAGE. 是lang.
$LANG, 环境变量包括两个部分: 语言.编码, 比如: en_US.UTF-8. 其中, en_US是语言 而UTF-8是编码.
free software 和 freeware的区别?
free software: free software is a matter of liberty, not price. To understand the concept, you should think of "free" as in (当作...里面的)"free speech", not as in "free beer".
free software, 如同 free speech, 你可以自由的使用, 复制, 研究, 修改 和再分发.
而 freeware 如同free beer, 只是不要你的钱,但是你不能去复制, 修改或重分发.
[[[
matter: n. 问题, 事情; 事态; 物质. v. 紧要, 要紧; 事关重要, 有重大影响; it doesn't matter: 没什么要紧的..., 没事的..
a matter of life and death, 事关生死; a matter of hours/minutes, pinches,meters . a matter of: 重要的是....
liberty: 这两个单词很容易混淆, 都是li-.. er什么的, 自由的单词中间是"b"
literal: 字面, 文字的, 中间是"t". literally.
a matter of liberty, not price.
]]]
misce'llaneous杂项
软件开法的难度在于, 需求的不确定性, 需求总是在改变, 凡是所有的 "可变化点" , 都可能发生改变. 所以程序员就是要** 写出能够 适应各种变化的, 可扩展的, 可维护的代码,** 那么, 应对需求变化的秘诀, 就是: 将这些可扩展的, "变化点", 作为参数, 变化量, 传入到 你设计的函数或 模式中去.
local: 和locale的区别
local: ['l2uk2l], 本地的, 本地人...
lo'cale [l2u' k2l] 本地化, 区域化设置.
在软件的 本地化设置中, 如firefox的插件开发中, en-US, zh-CN等国际语言化, 就是放在 lo'cale locale这个目录中的.
date命令?
有两个方面的作用,
一是取得 日期和时间, 使用 date +format
选项, 其中: date +%Y-%m-%d %H:%M:%S %A表示星期几
date命令本身 会在末尾 输出一个 "\n"换行符.
echo 的\b删除前一个字符, 但要注意这个 要表示转义字符, 必须要加 -e(escape)选项 表示" enable interpretation of backslash escapes. -n: do not output the trailing newline.
但是 echo的 \b转义只能删除 本echo命令参数 字符串中的已经输出了的字符, 它不可能影响到, 不能删除前面的命令 中已经输出的内容.
二是, 设置系统 的时间: set -s ...
设置后, 系统时间和bios时间之间 通常是每隔11分钟交互同步一次, 如果你设置后, 马上重启, 系统读入的可能还是 bios的来不及更新的时间, 显得date -s 没有生效的假象, 但是 用clock -w 就可以实时写入. 实时生效.
bios时间又叫 hardware clock. only the superman can use hardware clock