Linux + Shell bash / sh / ksh / csh / tcsh

Linux + Shell bash / sh / ksh / csh / tcsh
文章分类:操作系统
Redhat Gnome Terminal 快捷键

http://huangchao200701.javaeye.com/blog/263002

 

 

常用
win+n切换背景颜色风格
alt+tab=不用说了。
win+tab若开3D效果了切换
ctrl+alt+backspace=相当于强制注销
ctrl+alt+del=调出关机菜单
ctrl+alt+l=锁定桌面

ctrl+alt+d=最小化gnome所有窗口
ctrl+alt+f2=linux终端用户(alt + f7返回xwindows,alt+ <- 或-> 进行终端切换)
ctrl+alt+ <- 或-> =切换桌面

终端快捷键
tab=补全
ctrl+a=开始位置
ctrl+e=最后位置
ctrl+k=删除此处至末尾所有内容
ctrl+u=删除此处至开始所有内容
ctrl+d=删除当前字母
ctrl+w=删除此处到左边的单词
ctrl+y=粘贴由ctrl+u,ctrl+d,ctrl+w删除的单词
ctrl+r=正在测试,还没弄明白,呵呵。
ctrl+l=相当于clear
ctrl+b=向回移动
ctrl+f=向前移动
ctrl+p=向上显示缓存命令
ctrl+n=向下显示缓存命令
ctrl+d=关闭终端
shift+上或下=终端上下滚动
shift+pgup或pgdown=终端上下翻页滚动
ctrl+shift+f=全屏(仅限于konsole)
ctrl+shift+n=新终端(terminal 和konsole有所不同)
ctrl+c=终止

以下为网上的快捷键列表

打开主菜单 = Alt + F1
运行 = Alt + F2
显示桌面 = Ctrl + Alt + d
最小化当前窗口 = Alt + F9
最大化当前窗口 = Alt + F10
关闭当前窗口 = Alt + F4
截取全屏 = Print Screen
截取窗口 = Alt + Print Screen

默认特殊快捷键
展示所有窗口程序 = F10
展示当前窗口最上层程序 = F11
展示当前窗口所有程序 = F12
切换窗口 = Alt + Tab
旋转3D桌面 = Ctrl + Alt + 左/右箭头(也可以把鼠标放在标题栏或桌面使用滚轮切换)
旋转3D桌面(活动窗口跟随) = Ctrl + Shift + Alt + 左/右箭头
手动旋转3D桌面 = Ctrl + Alt + 左键单击并拖拽桌面空白处
窗口透明/不透明 = possible with the “transset” utility or Alt + 滚轮
放大一次 = 超级键 + 右击
手动放大 = 超级键 + 滚轮向上
手动缩小 = 超级键 + 滚轮向下
移动窗口 = Alt + 左键单击
移动窗口时贴住边框 = 左键开始拖动后再 Ctrl + Alt
调整窗口大小 = Alt + 中击
Bring up the window below the top window = Alt + middle-click
动态效果减速 = Shift + F10
水纹 = 按住 Ctrl+超级键
雨点 = Shift-F9
桌面展开= Ctrl + Alt + 下箭头,然后按住 Ctrl + Alt 和左/右箭头选择桌面

 

shell


http://baike.baidu.com/view/849.htm

在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器)。

它类似于DOS下的command.com。

它接收用户命令,然后调用相应的应用程序。

同时它又是一种程序设计语言。

作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;

作为程序设计语言,它定义了各种变量和参数,并提供了许多在高阶语言中才具有的控制结构,包括循环和分支。

在C++中,Shell是希尔排序的名称。

基本上shell分两大类:

一:图形界面shell(Graphical User Interface shell 即 GUI shell)

Windows Explorer

X windows manger (BlackBox和FluxBox)和CDE、GNOME、KD、 XFCE等

二:命令行式 shell(Command Line Interface shell ,即CLI shell)

