1.一个文件的内容复制到另一个文件的末尾
比如11的文件内容是:
hello
22的文件内容是:
world
将22的文件内容复制到11文件的末尾,11文件的效果就是:
hello
world
解决办法:
cat 22 >> 11
>>
的意思是追加的意思
>
的意思是重定向的意思,会覆盖原先的内容
小Tips:
将a.txt文件的内容清除,并且使得文件的大小为0,而不删除文件可以:
cat /dev/null > a.txt
2.删除操作
1) 删除一个目录
直接rm就可以了,不过要加两个参数-rf 即:rm -rf 目录名字
-r 就是向下递归,不管有多少级目录,一并删除
-f 就是直接强行删除,不作任何提示的意思
2) 删除一个文件
rm –f 文件名
3)删除多个文件操作
rm -rf *.* 删除这个目录下所有的文件
rm -rf *关键字* 删除和关键字有关的所有文件
3.让进程在后台可靠运行的几种方法
我们知道,当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程。因此,我们的解决办法就有两种途径:要么让进程忽略 HUP 信号,要么让进程运行在新的会话里从而成为不属于此终端的子进程。
此时最方便的方法就是 screen 了。简单的说,screen 提供了 ANSI/VT100 的终端模拟器,使它能够在一个真实终端下运行多个全屏的伪终端。
1) screen安装
sudo apt-get update
sudo apt-get install screen
2) 这里介绍常用的命令
screen -S name 启动一个名字为name的screen
screen -S session_name -X quit 使用screen名字,kill掉
screen -ls 是列出所有的screen
screen -r name或者id,就可以回到某个screen了
ctrl + a + d 可以回到前一个screen,当时在当前screen运行的程序不会停止
ctrl + Z 停止
3)快速刪除screen所有的視窗
當用screen開啟了許多個虛擬終端機後,想要一次通通刪掉:
- 如果在screen裡面,先卸離(detach) screen
- 用 screen -ls 指令看要刪掉的虛擬終端機是哪個,名稱前面會是pid (process ID)
- 用 kill pid 指令殺掉那個screen的process ID
這時候用 screen -ls 看會發現原來那個screen的狀態是 dead - 用 screen -wipe 刪除狀態已經是dead的虛擬終端機
4. apt-get命令
apt-get命令是Debian Linux发行版中的APT软件包管理工具。所有基于Debian的发行都使用这个包管理系统。deb包可以把一个应用的文件包在一起,大体就如同Windows上的安装文件。
使用apt-get命令的第一步就是引入必需的软件库,Debian的软件库也就是所有Debian软件包的集合,它们存在互联网上的一些公共站点上。把它们的地址加入,apt-get就能搜索到我们想要的软件。
/etc/apt/sources.list是存放这些地址列表的配置文件,其格式如下:
deb [web或ftp地址] [发行版名字] [main/contrib/non-free]
下面是常用命令:
(1)在修改/etc/apt/sources.list
或者/etc/apt/preferences
之后运行该命令。此外您需要定期运行这一命令以确保您的软件包列表是最新的:
apt-get update
(2)安装一个新软件包:
apt-get install packagename
(3)卸载一个已安装的软件包(保留配置文件):
apt-get remove packagename
(4)卸载一个已安装的软件包(删除配置文件):
apt-get –purge remove packagename
(5)Debian Linux会把已装或已卸的软件都备份(.deb文件)在硬盘上,所以如果需要空间的话,可以让这个命令来删除你已经删掉的软件:
apt-get autoclean
(6)这个命令会把安装的软件的备份(.deb文件)也删除,不过这样不会影响软件的使用的:
apt-get clean
(7)将系统升级到新版本:
apt-get dist-upgrade
5. 文件重命名
mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中。该命令等同于DOS系统下的ren和move命令的组合。它的使用权限是所有用户。
格式
mv [options] 源文件或目录 目标文件或目录
主要参数[options]:
-i:交互方式操作。如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答”y”或”n”,这样可以避免误覆盖文件。
-f:禁止交互操作。mv操作要覆盖某个已有的目标文件时不给任何指示,指定此参数后i参数将不再起作用。
当选择参数类型是文件时,mv命令完成文件重命名,它将所给的源文件或目录重命名为给定的目标文件名。
实例——将文件test.txt重命名为wbk.txt:
mv test.txt wbk.txt
6.echo命令
1)echo的作用:打印字符串到输出文件流。
例如:
echo Hello,Binn
如图,执行之后,终端会打印出echo的参数,即Hello,Binn
2)echo + 输出重定向的用法:echo 参数 > 输出文件
echo Hello,Binn > tmp.txt
这句话的意思即是:输出Hello,Binn字符串到一个位置,如果tmp.txt存在,我们即【清空其内容,更新为Hello,Binn】,不存在,创建之。
这个过程,echo没有像之前那样向终端打印参数,为什么?
原因是因为,>输出重定向把echo的参数输出到某个文件(而不是输出到终端,这就是输出重定向)。
3)操作符>>输出追加重定向(类似于>输出重定向功能)
相同的地方是:如果重定向的文件不存在,创建之
唯一不同的地方是:【如果重定向的文件存在,追加之(>符是清空后新增内容,>>是在文件末尾追加字符串)】
7.剪切命令
命令格式:
mv [选项] 源文件或目录 目标文件或目录
命令参数:
-b :若需覆盖文件,则覆盖前先行备份;
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖;
-u :若目标文件已经存在,且 source 比较新,才会更新(update)。
命令实例:
将文件log1.txt,log2.txt,log3.txt剪切到目录test3中
mv log1.txt log2.txt log3.txt test3
8.source命令
source命令用法
source FileName
source命令作用
在当前bash环境下读取并执行FileName中的命令。
*注:该命令通常用命令“.”来替代。
使用范例:
source filename
. filename(中间有空格)
source命令(从 C Shell 而来)是bash shell的内置命令。点命令,就是个点符号,(从Bourne Shell而来)是source的另一名称。
同样的,当前脚本中配置的变量也将作为脚本的环境,source(或点)命令通常用于重新执行刚修改的初始化文档,如 .bash_profile 和 .profile 等等。
例如,假如在登录后对 .bash_profile 中的 EDITER 和 TERM 变量做了修改,则能够用source命令重新执行 .bash_profile 中的命令而不用注销并重新登录。比如您在一个脚本里`export $KKK=111`
,假如您用./a.sh执行该脚本,执行完毕后,您运行 echo $KKK
,发现没有值,假如您用source来执行 ,然后再echo,就会发现KKK=111。因为调用./a.sh来执行shell是在一个子shell里运行的,所以执行后,结构并没有反应到父shell里,但是source不同他就是在本shell中执行的,所以能够看到结果。
source命令(从 C Shell 而来)是bash shell的内置命令。点命令,就是一个点符号,(从Bourne Shell而来)是source的另一名称。这两个命令都以一个脚本为参数,该脚本将作为当前shell的环境执行,即不会启动一个新的子进程。所有在脚本中设置的变量将成为当前Shell的一部分。
source命令的一个妙用
在编译核心时,常常要反复输入一长串命令,如
make mrproper
make menuconfig
make dep
make clean
make bzImage
.......
这些命令既长,又繁琐。而且有时候容易输错,浪费你的时间和精力。如果把这些命令做成一个文件,让它自动按顺序执行,对于需要多次反复编译核心的用户来说,会很方便。
用source命令可以办到这一点。它的作用就是把一个文件的内容当成是shell来执行。
先在/usr/src/linux-2.4.20目录下建立一个文件,取名为make_command,在其中输入如下内容:
make mrproper &&
make menuconfig &&
make dep &&
make clean &&
make bzImage &&
make modules &&
make modules_install &&
cp arch/i386/boot/bzImge /boot/vmlinuz_new &&
cp System.map /boot &&
vi /etc/lilo.conf &&
lilo -v
文件建立好之后,以后每次编译核心,只需要在/usr/src/linux-2.4.20下输入source make_command
就行了。这个文件也完全可以做成脚本,只需稍加改动即可。
shell编程中的命令有时和C语言是一样的。&&表示与,||表示或。把两个命令用&&联接起来,如 make mrproper && make menuconfig
,表示要第一个命令执行成功才能执行第二个命令。对执行顺序有要求的命令能保证一旦有错误发生,下面的命令不会盲目地继续执行。
source filename 与 sh filename 及./filename执行脚本的区别
- 当shell脚本具有可执行权限时,用
sh filename
与./filename
执行脚本是没有区别得。./filename
是因为当前目录没有在PATH中,所有”.”是用来表示当前目录的。 sh filename
重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell。source filename
:这个命令其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。
9. 查看磁盘空间及目录容量
df命令是Linux系统以磁盘分区为单位查看文件系统,可以加上参数查看磁盘剩余空间:
df -hl
显示格式为:
文件系统 容量 已用 可用 已用% 挂载点
Filesystem Size Used Avail Use% Mounted on
/dev/hda2 45G 19G 24G 44% /
/dev/hda1 494M 19M 450M 4% /boot
/dev/hda6 4.9G 2.2G 2.5G 47% /home
/dev/hda5 9.7G 2.9G 6.4G 31% /opt
none 1009M 0 1009M 0% /dev/shm
/dev/hda3 9.7G 7.2G 2.1G 78% /usr/local
/dev/hdb2 75G 75G 0 100% /
/dev/hdb2 75G 75G 0 100% /