首页 > 代码库 > linux 系统基础命令
linux 系统基础命令
Linux命令-文件管理命令
Linux系统管理命令
cat
功能:有从磁盘创建文件的功能(但不具备编辑功能),但主要功能还是2个或者以上文件的合并。 常配合使用参数:
-n 或--number 由1 开始对所有输出的行数编号。
-b 或--number-nonblank 和-n 相似,只不过对于空白行不编号。 使用方法:
Cat –n diannaob1>diannaob2,把diannaob1里的内容加上行号以后并入diannaob2。
Cat –b diannaob1 diannaob2>>diannaob3,对diannaob1和diannaob2里的内容加上行号(空白行不加)并入diannaob3。
2. chattr
功能:给指定文件添加,去掉,赋予属性。 常配合使用参数:
-R 递归处理,将指定目录下的所有文件及子目录一并处理。 -v<版本编号> 设置文件或目录版本。 -V 显示指令执行过程。
+<属性> 开启文件或目录的该项属性。 -<属性> 关闭文件或目录的该项属性。 =<属性> 指定文件或目录的该项属性。
a:让文件或目录仅供附加用途。 b:不更新文件或目录的最后存取时间。 c:将文件或目录压缩后存放。
d:将文件或目录排除在倾倒操作之外。 i:不得任意更动文件或目录。 s:保密性删除文件或目录。 S:即时更新文件或目录。 u:预防以外删除。 使用方法:
比如diannaob1这个文件为了方式被其他linux用户删除,可以给其添加预防以外删除属性
Chattr +u diannaob1
3.chgrp
功能:更改目录或者文件所属的群组。 使用方法:
比如把diannaob1文件移动到diannaob组里: Chgrp diannaob diannaob1
4.cmp
功能:用来比较文件之间的不同,如果相同不返回任何信息,不同的地方列出字符和列数编号。 常配合使用参数:
-c或--print-chars 除了标明差异处的十进制字码之外,一并显示该字符所对应字符。 -i<字符数目>或--ignore-initial=<字符数目> 指定一个数目。 -l或--verbose 标示出所有不一样的地方。 -s或--quiet或--silent 不显示错误信息。 -v或--version 显示版本信息。 --help 在线帮助。 使用方法:
比如比较文件diannaob1和diannaob2有什么同 Cmp diannaob1 diannaob2
配合使用的参数加在cmp和文件之间。
5.file
功能:辨识文件类型。 常配合使用参数:
-b 列出辨识结果时,不显示文件名称。
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-f<名称文件> 指定名称文件,其内容有一个或多个文件名称呢感,让file依序辨识这些文件,格式为每列一个文件名称。
-L 直接显示符号连接所指向的文件的类别。 -m<魔法数字文件> 指定魔法数字文件。
-v 显示版本信息。
-z 尝试去解读压缩文件的内容。
使用方法:
比如要辨别diannaob1的文件类型 File diannaob1 文件位置
6.find
功能:根据各种需求(名称、类别、时间、大小、权限等)在指定的目录内寻找符合要求的文件。 常配合使用参数:
-mount, -xdev : 只检查和指定目录在同一个档案系统下的档案,避免列出其它档案系统中的档案 -amin n : 在过去n 分钟内被读取过
-anewer file : 比档案file 更晚被读取过的档案 -atime n : 在过去n 天过读取过的档案 -cmin n : 在过去n 分钟内被修改过 -cnewer file :比档案file 更新的档案 -ctime n : 在过去n 天过修改过的档案
-empty : 空的档案-gid n or -group name : gid 是n 或是group 名称是name -ipath p, -path p : 路径名称符合p 的档案,ipath 会忽略大小写
-name name, -iname name : 档案名称符合name 的档案。iname 会忽略大小写
-size n : 档案大小是n 单位,b 代表512 位元组的区块,c 表示字元数,k 表示kilo bytes,w 是二个位元组。-type c : 档案类型是c 的档案。 d: 目录 c: 字型装置档案 b: 区块装置档案 p: 具名贮列 f: 一般档案 l: 符号连结 使用方法:
将目前目录及其子目录下所有延伸档名是c 的档案列出来。 find . -name "*.c"
将目前目录其其下子目录中所有一般档案列出 find . -ftype f
将目前目录及其子目录下所有最近20 分钟内更新过的档案列出 find . -ctime -20
7.git
功能:文字模式下的文件管理员,进入之后,可以进行各种文件的操作。 常配合使用参数:
F1 :执行info指令,查询指令相关信息,会要求您输入欲查询的名称。 F2 :执行cat指令,列出文件内容。 F3 :执行gitview指令,观看文件内容。 F4 :执行vi指令,编辑文件内容。
F5 :执行cp指令,复制文件或目录,会要求您输入目标文件或目录。
F6 :执行mv指令,移动文件或目录,或是更改其名称,会要求您输入目标文件或目录。 F7 :执行mkdir指令,建立目录。 F8 :执行rm指令,删除文件或目录。
F9 :执行make指令,批处理执行指令或编译程序时,会要求您输入相关命令。 F10 :离开git文件管理员。
8.cut
功能:用于从文件或者标准输入中读取内容并截取每一行的特定部分并送到标准输出。 配合使用参数: -b 字节(bytes) -c 字符(characters) -f 域(fields) 使用方法:
如日期:dc oct 10 21:15:54 PDT 2012
Date |cut –b 1-4 输出dc o,表示取前4个字节,其中空格也算一个字节。
Date |cut –c 1-4 输出dc o,看似跟-b没有区别,但是如果日期换成汉字就有区别了,因为一个汉字算3个字节。 多个定位之间用逗号隔开:
Date |cut –b 1-4,6 输出前4个字节和第6个字节:dc ot 分割域: 如:
service1:pts/0:Oct 9 20:27: (211.95.114.235) service2:pts/1:Oct 9 21:06: (218.80.203.242) service3:pts/2:Oct 9 14:35: (218.80.203.242) service4:pts/3:Oct 9 21:07: (218.80.213.242) service5:pts/4:Oct 9 21:07: (218.80.213.242) service6:pts/5:Oct 9 21:45: (58.31.205.19)
cut –d: -f1 f.txt 把f.txt这个文件按:分割成域,取域1 输出: service1 service2 service3 service4 service5 service6
2.in
功能:创建连接(类似于window下创建超链接) 使用方法:
把将目录/usr/menggc/mub l下的文件m2.c链接到目J/usr/1iu下的文件a2.c
In /usr/menggc/mub l/m2.c J/usr/1iu/a2.c 本来J/usr/1iu目录下没有a2.c文件,当链接成功时就会出现a2.c文件。 In 选项源文件目标文件
9.less
功能:查看文件 使用方法: Less 文件名
Less的作用和more差不多,不同的是less 允许使用者往回卷动,查看已经看过的部分。
10.名称:locate
使用权限:所有使用者 使用方式:
locate [-q] [-d ] [--database=] locate [-r ] [--regexp=]
locate [-qv] [-o ] [--output=] locate [-e ] [-f ] <[-l ] [-c] <[-U ] [-u]>
locate [-Vh] [--version] [--help] 说明:
locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的资料库,之后当寻找时就只需查询这个资料库,而不必实际深入档案系统之中了。在一般的distribution 之中,资料库的建立都被放在contab 中自动执行。
一般使用者在使用时只要用 # locate your_file_name 的型式就可以了。参数: -u -U
建立资料库,-u 会由根目录开始,-U 则可以指定开始的位置。 -e
将排除在寻找的范围之外。 -l
如果是1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到的档案。这会始速度减慢,因为locate 必须至实际的档案系统中取得档案的权限资料。 -f
将特定的档案系统排除在外,例如我们没有到理要把proc 档案系统中的档案放在资料库中。 -q
安静模式,不会显示任何错误讯息。 -n
至多显示个输出。 -r
使用正规运算式做寻找的条件。 -o
指定资料库存的名称。 -d
指定资料库的路径 -h
显示辅助讯息 -v
显示更多的讯息 -V
显示程式的版本讯息范例:
locate chdrv:寻找所有叫chdrv 的档案
locate -n 100 a.out:寻找所有叫a.out 的档案,但最多只显示100 个 locate -u:建立资料库
11.名称:more
使用权限:所有使用者
使用方式:more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
说明:类似cat ,不过会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与vi 相似),使用中的说明文件,请按h 。 参数:
-num 一次显示的行数
-d 提示使用者,在画面下方显示[Press space to continue, q to quit.] ,如果使用者按错键,则会显示[Press h for instructions.] 而不是哔声
-l 取消遇见特殊字元^L(送纸字元)时会暂停的功能
-f 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)
-p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容 -c 跟-p 相似,不同的是先显示内容再清除其他旧资料
-s 当遇到有连续两行以上的空白行,就代换为一行的空白行
-u 不显示下引号(根据环境变数TERM 指定的terminal 而有所不同) +/ 在每个档案显示前搜寻该字串(pattern),然后从该字串之后开始显示 +num 从第num 行开始显示
fileNames 欲显示内容的档案,可为复数个数 范例:
more -s testfile 逐页显示testfile 之档案内容,如有连续两行以上空白行则以一行空白行显示。
more +20 testfile 从第20 行开始显示testfile 之档案内容。
12.名称:mv
使用权限:所有使用者 使用方式:
mv [options] source dest
mv [options] source... directory
说明:将一个档案移至另一档案,或将数个档案移至另一目录。 参数:-i 若目的地已有同名档案,则先询问是否覆盖旧档。 范例:
将档案aaa 更名为bbb: mv aaa bbb
将所有的C语言程式移至Finished 子目录中: mv -i *.c
13.名称:rm
使用权限:所有使用者
使用方式:rm [options] name... 说明:删除档案及目录。 把计:
-i 删除前逐一询问确认。
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。 -r 将目录及以下之档案亦逐一删除。
范例:
删除所有C语言程式档;删除前逐一询问确认: rm -i *.c
将Finished 子目录及子目录中所有档案删除: rm -r Finished
14.名称:split
使用权限:所有使用者
使用方式:split [OPTION] [INPUT [PREFIX]]
说明:将一个档案分割成数个。而从INPUT 分割输出成固定大小的档案,其档名依序为PREFIXaa, PREFIXab...;PREFIX 预设值为`x。若没有INPUT 档或为`-,则从标准输入读进资料。 匡兜:
-b, --bytes=SIZE
SIZE 值为每一输出档案的大小,单位为byte。 -C, --line-bytes=SIZE
每一输出档中,单行的最大byte 数。 -l, --lines=NUMBER
NUMBER 值为每一输出档的列数大小。 -NUMBER
与-l NUMBER 相同。 --verbose
于每个输出档被开启前,列印出侦错资讯到标准错误输出。 --help
显示辅助资讯然后离开。 --version
15.名称:touch
使用权限:所有使用者 使用方式: touch [-acfm]
[-r reference-file] [--file=reference-file] [-t MMDDhhmm[[CC]YY][.ss]]
[-d time] [--date=time] [--time={atime,access,use,mtime,modify}] [--no-create] [--help] [--version] file1 [file2 ...]
说明:
touch 指令改变档案的时间记录。ls -l 可以显示档案的时间记录。 参数:
a 改变档案的读取时间记录。 m 改变档案的修改时间记录。
c 假如目的档案不存在,不会建立新的档案。与--no-create 的效果一样。 f 不使用,是为了与其他unix 系统的相容性而保留。 r 使用参考档的时间记录,与--file 的效果一样。 d 设定时间与日期,可以使用各种不同的格式。 t 设定档案的时间记录,格式与date 指令相同。 --no-create 不会建立新档案。 --help 列出指令格式。 --version 列出版本讯息。 范例:
最简单的使用方式,将档案的时候记录改为现在的时间。若档案不存在,系统会建立一个新的档案。 touch file
touch file1 file2
将file 的时间记录改为5 月6 日18 点3 分,公元两千年。时间的格式可以参考date 指令,至少需输入MMDDHHmm ,就是月日时与分。 touch -c -t 05061803 file touch -c -t 050618032000 file
将file 的时间记录改变成与referencefile 一样
touch -r referencefile file
将file 的时间记录改成5 月6 日18 点3 分,公元两千年。时间可以使用am, pm 或是24 小时的格式,日期可以使用其他格式如6 May 2000 。 touch -d "6:03pm" file touch -d "05/06/2000" file
touch -d "6:03pm 05/06/2000" file
16.名称:cp
使用权限:所有使用者 使用方式:
cp [options] source dest
cp [options] source... directory
说明:将一个档案拷贝至另一档案,或将数个档案拷贝至另一目录。 把计:
-a 尽可能将档案状态,权限等资料都照原状予以复制。
-r 若source 中含有目录名,则将目录下之档案亦皆依序拷贝至目的地。 -f 若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制。 范例:
将档案aaa 复制(已存在),并命名为bbb: cp aaa bbb
将所有的C语言程式拷贝至Finished 子目录中: cp *.c Finished
17.指令名称:ln
使用权限:所有使用者
使用方式:ln [options] source dist,其中option 的格式为:
[-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}] [--help] [--version] [--]
说明:Linux/Unix 档案系统中,有所谓的连结(link),我们可以将其视为档案的别名,而连结又可分为两种:硬连结(hard link)与软连结(symbolic link),硬连结的意思是一个档案可以有多个名称,而软连结的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬连结是存在同一个档案系统中,而软连结却可以跨越不同的档案系统。
ln source dist 是产生一个连结(dist)到source,至于使用硬连结或软链结则由参数决定。
不论是硬连结或软链结都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。
-f:链结时先将与dist 同档名的档案删除-d:允许系统管理者硬链结自己的目录-i:在删除与dist 同档名的档案时先进行询问-n:在进行软连结时,将dist 视为一般的档案-s:进行软链结(symbolic link)-v:在连结之前显示其档名-b:将在链结时会被覆写或删除的档案进行备份-S SUFFIX:将备份的档案都加上SUFFIX 的字尾-V METHOD:指定备份的方式--help:显示辅助说明--version:显示版本 范例:
将档案yy 产生一个symbolic link:zz
ln -s yy zz
将档案yy 产生一个hard link:zz ln yy xx
2,bash工作特性命令执行返回值
里面总结了5中Bash返回值的HACK方法:
1. 使用return返回(适用于数值)
myfun() {
return $(( 5 + 1 ));
}
myfun
RESULTS=$?
echo $RESULTS
这里的$?保存着函数运行的结果。
2. 使用echo(用echo返回结果,同样适用于数值)
myfun() {
echo $(( 5 + 1 ));
}
RESULTS=$(myfun)
echo $RESULTS
3. 近似全局变量的用法
myfun() {
foo=$(( 5 + 1 ));
}
myfun
RESULTS=$foo
echo $RESULTS
这里的$foo充当了全局变量的角色,将返回值从函数内带到函数外。
4. 使用地址传递参数
myfun() {
eval $1="\$(( 5 + 1 ))";
}
myfun RESULTS
echo $RESULTS
这里使用了一个函数参数$1带出返回值,这个方法非常类似与C++中的引用和C中的参数传址。从一个侧面反应了Bash在参数传递的时候应该都是传递的内存地址。
5. 使用地址传递(适用于数值)
myfun() {
let $1=5+1;
}
myfun RESULTS
echo $RESULTS
Bash命令行参数
在使用wget的时候,我喜欢加上一个-c的参数,这样可以让wget启用断点续传功能。这里的-c就是一个命令行参数。
在写c语言的时候,我们使用字符串数组存储命令行参数,像我们所熟悉的argv[]。当然我们也需要命令行参数的个数,这存储在名为argc的整型变量中。argc和argv是约定俗成的名称,当然你可以使用自己的名称作为main函数的形参。
在编写Bash脚本的时候,也同样可以使用命令行参数。在Bash函数中也可以使用参数,特殊的是,Bash中的函数是没有参数列表的,例如
function foo
这样便完成了一个函数头的定义,但是没有任何的形参名称,这是由于Bash中特殊的参数传递方法所致。
这里需要说明的是,在Bash编程中命令行参数和函数的形参都采用统一的规则。
Bash的函数规则
在Bash中,所有变量在赋值是赋值号左侧直接写变量名。而在引用变量的值时,变量名的左侧需要加上$符号。写过PHP脚本可能对此深有印象,不过PHP是赋值和引用都要写。
Bash的参数是按照位置传递的,而且自动给出变量名称,例如$1就表示第一个参数,当然$2就是第二个参数,参数之间用空格区分。这样你可以顺序写到$n(n表示一个正整数),有几个参数都可以按照顺序引用。
$0表示当前运行命令的名称,这个其实是特殊的参数,但是往往很少用到。
如果你想得到参数的个数,它保存在一个特殊名称的变量里,叫做$#。
$*和$@表示所有的参数,具体区别和其他一些特殊参数请见这里。
注:会用到一个$?参数,这表示上一条独立命令运行的结果。我们才c语言写程序的时候,常常以return 0作为程序正常退出的标志,这个0就被返回给Bash,而$?可以引用到上一个程序运行的结果。还记得Bash函数的参数和命令行参数是相同的吗?如果刚刚执行完一个Bash函数,$?里就保存着这个函数的运行结果,即return的值。
?
3,使用命令完成练习
(1)创建/tmp目录下的a_c,a_d,b_c,b_d
mkdir - p {a_c,a_d,b_c,b_d}
(2)创建/tmp/mylinux目录下的:
mkdir /tmp/mylinux/bin(boot,dev,lib64,proc,sbin,sys,tmp,var)
mkdir /tmp/mylinux/boot/grub
mkdir /tmp/mylinux/etc/rc.d/init.d
mkdir /tmp/mylinux/etc/ssconfig/network-scripts
mkdir /tmp/mylinux/lib/modules
mkdir /tmp/mylinux/usr/local
mkdir /tmp/mylinux/usr/local/bin(sbin)
mkdir /tmp/mylinux/var/lock(log,run)
4,文件的元数据信有哪些,分别表示什么含义,如何查看,如何修改文件的时间戳信息
使用命令stat就可以看到某文件的元数据信息,如下图:
使用命令touch来修改文件的时间戳
touch -a:仅仅修改access time
touch -m:仅修改modify time
touch STAMP:指定要改为哪一刻时间
5,定义一个命令的别名,在目录中引用另一个命令的执行结果
使用命令alias来定义别名。
引用命令的执行结果使用:$(COMMAND)或`COMMAND`
6,显示/var目录下,所有以l开头以一个小写字母结尾且中间至少出现一位数字的文件或目录
ls -d /var/1*[0-9]*[a-z]
7,显示/etc目录下,以任意一个数字开头,非数字结尾的文件或目录
ls -d /etc/[[:digit:]]*[^[:digit:]]
8,显示/etc目录下,非字母开头后面跟一个字母及任意长度字符文件或目录
ls -d /etc/[^[:alpha:]][[:alpha:]]*
9,在/tmp/目录创建tfile开头后跟当前日期时间的文件如:tfile-2016-05-27-09-32-22
touch /tmp/tfile-`date +%Y-%m-%d-%H-%M-%S`
10,复制/etc/目录下,所有以p开头非数字结尾的文件至/tmp/mytest1目录
mkdir /tmp/mytest1 && cp -r /etc/p*[^[:digit:]] /tmp/mytest1
11,复制/etc/目录下,所有以.d结尾的文件至/tmp/mytest2目录
mkdir /tmp/mytest2 && cp -r /etc/*.d /tmp/mytest2
12,复制/etc/目录下,所有以l,m,n,开头,conf结尾的文件至/tem/mytest3目录。
mkdir /tmp/mytest3 && cp -r /etc/[l,m,n]*.conf /tmp/mytest3
本文出自 “12060330” 博客,谢绝转载!
linux 系统基础命令