一、Linux文件与目录管理

绝对路径与相对路径

绝对路径:路径的写法一定由根‘/'写起,列/usr/local/mysql

相对路径:路径的写法不是由根目录'/'写起,列,首先用户进入到/,然后再进入home,命令为cd /home然后cd test此时用户所在路径为/home/test第一个cd命令后跟/home第二个cd命令后跟test,并没有斜杠,这个test是相对于/home目录来讲的所以叫做相对路径

命令:cd pwd

命令:mkdir

mkdir -p /tmp/test/123(一定要加-p参数)

命令:rm

rm -rf(r表示删除目录,-f表示强制删除)

环境变量PATH

which:它用来查找某个命令的绝对路径

which rmdir  which ls

/bin/rmdir   alias ls=’ls --color=auto‘

                       /bin/ls

which rm

alias rm='rm -i'

        /bin/rm

上边提到了alias,也提到了绝对路径的/bin/rm,然后你意识到没有,为什么我们输入很多命令时是直接打出来命令,而没有去使用这些命令的绝对路径?这是因为环境变量PATH在起作用了。请输入echo $PATH,这里的echo其实就是打印的意思,而PATH前面的$表示后面接的是变量。

echo $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin:/usr/local/apache2/bin:/root/bin

因为/bin在PATH的设定中,所有自然就可以找到ls了。如果你将ls移到/root底下的话,然后你自己本身也在/root底下,但是当你执行ls的时候,他就是不理你,怎么办?这是因为PATH没有/root这个目录,而你又将ls移动到/root底下了,自然系统就找不到可执行文件了,因此就会告诉你’command not found‘

mv /bin/ls /root/

ls

-bash:/bin/ls:没有那个文件或目录

mv用来移动目录或者文件,还可以重命名。那么该怎么克服这种问题呢?有两个方法,一种方法是将/root的路径加入$PATH当中,如何增加?可以使用命令PATH=$PATH:/root

另一种方法使用绝对路径/root/ls

命令:cp

格式cp [选项] [来源文件] [目的文件]

列:把test1拷贝成test2,这样既可cp test1 test2

-r:如果要拷贝一个目录,必须要加-r选项,否则是拷贝不了目录的。

mkdir 123

cp -r 123 456

uname -r:查看内核版本 uname -a:查看系统是32位还是64位 cat /etc/issue查看系统版本

ls -i(查看文件并且显示inode编号)ls -t(按时间顺序排序)ls -a(显示所有文件)

ls -lh(显示大小)

ls /home/  ls -d /home/  ls -ld /home/

                /home/   drwxr-xr-x. 2 root root 4096 Sep 23  2011 /home/

如何查看命令帮助:ls --help或者man ls

命令:cat:只看到内容最后一屏 more:由上往下翻,按空格键

less:由上往下,由下往上都可以看 head /etc/passwd显示前十行

head -n 20 /etc/passwd显示前20行 tail /etc/passwd查看后十行内容

du -sh查看文件占用磁盘信息 clear或ctrl+L清屏

用户管理

useradd wanjj   passwd wanjj

/home目录是普通用户的家目录

创建好之后,vim /etc/passwd

可以看到:wanjj:x:501:501::/home/wanjj:/bin/bash(第二段x是密码空位键,第三段501是UID,第四段501是gid,第五段是用户描述,第六段是用户家目录,第七段是用户可执行环境)

如果不让wanjj这个用户登录,则把最后一位/bin/bash改为/sbin/nologin

usermod -u 700 -s /sbin/nologin wanjj(修改uid和用户可执行环境)

userdel wanjj(删除一个用户,但是家目录还有wanjj,若都要删除,则userdel -r wanjj)

su wanjj(可以切换用户,su部分切换,su -全部切换)

组管理

vim /etc/group

root:x:0:

bin:x:1:bin,daemon(第一段是组名,第二段是组的密码空位键,第三段是组的id)

vim /etc/gshadow

gshadow-和passwd-表示是备份文件,如果把passwd或gshadow文件删除,可以还原

如何还原?cp /etc/passwd- /etc/passwd

vim /etc/gshadow

