unix 常用命令

来源:互联网 发布:阿里云网址 编辑:程序博客网 时间:2024/06/16 13:37

!!执行上一条命令
history查看执行过的命令
source读取文件内容,加载环境变量的shell文件,就需要用source命令
env修改环境变量
    setenv ORACLE_BASE /app/oracle
   setenv ORACLE_HOME $ORACLE_BASE/product/11.2.0.2.0
   setenv PATH $ORACLE_HOME/bin:$PATH
   setenv ORACLE_SID XXXXX
   setenv NLS_LANG japanese_Japan.Ja16SJIS

source读取文件内容,加载环境变量的shell文件,就需要用source命令

which查找命令,unix命令放在/usr/bin下面比如说ksh,sh which ksh会显示ksh的路径

进入文件夹cd XXX

退到当前用户根目录 cd

退到上级目录 cd..

unxi根目录是/ 退到根目录cd /

ls查看当前目录下文件

ls XXXX查看XXXX文件是否存在

ll XXXX查看XXXX文件是否存在

ll:查看文件的属性
语法:ll [选项] 文件或目录
选项:-c 以更改时间排序,显示文件和目录
使用例:
ll:察看当前文件夹下文件
ll file1 file2:察看文件file1和file2属性
-rwxr-xr-x 1 root  root  96324 2010-06-11 15:11 /bin/ls*
-rw-r--r-- 1 linux linux  1991 2010-12-04 12:48 grub

属性说明:
[root@gucuiwen root]# ll
总用量 4055
-rw-r--r-- 1 root root 1581 11月 24 18:14 anaconda-ks.cfg
drwxr-xr-x 2 root root 208 12月 1 13:50 babylinux
lrwxrwxrwx 1 root root 9 1月 4 11:06 disk1.link.png -> disk1.png
-rwxr-xr-x 1 root root 13695 11月 30 16:51 fangkuai.sh
drwxr-xr-x 2 root root 208 12月 28 12:06 FreeBSD
-rw-r--r-- 1 root root 2315 11月 25 17:19 getMBR.png
brw-r----- 1 root root 3, 1 1月 4 11:06 hda1
drwxr-xr-x 2 root root 296 12月 31 11:53 htmls
-rw-r--r-- 1 root root 21369 11月 24 18:12 install.log
-rw-r--r-- 1 root root 0 12月 18 10:44 tset
crw-r----- 1 root root 4, 65 1月 4 11:08 ttyS1
-rw-r--r-- 1 root root 9754 12月 1 11:25 X.sxw
-rw-r--r-- 1 root root 8704 11月 29 12:22 员工信息.xls

第1行:总用量(total)
这个数值是该目录下所有文件及目录列表第5个字段的和(以k为单位),也就是该目录的大小.请注意和该目录下的文件和子目录下文件的总合做区分.这个数字和du /root 得到的数字的大小是不一样的.
第1字段: 文件属性字段
文件属性字段总共有10个字母组成,第一个字母表示文件类型如下:
-   普通文件
d   目录文件
b   块设备文件
c   字符设备文件
l   符号链
p   管道特殊文件

第一字段的后面9个字母表示文件的权限.
r表是读 (Read)
w表示写 (Write)
x表示执行 (eXecute)
其中前三个表示文件属主的权限,中间三个表示组用户权限,最后三个表示其他用户权限.
比如:
-rw-r--r-- 1 root root 1581 11月 24 18:14 anaconda-ks.cfg
表示文件的拥有者root对文件有读写权限,其他人(同组用户和其他用户只有读的权限)

第2字段: 文件硬链接数或目录子目录数
如果一个文件不是目录那么这一字段表示,这个文件所具有的硬链接数,即这个文件总共有多少个文件名.查看第一个文件: 
-rw-r--r-- 1 root root 1581 11月 24 18:14 anaconda-ks.cfg 
第2字段的值为1,说明这个文件只有anaconda-ks.cfg这一个文件名.即只有一个指向该链接的硬链接.  
如果我用ln,做一个指向该文件的硬链接再查看该文件,该文件的第2字段就会变成2: 
如果是一个目录,则第2字段表示该目录所含子目录的个数(注是子目录不包括文件).
新建一个空目录,这个目录的第二字段就是2,表示该目录下有两个子目录.为什么新建的目录下面会有两个子目录呢?
因为每一个目录都有一个指向它本身的子目录"." 和指向它上级目录的子目录"..",这两个默认子目录是隐藏的.用ls -a可以看到.
每次在目录下新建一个子目录,该目录第2字段的值就增1,但是新建一个普通文件该字段值不增加.

