1、目录与路径
①、目录的相关操作
回到上层目录
cd ..
回到前一个工作目录
cd -
回到家目录
cd ~
进入到某个用户的家目录
cd ~user
②、新建目录
mkdir -m 711 -p ./mrsun/dir1
其中-m为该目录指定权限,-p递归的创建目录。下面是mrsun目录和dir1目录的权限,dir1目录的权限为711,mrsun为755其为默认权限,与系统的umask有关。
drwxr-xr-x 3 root root 4096 Jun 16 23:03 mrsun
drwx--x--x 2 root root 4096 Jun 16 23:03 dir1
删除目录时可以使用rmdir删除,但是需要保证该目录为空。一般使用rm -r进行递归的删除。
③、查看执行文件路径的变量:$PATH
echo $PATH
④、复制cp
cp -a xxx xxx
-a可实现递归、不修改权限的进行复制,尤其是不修改权限-p的复制。
cp -u xxx1 xxx2
当xxx1比xxx2新时才会发生复制,或xxx2不存在是发生复制。
如果复制的是符号链接文件,假如存在文件dir,dirslink为其符号链接,使用如下第一个复制会将文件复制过去为dirslink1,加上-d才是将符号链接复制过去。
cp dirslink dirslink1
cp -d dirslink dirslink2
⑤、删除rm
删除文件或目录的参数主要有-rif,r表示递归的删除,f忽略不存在的文件,不会出现警告信息。-i表示询问。
⑥、移动mv
其参数有fiu,f如果目标文件已经存在,移动时不会询问直接覆盖。u当文件有更新时才移动覆盖。
2、查看文件内容
cat | 从第一行显式文件内容 |
tac | 从最后一行开始显示 |
nl | 显示的时候输出行号 |
more | 一页一页的显示文件内容 |
less | 与more类似,可以前后翻页 |
head | 只看前面几行 |
tail | 只看后面几行 |
od | 以二进制的方式读取文件内容 |
①、cat
-A | 相当于-vET |
-b | 列出行号,空白行忽略 |
-E | 将结尾的换行符$显示出来 |
-n | 列出行号,空白行也列出 |
-T | 将tab按键以^I显示出来 |
-v | 列出一些看不出来的特殊字符 |
例如有如下文件:
Class MyClass
{
public static void main(String[] args)
{
System.out.println("hello world");
System.out.println("hello java");
System.out.println("hello c++");
}
}
>> cat -n hello.java
Class MyClass
2 {
3 public static void main(String[] args)
4 {
5 System.out.println("hello world");
6
7 System.out.println("hello java");
8
9 System.out.println("hello c++");
10 }
11 }
>> cat -A hello.java
Class MyClass$
{$
^Ipublic static void main(String[] args)$
^I{$
^I^ISystem.out.println("hello world");$
^I^I$
^I^ISystem.out.println("hello java");$
$
^I^ISystem.out.println("hello c++");$
^I}$
}$
②、tac
倒着查看文件内容。
③、nl
带行号的显示文件内容。
-b | -b a | 空行也列出行号 |
-b t | 空行不列行号 | |
-n | -n ln | 行号在屏幕的最左方显示 |
-n rn | 行号在栏位最右方显示,不加0 | |
-n rz | 行号在栏位最右方显示,加0 | |
-w | 行号栏位占用的数字位数 |
>> nl hello.java
1 Class MyClass
2 {
3 public static void main(String[] args)
4 {
5 System.out.println("hello world");
6 System.out.println("hello java");
7 System.out.println("hello c++");
8 }
9 }
>> nl -b a -n rz -w 3 hello.java
001 Class MyClass
002 {
003 public static void main(String[] args)
004 {
005 System.out.println("hello world");
006
007 System.out.println("hello java");
008
009 System.out.println("hello c++");
010 }
011 }
上面三个命令都是直接将内容全部输出到屏幕上无法翻页。接下来介绍几个可以翻页的命令。
④、more
如下,使用more可以分页显示内容,在屏幕底部还会显示目前所占百分比。在该页面下,可以使用如下键
空格 | 向下翻页 |
enter | 向下翻页 |
/字符串 | 在当前显示内容中,向下查找字符串,若要继续往下查找按n即可 |
:f | 显示当前文件名与当前显示的行数 |
q | 退出 |
b 或者ctrl b | 往回翻页 |
>> more hello.java
Class MyClass
{
public static void main(String[] args)
{
System.out.println("hello world");
System.out.println("hello java");
System.out.println("hello c++");
}
}
Class MyClass
{
public static void main(String[] args)
{
System.out.println("hello world");
System.out.println("hello java");
System.out.println("hello c++");
}
}Class MyClass
{
public static void main(String[] args)
{
System.out.println("hello world");
System.out.println("hello java");
System.out.println("hello c++");
}
}Class MyClass
{
public static void main(String[] args)
{
System.out.println("hello world");
System.out.println("hello java");
--More--(11%)
使用:f的效果
⑤、less
比more功能更丰富。在less查看内容是可使用如下快捷键。
空格 | 向下翻页 |
pagedown | 向下翻页 |
pageup | 向上翻页 |
/字符串 | 向下查找字符串,按n/N可以实现选中下一个/上一个目标 |
?字符串 | 向上查找字符串,n/N可以实现如上的功能 |
G | 跳到数据的最后一行 |
g | 跳到数据的第一行 |
q | 退出 |
⑥、head、tail数据截取
head表示显示文件前面n行,tail表示显示文件后面n行。
-n number表示显示前number行数据,当number为负数时,表示除开文件后面的number绝对值行不显示,前面的全显示。
head -n 100 hello.java
head -n -100 hello.java
-n number表示显示后number行数据,当number前面带+时,表示 从该文件的第100行开始显示到文件的末尾。
tail -n number hello.java
tail -n +number hello.java
在屏幕上动态的显示hello.java文件末尾的内容,可以配合-n一起使用
tail -f hello.java
例子:取文件的第11行到20行的数据,并显示文件原始的行数,使用管道完成
cat -n hello.java | head -n 20 | tail -n 10
⑦、非纯文本文件:od
使用od可查看二进制文件,并以指定的编码方式显示出来
od -t c /usr/bin/passwd
3、文件和目录的默认权限与隐藏权限
①、umask
在创建文件与目录时,系统会默认为该文件或目录生成权限。该权限由umask确定。在linux中输入umask即可查看默认的值。
第一个数字为特殊权限,后面三个数字为一般权限。该数字的意义为:创建目录或文件时去除umask的值即为目录或文件的默认权限。比如umask为022,即对于所属用户不去除任何权限,对于同组内的其他用户去除2权限(w权限),对于其他用户去去除2权限(w权限)。
当目录具有x权限时,其他用户才能进入该目录,所以对于目录我们可以默认其具有777的全部权限,而对于文件而言,创建出来不要求其具有可执行x权限,所以默认其具有666权限。
目录未去除umask默认权限为:drwxrwxrwx
文件未去除umask默认权限为:-rw-rw-rw-
当使用文件或目录的默认权限减去umask之后就是创建文件或目录时的默认权限了。
目录:(drwxrwxrwx)-(d----w--w-)=drwxr-xr-x
文件:(-rw-rw-rw-)-(----w--w-)=-rw-r--r--
在未修改umask之前
修改umask为011
②、文件隐藏属性
主要用于安全方面考虑,命令有chattr与lsattr