linux笔记

  • 格式:doc
  • 大小:175.00 KB
  • 文档页数:30

Linux发展起源1991年1、Linux系统大致上分为两个部分:Linux内核+根文件系统Linux内核:管理设备、硬件、进程根文件系统:是系统启动后加载的第一个文件系统Linux内核:2、Linux内核版本2.6.18-128.ELsmp(2:主版本号;6:次版本号;18:修订版本号)前两个数字用来表示稳定版本还是开发版本若前两个数字是偶数-稳定版;前两个数字是奇数-开发版:用来测试与发展新功能3、Linux发行版:Linux内核+实用工具+实用文档Redhat Linux9.0 免费,个人桌面Redhat enterprise Linux6.5(RHEL)收费,服务器Centos 免费,和RHEL几乎一样,服务器Ubuntu 免费,个人桌面,安装配置很容易fedora 免费,个人桌面4、Linux的两种登录用户超级管理员--用户名root:添加删除硬件、软件,重启、关机普通用户----用户名自设:普通操作5、绝对路径和相对路径“/”根目录有时代表目录分隔符“.”当前目录“..”上一目录,父目录/data/music/liuyifei:第一个/代表根目录第二、三个/代表目录分隔符根目录下有个data目录,data目录下有个music目录,music目录有个liuyifei的目录所有以根目录/开始的路径都是绝对路径../data/music/liuyifei第一个..代表当前目录的上一层目录,后面的三个/代表目录分隔符当前目录的上一层目录里有个data目录,data目录下有个music目录,music目录有个liuyifei目录./data/music/liuyifei当前目录下有个data目录,data目录下有个music目录,music目录有个liuyifei目录所有以.或..开始的路径都是相对路径6、四个特殊的符号"/"根目录"."当前目录".."上一层目录"~"主目录,工作目录,家目录登录系统后默认进去的目录对于root,主目录/root(~)对于普通用户,比如andy,主目录/home/andy7、命令来提示符的含义打开终端:桌面点右键->open in terminal命令提示符:[andy@winter Desktop]$[用户名@主机名当前目录名]$$:代表现在是用普通用户登录#:代表现在是用root登录8、三个最简单的Linux命令Linux命令的格式命令[选项] [参数]显示当前的路径pwd [root@winter Desktop]#pwd/root/显示/root 即root的主目录改变目录cd使用方法1:cd 目录名功能:进入到当前目录下的某个子目录cd Desktop-在当前目录下找Desktop这个子目录,然后进入使用方法2:cd 路径功能:进入到该路径指示的某个路径cd/root/Desktop-进入/root/Desktop这个目录cd ../Desktop-在上一层目录里找Desktop,并进入cd ./Desktop-在当前目录下找Desktop,并进入(如果目录不存在,或者路径写错,报错bash:cd:Desktop:No such file or directory目录)使用方法3:cd~ 进入到主目录cd/ 进入到根目录cd..进入到上一层目录cd强调:1、Linux和Windows最大的不同区分大小写例:bash:Pwd:command not found2、命令格式:命令[选项] [参数]cd/root/Desktop 没有选项pwd 没有选项也没有参数命令和选项、参数之间,都要有空格Linux的目录和文件操作1、查看目录的内容ls(list)使用方法1:ls 显示当前目录下所有的文件和子目录的名称使用方法2:ls -l(缩写ll)以长列表的格式显示当前目录下的详细信息使用方法3:ls -a 显示当前目录下的隐藏文件或隐藏目录cd不加任何参数,进去主目录首字符为. 隐藏文件或隐藏目录使用方法4:ls -l /etc/dhcpls -a/etc/dhcpls -l./etc/dhcpls -al/etc/dhcp使用方法5:ls -t 按时间显示当前目录下的内容创建新目录mkdir(make directory)使用方法1:mkdir 目录名使用方法2:mkdir 目录1 目录2、、、一次创建多个目录使用方法3:创建目录树mkdir -p./test2/testdirmkdir -p./test3/testdir删除空目录rmdir(remove directory)只能删除空目录使用方法1:rmdir 目录名删除该目录使用方法2:rmdir 目录1 目录2 一次删除多个目录使用方法3:rmdir -p./test3/testdir 删除空的目录树文件或目录改名mv 旧名字新名字查看文件的内容cat使用方法1:cat 文件名cat 文件路径cat /etc/fstabcat /etc/passwd 用户名使用方法2:输出重定向用cat 命令合并两个文件Cat /etc/inittab /etc/fstabCat /etc/inittab /etc/fstab > myfile使用方法3:用cat命令从键盘创建一个文件Cat > newfile创建5个用户useradd -d /home/testuser1 testuser1useradd -d /home/testuser2 testuser2useradd -d /home/testuser3 testuser3useradd -d /home/testuser4 testuser4useradd -d /home/testuser5 testuser5Chpasswd < newpassword 密码全改输入重定向>覆盖输出重定向pwd > myfilecat myfilell > myfilecat myfile>>追加输出重定向pwd > myfilecat myfilell >> myfilecat myfile错误重定向逐屏浏览文件命令more使用方法:more /etc/passwd空格:下一屏回车:下一行b:回退一屏/LOAD:查找字符串LOADq:退出more程序查看文件的前几行head使用方法1:head 文件名head 路径head /etc/passwd 默认显示文件的前十行使用方法2:head -n 文件名或路径head -25/etc/passwd查看文件的后几行tail使用方法1:tail 文件名或路径tail -/etc/passwdtail -n 文件名或路径tail -30/etc/passwd拷贝文件或目录cp使用方法1:cp 源文件目标文件使用方法2:cp -i 源文件目标文件拷贝时发现目标已存在,提示要不要覆盖使用方法3:cp -f 源文件目标文件拷贝时发现目标已存在,不提示要不要覆盖cp /etc/passwd .复制当前目录使用方法4:cp -v 源文件目标文件cp -v /etc/passwd . (-v)拷贝时显示详细拷贝信息使用方法5:cp -r 源目录目标目录cp /bin .把bin目录拷贝到当前目录下[11@localhost Desktop]$ cp /bin .cp: omitting(忽略)directory `/bin'cp -rv /bin .cp -rfv 源目录路径目标目录路径f:force 强制v:verbose 详细i:interactive 交互r:recursive 递归删除文件或目录rm(remove) 删除后无法恢复使用方法1:rm 文件名使用方法2:rm -f 文件名不提示直接删除使用方法3:rm -i 文件名删除之前进行提示使用方法4:rm -v 文件名删除时提示详细信息使用方法5:rm -r 文件名删除目录及其下面所有文件和子目录rm -rfv创建新的空文件touch使用方法1:touch 文件名在当前目录下创建该空文件使用方法2:touch 新文件的路径在改路径下创建改空文件使用方法3:1、最后一个文件和目录操作基本命令mv (move)重命名:mv 旧名字新名字移动:mv 旧路径新路径把date文件从bin目录下,移动到主目录下mv /home/andy/work_20160921/bin/date /home/andy2、通配符和目录树删除以c开头的所有文件和目录删除以非c开头的所有文件和目录[^c]*4个通配符:?匹配单个字符,但不包含首字符的.* 匹配任意字符,但不包含首字符的.[..] 匹配括号内的单个字符[^..] 匹配除括号内的单个字符[0-9] 匹配单个数字0 1 2 3、、、8 9[a-z] 匹配所有的小写字符[b-m] 匹配从b开始到m的所有小写字符[A-H] 匹配从A到H的所有大写字符[^a-z]匹配除了小写字符外的任何单个字符目录树/boot 放置启动文件的目录/bin 存放命令的目录,普通用户使用的命令/sbin 存放系统管理员使用的命令/etc 存放系统的配置文件如/etc/networks 网络配置相关文件/var 可变目录,存放经常改变的数据(如系统日志,web网站,邮件的数据)/tmp 存放临时文件,系统会自动定期清空/dev 存放设备文件的目录如/dev/cpu /dev/mem/lib 存放库文件include stdio.hstandard input output 标准输入输出/mnt 挂载目录主目录----------------------------------------vim编辑器Linux系统中使用最普遍的编辑器特点:不用鼠标vi -> vim -> gvim用cp命令把/etc/passwd拷贝到主目录下vim ~/passwd退出vim ESC :q!命令模式:复制、粘贴、剪切、移动光标、撤销、搜索编辑模式:输入字符插入文字执行模式:执行vim命令,比如保存、退出编辑模式->执行模式(Esc :q)l右移h左移j下移k上移0移动到行首$移动到行尾G移动到文件末尾15G移动到第15行删除单个字符x 删除光标所在处的字符dd 删除一行8dd 删除8行D 删除光标所在处到行尾的所有字符dG 删除光标所在行到文件的末尾撤销u复制粘贴yy复制一行p 粘贴已复制的内容10yy 复制10行剪切先删除3行3dd移动光标到第10行10G粘贴p替换先按小写r,在按数字7r 替换光标当前位置的字符先按大写R,再一直输入其他的任意字符R 进入替换模式,直到按下ESC退出替换模式全局替换:%s/sbin/HAHA/g全局删除:%s/HAHA/g保存退出:w 保存:q 退出:wq 保存并退出:w 文件名另存为:q! 强制退出,不保存:w! 强制保存,针对只读文件:wq! 强制保存并退出搜索/搜索内容/bin 继续按下小写n,搜索下一个同时打开几个文件vim-o 文件1 文件2 横屏方式vim-O 文件1 文件2 竖屏模式Ctrl+ww 切换窗口用户管理、组管理1、Linux的用户分类root-超级管理,具有完全权限,一切操作普通用户-权限有限特殊用户-无法登录系统vim /etc/passwd在命令模式下:1G在命令模式下:用UID来区分,user id 用户号码用户名:加密密码:用户ID:组IDroot-UID 0普通用户500<UID<6000特殊用户0<UID<500给系统某些进程、程序使用,为了方便系统的管理,Linux的使用者无法使用这种用户,由系统自己管理-----------------------------------用户数据库文件/etc/passwd所有的用户都可查看该文件,但是只有管理员可修改,存储所有的用户信息用户密码/etc/shadow(影子)vim /etc/shadow 每两个冒号之间为一个字段存储加密后的密码/etc/passwd 共7个字段用户名:加密密码:用户ID:组ID:注释:主目录:登录shell类型/etc/shadow 共9个字段----------------------------------------用户管理和组管理的命令基本命令id whoami users w whowhoami 显示所登录的用户名id 当前登录用户的详细信息users 用来显示当前登录用户的简要信息who 所有登录用户的简要信息(用户名登录方式时间)w 用来显示所有登录用户的详细信息USER TTY FROM登录用户名登录方式IP地址和端口号-----------------------------------用户管理相关的命令添加用户、删除用户、修改用户信息添加用户的命令useradd使用方法一:useradd -d 路径用户名useradd -d /home/test test查看文件cat /etc/passwdmore /etc/passwd 逐屏浏览vim /etc/passwd 用编辑器打开head /etc/passwdtail /etc/passwd(最方便)查看/home/test是否存在ls /home/testll /home/testls /homecd test使用方法二:useradd -g 组名用户名添加用户的同时,设定用户的主要组使用方法三:useradd -G 组名用户名添加用户的同时,设定用户的次要组删除用户的命令userdel使用方法一:userdel 用户名userdel test删除用户,但不删除其主目录使用方法二:userdel -r 用户名userdel -r test删除用户,同时删除其主目录修改用户的信息usermod使用方法一:usermod -g 组名用户名修改用户的主要组使用方法二:usermod -d 目录路径用户名修改用户的主目录passwd testpasswd 设置密码root用户,可以给自己和别人设置密码普通用户,只能给自己设置密码给自己设密码:passwd st1234给别人设密码:passwd 用户名1、切换用户su使用方法:su - 用户名root用户切换到其他用户,不需要输密码其他用户切换到另外用户,需要输密码创建一个新用户linuxtestuseradd -d /home/linuxtest linuxtesttail /etc/passwd查看是否创建成功切换用户:su - linuxtest2、临时改变用户的身份sudo临时获取管理员的权限,当命令执行完后,管理员权限被释放只有名字在/etc/sudoers中的用户才能使用该命令使用方法:切换到su - linuxtest登录fdisk -l查看磁盘分区,只能管理员查看sudo fdisk -lsu - root ---rootvim /etc/sudoers ---root操作su - linuxtest ---切成普通用户sudo fdisk -l ---普通用户操作(普通用户临时获取管理员权限)3、查看用户所在哪些组groupsgroups 用户名groups linuxtest4、添加用户组groupaddgroupadd 用户组名5、删除用户组groupdelgroupdel 用户组名6、修改用户组信息groupmodgroupmod -n 新组名就组名su - rootcp -f /etc/passwd /tmp/passwd1cp -f /etc/passwd /tmp/passwd2chmod 222 passwd1chmod 444 passwd2ls -l--w--w--w- .....passwd1-r--r--r- .....passwd2su - linuxtestvim /tmp/passwd2su - rootcd /tmp创建新目录mkdir newdircp -f /etc/passwd /tmp/newdirchmod -R 222 /tmp/newdirls -l /tmpd-w--w--w- .....newdirsu - linuxtestls /tmp/newdir Permission没有权限su - rootchmod -R 666 /tmp/newdirls -l /tmpdrw-rw-rw- ...newdirsu - linuxtestls /tmp/newdirsu - rootchmod -R 777 /tmp/newdirdrwxrwxrwx .....newdirsu - linuxtestls /tmp/newdir(√)su - rootchmod -R 666 /tmp/newdirls -l /tmpdrw-rw-rw- .....newdirsu - linuxtestcd /tmp/newdir(permission denied)-----------------------------------Linux的权限管理3种权限r-可读w-可写x-可执行-rw-r--r-- 1 stu90905 LinuxStu 5 Oct 7 2015 ncverilog.key [权限][链接数][所有者][组][大小][时间][文件名]3中访问级别u-文件所有者(user)g-文件组所有者(group)o-其他任何人(others)3个命令chmod chgrp chown1、改变文件权限chmod(change mode)方法一:(ug + rchmod o = w 文件名a ) - x方法二:chmod 3位八进制数字文件名rwxrwxrwx 111111111->777chmod 777 myfile改变文件权限chmod 776 文件名改变目录权限chmod -R 766 目录名2、改变组所有者charpcharp 新组文件名或目录名3、改变所有者chownchown 新所有者文件名或目录名---------------------------------Linux下的压缩文件.tar.gz .tar.bz2.gz .bz2 .Z .zip .7z .tar打包压缩文件----->.tar------>.tar.gz<------ <------.tar.bz2解包解压压缩和解压tar -cf foobar.tar foo bar打包tar -tvf foobar.tar列表查看tar -xvf foobar.tar解包f强制v详细信息c压缩x解开gzip foobar.tar压缩gzip -d foobar.tar.gz解压gunzip foobar.tar.gz解压bzip2 foobar.tar压缩bzip2 -d foobar.tar.bz2解压bunzip2 foobar.tar.bz2解压打包压缩文件----------->.tar.gz<------------.tar.bz2解包解压tar -zcvf foobar.tar.gz foo bar压缩tar -zxvf foobar.tar,gz解压tar -jcvf foobar.tar.bz2 foo bar压缩tar -jxvf foobar.tar.bz2解压.Z(需要安装uncompress工具)解压:uncompress filename.Z压缩:compress filename.tar.Z解压:tar -Zxvf filename.tar.Z压缩:tar -Zcvf filename.tar.Z filename .zip解压:unzip filename.zip压缩:zip filename.zip filename.7z(需要提前安装7z工具)解压: 7z x filename.7z压缩: 7z a filename.7z filename----------------------------------查看运行级别runlevel显示上一次和当前运行级别0 :关机,不能将系统默认运行级别设置为01:单用户模式,只有root可用2:多用户模式,但是不能使用NFS3:字符界面的多用户模式4:保留5:图形界面的多用户模式6:重启,不能将系统默认运行级别设置为6,否则一直重启重启按下ctrl+alt+delete,系统将重新启动执行reboot命令执行init 6shutdown -r +10 在十分钟后重新启动关机shutdown –h now 马上关机执行halt命令执行init 0命令执行poweroff命令Ctrl+a 在命令行上跑到行首Ctrl+e 到行尾Ctrl+u 从光标处删除到行尾man cp man mkdir q退出--help 长命令clear清屏-----------------------------------mount 挂载(手动挂载)挂载:把一个文件系统加载到Linux中;文件系统:U盘,光盘,硬盘umont 卸载两个专门的挂载点:/mnt 挂载U盘、磁盘的挂载点/meidia 挂载光驱设备的挂载点mount -t vfstyle -o option device dirvfstyle:文件系统类型iso9660 光盘或光盘镜像msdos DOS的FAT16文件系统vfat Windows 9x FAT32文件系统ntfs Windows xp,win7....NTFS系统mount -t ntfs ....ext2/ext3/ext4 linux系统的文件系统类型option:其他参数,比如语言支持,挂载方式ro:采用只读方式挂载设备rw:采用读写方式挂载设备iocharset:字符集,指定访问文件系统使用的字符集,也就是支持哪些语言device:设备,指分区名称光盘,U盘或者磁盘的名称dir:目录查看所有的磁盘:fdisk -l/dev/sda 磁盘名称/dev/sda1 分区名称,第一块硬盘的第一个分区/dev/sda2 分区名称,第一块硬盘的第二个分区磁盘名称:/dev/sda SCSI磁盘,第一块磁盘/dev/sdb SCSI磁盘,第二块磁盘/dev/sdc SCSI磁盘,第三块磁盘/dev/sdd SCSI磁盘,第四块磁盘/dev/hda IDE磁盘,第一块磁盘/dev/hdb IDE磁盘,第二块磁盘/dev/hdc IDE磁盘,第三块磁盘分区:/dev/sdc3 第三块SCSI磁盘的第三个分区连接:U盘从Windows弹出,连接到Linux系统断开:U盘从Linux弹出,连接到Windows中U盘:/dev/sbd 磁盘名称/dev/sdb1 分区名称卸载命令umount使用方法:umount 分区名称umount 挂载目录名称挂载目录/media/4816-4D71卸载umount /media/4816-4D71cd /mntmkdir usbmount -t vfat /dev/sdb1 /mnt/usb查看ll /mnt/usb挂载U盘:mount空格-t空格vfat空格-o空格iocharset=gb2312,codepage=936,utf8=0空格/dev/sdb1空格/mnt/usb回车挂载光驱:mount -t auto -o ro /dev/cdrom /mnt/cdrom挂载光盘镜像:mount -o loop -t iso9600 /data/rhe16.iso /mount/iso自动挂载修改/etc/fstab需要在/etc/fstab里添加一行自动挂载光盘镜像,添加一行:/data/rhe16.iso /mnt/rhe16 iso9660 ro,loop 0 0自动挂载光驱,添加一行:/dev/cdrom /media/cdrom udf,iso9660 defaults 0 0-------------------------------------查看磁盘空间的使用情况df以1K-blocks数量来显示df以MB或GB来显示df -h查看某个目录占用的空间大小进入该目录中cd /tmp执行du -sh-------------------------------------弹出设备ejecteject /dev/sdb 磁盘名称------------------------------------------------Linux进程管理让进程前台运行和后台运行evince 前台运行终端会被阻塞,不能接受命令输入evince& 后台运行,终端不会被阻塞,可以接受命令输入终止前台运行的程序,快捷键:Ctrl+c查看进程的状态ps使用方法:ps auxUSER:用户PID(进程的号码):process ID%CPU:CPU占用率%MEM:内存=占用率TTY:登录方式STAT:status 进程状态R - 可运行D - 磁盘正忙,在等待磁盘S - 在睡眠T - 被跟踪或被停止Z - 僵尸进程SATART:开始时间TIME:消耗的时间COMMAND:对应该进程的程序ps aux | more (逐屏浏览)ps aux | grep evince查看二进制文件所处的位置:which evince杀死进程kill使用方法:kill -9 PID (9:代号SIGKILL)(例:kill -9 14258)查看进程的活动状态top ctrl +c 退出ping 127.0.0.1 回环地址ctrl+z 挂起进程到后台jobs 查看后台的进程,可以看到任务号码fg 任务号把后台进程放到前台运行bg 任务号把前台的进程放到后台运行ctrl+c 前台的进程就被退出释放ctrl+z 挂起,前台的进程放到后台,在睡眠状态在文件中查找字符串grepgrep "Linux" testfile 搜索Linux这个字符串grep –n "Linux" testfile 搜索并打印行号grep –n "Linux" testfile1 testfile2 从多个文件搜索grep ^h testfile 搜索以h字符开头的行grep h$ testfile 搜索以h结尾的行grep -r "Linux" /work 在目录中递归搜索grep -v "Linux" testfile 反转搜索,找出不匹配的行grep -i "LINUX" testfile 搜索时忽略大小写locate命令查找文件所在的位置,依靠每天更新的数据库文件来查找,速度很快;数据库文件是/var/lib/mlocate/mlocate.db如果找不到就使用updatedb更新一下数据库find命令根据特定条件在文件系统中查找文件所有的文件属性都可以作为find命令的搜索条件即时查找,比locate速度慢find 路径匹配方式参数find . -name "Linux.tar.gz"find . -name "Linux*"find /work -name "*.tar.gz" find . -empty 查找空文件或空目录find . -type d -empty 查找空目录find . -type f 查找常规文件find /home -user winter 查找winter创建的文件find /etc -name "passwd*" -exec grep "cnscn" {} \; 查找前缀为passwd的文件,若找到在文件中搜索cnscn字符串11.02Linux下的链接文件硬链接ln 源文件硬链接文件软连接ln -s 源文件软连接文件Root用户cd /tmp touch myfileln myfile myfile_hlink使用长列表格式查看一下(ls -l)myfile和myfile_hlink有何不同Ln -s myfile myfile_slink 创建软连接使用长列表格式查看一下(ls -l)myfile和myfile_slink有何不同文件结构:Dentry 入口inode 节点data 数据Dentry--->inode---------------------------------------------->datamyfile 权限-rwxrrw-r-- 时间大小所有者.......文件内容Vim myfile 添加一行aaaaaaaaaRm -f myfileVim myfile_hlinkVim myfile_slink标准输入输出和重定向标准输入:STDIN,指键盘,文件描述是0 系统从文件读取信息(输入重定向)标准输出:STDOUT ,指屏幕,文件描述是1 输出不送给屏幕,给定文件(输出)标准错误:STDERR,指运行命令时出现的错误信息文件描述是2Shell编程Shell 壳操作系统的外壳命令的解释器,负责操作系统与用户的交互可以用来启动、停止和编写程序为什么要学习shell编程?因为很多linux功能在shell下执行要比在图形模式下完成的更快Shell还是一种高级程序设计语言,包含:变量、关键字、各种控制语句,比如分支、循环..............主要的shell类型:csh: C shelltcsh:csh的扩展,比csh要新sh:Bourne shellbash:Bourne Again shell,linux系统中默认的shellCsh -> tcshSh -> bashDrw-ew-ew- 目录-rw-rw-rw- 常规文件Lrw-rw-rw- 链接文件Brw-rw-rw- 块设备文件Crw-rw-rw- 字符设备文件/bin/sh -> /bin/bash/bin/tcsh/bin/csh -> /bin/tcsh创建第一个bash脚本Shell脚本的创建:编辑器编写bash脚本执行方法,两种1)./脚本名字-需要提前修改x权限2)Bash脚本名字-不需要提前修改x权限#!/bin/bash 以bash shell的语法来执行该脚本Shell注释首列写# 一行注释Shell变量在bash shell中,变量不是必须被显示的声明。