『Unix/linux 系统』bash / sh / ksh / csh / tcsh

      Bourne shell (包括 sh, ksh, and bash)

  Bourne shell ( sh)
  Korn shell ( ksh)
  Bourne Again shell ( bash)
  POSIX shell ( sh)
  C shell (包括 csh and tcsh)
  C shell ( csh)
  TENEX/TOPS C shell ( tcsh)
  Bourne Shell

各主要操作系统下缺省的shell:

AIX 下是Korn Shell.

Solaris 和FreeBSD 缺省的是Bourne shell.
HP-UX 缺省的是POSIX shell.
Linux 是Bourne Again shell.

『MS-DOS 系统』COMMAND.COM

『Windows NT 系统』 cmd.exe

『支援 .NET Framework 技术的 Windows NT 系统』Windows PowerShell

Shell也是一个VB函数,它的作用是运行程序,语法是Shell(命令字符串[,窗口类型])

Linux shell 编程系列

http://www.ibm.com/developerworks/cn/linux/shell/index.html#firstmajorhead

 Shell 介绍 
 Bash 
 awk 
 sed 
 Vi、Emacs 
 Shell 使用技巧 

Shell 变量

HISTFILESIZE 与 HISTSIZE 的区别

http://www.linuxeden.com/forum/viewthread.php?tid=159573

两个变量和命令的 history 记录有关.

HISTFILESIZE 定义了在 .bash_history 中保存命令的记录总数.
HISTSIZE 定义了 history 命令输出的记录数.
HISTTIMEFORMAT 则定义了执行命令的时间格式, 典型的配置 是 '<%F %T>: '
改变量生效后, history 的输出将格式化为:

1052  <2007-10-08 10:13:02>: history

其中   <2007-10-08 10:13:02> 是 history 命令的执行时间.

 

/etc/profile、~/.bash_profile等几个文件的执行过程

http://blog.chinaunix.net/u2/61187/showart_1189840.html
执行顺序为:

/etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc ->          /etc/bashrc -> ~/.bash_logout

 

开发人员行走Unix的随身四艺

http://weiruan85.javaeye.com/blog/333202

VI+文本处理+Bash Shell 编程+Make or AutoMake


附录A:我的VI易忘命令手册
    上下左右:
    ctrl+u/d 上下半屏,ctrl+f/b,上下一屏
    H/G屏幕头/文章末 ,0/$ 行首行末
   
    增删改:
    yy/dd 复制/删除 一行,p/P:将yy/dd的内容paste出来
    I/A 在行首/末添加, o/O 开新行,d0/d$ 删除到行首,行末
    u:undo

    查:
    ? 向前查找, n/N 重复上一次查找

附录B: 文本处理命令小结
   awk:处理结构化的文本(每行以固定符号分成若干列),提取打印某些字段,如:
    ls -l|awk '{print $1}'  --将ls-l结果的第一列打印出来
    awk -F":" '{print $1"  "$6}' /etc/passwd ,将以:分割的/etc/passwd文件的第1,6列打印出来,中间以空格分开
    详见IBM DW中国的AWK实例(共3篇) 或 Bash新手指南中文版第6章。

    grep:过滤,大家用得最多的命令,支持正则表达式。参数有: http://www.hudong.com/wiki/grep
    -i忽略大小写,-n显示line number,-c 统计在每个文件的出现次数,-l只显示符合的文件的名字。

grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)


    sed:流编辑器,主要用于替换,如:
    sed -e '1,10s/foo/bar/g' myfile2.txt 将1到10行的文本中的foo 替换成bar,s代表替换,g代表全局替换
    支持正则的替换字符串,可以只替换某个范围内的内容。
    用法不算简单,详见IBM DW中国的Sed实例(共3篇)或 Bash新手指南中文版第5章。
   
    sort:排序,参数有:
    -r逆序, -n 数字比较 , -M 日历比较 Feb,Dec, -f 忽略大小写
    同样支持结构化文件,如
    sort -t : -k 1,1 /etc/passwd,以: 分割,只按第1列排序
    sort -t : -k 1,1 -k2.2,3.4 /etc/passwd ,以:分割,先按第1列排序,再按第2列的第二个字符到第3列的第4个字符排序。

    uniq:去除重复行。
    除了正常用法外,还有-c统计重复次数,和-u (唯一)和 -d (重复)两个参数,只显示唯一的和重复的行。

    wc: 统计。
    -l 行,-m 字符,-w 单词


附录C: 我的automake1.9步骤小结
先编写MakeFile.am
运行autoscan,生成configure.scan
修改configure.scan,同时把文件改名为configure.in :
去除AC_CONFIG_HEADER([config.h])那行
加入AM_INIT_AUTOMAKE([1.9 foreign])  (其中1.9是automake的版本号)
加入AC_PROG_LIBTOOL  (如果用libtool的话)
检查AC_CONFIG_FILES,如果之前没有先写齐所有MakeFile.am,autoscan就不会帮你加入,需要自己手工补充。
libtoolize (如果用libtool的话)
aclocal
autoconf
automake --add-missing
./configure
make

大家需要编写的文件从Makefile转为了Makefile.am 和configure.in, ACE的Examples是很好的参考。

 

 

vi入门

https://www6.software.ibm.com/developerworks/cn/education/linux/l-vi/tutorial/index.html

shell脚本自动重新启动已停止/僵死的Apache的httpd进程

http://community.itbbs.cn/showthread.php?t=12955

http://bash.cyberciti.biz/web-server/restart-apache2-httpd-shell-script/

[PPT,PDF] Bash Shell 编程基础

http://www.openbsdonly.org/download/file.php?id=67

http://bbs.chinaunix.net/viewthread.php?tid=994745

 

http://wiki.ubuntu.org.cn/Shell编程基础

http://www.linuxsir.org/main/doc/abs/abs3.7cnhtm/index.html

Shell编程基础
出自Ubuntu中文
本文作者:Leal

授权许可:

•创作共享协议
•GNU自由文档许可证
编辑人员:FireHare, Dbzhang800

目录
[隐藏 ]
•1 基本格式
◦1.1 合理使用注释
◦1.2 变量赋值和引用
•2 Shell里的命令
◦2.1 Unix 命令
◦2.2 概念: 管道, 重定向和 backtick
•3 Shell里的流程控制
◦3.1 if 语句
◦3.2 && 和|| 操作符
•4 case 语句
◦4.1 select 语句
◦4.2 while/for 循环
•5 Shell里的一些特殊符号
◦5.1 引号
◦5.2 Here documents
•6 Shell里的函数
•7 命令行参数
•8 Shell脚本示例
◦8.1 一般编程步骤
◦8.2 二进制到十进制的转换
◦8.3 文件循环拷贝
•9 脚本调试
 

<script type="text/javascript"><!-- --></script>
[编辑 ] 基本格式
我们可以使用任意一种文字编辑器,比如nedit、kedit、emacs、vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行):

# !/bin/sh

...

符号#!用来告诉系统执行该脚本的程序,本例使用/bin/sh。编辑结束并保存后,如果要执行该脚本,必须先使其可执行:

chmod +x filename

此后在该脚本所在目录下,输入 ./filename 即可执行该脚本。


[编辑 ] 合理使用注释
shell 脚本中以# 开始的行表示注释,直到该行的结束。我们强烈建议你在脚本中进行适当/合理的注释,这样一来,即便你在相当长时间内没有使用该脚本,也能在短时间内就明白它的作用和工作原理。此外,还有一个很重要的原因是,在注释的帮助下,别人可以快速有效的分享你的脚本,并提出自己的意见和改进。


 

Linux Shell注释符号 >>># 或 !

 

