站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
▼
建站程序
开发
服务器
办公软件
开发教程
▼
服务器教程
软件使用教程
运营教程
热门电子书
▼
CSS教程
WordPress教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
热点词条
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
Debian/常用命令与典型错误
”(章节)
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
==常用命令== ===Pager=== less 就是默认的 pager(文件内容[[浏览器]])。按“h”可获得帮助。它比 more 更有用。在 shell 启动[[脚本]]中运行 eval $(lesspipe) 或 eval $(lessfile) 可以让 less 活力四射。使用 -R 选项可输出生癖字符 and enables ANSI color escape sequences。 对于某些[[编码]]系统(EUC)w3m 可能是更好的选择。 ===释放内存=== free 和 top 能让你了解[[内存]]资源的许多有用信息。别担心“Mem:”行中“used”的大小,看看它下面的数字(本例的数字是 38792)。 <pre> $ free -k # 用 256MB 内存的机器 total used free shared buffers cached Mem: 257136 230456 26680 45736 116136 75528 -/+ buffers/cache: 38792 218344 Swap: 264996 0 264996 </pre> 物理内存的准确大小可通过 grep '^Memory' /var/log/dmesg 得到,本例将显示“Memory: 256984k/262144k available (1652k kernel code, 412k reserved, 2944k data, 152k init)”。 <pre> Total = 262144k = 256M (1k=1024, 1M=1024k) Free to dmesg = 256984k = Total - kernel - reserved - data - init Free to shell = 257136k = Total - kernel - reserved - data </pre> 约有5MB内存系统不能使用,因为内核需要它。 ===设定时间(BIOS)=== <pre> # date MMDDhhmmCCYY # hwclock --utc --systohc # hwclock --show </pre> 设定系统时间和[[硬件]]时间为 MM/DD hh:mm, CCYY。显示时间为本地时间而硬件时间使用[[UTC]]。 如果硬件([[BIOS]])时间设置为 GMT,在文件 /etc/default/rcS 中改变设置 UTC=yes。 ===拥有永久 Internet 连接的系统设置时间=== 设置系统时钟通过远程[[服务器]]自动对时: # ntpdate server 如果你的系统拥有永久的 [[Internet]] 连接,应该将该命令加入 /etc/cron.daily/。 ===如何禁用屏幕保护程序=== 禁用屏幕保护程序,使用下面的命令。 对于 [[Linux]] 控制台: # setterm -powersave off 启动 kon2 (kanji)控制台可执行: # kon -SaveTime 0 运行X可执行: # xset s off 或 # xset -dpms 或 # xscreensaver-command -prefs ===搜索系统管理数据库=== Glibc提供了getent(1)搜索管理[[数据库]]的各类项目。例如passwd、group、hosts、services、protocols、networks。 getent database [key ...] ===禁用声音(响铃)=== 对于 Bash shell 可执行: echo "set bell-style none">> ~/.inputrc ===控制台上的错误信息=== 不想看屏幕显示的错误信息,首选的方法是检查 /etc/init.d/klogd,在该[[脚本]]中设置 KLOGD="-c 3" 然后运行 /etc/init.d/klogd restart。另一种方法是执行 dmesg -n3。 这儿是各种错误级别的含义: *0: KERN_EMERG, 系统不可用 *1: KERN_ALERT, 必须立即执行 *2: KERN_CRIT, 紧急状态 *3: KERN_ERR, 错误状态 *4: KERN_WARNING, 警告状态 *5: KERN_NOTICE, 正常状态且十分重要 *6: KERN_INFO, 报告 *7: KERN_DEBUG, debug-level 信息 另一个该看看的地方是 /etc/syslog.conf;,检查一下是否有信息记录被发送到了控制台设备。 ===正确设置控制台类型=== 在类 [[Unix]] 系统中,访问控制台屏幕通常要调用库例程,这就为用户提供了一种独立于终端的方式来优化字符的屏幕更新过程。 在 Debian 系统中,有大量预定义项目: $ toe | less # 所有项目 $ toe /etc/terminfo/ | less # 用户可再配置的项目 你的选择可导出到[[环境变量]] TERM。 当登录到远程Debian系统时,如果 xterm 的 terminfo 项目在非 Debian 的 xterm 中失效,请将终端类型改为支持较少特性的版本如“xterm-r6”。 ===让控制台恢复正常状态=== 如果执行 cat some-binary-file 后屏幕一片混乱(当你输入命令时,无法看到正常的回显(echo)): $ reset ===将DOS下的文本文件转换为 Unix 类型=== 将[[DOS]]文本文件(行尾=^M^J)转换成 Unix 文本文件(行尾=^J)。 # apt-get install sysutils $ dos2unix dosfile ===使用recode转化文本文件=== 下面将在 DOS、 Mac 和 Unix 的文本文件中转换行结尾格式: <pre> $ recode /cl../cr <dos.txt >mac.txt $ recode /cr.. <mac.txt >unix.txt $ recode ../cl <unix.txt >dos.txt </pre> 自由的 recode 在各种各样的字符集和界面中转换: $ recode charset1/surface1..charset2/surface2 \<input.txt >output.txt 使用的通用字符集设置是: *us — ASCII (7 bits) *l1 — ISO Latin-1 (ISO-8859-1, Western Europe, 8 bits) *EUCJP — EUC-JP for Japanese (Unix) *SJIS — Shift-JIS for Japanese (Microsoft) *ISO2022JP — Mail encoding for Japanese (7 bits) *u2 — UCS-2 (Universal Character Set, 2 bytes) *u8 — UTF-8 (Universal Transformation Format, 8 bits) 使用的通用界面: */cr — Carriage return as end of line (Mac text) */cl — Carriage return line feed as end of line (DOS text) */ — Line feed as end of line (Unix text) */d1 — Human readable bytewise decimal dump */x1 — Human readable bytewise hexidecimal dump */64 — Base64 编码文本 */QP — Quoted-Printable 编码文本 ===正规表达式的置换=== 将所有文件 FILES ...中的所有 FROM_REGEX 字段替换成 TO_TEXT 字段。 $ perl -i -p -e 's/FROM_REGEX/TO_TEXT/g;' FILES ... -i 表示“就地编辑”,-p 表示“在FILES...各文件中循环”。如果置换很复杂,应使用参数 -i.bak 而非 -i,这有助于出错恢复;它会将每个原始文件保存为以 .bak 为后缀的备份文件。 ===使用脚本来编辑文件=== 下面的脚本将删除 5–10 行以及 16–20 行。 <pre> #!/bin/bash ed $1 <<EOF 16,20d 5,10d w q EOF </pre> 在此,ed 命令与 [[vi]] 命令模式下的是一样的,从外部编辑文件的方式使它更适于脚本化。 ===提取源文件修改部分合并到更新包=== 下面的操作将根据文件位置,提取源文件的修改部分并创建统一的 diff 文件 file.patch0 或 file.patch1: $ diff -u file.old file.new > file.patch0 $ diff -u old/file new/file > file.patch1 diff 文件(也称补丁文件)通常用于发送[[程序]]更新。收到的补丁文件可使用下面的方法更新另一个文件: $ patch -p0 file < file.patch0 $ patch -p1 file < file.patch1 如果有 3 个版本的[[源代码]],使用 diff3 来合并效率更高: $ diff3 -m file.mine file.old file.yours > file ===分割大文件=== $ split -b 650m file # 将大文件分块成多个 650MB 的小文件 $ cat x* >largefile # 将所有小文件合并成一个大文件 ===从文本格式的表格中抽取数据=== 假设有一个文本文件名为 DPL,其中存放着所有前 Debian 项目领导人的名字和他们的上台日期,表格格式是以空格做为分隔的。 <pre> Ian Murdock August 1993 Bruce Perens April 1996 Ian Jackson January 1998 Wichert Akkerman January 1999 Ben Collins April 2001 Bdale Garbee April 2002 Martin Michlmayr March 2003 </pre> Awk 经常用于从这类文件中提取[[数据]]。 <pre> $ awk '{ print $3 }' <DPL # month started August April January January April April March $ awk '($1=="Ian") { print }' <DPL # DPL called Ian Ian Murdock August 1993 Ian Jackson January 1998 $ awk '($2=="Perens") { print $3,$4 }' <DPL # When Perens started April 1996 </pre> 象 Bash 这种 Shell 也能够用来分析这种文件: <pre> $ while read first last month year; do echo $month done <DPL </pre> 跟第一个 Awk 例子有相同的输出 在这里,read 内建命令使用字符 $IFS (internal field separators 内部列分隔符)来将行分开为单词。 如果你改变 IFS 为 ":",你能够用 shell 漂亮的分析 /etc/passwd: <pre> $ oldIFS="$IFS" # 保存旧值 $ IFS=":" $ while read user password uid gid rest_of_line; do if [ "$user" = "osamu" ]; then echo "$user's ID is $uid" fi done < /etc/passwd osamu's ID is 1001 $ IFS="$oldIFS" # 恢复旧值 </pre> (如果使用 Awk 作同样的事情,使用 FS=":" 来设置列分隔符。) shell 也使用 IFS 来分开参数扩展、命令替换和算术扩展的结果集。 但在被单引号或双引号引用的单词内,不会发生这种情况。 默认的 IFS 值是: <space>、 <tab> 和 <newline> 。 请小心使用这个 shell IFS 技巧。 当 shell 解释部分脚本作为它的输入时,奇怪的事情将会发生。 <pre> $ IFS=":," # 使用 ":" 和 "," 作为 IFS $ echo IFS=$IFS, IFS="$IFS" # echo 是 Bash 内建的 IFS= , IFS=:, $ date -R # 只是一个命令输出 Sat, 23 Aug 2003 08:30:15 +0200 $ echo $(date -R) # 子 shell --> 输入到主 shell Sat 23 Aug 2003 08 30 36 +0200 $ unset IFS # 重设 IFS 为默认的 $ echo $(date -R) Sat, 23 Aug 2003 08:30:50 +0200 </pre> ===精巧的管道命令辅助脚本=== 下列脚本做为管道的一部分十分有用。 *find /usr | egrep -v "/usr/var|/usr/tmp|/usr/local" # 查找 /usr 下的所有文件,排除某些文件 *xargs -n 1 command # 将所有项作为标准输入来执行命令 *xargs -n 1 echo | # 将空格隔离的项分开为行 *xargs echo | # 合并所有的行到一行里面 *grep -e pattern| # 提取含有 pattern 的行 *cut -d: -f3 -| # 提取用 : 分开的第 3 列(比如说 passwd 文件) *awk '{ print $3 }' | # 提取用空格分开的第 3 列 *awk -F'\t' '{ print $3 }' | # 提取用 tab 分开的第 3 列 *col -bx | # 删除退格键,扩展 tab 为空格 *expand -| # 扩展 tab *sort -u| # 排序并删除重复行 *tr '\n' ' '| # 将多行连接为一行 *tr '\r' ''| # 删除 CR *tr 'A-Z' 'a-z'| # 转化大写字母为小写 *sed 's/^/# /'| # 将每行变为注释 *sed 's/\.ext//g'| # 删除 .ext *sed -n -e 2p| # 显示第 2 行 *head -n 2 -| # 显示头两行 *tail -n 2 -| # 显示最后两行 ===循环每一个文件的脚本片段=== 下面的方法将循环处理匹配 *.ext 的每一个文件,确保适当处理文件名包含空格的奇怪文件,并且执行相同的操作。 Shell 循环 (在 PS2=" " 时使用多行格式的例子。 如果在一行内输入这些命令,需要在每一个换行处加一个分号。): <pre> for x in *.ext; do if test -f "$x"; then command "$x" fi done </pre> find 和 xargs 结合: find . -type f -maxdepth 1 -name '*.ext' -print0 | \ xargs -0 -n 1 command 加 -exec 选项的 find 和一个命令结合: find . -type f -maxdepth 1 -name '*.ext' \ -exec command '{}' \; 加 -exec 选项的 find 和一个短的 shell 脚本结合: find . -type f -maxdepth 1 -name '*.ext' \ -exec sh -c "command '{}' && echo 'successful'" \;
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)