linux常用命令与shell编程

1.     echo命令的作用列举如下:

1)打开回显或关闭回显功能

格式:echo [{ on|off }]

如果想关闭“ECHO OFF”命令行自身的显示,则需要在该命令行前加上“@”。@Echo off

2)关闭DOS命令提示符

格式:ECHO OFF

在DOS提示符状态下键入ECHO OFF,能够关闭DOS提示符的显示使屏幕只留下光标,直至键入ECHO ON,提示符才会重新出现。

3)输出空行,即相当于输入一个回车

格式:ECHO.

值得注意的是命令行中的“.”要紧跟在ECHO后面中间不能有空格,否则“.”将被当作提示信息输出到屏幕。另外“.”可以用,:;”/[\\]+等任一符号替代。

命令ECHO.输出的回车,经DOS管道转向可以作为其它命令的输入,比如echo.|time即相当于在TIME命令执行后给出一个回车。所以执行时系统会在显示当前时间后,自动返回到DOS提示符状态

4)建立新文件或增加文件内容

格式:ECHO 文件内容>文件名

  ECHO 文件内容>>文件名

例如:

C:>ECHO @ECHO OFF>AUTOEXEC.BAT建立自动批处理文件

C:>ECHO C:\\CPAV\\BOOTSAFE>>AUTOEXEC.BAT向自动批处理文件中追加内容

C:>TYPE AUTOEXEC.BAT显示该自动批处理文件

2.     mv

功能说明:移动或更名现有的文件或目录。
语  法:mv [-bfiuv][--help][--version][-S <附加字尾>][-V <方法>][源文件或目录][目标文件或目录]
补充说明:mv可移动文件或目录,或是更改文件或目录的名称。
参  数:
 -b或--backup  若需覆盖文件,则覆盖前先行备份。 
 -f或--force  若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文 件或目录。 
 -i或--interactive  覆盖前先行询问用户。 
 -u或--update  在移动或更改文件名时,若目标文件已存在,且其文件日期比源文件新,则不覆盖目标文件。 

例如:

mv 要移动的文件  目标路径

mv -i 要移动的文件  目标路径(如果有重复文件,会有提示信息)

3.     rcp(remote copy)

功能说明:远端复制文件或目录。
语  法:rcp [-pr][源文件或目录][目标文件或目录] 或 rcp [-pr][源文件或目录...][目标文件] 
补充说明:rcp指令用在远端复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它灰把前面指定的所有文件或目录复制到该目录中。
参  数:
  -p  保留源文件或目录的属性,包括拥有者,所属群组,权限与时间。 
  -r  递归处理,将指定目录下的文件与子目录一并处理。

4.     rm(remove)

功能说明:删除文件或目录。
语  法:rm [-dfirv][--help][--version][文件或目录...]
补充说明:执行rm指令可删除文件或目录,如欲删除目录必须加上参数"-r",否则预设仅会删除文件。 
参  数:
 -d或--directory  直接把欲删除的目录的硬连接数据删成0,删除该目录。 
 -f或--force  强制删除文件或目录。 
 -i或--interactive  删除既有文件或目录之前先询问用户。 
 -r或-R或--recursive 递归处理,将指定目录下的所有文件及子目录一并处理。  

例如:

rm -i file:删除file文件并有提示信息,y确认删除,n是调过

rm -f file:强制删除文件或目录。该选项会忽略放在他前面的-i选项

rm -rffile:删除一个叫做dir1的目录并同时其内容

5.     tftp(trivial file transfer protocol)

功能说明:传输文件。
语  法:tftp [主机名称或IP地址]
补充说明:FTP让用户得以下载存放于远端主机的文件,也能将文件上传到远端主机放置。tftp是简单的文字模式ftp程序,它所使用的指令和FTP类似。

6.     cd(change directory)

功能说明:切换目录。
语  法:cd [目的目录]
补充说明:cd指令可让用户在不同的目录间切换,但该用户必须拥有足够的权限进入目的目录。