取自"http://wiki.ubuntu.org.cn/index.php?title=Shell%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80&variant=zh-cn "


man


http://www.lovetech.cn/2007/05/1.html

 

ubuntu 完美man
1.添加库函数手册
ubuntu默认是没有安装c语言的库函数man手册的,所以你在man perror 和sendto之类的函数时会显示没有相关文档的问题,这个问题让我郁闷了我好久。解决方法:
sudo apt-get install manpages-dev

2.让man显示中文
ubuntu源里面已经包含了中文的man包,所以不用从其他地方down了,直接
sudo apt-get install manpages-zh
但是这样man默认显示的还不是中文,还需要以下两步
a.把中文man包转换成utf8格式的
新建一个脚本文件
gedit t.sh
把下面内容添加进去
#!/bin/bash

cd /usr/share/man/zh_CN/
for k in *
do
cd $k
for i in *.gz
do
j=`echo ${i%.gz}`
gunzip $i
iconv -f gb18030 -t utf8 $j >tmp
mv tmp $j
gzip $j
done
cd ..
done
然后
sudo ./t
b.修改man默认的语言
sudo gedit /etc/manpath.config
把里面的所有的 /usr/share/man 改成 /usr/share/man/zh_CN
保存后退出,然后你再试一下man ls

3.让没有中文帮助的显示英文
做完上面第二部还不够,这时你再man 一下一些c语言函数(不要用printf,socket之类比较有名的函数,这些已经有中文帮助了)的时候就会发现竟然没有帮助,而刚才明明在第一步已经安装了啊。这是因为你上面 把/usr/share/man 改成 /usr/share/man/zh_CN的操作使man只在中文帮助中搜索,如果没有就直接放弃,因此还需要以下操作,才能让man在没有中文帮助的时候自动显示英文的帮助,如果英文的也没有,哪就真的没有了。
sudo gedit /etc/manpath.config
然后搜索你刚才改过的地方,然后在其后面添加同样的一行,只是后面的目录还用原来的 /usr/share/man,比如在修改后的
MANPATH_MAP /bin /usr/share/man/zh_CN
再添加一行
MANPATH_MAP /bin /usr/share/man

参考: http://csf.swfc.edu.cn/phpbb/viewtopic.php?p=6684

再多唠叨一句:man显示的函数只有枯燥的用法,看起来不是很爽,在此推荐一个查c语言函数的网站 http://www.cplusplus.com/ ,上面有每个函数的用法以及实例。

 

巩固shell基础知识

http://sucre.javaeye.com/blog/639952
以下这些知识是在编写shell程序的时候要用到的,需要的时候可以来查查,来巩固一下吧

 

shell中的一些扩展字符
• !! 上个命令的所有字符
• !* 一个命令的所有参数
• !^ 上一条命令的第一个参数
• !$ 上一条命令的最后一个参数
• !:3 上一条命令的第3个参数
• !:0 命令
• !:x x指示 可以是^ $ x-y * x*(第x个起) x-(不包括$) % n 0
• !n history中的第n条命令,-n表示最后倒数的。
• !?xxx 包含xxx的最后一个命令
• !xxx xxx开头的最后一个命令
• ^string1^string2^ 快速替换。重复上一条命令,将 string1 替换为 string2. 与 ``!!:s/string1/string2/''