第3字段: 文件拥有者
该字段表示这个文件是属于哪个用户的.UNIX类系统都是多用户系统,每个文件都有它的拥有者.只有文件的拥有者才具有改动文件属性的权利.当然, root用户具有改动任何文件属性的权利.对于一个目录来说,只有拥有该目录的用户,或者具有写权限的用户才有在目录下创建文件的权利.
如果某一个用户因为某种原因,被删除,而该用户的文件还存在,那么用ls -l 查看该文件将显示一个代表用户存在前ID号的数字.

第4字段: 文件拥有者所在的组
组的概念可以想像成是一个共同完成一个项目的团队.通过组的概念,可以控制文件让特定的用户查看,修改或运行.而不是一棍子打死,要么全不让看,要么全让看.
一个用户可以加入很多个组,但是其中有一个是主组,就是显示在第4字段的明称.
可以在adduser的时候用-g指定该用户所在的主组,用-G指定其他组.

第5字段: 文件文件大小(以字节为单位)
第5字段表示文件大小,如果是一个文件夹,则表示该文件夹的大小.请注意是文件夹本身的大小,而不是文件夹以及它下面的文件的总大小!
很多人不能理解文件夹是一个特殊的文件的含义,这样的话理解文件夹大小的含义就比较困难了.

第6字段: 文件创建月份
第7字段: 文件创建日期
第8字段: 文件创建时间
第9字段: 文件名
如果是一个符号链接,那么会有一个 "->" 箭头符号,后面根一个它指向的文件名.

chmod:
“chmod”命令就是改变文件的模式位。chmod会根据要求的模式来改变每个所给的文件,文件夹,脚本等等的文件模式(权限)。
Read (r)=4 Write(w)=2 Execute(x)=1
所以如果你想给文件只读权限,就设置为'4';只写权限,设置权限为'2';只执行权限,设置为1; 读写权限,就是4+2 = 6, 以此类推。
现在需要设置3种用户和用户组权限。第一个是拥有者,然后是用户所在的组,最后是其它用户。

chown:
“chown”命令就是改变文件拥有者和所在用户组。
root@tecmint:~# ls -l  drwxr-xr-x 3 server root 4096 May 10 11:14 Binary  drwxr-xr-x 2 server server 4096 May 13 09:42 Desktop
在这里,目录Binary属于用户"server",和用户组"root",而目录"Desktop"属于用户“server”和用户组"server"
chown root:sys abc将文件abc的用户改为root用户组改为sys

为了改变它的权限,为拥有者,用户所在组和其它用户提供读,写,执行权限。
root@tecmint:~# chmod 777 abc.sh

mkdir:
“mkdir”命令在命名路径下创建新的目录。目录只能在用户拥有写权限的目录下才能创建。

touch:
“touch”命令代表了将文件的访问和修改时间更新为当前时间。touch命令只会在文件不存在的时候才会创建它。如果文件已经存在了,它会更新时间戳,但是并不会改变文件的内容。
 注意:touch 可以用来在用户拥有写权限的目录下创建不存在的文件。

