分类 Linux 下的文章

Shell变量

变量设置


Variable-name=value : 设置实际值到 variable-name
Variable-name+value : 如果设置了 variable-name,则重设其值
Variable-name:?value : 如果未设置 variable-name,显示未定义用户错误信息
Variable-name?value : 如果未设置 variable-name,显示系统错误信息
Variable-name:=value : 如果未设置 variable-name,设置其值
Variable-name:-value : 同上,但是取值并不设置到 variable-name,可以被替换

- 阅读剩余部分 -

shell中位置变量参数

$# : 传递到脚本的参数个数
$* : 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过 9个
$$ : 脚本运行的当前进程 ID号
$! : 后台运行的最后一个进程的进程 ID号
$@ : 与$#相同,但是使用时加引号,并在引号中返回每个参数
$- : 显示shell使用的当前选项,与 set命令功能相同
$? : 显示最后命令的退出状态。 0表示没有错误,其他任何值表明有错误。


#!/bin/sh #param.sh # $0:文件完整路径名 echo "path of script : $0" # 利用basename命令文件路径获取文件名 echo "name of script : $(basename $0)" # $1:参数1 echo "parameter 1 : $1" # $2:参数2 echo "parameter 2 : $2" # $3:参数3 echo "parameter 3 : $3" # $4:参数4 echo "parameter 4 : $4" # $5:参数5 echo "parameter 5 : $5" # $#:传递到脚本的参数个数 echo "The number of arguments passed : $#" # $*:显示所有参数内容i echo "Show all arguments : $*" # $$:脚本当前运行的ID号 echo "Process ID : $$" # $?:回传码 echo "errors : $?"
输入./param.sh hello world

[firefox@fire Shell]$ ./param.sh hello world
path of script : ./param.sh
name of script : param.sh
parameter 1 : hello
parameter 2 : world
parameter 3 :
parameter 4 :
parameter 5 :
The number of arguments passed : 2
Show all arguments : hello world
Process ID : 5181
errors : 0

目录拷贝--bash实现

刚开始看shell,写了一个bash的小程序,功能是将原目录下的所有子目录都复制到目的目录,但是不复制里面的文件。能够用于某些场合:比如需要原来的文件目录结构,但是里面的内容却是需要更新的。下面的代码都是在我自己的电脑上测试的,路径稍微改动下就OK!

- 阅读剩余部分 -

alias系统配置

今天不小心写一个shell的时候把我很多资料都删除了,就是因为脚本里面用到了rm,具体的错误也不是很清楚,因为运行的时候把源文件都删除了。诶,真是很伤心的~~~

于是我就修改了alias的系统文件配置,想在以后删除文件的时候有提示。

[firefox@fire ~]$ vim ~/.bashrc


然后在文本最后加入

alias rm='rm -i'


默认bash是要在下次启动的时候才生效的,不过可以输入

[firefox@fire ~]$ source ~./bashrc


就可以在立即生效!

sed变量替换问题

下午在写一段shell脚本的时候,遇到了一个问题,就是在sed里面的变量替换不了。

sed   's/^$srcdir/test/g'   /tmp/src_temp_dir.txt  >  /tmp/des.txt


上面srcdir变量里面存的是一个文件的完整路径,文件里面也是一些路径的字符串。我想把原来文件里的路径都换了。结果就是换不了,弄了很久才怀疑是$srcdir没有解释出来,结果去网上搜了下,因为刚开始看shell和正则,所以不是很懂。到后来才发现换成下面的就OK了:

sed  "s,^${srcdir},temp,g"   /tmp/src_temp_dir.txt  >  /tmp/des.txt


具体原因不是很懂。。。

Linux系统--job control

工作管理(job control)是在bash环境下进行的,能在一个终端机下面进行多个工作管理。但是这些工作都是bash的子进程。这样就能让用户把一些工作放在后台处理,而前台继续其他工作,就像开启多线程一样,不过这里的单位都是线程。

直接将命令丢到后台“执行” : &


[firefox@fire ShellProgram]$ vim Pra1.sh &

把目前的工作丢到后台并且“暂停” : [ctrl] + [z]


[firefox@fire  ShellProgram]$ vim Pra1.sh  //按下[ctrl] + [z],这个命令就暂停到了后台

查询目前的后台工作状态:jobs —[lsr]


[firefox@fire  ShellProgram]$ jobs -l

把后台的工作拿到前台处理:fg %[number]