修饰符 (Modifiers)
可选的 word 指示器之后,可以出现一个或多个下述 modifiers 的序列,每一个都前缀有 `:'。

h 删除文件名组成的尾部,只保留头部(路径)。
t 删除文件名组成中前面的成分,保留尾部(文件)。
r 删除 .xxx 形式中尾部的后缀成分,保留基本名称部分。
e 删除所有内容,保留尾部的后缀。
p 打印新的命令,但是不执行它。
q 引用替换所得的词,使它不再进行替换。
x 引用替换所得的词,类似与 q, 但是会根据 blanks,空白 和新行符分解为词。
s/old/new/
将事件行中出现的第一个 old 替换为 new。 任何分隔符都可以用来代替
/,最后一个分隔符是可选的,如果它是事件行的最后一个字符。 old 和 new 中的分隔符可以用一个反斜杠来引用。如果 &
出现在 new 中,它将替换为 old。 可以用单个反斜杠来引用 &。如果 old 为空,它将设置为最后替换的 old,
或者,如果前面没有发生过历史替换,就是 !?string[?] 搜索中的最后一个 string。
& 重复上一次替换。
g 使得改变被整个事件行所接受。用于与 `:s' 或 `:&' 结合 (例如,`:gs/old/new/')。 如果与 `:s'
结合使用,任何分隔符都可以用来代替 /, 最后一个分隔符是可选的,如
果它是事件行的最后一个字符。

$ mv foo.{jpeg,jpg}

这个命令将把foo.jpeg改名为foo.jpg。

bash脚本的参数

$0:脚本名字。此变量包含地址,可以使用basename $0获得脚本名称。
$1:第一个参数
$2,$3,$4,$5,…一次类推。

$# 传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数
$$ 脚本运行的ID号
$! 后台运行的最后一个进程的ID号
$@ 与$#相同,但是使用时加引号,并在引号中返回每个参数。
$- 显示shell使用的当前选项。
$? 显示最后命令的推出状况。0表示没有错误。

================================================

1.得到字符串长度
☎ echo ${#variable}
☎ expr length “$variable”
☎ expr “$variable” : “.*”


e=www; a=e; echo ${!a}; eval echo /$$a

2.查找字符串子串位置
☎ expr index “$variable” “substring”

3.得到字符串子字符串
☎ echo ${variable:position:length}
☎ expr substr “$variable” startposition length

4.匹配正则表达式之匹配长度
expr match “$x” “this”
☎ expr match “$x” “string”

5.字符串的掐头去尾
☎ echo ${variable#startletter*endletter} # #表示掐头,因为键盘上#在$前面,一个表示最小匹配
☎ echo ${variable##tartletter*endletter} 两个表示最大匹配
☎ echo ${variable%startletter*endletter} # %表示去尾,因为键盘上%在$后面,一个表示最小匹配
☎ echo ${variable%%startletter*endletter} 两个表示最大匹配

6.字符(串)的替换
☎ echo ${variable/oldletter/newletter} #替换一个
☎ echo ${variable//oldletter/newletter} #替换所有

7。测试变量是否已经赋值
${variable:-value}
如果变量已经赋值,则使用该变量值。如果变量为空,则使用value。需要注意的是,value并不赋给variable。
${variable:=value}
该表达式上面的区别就是,如果variable为空,则value赋给variable。
${variable:?”customed message “}
变量是否为空,如果为空的话则显示带有系统错误信息

================================================

Bash 测试和比较函数
test expr 和 [ expr ] 是等价的。
☎ test 3 -gt 4 && echo True || echo false
false
必须用 / 加以转义
☎ [ “abc” /< “def” ];echo $?
0
-a 和 -o 选项使用逻辑运算符 AND 和 OR
☎ [ ! /( “a” = “$HOME” -o 3 -lt 4 /) ]; echo $?
1

不需要对 (( 和 )) 之间的操作符转义
(( w=(y/x) + ( (~ ++x) & 0×0f ) )); echo $? $x $y $w

用 [[ 复合命令,进行通配符测试,包含算术测试
( -d “$HOME” ) && ( -w “$HOME” ) && echo “home is a writable directory”
“abc def d,x” == a[abc]*/ ?d* ; echo $?
| a -gt 2 ; echo $?

在 shell 中用 echo 和 $(( )) 直接进行计算

 

命令的輸出在同一行  Linux 不换行输出

http://www.unix.com/zh-TW/unix-dummies-questions-answers/5720-command-output-one-line.html#ixzz0loLTak9x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值