cd命令不仅显示当前状态,还可以改变当前状态,用法和dos下的cd命令基本一致。

cd ..  可进入上一层目录

cd -   可进入上一个进入的目录

cd ~   可进入用户的home目录

cd /   可切换到根目录

cd     cd后不加参数返回home目录

7.     dirs

功能说明:显示目录记录。
语  法:dirs [+/-n -l]
补充说明:显示目录堆叠中的记录。
参  数:
  +n   显示从左边算起第n笔的目录。
  -n   显示从右边算起第n笔的目录。
  -l   显示目录完整的记录。

8.     ls(list)

功能说明:列出目录内容。
补充说明:执行ls指令可列出目录的内容,包括文件和子目录的名称。
参  数:
  -1   每列仅显示一个文件或目录名称。
  -a或--all   下所有文件和目录。
   -l   使用详细格式列表。

如果想取得详细的信息,可用ls –l命令,这样就可以显示目录内容的详细信息。如果目录下的文件太多,用一屏显示不了,可以用ls –l|more分屏显示。

ls –l可用ll替代。

9.     ln

功能说明:建立链接。
补充说明:符号链接(软链接)需要使用带-s参数的ln命令来创建,符号链接删除链接文件不影响原文件。ln默认是建立硬链接,硬链接是直接引用,而符号链接是通过名称进行引用。
ln –s  TARGET LINK_NAME

ln -s /app/liuyh /app/liuyhln

 

10.  mkdir(make directories)

功能说明:建立目录
语  法:mkdir [-p][--help][--version][-m <目录属性>][目录名称]
补充说明:mkdir可建立目录并同时设置目录的权限。
参  数:
  -m<目录属性>或--mode<目录属性>   建立目录时同时设置目录的权限。
  -p或--parents   若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录。
  --help   显示帮助。
  --verbose   执行时显示详细的信息。
  --version   显示版本信息。

例如:

mkdir dir1 创建一个叫做“dir1”的目录

mkdir dir1dir2 同时创建两个目录

mkdir系统默认新建立目录的权限数字代码为755,如果默认的路径无法满足要求,使用-m选项设置,比如mkdir -m777 test4

11.  pwd(print working directory)

功能说明:显示工作目录。
语  法:pwd [--help][--version]
补充说明:执行pwd指令可立刻得知您目前所在的工作目录的绝对路径名称。

12.  rmdir(remove directory)

功能说明:删除目录。
语  法:rmdir [-p][--help][--ignore-fail-on-non-empty][--verbose][--version][目录...]
补充说明:当有空目录要删除时,可使用rmdir指令。
参  数:
  -p或--parents   删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除。
  --help   在线帮助。
  --verbose   显示指令执行过程。
  --version   显示版本信息。

13.  telnet

功能说明:远端登入。
语  法:telnet [-8acdEfFKLrx][-b<主机别名>][-e<脱离字符>][-k<域名>][-l<用户名称>][-n<记录文件>][-S<服务类型>][-X<认证形态>][主机名称或IP地址<通信端口>]
补充说明:执行telnet指令开启终端机阶段作业,并登入远端主机。

14.  ifconfig

功能说明:显示或设置网络设备。
补充说明:ifconfig可设置网络设备的状态,或是显示目前的设置。

15.  ping

功能说明:检测主机。
语  法:ping [-dfnqrRv][-c<完成次数>][-i<间隔秒数>][-I<网络界面>][-l<前置载入>][-p<范本样式>][-s<数据包大小>][-t<存活数值>][主机名称或IP地址]
补充说明:执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。

ping直接加IP地址可以查看是否联通。

16.  tar(tape archive)

功能说明:备份文件。
补充说明:tar是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。
参数:
  -c或--create   建立新的备份文件。
  -f<备份文件>或--file=<备份文件>   指定备份文件。
  -r或--append   新增文件到已存在的备份文件的结尾部分。
  -v或--verbose   显示指令执行过程。
  -x或--extract或--get  从备份文件中还原文件。