[firefox@fire  ShellProgram]$ fg %1   //拿出后台[1]的job到前台

让后台的工作状态变得运行:bg


[firefox@fire  ShellProgram]$ bg %1  //让后台的[1]进行工作

 

Linux系统启动--虚拟文件系统

前面一篇讲到了OS启动过程中MBR的相关属性,这里再简单介绍下Linux系统启动过程中虚拟文件系统的作用。

我们按下电源键,计算机第一个执行的程序就是MBR上面的BootLoader,同时,BIOS还会完成一些硬件的初始化等,接下来呢BootLoader就要去加载内核文件到内存,然后将内核文件解压,完成内核文件的加载,从这里开始BIOS的功成身退,以后的任务就交给内核来完成了。内核文件在哪里呢?

- 阅读剩余部分 -

Linux文件压缩和打包

*.Z   Compress程序压缩的文件


*.gz  gzip程序压缩的文件


*.bz2  bzip2程序压缩的文件


*.tar   tar程序打包的数据,没有经过压缩


*.tar.gz  tar程序打包的数据,经过了gzip压缩


*.tar.bz2  tar程序打包的数据,经过了bzip2压缩

- 阅读剩余部分 -

Linux磁盘管理

磁盘和目录容量


df [-ahik] [目录或者文件名]


参数:

-k : 以KB容量显示各文件系统

-m :以MB容量显示各文件系统

-h: 以KB,MB,GB等比较智能化的格式显示文件系统容量

-i : 以inode的数量来显示

- 阅读剩余部分 -

No package g++ available问题解决

   Fedora16下,我打开codeblocks后,写了一个小程序,结果要编译的时候显示“g++ ”不存在,我回到终端里面,输入yum install g++,结果No package g++ available,我就郁闷了,我自己电脑上上次也是这么装的额,怎么回事额。。。后来找了下,发现只要输入yum install gcc-c++就OK了,但具体为什么我不是很清楚。

fedora16下codeblocks无法编辑----解决办法

     最近在fedora16下面安装了codeblocks,想写个程序,建了一个控制台程序,结果发现:可以输入!@#之类的,不能输入字母,但有时候重新启动能输入一个字母,之后再敲键盘就不行了。。。再是,我切换成中文的话是可以正常输入的,然后我再切换回英文,也能输入几个字母,一按下回车就又不能输入了‵‵‵‵非常奇怪。我重新卸载了,又安装,还是不能用,弄来弄去`````

    弄了几天终于找到问题了,原来我系统上安装的是ibus,这个输入法和codeblocks不兼容阿。。。我卸载了ibus就可以了,后来我又下载了个Fcitx输入法。。。总算都弄好了。。。。。。大笑

 

Vim基本命令

    看了些资料,总结了一些适合编程人员的Vim基本命令,不是很全,但是最起码比较实用。。。都是最基本的大笑

vim 教程


在fedora下面,打开终端。
输入vim filename就进入了vim
///////////////////////////////

- 阅读剩余部分 -

fedora安装微软雅黑和consola

微软雅黑一直是我认为的最好看的中文字体,而consola字体则是最适合程序员的字体。我个人是很喜欢的。

下面介绍下在fedora下面安装微软雅黑和consola的方法:

1.如果你是windows+fedora双系统的话,就直接在通过fedora访问windows的系统盘(一般是C盘),然后到Windows/Fonts下面,找到consola.ttf和msyh.ttf,点击安装,这样字体    就安装好了。(要是你没有windows的话,可能要去下载个包了),安装好了后就可以比如在chrome里面的字体设置里面会出现这两种字体的选择。

- 阅读剩余部分 -

Linux基本常用命令

    man vim

    命令帮助,查看命令使用形式。

命令行下快捷

有时候在 X-Window里由于程序出错,使鼠标键盘都不起作用, 这时候不用着急, 因为在Linux下几乎不会像在Win 9x里那样恶性死机, 你只须键入Ctrl+Alt+BackSpace键就可以回到
字符界面下了。

- 阅读剩余部分 -

gcc/g++基本命令简介

gcc & g++现在是gnu中最主要和最流行的c & c++编译器 。
g++是c++的命令,以.cpp为主,对于c语言后缀名一般为.c。这时候命令换做gcc即可。其实是无关紧要的。
其实编译器是根据gcc还是g++来确定是按照C标准还是C++标准编译链接。

下面以Test.cpp为例:

- 阅读剩余部分 -