查看文件内容
cat
连接文件并打印到标准输出设备上,经常用来显示文件的内容
当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清显示的内容。因此一般用more等命令分屏显示。
1
2
3cat m1 在屏幕上显示文件ml的内容
cat m1 m2 同时显示文件ml和m2的内容
cat m1 m2 > file 将文件ml和m2合并后放入文件file中more
基于vi编辑器文本过滤器,以全屏幕的方式按页显示文本文件的内容,支持vi中的关键字定位操作。
常用快捷键:H(获得帮助信息),Enter(向下翻滚一行),空格(向下滚动一屏),Q(退出命令),B(向下滚动一屏)
1
2more -dc file 显示文件file的内容,但在显示之前先清屏,并且在屏幕的最下方显示完核的百分比。
more -c -10 file 显示文件file的内容,每10行显示一次,而且在显示之前先清屏。less
作用与more十分相似,都可以用来浏览文字档案的内容,不同的是less命令允许用户向前或向后浏览文件,而more命令只能向前浏览。
常用快捷键:PageUp(向上翻页),PageDown(向下翻页),Q(退出)
head
用于显示文件的开头的内容。在默认情况下,head命令显示文件的头10行内容。
1
2head -n 20 file 显示文件前20行
head -c 20 file 显示文件前20个字符tail
用于输入文件中的尾部内容。tail命令默认在屏幕上显示指定文件的末尾10行。
1
2
3
4tail file 显示文件file的最后10行
tail -n 20 file 显示文件file的最后20行
tail +20 file 显示文件file的内容,从第20行至文件末尾
tail -c 10 file 显示文件file的最后10个字符vi
UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本编辑器。
Linux中的vi编辑器叫vim,它是vi的增强版(vi Improved),与vi编辑器完全兼容,而且实现了很多增强功能。
查看 文件/目录 信息
ls
显示目标列表
1
2
3
4
5
6ls 显示当前目录下非隐藏文件与目录
ls -a 显示当前目录下包括隐藏文件在内的所有文件列表
ls -m 水平输出文件列表
ls -t 按文件和目录的更改时间排序输出
ls -R 递归显示目录和文件
ls -l 列出文件和文件夹的详细信息tree
以树状图列出目录的内容
file
用来探测给定文件的类型。
file命令对文件的检查分为文件系统、魔法幻数检查和语言检查3个过程。
stat
用于显示文件的状态信息。
stat命令的输出信息比ls命令的输出信息要更详细。
pwd
以绝对路径的方式显示用户当前工作目录。
查找/比较 文件
find
用来在指定目录下查找文件。
1
2
3
4
5
6find . 列出当前目录及子目录下所有文件和文件夹
find /home -name "*.txt" 在/home目录下查找以.txt结尾的文件名
find /home -iname "*.txt" 同上,但忽略大小写
find /home ! -name "*.txt" 找出/home下不是以.txt结尾的文件
find . -regex ".*\(\.txt\|\.pdf\)$" 基于正则表达式匹配文件路径
find . -iregex ".*\(\.txt\|\.pdf\)$" 同上,但忽略大小写whereis
用来定位指令的二进制程序、源代码文件和man手册页等相关文件的路径。
只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
which
用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。
locate/slocate
都用来查找文件或目录。
locate命令其实是
find -name
的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb
,这个数据库中含有本地所有文件信息。这个数据库每天自动更新一次,可以使用updatedb
命令手动更新数据库。strings
在对象文件或二进制文件中查找可打印的字符串。
1
2
3strings /bin/ls 列出ls中所有的ASCII文本
cat /bin/ls strings 列出ls中所有的ASCII文本
strings /bin/ls | grep -i libc 查找ls中包含libc的字符串,不区分大小写diff/diff3/cmp
diff是比较给定的两个文件的不同,diff3则是比较三个文件的不同。
diff命令是以逐行的方式,比较文本文件的异同处。
cmp比较两个文件,给出差别字符的位置和行号。
1
2diff /usr/li test.txt 将目录/usr/li下的文件"test.txt"与当前目录下的文件"test.txt"进行比较
cmp testfile testfile1 比较两个指定的文件
操作 文件/目录
rmdik
用来删除空目录。
mkdir
用来创建目录。
如果在目录名的前面没有加任何路径名,则在当前目录下创建由dirname指定的目录;如果给出了一个已经存在的路径,将会在该目录下创建一个指定的目录。
在创建目录时,应保证新建的目录与它所在目录下的文件没有重名。
1
mkdir -m 700 /usr/meng/test 在目录/usr/meng下建立子目录test,并且只有文件主有读、写和执行权限,其他人无权访问
rm
可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。
对于链接文件,只是删除整个链接文件,而原有文件保持不变。
使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。
1
2
3rm -r * 删除当前目录下除隐含文件外的所有文件和子目录
rm -i test example 交互式删除当前目录下的文件test和example
rm -f test example 强制当前目录下的文件test和examplemv
用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。
如果将一个文件移到一个已经存在的目标文件中,则目标文件的内容将被覆盖。
1
2mv ex3 new1 将文件ex3改名为new1
mv /usr/men/* . 将目录/usr/men中的所有文件移到当前目录(用.表示)中cp
用来将一个或多个源文件或者目录复制到指定的目的文件或目录。
如果把一个文件复制到一个目标文件中,而目标文件已经存在,那么,该目标文件的内容将被破坏。
所有目标文件指定的目录必须是己经存在的,cp命令不能创建目录。如果没有文件复制的权限,则系统会显示出错信息。
1
2
3
4cp ../mary/homework/assign . 将指定文件复制到当前目录下
cp file /usr/men/tmp/file1 将文件file复制到目录/usr/men/tmp下,并改名为file1
cp -r /usr/men /usr/zh 将目录/usr/men下的所有文件及其子目录复制到目录/usr/zh中
cp -i /usr/men/m*.c /usr/zh 交互式地将目录/usr/men中的以m打头的所有.c文件复制到目录/usr/zh中
文件/目录 权限设置
chmod
用来变更文件或目录的权限。
权限范围的表示法如下:
u
User,即文件或目录的拥有者;g
Group,即文件或目录的所属群组;o
Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围;a
All,即全部的用户,包含拥有者,所属群组以及其他用户;r
读取权限,数字代号为“4”;w
写入权限,数字代号为“2”;x
执行或切换权限,数字代号为“1”;-
不具任何权限,数字代号为“0”;s
特殊功能说明:变更文件或目录的权限。1
2
3
4chmod u+x,g+w f01 为文件f01设置自己可以执行,组员可以写入的权限
chmod u=rwx,g=rw,o=r f01
chmod 764 f01
chmod a+x f01 对文件f01的u,g,o都设置可执行属性chown
改变某个文件或目录的所有者和所属的组。
该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组。
用户可以是用户或者是用户id,用户组可以是组名或组id。文件名可以使由空格分开的文件列表,在文件名中可以包含通配符。
文件名可以使由空格分开的文件列表,在文件名中可以包含通配符。
1
2
3chown user:market f01 把文件f01给uesr,添加到market组
chown user f01 省略":market",仅将文件f01给用户user
chown -R liu /usr/meng 将目录/usr/meng及其下面的所有文件、子目录的文件主改成用户liuchgrp
用来改变文件或目录所属的用户组。
组名可以是用户组的id,也可以是用户组的组名。
文件名可以 是由空格分开的要改变属组的文件列表,也可以是由通配符描述的文件集合。
环境变量设置
环境变量分类
按照生命周期分为:
- 临时的:利用export命令,在当前终端下声明环境变量,关闭Shell终端失效
- 永久的:需要修改相关的配置文件,变量永久生效
按照作用域分为:
- 用户环境变量:只对特定的用户有效
- 系统环境变量:对系统中的所有用户都有效
设置方法
- 临时环境变量设置
在终端中输入$ export 变量名=变量值
永久环境变量设置
对所有用户有效:在
/etc/prifile
文件中添加变量1
2vim /etc/profile
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib对单一用户有效:在
~/.bash_profile
文件中添加变量1
2vim /etc/profile
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib运行
$ source 文件名
让环境变量设置马上生效
其他相关命令
- echo:显示某个环境变量
echo $PATH
- export:设置一个新的环境变量
export HELLO="hello" (可以无引号)
- env:显示系统中已存在的环境变量,以及在定义的环境中执行指令
- set:显示本地定义的shell变量
- unset:清除环境变量
- readonly:设置只读环境变量
参考