例如:

tar -cvf cebent.tar cebent:把cebent文件夹归档为cebent.tar文件

tar -tf cebent.tar:列出cebent.tar的内容但不解压文件

tar -xvf cebent.tar :解压缩文件cebent.tar

17.  date显示系统时间

 date:显示系统时间设置

date +%y%m%d:将日期显示为两位数的年、月、日的组合

 date -s 06/18/14:将系统时间设置为2014年6月18日

 date -s 14:20:50:将系统时间设置为14点20分50秒

date -s "2016-12-6 10:38:00"(好用)

18.  su切换用户

    su命令是最基本的命令之一,常用于不同用户间切换。例如如果登陆为user1,要切换到user2,只需要用如下命令:$su user2,然后系统提示输入user2口令,输入正确的口令之后就可以切换到user2。完成之后就可以用exit命令返回到user1。

   su命令的常见用法是变成根用户或超级用户。如果发出不带用户名的su命令,则系统提示输入根口令,输入之后则可切换为根用户。

如果登陆为根用户,则可以用su命令成为系统上任何用户而不需要口令。

例如:

su - 新用户:切换到新用户

19.  scp远程复制

scp 需要复制的文件 用户名@ip:/目标目录

scpcebent.tar [email protected]:/app/ceb/app:把当前服务器目录下的cebent.tar复制到用户名为netbank,ip为10.1.244.228的/app/ceb/app目录下。

20.  cp

cp 要复制的文件  目标路径

cp -i 要复制的文件  目标路径(如果有重复文件,会有提示信息)

cp -r 要复制的文件  目标路径(递归处理,将指定目录下的文件和子目录一起复制)

21.  chmod:改变文件(目录)的权限

chmod 777 文件(r读:4,w写:2,x执行:1)

用户和文件的关系定义为3类:第1类是文件所有者(文件主),即创建文件的人;第二类是同组用户,即几个有某些共同关系的用户组成的集体;第三类是其他用户。Linux把文件权限分为三类:读(r)、写(w)、执行(x)。每一类用户的文件设置成3位。

22.  chown:改变文件的所有权或组别

语  法:chown [option] … [owner][:[group]] file

补充说明:将文件file的属主更改为owner,属组更改为group。

参数:

 -R选项用于改变一个目录及其下所有文件(包含子目录)的所有权

例如:

chown netbank:root days:文件days属主更改为netbank用户,属组更改为root组。

chown guest days:文件days的属主更改为guest用户,保留其属组设置。

chown :newGrp days:文件days的属组更改为newGrp,保留属主设置

chown -R netbank app/:将app/和及其下所有的文件交给用户netbank

23.  chgrp:单独设置文件的属组

语  法:chgrp [option] …[group] file

补充说明:将文件file的属组更改为group。

参数:

 -R选项用于改变一个目录及其下所有文件(包含子目录)的属组

例如:

chgrp root days:文件days的属组更改为root组。

chgrp -R root app/:将app/和及其下所有的文件属组更改为root组

24.  cat

cat 文件:查看文件内容,一般为文本文件,从文件的第一行内容开始显示,文件过长的话只能看到最后一页,不适合查看长文件。

25.  more

more 文件: 在文件末尾显示整个内容的比例,空格键向下翻动一页,字母b向上翻动一页,Enter键向下滚动一行,按Q键退出

26.  less

less 文件:更适用阅读较长较大的文件。 less命令中的“回车键、空格键和b”操作键功能和more的相同,还可以使用Page Up和 Page Down进行上下翻页,使用上下方向键对文本内容一行一行的上下移动,退出命令和more的也一样。还可以查找字符串,输入/要查找的字符串。

27.  head

head –20 查看的文件名称:查看文件的前20行

ctrl+c可以退出

28.  tail