cp:
“copy”就是复制。它会从一个地方复制一个文件到另外一个地方。
在shell脚本中是最常用的一个命令,而且它可以使用通配符(在前面一块中有所描述),来定制所需的文件的复制。
例:
cp file1 abc/def/file2
cp -R folder1 folder2
cp /home/user1/folder1/* /home/user1/folder2/

mv:
“mv”命令将一个地方的文件移动到另外一个地方去。
注意:mv 命令可以使用通配符。mv需谨慎使用,因为移动系统的或者未授权的文件不但会导致安全性问题,而且可能系统崩溃。
文件重命名就是通过mv命令来实现:mv /home/user1/file1 /home/user1/file2

rm:
功能:删除文件或目录;
补充说明1:执行rm指令可删除文件或目录,如欲删除目录必须加上参数"-r",否则预设仅会删除文件。rm -r 目录(包括其子目录)
补充说明2:文件覆盖时只看该文件的权限,删除时还要看上曾文件加的权限。
pwd:
“pwd”(print working directory),在终端中显示当前工作目录的全路径。

echo:
察看上一个命令的返回值: echo ${?}

who:
who am i 显示的是实际用户ID即用户登陆的时候的用户ID
whoami   显示的是有效用户ID.
但在大多数情况下,实际用户ID和有效用户ID是一致的。

su - root和 su root:
带短划线的作用是将会改变成要切换的用户的环境变量了,不再是当前用户的环境了。
用pwd命令查看时它的主目录不再是原来用户的当前目录,而是变成了root用户的主目录了

察看执行过的历史命令:
esc+k 上滚一条命令是ESC+k
 下滚一条命令是ESC+j
history 察看执行过的命令列表
* 通配符
 改变liu下所有文件的所属 chown user:group /home/abc/liu/*
 
grep grep HULFT_RECV_DIR /usr/local/adm_scripts/func/conf/conf_batchDir
 从文件内容查找匹配指定字符串的行:
 $ grep "被查找的字符串" 文件名
 从文件内容查找与正则表达式匹配的行:
 $ grep –e “正则表达式” 文件名
 查找时不区分大小写:
 $ grep –i "被查找的字符串" 文件名
 查找匹配的行数:
 $ grep -c "被查找的字符串" 文件名
 从文件内容查找不匹配指定字符串的行:
 $ grep –v "被查找的字符串" 文件名
 从根目录开始查找所有扩展名为.log的文本文件,并找出包含”ERROR”的行
 find / -type f -name "*.log" | xargs grep "ERROR"
 
\符号:
ecscape符号

id:
显示当前执行用户,以及所在组

tar,gzip tar :
 解包:tar -xvf FileName.tar
 打包:tar -cvf FileName.tar DirName
 
 语法:gzip [选项] 压缩(解压缩)的文件名
 解压:gzip -d *.gz
 
diff:
diff file1 file2

find:
查找文件:find / -name sources.list
查找目录:find / -name Java
 / 表示在根目录下
 .表示当前目录下
 -type f  : 指定为文件
 -type d:指定为目录
 -name “文件名”
 一个比较常用的,就是下载的svn或者其他的版本管理工具,都会在每个目录下生成一个类似于.svn这样的目录,如果要拷贝的话就要把每层目录中的.svn去掉:
 find . –name “.svn” –type d –R | xargs rm –rf : 就会递归地把.svn目录删掉
 find . -name aplpat.config -type f
 find . -name aplpat.config -type f -exec  ll {} \;
 -r-xr-xr-x   1 aplimp     aplimp          93 11月  5日  16:10 ./adm_scripts/conf/aplpat.config
 -exec 后面接命令,最后要以;结尾

vi:
 一 vi的操作模式
 vi提供两种操作模式:输入模式(insert mode)和指令模式(command mode)。在输入模式下,用户可输入文本资料。在指令模式下,可进行删除、修改等各种编辑动作。
 
  在输入模式下,按Esc键切换到指令模式下。
 在指令模式下,按输入指令(i、a、o等)进入输入模式。
 
 二进入vi
  $ vi  filename
 直接键入“vi + 所要编辑的文件名”,即可对指定的文件进行编辑。
 如果指定的文件为新文件,则提示:“New file”,否则显示该文件的当前内容。
 
  $ view filename
 以只读方式打开文件filename
 
 三 指令模式
 3.1 进入输入模式
 
  a     在当前游标之后输入
  A     在当前行之末输入
   i     在当前游标之前输入
   I     在当前行之首输入
  o     在当前行之下新增一行,并在新增行输入
  O     在当前行之上新增一行,并在新增行输入
 输入结束后,按Esc键退出输入模式。
 
 3.2 游标移动
  h 向左移动一个字元
  l 向右移动一个字元
  j 向下移动一个字元
  k 向上移动一个字元
  b 左移一个单词,至词首
  w 右移一个单词,至词尾
  0  移到当前行行首
  $ 移到当前行行尾
  + 移至下一行的行首
  - 移至上一行的行首
  H 移至视窗的第一行
  M 移至视窗的中间一行
  L 移至视窗的最后一行
  G 移至该文件的最后一行
  nG 移至该文档的第n行
  n+ 下移n行
  n- 上移n行
 
 3.3 视窗移动
  <Ctrl> + f 视窗下卷一页
  <Ctrl> + b 视窗上卷一页
    <Ctrl> + d 视窗下卷半页
  <Ctrl> + u 视窗上卷半页
   <Ctrl> + e 视窗下卷一行
   <Ctrl> + y 视窗上卷一行
 
 3.4 删除操作
  x 删除游标所在字元
  X 删除游标前一字元
  dw 从游标当前位置开始向后删除一个单词
  db 从游标当前位置开始向前删除一个单词
  d0 从行首删除至当前游标位置
  d$ 从游标当前位置删除至行尾
  dd 删除游标所在行
  D 同d$
 
 3.5 修改操作
  s 修改游标所在字元,修改完成后按Esc键结束
  S 修改整行内容,修改完成后按Esc键结束
  r 替换当前游标所在字元
  R 进入替换状态,直至按Esc键结束
  cw 修改一个单词(从游标位置至词尾)
  cb 修改一个单词(从词首至游标位置)
  cc 修改整行内容,完成后按Esc键结束,同S
  c0 修改行首至游标位置的内容
  c$ 修改游标位置至行尾的内容
  ~ 游标所在字元大小写切换
 
 3.6 指令重复
 在指令模式中,可在指令前面加入一个数字n,则该指令会重复执行n次。常用的重复操作有:
  nx 删除n个字元
  ndd 删除n行
  ns 修改n个字元
 
 3.7 取消前一动作(Undo)
  u 撤消上一指令的结果
 
 3.8 查找字符串
  /字符串 从当前游标向后查找该字符串
  ?字符串 从当前游标向前查找该字符串
  n 从当前游标向后查找下一个字符串
  N 从当前游标向前查找下一个字符串
 
 3.9 查看编辑状况
  <Ctrl> + g 显示正在编辑的文件名、当前游标所在行数、文件总行数、文件是否被修改
 
 四保存与退出
  :w 保存,但不退出
  :wq 保存并退出
  :x 同:wq
  :q 退出,如果当前文件没有保存,禁止退出
  :q! 不保存退出
  :w file1 将内容保存至文件file1中,注意:此时编辑的仍为原文件
  :w! file1 将内容覆盖保存至文件file1中,如文件file1存在,:w file1将禁止执行
 
 五环境设置
  :set 显示已设置的环境状况
  :set all 显示所有的环境设置选项
  :set nu 显示行号
  :set nonu 不显示行号
  :set ts = n 设置Tab键的长度为n
 
 六执行指令
 以下用具体的数字为例进行介绍,数字表示行数,游标所在行可用“.”代替,文件最后一行可用“$”代替。
  : 10 , 20d 删除第10行至第20行的内容
  :10d 删除第10行的内容
  :%d 删除全部内容
  : 10 , 20co30 将第10行至第20行的内容复制到第30行之后
  : 10 , 20mo30 将第10行至第20行的内容移动到第30行之后
  : 1 , $s/old/new 将第1行至最后一行中的old替换成new
  : 1 , $s/^/new 将第1行至最后一行的内容前面插入new
  : 10  将游标移至第10行
 
 七重复指令
  . 重复上一条指令
 
 八切换到shell状态
  :sh 切换到shell状态,exit返回

cat:
 “cat”代表了连结(Concatenation),连接两个或者更多文本文件或者以标准输出形式打印文件的内容。  
 cat 是一个文本文件查看和连接工具。查看一个文件的内容,用cat比较简单,就是cat 后面直接接文件名 
 注意:“>>”和“>”调用了追加符号。它们用来追加到文件里,而不是显示在标准输出上。“>”符号会删除已存在的文件,然后创建一个新的文件。 
  所以因为安全的原因,建议使用“>>”,它会写入到文件中,而不是覆盖或者删除。
 警告:我们要知道>意思是创建,>>是追加。千万不要弄混了。造成失误可不是闹着玩的; 
 Wildcard Matches     
 *            零个或者更多字符     
 ?            恰好一个字符  
 [abcde]             恰好列举中的一个字符   
 [a-e]          恰好在所给范围中的一个字符  
 [!abcde]        任何字符都不在列举中   
 [!a-e]          任何字符都不在所给的范围中  
 {debian,linux}      恰好在所给选项中的一整个单词  
  
 参数: 
 -n 或 --number 由 1 开始对所有输出的行数编号 
 -b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号 
 -s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行 
 -v 或 --show-nonprinting 
  
 例: 
 把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里 
 cat -n textfile1 > textfile2 
  
 把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。 
 cat -b textfile1 textfile2 >> textfile3 
  
 1.1 cat 查看文件内容实例 
  cat /etc/profile    注:查看/etc/目录下的profile文件内容;
  cat -b /etc/fstab   注:查看/etc/目录下的profile内容,并且对非空白行进行编号,行号从1开始;
  cat -n /etc/profile    注:对/etc目录中的profile的所有的行(包括空白行)进行编号输出显示;
  cat  -E /etc/profile     注:查看/etc/下的profile内容,并且在每行的结尾处附加$符号;
  
  cat 加参数-n 和nl工具差不多,文件内容输出的同时,都会在每行前面加上行号;
  [root@localhost ~]# cat -n /etc/profile
  [root@localhost ~]# nl  /etc/profilede>
  
  cat 对于内容极大的文件来说,可以通过管道|传送到more 工具,然后一页一页的查看;
  de>[root@localhost ~]# cat /etc/fstab /etc/profile | morede>
  
 1.2 cat 的创建、连接文件功能实例 
  cat 有创建文件的功能,创建文件后,要以EOF或STOP结束;
  de>[root@localhost ~]# cat >  linuxsir.org.txt  << EOF  注:创建linuxsir.org.txt文件;
  > 我来测试 cat 创建文件,并且为文件输入内容;       注:这是为linuxsir.org.txt文件输入内容;
  > 北南南北 测试;                   注:这是为linuxsir.org.txt文件输入内容;
  > EOF   注:退出编辑状态;
  
  [root@localhost ~]# cat linuxsir.org.txt  注:我们查看一下linuxsir.org.txt文件的内容;
  
  我来测试 cat 创建文件,并且为文件输入内容;
  北南南北 测试;
  
 cat 还有向已存在的文件追加内容的功能; 
  de>[root@localhost ~]# cat  linuxsir.txt 注:查看已存在的文件linuxsir.txt 内容;
  I am BeiNanNanBei From LinuxSir.Org .    注:内容行
  我正在为cat命令写文档
  
  [root@localhost ~]# cat >> linuxsir.txt << EOF   注:我们向linuxsir.txt文件追加内容;
  > 我来测试cat向文档追加内容的功能;       注:这是追回的内容
  > OK?
  > OK~
  > 北南 呈上
  > EOF   注:以EOF退出;
  
  [root@localhost ~]# cat linuxsir.txt  注:查看文件内容,看是否追回成功。
  I am BeiNanNanBei From LinuxSir.Org .
  我正在为cat命令写文档
  
  我来测试cat向文档追加内容的功能; 
  OK?
  OK~
  北南 呈上de>
  
 cat 连接多个文件的内容并且输出到一个新文件中 
  de>[root@localhost ~]# cat sir00.txt
  linuxsir.org forever
  
  [root@localhost ~]# cat sir01.txt sir02.txt sir03.txt >> sir00.txt
  
  [root@localhost ~]# cat sir00.txt
  linuxsir.org forever
  123456
  i am testing
  56789
  BeiNan Tested
  9876
  linuxsir.org testingde>

 

ps -ef命令

ps -ef |grep abc 查看含有"abc"的活动进程

ps -ef |grep -v abc 查看不含abc的活动进程

 

env命令

env命令可用来显示当前的环境或设置一个或多个环境变量。还可以运行指定的命令。而环境的变化只在命令运行期间有效。

env | grep ORACLE_HOME

ORACLE_HOME=。。。。。

0 0
原创粉丝点击