一、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:查找的源是硬盘