tail –f 查看的文件名称(动态查看文件内容)

ctrl+c可以退出

 

29.  who查看哪些用户登录以及工作在哪个控制台上

whoami:查看当前用户

30.  df

df -h:以容易理解的格式显示出文件系统大小

31.  touch

touch 文件名:创建一个空文件

touch -d 20141106 app-20141106.tar:更改文件的修改时间2014年11月6日00:00:00

32.  uname

uname -a:显示当前系统的版本信息

uname -r:显示内核信息

Linux localhost.lw 2.6.32-358.el6.i686 #1 SMP Thu Feb21 21:50:49 UTC 2013 i686 i686 i386 GNU/Linux

显示x86_64表示为64位,i686则为32位。

33.  wc

wc [option] [FILE]:该命令的功能是显示文件列表中各文件的行数、词数和字节数信息。如果不加任何命令选项,它分4栏显示统计信息,分别为行数(line)、字数(word)、字节数(character)和文件名。

34.  grep

grep命令的格式为:grep [option] pattern [file]。

grep命令会到输入中或你指定的文件中查找包含匹配指定模式的字符的行。grep的输出就是包含了匹配模式的行。

例如在文件day中查找包含un的行,可以使用grep un day。

35.  history

history:查看用户操作的命令    

history  10:查看最近10行的命令

36.  id

id 用户名:查看用户的UID、GID及其所属的组 

37.  输出重定向>和>>

输出重定向:将命令的输出重定向到文件

date > test.log:将date命令的输出重定向到test.log文件中,如果该文件非空则覆盖

> 文件名:清空文件的内容

date >> test.log:将date命令的输出追加到test.log文件中

38.  输入重定向<和<<

输入重定向:将文件的内容重定向到命令。

区分方法:命令总是在左侧,而重定向符号“指向”数据流动的方向。例如输入重定向小于号说明数据正在从输入文件流向命令。

例:wc < test.log:统计test.log文件的行数、词数和字节数。

内联输入重定向:允许你在命令行而不是文件指定输入重定向的数据。必须指定一个文本标记来划分要输入数据的开始和结尾,可以用任何字符串的值来作为文本标记,但在数据的开始和结尾必须一致

例:

netbank@HK-NBANK-WEB-T02:~/liuyh> wc << EOF

> test String1

> test String2

> test String3

> EOF

 3  6 39

39.  标准输出与标准错误输出

standard error (简称 stderr) 与 standard output (简称 stdout) 给他传送到其它不同的地方,而不是屏幕上头!传送的目标处,通常是档案或者是装置! 而传送的指令则是如下所示:

1. 标准输入(stdin) :代码为 0 ,使用 < 或 << ;

2. 标准输出(stdout):代码为 1 ,使用 > 或 >> ;

3. 标准错误输出(stderr):代码为 2 ,使用 2> 或 2>> ;

指令的格式为:

当然啦,一串指令的最左边一定是指令,而在 >,2>,< 右边的,必须是档案或装置才行! 此外,那个 > 会等于 1> ,因为 standard output 代码是 1 ,可以省略啦! 再者, 1 与 > 之间并没有空格喔!是紧接在一起的!请特别留意这一点:同时写入同一个档案需要使用 2>&1 才对呦!

40.  tee

功能说明:读取标准输入的数据,并将其内容输出成文件和屏幕,若文件以绝对路径存在,则必须保证父目录的存在。>会将数据流整个传送给档案或装置, 因此我们除非去读取该档案或装置,否则就无法继续利用这个数据流。有没有发现在命令重导向的时候,如果我们要将数据送出到档案的时候, 屏幕上就不会出现任何的数据!那么如果我们需要将数据同时显示在屏幕上跟档案中呢?呵呵!这个时候就需要 tee 这个指令。

语  法:tee [-ai][--help][--version][文件...]

补充说明:tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。

