Linux 基础知识(二)

一、Linux上的文件管理类命令

命令:ls命令用来显示目标列表
参数:
-a 显示所有文件及目录 (ls内定将文件名或目录名称开头为"."的视为隐藏档,不会列出)
-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
-r 将文件以相反次序显示(原定依英文字母次序)
-t 将文件依建立时间之先后次序列出
-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
-R 若目录下有文件,则以下之文件亦皆依序列出

演示:
列出目前工作目录下所有名越新的排越后面 :
ls -ltr

将目录以下所有目录及文件详细资料列出 :
ls -lR /etc/

列出目前工作目录下所有文件及目录;目录于名称后加 "/", 可执行档于名称后加 "*" :
ls -AF

命令:cat令用于连接文件并打印到标准输出设备上。
参数:
-n 或 --number:由 1 开始对所有输出的行数编号。
-b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号。
-s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。
-v 或 --show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。
-E 或 --show-ends : 在每行结束处显示 $。
-T 或 --show-tabs: 将 TAB 字符显示为 ^I。
-A, --show-all:等价于 -vET。
-e:等价于"-vE"选项;
-t:等价于"-vT"选项

演示:
textfile1 的文档内容加上行号后
cat -n textfile1

textfile1 和 textfile2 的文档内容加上行号(空白行不加)之后将内容附加到 textfile3 文档里:
cat -b textfile1 textfile2 >> textfile3

清空 test.txt 文档内容:
cat /dev/null > /test.txt

命令:head 用来显示档案的开头至标准输出中。
参数:
-c, --bytes=[-]K 显示每个文件的前K 字节内容;如果附加"-"参数,则除了每个文件的最后K字节数据外 显示剩余全部内容
-n, --lines=[-]K 显示每个文件的前K 行内容;如果附加"-"参数,则除了每个文件的最后K行外 显示剩余全部内容
-q, --quiet, 不显示包含给定文件名的文件头
-v, --verbose 总是显示包含给定文件名的文件头

演示:
显示文件的前n行
head -n 5 test.txt

输出文件除了最后n行的全部内容
head -n -5 test.txt

显示多个文件
head test.txt test1.txt

命令tail 可用于查看文件的内容

参数:
-f 循环读取
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示行数

演示:

要显示文件的最后 10 行
tail test.txt

要跟踪的文件的增长情况,显示一直继续,直到您按下(Ctrl-C)组合键停止显示。
tail -f test.txt

显示文件 test.txt 的最后 10 个字符:
tail -c 10 test.txt

more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示 。

参数:
-num 一次显示的行数
-d 提示使用者,在画面下方显示 [Press space to continue, 'q' to quit.] ,如果使用者按错键,则会显示 [Press 'h' for instructions.] 而不是 '哔' 声
-l 取消遇见特殊字元 ^L(送纸字元)时会暂停的功能
-f 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)
-p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
-c 跟 -p 相似,不同的是先显示内容再清除其他旧资料
-s 当遇到有连续两行以上的空白行,就代换为一行的空白行
-u 不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)
+/pattern 在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示
+num 从第 num 行开始显示
fileNames 欲显示内容的文档,可为复数个数

实例
连续两行以上空白行则以一行空白行显示。
more -s test.txt

第 20 行开始显示之文档内容。
more +20 test.txt

常用操作命令
Enter 向下n行,需要定义。默认为1行
Ctrl+F 向下滚动一屏
空格键 向下滚动一屏
Ctrl+B 返回上一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号
V 调用vi编辑器
!命令 调用Shell,并执行命令
q 退出more

less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。

参数:

-b <缓冲区大小> 设置缓冲区的大小
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
-x <数字> 将"tab"键显示为规定的数字空格
/字符串:向下搜索"字符串"的功能
?字符串:向上搜索"字符串"的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
b 向后翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一页
回车键 滚动一行
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页

演示:
查看文件
less test.txt

ps查看进程信息并通过less分页显示
ps -ef |less

浏览多个文件

less test.txt test1.txt
说明:
输入 :n后,切换到 test1.txt
输入 :p 后,切换到test.txt

1.全屏导航
ctrl + F - 向前移动一屏
ctrl + B - 向后移动一屏
ctrl + D - 向前移动半屏
ctrl + U - 向后移动半屏
2.单行导航

j - 向前移动一行
k - 向后移动一行
3.其它导航

G - 移动到最后一行
g - 移动到第一行
q / ZZ - 退出 less 命令

命令tac 从最后一行倒序显示内容,并将所有内容输出

命令cp主要用于复制文件或目录。

参数说明:

-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
-d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
-f:覆盖已经存在的目标文件而不给出提示。
-i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l:不复制文件,只是生成链接文件。

演示:
将当前目录"test/"下的所有文件复制到新目录"newtest"下
cp –r test/ newtest

命令mv 用来为文件或目录改名、或将文件或目录移入其它位置。

参数
-i: 若指定目录已有同名文件,则先询问是否覆盖旧文件;
-f: 在mv操作要覆盖某已有的目标文件时不给任何指示;

命令格式 运行结果
mv 文件名 文件名 将源文件名改为目标文件名
mv 文件名 目录名 将文件移动到目标目录
mv 目录名 目录名 目标目录已存在,将源目录
移动到目标目录;目标
目录不存在则改名
mv 目录名 文件名 出错

演示:
将文件test 更名为 test1 :
mv test test1

将info目录放入logs目录中。注意,如果logs目录不存在,则该命令将info改名为logs。
mv info/ logs

将/usr/student下的所有文件和目录移到当前目录下,命令行为:
mv /usr/student/* .

命令rm 用于删除一个文件或者目录。

参数:
-i 删除前逐一询问确认。
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r 将目录及以下之档案亦逐一删除。

演示:
删除文件可以直接使用rm命令,若删除目录则必须配合选项"-r",例如:

rm test.txt
rm:是否删除 一般文件 "test.txt"? y
rm homework
rm: 无法删除目录"homework": 是一个目录
rm -r homework
rm:是否删除 目录 "homework"? y

删除当前目录下的所有文件及目录
rm -r *

命令touch 用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。

参数
a 改变档案的读取时间记录。
m 改变档案的修改时间记录。
c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
f 不使用,是为了与其他 unix 系统的相容性而保留。
r 使用参考档的时间记录,与 --file 的效果一样。
d 设定时间与日期,可以使用各种不同的格式。
t 设定档案的时间记录,格式与 date 指令相同。

演示:
修改文件的时间属性为当前系统时间
touch test #修改文件的时间属性

使用指令"touch"时,如果指定的文件不存在,则将创建一个新的空白文件。
touch file #创建一个名为“file”的新的空白文件

命令stat 用于显示inode内容。

演示:
查看 testfile 文件的inode内容内容
stat testfile

命令file 用于辨识文件类型。
参数:

-b  列出辨识结果时,不显示文件名称。
-c  详细显示指令执行过程,便于排错或分析程序执行的情形。
-f<名称文件>  指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称。
-L  直接显示符号连接所指向的文件的类别。
-m<魔法数字文件>  指定魔法数字文件。
-v  显示版本信息。
-z  尝试去解读压缩文件的内容。

演示:
显示文件类型:
file test
test: ASCII text


二、使用命令行展开功能,创建/tmp/a1, /tmp/a2, /tmp/a1/a, /tmp/a1/b,在/tmp目录下创建目录:x_y, x_z, q_y, q_z

mkdir -pv /tmp/{a1/{a,b},a2}
mkdir -pv /tmp/{x,q}_{y,z}

三、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。

文件的数据分两种:一种元数据,既属性数据;一种就是数据本身;可使用stat命令查看文件的元数据:

stat /test.txt

其中:

file:文件名;

size:文件大小

block:文件占了多少个数据块

IO Block:文件所占数据块的块大小

Device:硬件,既说明该文件在硬盘的那个柱面

Inode:节点号

links:链接

Access(第一个):权限

Uid:该文件所属的属主

Gid:该文件所属的属组

context:安全上下文

Access(第二个):文件上一次的访问时间

Modify:文件上一次修改的时间

Change:文件上一次属性更改的时间

2)修改文件的时间戳信息:

可以使用touch命令更改文件的时间戳:

touch [OPTION]… FILE…

常用选项:

-c: 指定的文件路径不存在时不予创建;

-a: 仅修改access time;

-m:仅修改modify time;

-t:使用指定的日期时间,而非现在的时间;[[CC]YY]MMDDhhmm[.ss];

四、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
touch tfile-$(date +%F-%H-%M-%S)

五、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中

mkdir -pv /tmp/mytest1
cp -R /etc/p[^[:digit:]] /tmp/mytest1
cp -R /etc/p
[^0-9] /tmp/mytest1

六创建用户tom,指定UID为5001,指定家目录为/tmp/tom, 指定shell为/bin/zsh, 指定基本组为tom,附加组为jack
groupadd tom
groupadd jack
useradd -u 5001 -d /tmp/tom -s /bin/zsh -g tom -G jack tom

猜你喜欢

转载自blog.51cto.com/14074807/2327172