root:::

bin:::bin,daemon

第一段是组名,第二段是组的密码,第三段是组的管理员,第四段是组的成员

groupadd zhangsan增加一个组

groupadd -g 777 wangmazi

groupdel wangmazi(删除组)

useradd lisi

vim /etc/passwd lisi:x:801:802::/home/lisi:/bin/bash

vim /etc/gshadow lisi:x:802:

lisi这个组就做为lisi这个用户的主组

附属组:如果把lisi这个组加入到wangmazi,那么wangmazi就是lisi的附属组

id lisi

uid=801(lisi) gid=802(lisi) 组=802(lisi)

usermod -G leiqin lisi

id lisi

uid=801(lisi) gid=802(lisi) 组=802(lisi),500(leiqin)

基本权限管理

drwxr-xr-x 3 root root 4.0k 3月 26 08:44 ccc_back

-rw-r--r-- 1 root root 39k 3月 25 04:18 install.log

第一个root表示拥有者 第二个root拥有组

d表示目录文件 -表示普通文件 l表示链接文件 b表示块设备文件(ls -l /dev/sda*)

c表示字符文件 p表示管道文件 s表示套接字文件(ls -l /tmp/*)

上面的rwx是拥有者root的权限

r-x是拥有组root的权限

r-x是其他人的权限

如何修改权限:u表示拥有者 g表示拥有组 o表示其他人

chmod u=rwx install.log

chmod g=x install.log

chmod o=rx install.log

r=4 w=2 x=1

chmod 744 install.log

如何更改拥有者和拥有组

chown leiqin:lisi passwd

755 drwxr-xr-x 2 root root 4096 3月 28 09:11 bifujian(目录)

644 -rw-r--r-- 1 root root 0    3月 28 09:10 canglaoshi(文件)

文件的最高权限是666

目录的最高权限是777

umask执行是0022,看后3位,666-022=644,777-022=755

特殊权限

高级文件管理

ls -l /dev/stdin   0表示标准输入(正确)

lrwxrwxrwx. 1 root root 15 Aug  6 05:51 /dev/stdin -> /proc/self/fd/0

ls -l /dev/stdout   1表示标准输出(正确)

lrwxrwxrwx. 1 root root 15 Aug  6 05:51 /dev/stdout -> /proc/self/fd/1

                 

ls -l /dev/stderr   错误输出

lrwxrwxrwx. 1 root root 15 Aug  6 05:51 /dev/stderr -> /proc/self/fd/2

ls /etc/passwd              ls /etc/passwd1

/etc/passwd(正确输出) ls: cannot access /etc/passwd1: No such file or directory(错误输出)

ls /etc/passwd /etc/passwd1

ls: cannot access /etc/passwd1: No such file or directory

/etc/passwd(错误输出和正确输出都有)

ls /etc/passwd /etc/passwd1 1>1.log 2>2.log(把正确输出输入到1.log,错误输出输入到2.log)

 ls /etc/passwd /etc/passwd1 &>all.log(把标准正确输出和错误输出都输入到all.log)

echo “dddd”(dddd显示在屏幕上) echo “aaa” >aaa.log

echo “bbb” >aaa.log会把aaa覆盖掉

若不想覆盖,则用echo “bbbbbbb”>>aaa.log(>这个符号表示输出重定向,>>表示追加)

输入重定向用的很少 cat < /etc/passwd,把/etc/passwd文件作为cat命令的输入

ls /etc/passwd /etc/passwd1 >aming.log(正确的显示到aming.log,错误的显示到屏幕)

ls /etc/passwd /etc/passwd &>/dev/null(/dev/null是系统黑洞,往里面扔,不会占用磁盘空间)

/dev/zero零发射器,里面有无穷无尽的数据。

dd if=/dev/zero of=aaa.txt bs=1 count=1M(if理解为输入,of输出,bs多少份)

对命令的查找:which ls,查找的源是echo $PATH环境变量

对文件的查找:locate,locate passwd|more,从updatedb数据库查找,不是实时更新,若系统无locate命令,yum install -y mlocate updatedb

find:查找的源是硬盘