参  数:

 -a或--append  附加到既有文件的后面,而非覆盖它.

 -i-i或--ignore-interrupts  忽略中断信号。

 --help  在线帮助。

 --version  显示版本信息。

例:echo "==>tee命令测试开始"|tee -a test.log

41.  管道

取代将命令的输出重定向到文件,你可以重定向输出到另一个命令。这个过程称为管道连接。不要以为管道链接会一个一个地运行。Linux系统实际上会同时运行这两个命令,在系统内部将他们连接起来。在第一个命令产生输出的同时,输出会被立即送给第二个命令。传输数据不会用到任何中间文件或缓冲区域。

command1| command2

例:ps -ef|grep java

42.  命令帮助

man 命令:查看某个命令的帮助信息

whatis 命令:了解该命令的大致用途

43.  vim

语  法:vim file

补充说明:将vim是vi的增强版,用于编辑文件。如果vim的文件不存在,则会自动新建一个文件

参数:

 :q-------------------如果未修改缓冲区数据,退出vim

 :wq------------------将缓冲区数据保存并退出vim

 :q!-------------------取消所有对缓冲区数据的修改并退出vim

  :w filename-------------将文件保存到另一个文件名下

vim编辑器有两种操作模式:普通模式和插入模式。当你刚打开要编辑的文件时(或新建一个文件时),vim编辑器会进入普通模式。在普通模式中,vim编辑器会将按键解释成命令。在插入模式下,vim会将你在当前光标位置输入的每个键都插入到缓冲区。要进入插入模式,按下i键。要退出插入模式回到普通模式,按下键盘上的退出键(ESC)就可以了。

setnu:显示行号

setnonu:取消行号

/pattern:向下查找pattern匹配字符串

?pattern:向上查找pattern匹配字符串

使用了查找命令之后,使用如下两个键快速查找:

n:按照同一方向继续查找

N:按照反方向查找

44.  反引号

在一串指令中,在 ` 之内的指令将会被先执行,而其执行出来的结果将做为外部的输入信息。反引号允许你将shell命令的输出赋给变量。反引号(`)在美式键盘上通常和波浪线(~)位于同一键位。

例如: testing=`date`

shell会运行反引号中的命令,并将其输出赋给变量testing。

45.  用户变量

除了环境变量,shell脚本允许在脚本中定义和使用自己的变量。定义变量允许临时存储数据并在整个脚本中使用,从而使shell脚本看起来更像计算机程序。用户变量可以是任何不超过20个字母、数字或下划线的文本字符串。用户变量区分大小写。值通过等号赋给用户变量。在变量、等号和值之间不能出现空格。shell脚本会自动决定变量值的数据类型。在脚本的整个生命周期中,shell脚本中定义的变量会一直保持着它们的值,但在shell脚本完成时删除掉。类似于系统变量,用户变量可通过美元符引用。

46. $?查看退出状态码

Linux提供了$?专属变量来保存上个执行的命令的退出状态码。你必须在你要查看的命令之后马上查看或使用$?变量。它的值会变成shell中执行的最后一条命令的退出状态码。

例如:echo $? ---------------0

47. 内部字段分隔符IFS

特殊的环境变量IFS,称为内部字段分隔符(internal field separator)。IFS环境变量定义了bash shell用作字段分隔符的一系列字符。默认情况下,bash shell会将下列字符当作字段分隔符:空格、制表符和换行符。如果bash shell在数据中看到了这些字符中的任意一个,它就会假定你在列表中开始了一个新的数据段。在处理可能含有空格的数据时,这会非常麻烦。要解决这个问题,可以在脚本中临时更改IFS环境变量的值来限制一下被bash shell当作字段分隔符的字符。比如,如果你修改IFS的值使其只能识别换行符,需设置IFS=$'\n'。

48.   “$变量名”容纳空格

forvar in /app/liuyh/*

do

 if [ -f "$var" ];then

 echo $var is a file!

 fi

done

for命令遍历/app/liuyh/*输出的结果。该代码使用test命令测试了每个条目(使用方括号方法)以查看它是不是一个文件。在这个例子中,和普通if语句处理得有些不同:if [ -f "$var" ]。

在Linux中,目录名和文件名中包含空格当然是合法的。要容纳这种值,应该将$var变量用双引号圈起来。如果不这么做,遇到有空格的目录名或文件名时会有错误产生。

49. basename

basename命令会返回程序名而不包括路径。

例如bash shell中:echo `basename $0`:打印程序的名称

命令行中:basename 文件名。

50. $#

$#特殊变量含有脚本运行时就有的命令行参数的个数。你可以在脚本中任何地方使用这个特殊变量,就跟普通变量一样。

51. #!/bin/bash

在通常的shell脚本文件时,必须在文件的第一行指定要使用的shell。其格式为:#!/bin/bash。在通常的shell脚本的行里,#用作注释行。shell脚本中的注释行是不被shell执行的。然而,shell脚本文件的第一行是个特例,#后接!号告诉shell用哪个shell来运行脚本(你可以用bash shell来运行你的脚本名称,也可以用其他shell)。在指定了shell之后,可在文件的每行输入命令,后加一个回车符即可编写脚本。

52. read

read命令接受从标准输入(键盘)或另一个文件描述符的输入。在收到输入后,read命令会将数据放进一个标准变量。

read命令的简单用法:

#echo命令使用了-n选项,它会移掉字符串末尾的换行符,允许脚本用户紧跟其#后输入数据

echo -n "Ener your name:"

read name

echo "Hello $name!Welcome toChina."

read命令包含了-p选项,允许你直接在read命令行指定提示符:

read -p "Enter your name:"name

echo "Hello $name!Welcome toChina."

read命令行可以接受多个参数,也可以在read命令行中不指定变量,那么read命令会将它收到的任何数据都放进特殊环境变量REPLY中,如果需要引用该变量即可。

53. 单引号和双引号

单引号引用了所有的字符,即单引号中字符除单引号本身之外都解释为字面意义,单引号不再具备引用变量的功能。因此我们通过将单引号的引用方式称为全引用,将双引号的引用方式称为部分引用。

netbank@HK-NBANK-WEB-T02:~> echo'$PWD is the current directory'

$PWD is the current directory

netbank@HK-NBANK-WEB-T02:~> echo"$PWD is the Current directory"

/app is the Current directory

netbank@HK-NBANK-WEB-T02:~>

54. shell脚本调试方法

-n:读一遍脚本中的命令但不执行,用于检查脚本中的语法错误;

-v:一边执行脚本,一边将执行过的脚本命令打印到标准错误输出;

-x:提供跟踪执行信息,将执行的每一条命令和结果依次打印出来

netbank@HK-NBANK-WEB-T02:~/liuyh> sh-n test0316.sh

test0316.sh: line 8: syntax error nearunexpected token `fi'

test0316.sh: line 8: `  fi'

netbank@HK-NBANK-WEB-T02:~/liuyh> sh-v test0316.sh

#!/bin/sh

#获取系统当天日期为上线日期,或者通过脚本获得上线日期

       if[ ! -d 0316 ];then

              mkdir0316

       fi

netbank@HK-NBANK-WEB-T02:~/liuyh> sh-x test0316.sh

+ '[' '!' -d 0316 ']'

+ mkdir 0316

55. Linu中提示No such file or directory解决办法

分析原因,可能是平台迁移遇到文件格式问题,dos格式文件传输到unix系统时,会在每行的结尾多一个^M,当然可能看不见。在 dos 使用的断行字符为 ^M$ ,我们称为 CR 与 LF 两个符号。 而在 Linux 底下,则是仅有 LF ($) 这个断行符号。由于文件格式的原因会导致文件执行失败,有3种办法解决。

1)     在windows下转换:利用一些编辑器如UE或EditPlus等工具先将脚本编码转换,再放到Linux中执行。转换方式如下(UE):File->Conversions->DOS->UNIX即可。

2)     Linux下打开该sh文件,输入:

:set ff  //回车,显示fileformat=dos

:set ff=unix //重新设置下文件格式

:wq //保存退出

3)     Linux下使用命令“dos2unix 文件名”即可

56. find

1)     在某个路径下查文件,在/etc下查找“*.log”的文件

     find /etc -name "*.log"

2)     扩展,列出某个路径下所有文件,包括子目录

     find /etc -name "*"

3)     在某个路径下查找所有包含“hello abcserver”字符串的文件

     find /etc -name "*" | xargs grep"hello abcserver"

     或者find /etc -name "*" | xargsgrep "hello abcserver" > ./cqtest.txt

57. nohup

nohup指令的一般形式是nohup command &,其中command是要执行的命令。在日常的系统管理工作中,有些程序耗费的时间较长,在用户需要进行其他工作,而前台执行的程序又没有完成的情况下,就可以使用nohup命令让程序后台继续运行,使用nohup命令能够忽略hangup(挂起)信号而继续执行相关程序。

58. sleep

sleep命令用于暂停执行某个命令或作业一定的时间,在指定的时间结束之后继续相关的命令或作业,时间默认为秒,例如暂停30秒,sleep 30

59. xargs

xargs用于从标准输入设备中读取并执行特定的命令。find命令的-exec参数可以对查找的结果进行批量处理,但是有一定的局限性,而xargs弥补了find命令中-exec参数的不足,xargs从标准输入设备中接收的指令以空格分隔,执行指定的linux/unix命令,显示执行结果,最后返回状态值并退出。语法格式为:xargs [参数] linux/unix命令 [参数] [命令操作对象]

例:删除find命令查找的所有文件

在利用find命令的-exec参数对查到的文件执行删除操作时,匹配到的所有文件都将传递给-exec执行。而有些系统对传递给exec命令的长度有限制,当匹配文件过多时,会产生溢出错误。例如“参数列太长”或“参数列溢出”。

在利用xargs执行find命令匹配文件时,每次只能获取一部分文件,xargs先处理已经获得的一部分文件,然后再继续获得下一部分文件,这就避免了产生类似-exec参数的溢出错误。

假设查找当前目录下的所有文件test并将其删除,命令执行如下:

find ./ -name test | xargsrm –f

60. ftp常用命令

ftp命令可以将文件上传到指定的远端FTP服务器,也可以从远端服务器上下载文件。

ftp常用的内部命令如下:

ascii:使用ascii类型传输方式。

bin:使用二进制文件传输文件。

bye:退出ftp会话

chmod mode file-name:将远程主机文件file-name的存取方式设置为mode,如:chmod 777 a.out

mkdir dir-name:在远程主机中建一目录。

delete remote-file:删除远程主机单个文件

mdelete [remote-file]:删除远程主机多个文件。

rmdir dir-name:删除远程主机目录。

get remote-file[local-file]: 将远程主机的文件remote-file传至本地硬盘的local-file。

mget remote-files:传输多个远程文件。

put local-file[remote-file]:将本地文件local-file传送至远程主机。

mput local-file:将多个文件传输至远程主机。

prompt:设置多个文件传输时的交互提示。

rename[from][to]:更改远程主机文件名。

status:显示当前ftp状态。

? [cmd]:同help。

61. alias

alias:查看已设置的命令别名

62. 文件的变动时间

每个档案在 linux 底下都会记录三个主要的变动时间, 咦!那么三个时间是哪三个呢?

modification time (mtime):当该档案的『内容数据』变更时,就会更新这个时间!内容数据指的是档案的内容,而不是档案的属性喔!

 status time (ctime):当该档案的『状态 (status)』改变时,就会更新这个时间,举例来说, 像是权限与属性被更改了,都会更新这个时间啊~

access time (atime):当『该档案的内容被取用』时,就会更新这个读取时间 (access)。 举例来说,我们使用 cat 去读取 ~/.bashrc ,就会更新 atime 了。

netbank@HK-NBANK-WEB-T02:~> ls -l/app/liuyh/SFTPTest.sh

-rw-r--r-- 1 netbank users 496  4 20 14:41/app/liuyh/SFTPTest.sh

netbank@HK-NBANK-WEB-T02:~> ls -l--time=atime /app/liuyh/SFTPTest.sh

-rw-r--r-- 1 netbank users 496  5  2 15:18 /app/liuyh/SFTPTest.sh

netbank@HK-NBANK-WEB-T02:~> ls -l--time=ctime /app/liuyh/SFTPTest.sh

-rw-r--r-- 1 netbank users 496  4 20 14:41/app/liuyh/SFTPTest.sh

63. PATH变量

我们知道 PATH 这个变量是我们在执行指令的时候,所需要具备的指令搜寻目录数据, 没有他,我们就得要使用绝对路径来下达指令才行。

64. type

查看指令是来自于外部指令(指的是其它非bash套件所提供的指令)或是内建在bash当中的指令。

1)     查询一下ls指令

netbank@HK-NBANK-WEB-T02:~> type ls

ls is aliased to `ls $LS_OPTIONS'

#没有加上任何参数,仅列出ls这个指令的最主要使用情况

netbank@HK-NBANK-WEB-T02:~> type -tls

alias

#-t参数则仅列出ls这个指令的最主要使用情况说明

netbank@HK-NBANK-WEB-T02:~> type -als

ls is aliased to `ls $LS_OPTIONS'

ls is /bin/ls

#-a利用所有方法找出来的ls相关信息都会被列出来

2)     查询一下cd指令

netbank@HK-NBANK-WEB-T02:~> type cd

cd is a shell builtin

65. env

查看环境变量。

66.  export

功能说明:设置或显示环境变量。
语  法:export [-fnp][变量名称]=[变量设置值]
补充说明:在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该此登陆操作。
参  数:
 -f  代表[变量名称]中为函数名称。 
 -n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。 
 -p  列出所有的shell赋予程序的环境变量。

67.  source

利用source或小数点(.)都可以将设定档的内容读进来目前的shell环境中。举例来说,我修改了~/.bashrc,那么不需要注销,立即以source ~/.bashrc就可以将刚刚最新设定的内容读进目前的环境中。

68.  关机和重启

重启命令:

1、reboot

2、shutdown -r now 立刻重启(root用户使用)

3、shutdown -r 10 过10分钟自动重启(root用户使用)

4、shutdown -r 22:22 在时间为22:22时候重启(root用户使用)

如果是通过shutdown命令设置重启的话,可以用shutdown -c命令取消重启

 

关机命令:

1、halt   立刻关机

2、poweroff  立刻关机

3、shutdown -h now 立刻关机(root用户使用)

4、shutdown -h 10 10分钟后自动关机

如果是通过shutdown命令设置关机的话,可以用shutdown -c命令取消重启

69.  进程和端口

1)     根据进程pid查端口:

netstat -nap | grep pid

2)     根据端口port查进程

netstat -nap | grep port

70.  关闭防火墙

service iptables stop 或者 systemctl stop firewalld.service

71.  执行sh ./xxx.sh出现:“Syntax error: “(” unexpected”的解决方法

通过sh ./virtualmin.sh执行代码就报“Syntax error: “(” unexpected”错误,通过bash ./virtualmin.sh执行就没问题。几经查找语法,没有问题,后来在网上找到问题原因:

代码对于标准bash而言没有错,因为Ubuntu/Debian为了加快开机速度,用dash代替了传统的bash,是dash在捣鬼,解决方法就是取消dash。

sudodpkg-reconfiguredash,在选择项中选No,搞定了!

你可能感兴趣的:(linux)