用户
Linux下两种类型用户:超级用户和普通用户
超级用户: root用户;终端表示:#; 1个; 不要在root用户下工作; home目录: /root
普通用户: 可有多个,用户名可指定;终端列示:$;工作要在普通用户下; home目录:/home/用户名可指定;终端列示:$;工作要在普通用户;home目录:/home/用户名
超级用户/普通用户 修改密码: passwd
~ 代表 当前用户的home目录
相关命令:
创建普通用户(超级用户下):useradd -m user1 为 user1 这个普通用户创建密码: passwd user1 由超级用户切换到 user1 这个普通用户: su - user1 删除user1: userdel user1 # 1. 超级用户删除普通用户 rm -rf /home/user1 # 2. 删除user1的文件目录 如果user1正在登陆,需要先把user1退出再删除: 1. ctrl D # 退出 2. exit # 退出user1
PATH环境变量:
示例要求:输入 my_date 就显示当前的时间
linux 自带的 date 就能实现该功能,所以就用自带的 date # 1. 创建自己的文件夹: mkdir work # 2. 查找 date 在哪个文件夹下: whereis date # 3. 把 date 复制到 work 下: cp /bin/date ./work/my_date # .表示当前目录 # way1: # 4. 调用my_date:(路径+命令;路径可以是绝对路径也可以是相对路径) /home/user/work/my_date # way2: # 4. 查看环境变量的值: echo $PATH # 5. 把 my_date 所在的目录添加到环境变量: export PATH=$PATH:/home/user/work # 通过这种方式,就可以直接调用 my_date 来实现 date的功能;但是,export 的导入只是临时性的,换个终端或者重启系统就不能再调用 my_date;想永久保留该命令,可以把命令写入到配置文件 /etc/profile 中
文件属性和权限操作
文件属性:
文件属性: cp /bin/date my_date ls -l my_date # 查看文件属性;结果如下: # -rwxr-xr-x. 1 user user 59392 10月 3 17:30 my_date # 第一个user表示 owner,第二个表示 group # -rwxr-xr-x. 表示权限:(开头的 - 表示文件;目录开头用 d 表示) # r :读;w :写;x :执行 # 权限分成了3组:第一组 表示 Owner的(rwx);第二组 Group的(r-x);第三组 Others(r-x) # 每组权限的顺序都是rwx,没有的权限用 - 表示,如果用 0和1表示某个权限有没有,则上述权限可写成:755;(八进制) # 如果想把这三个组的 x 权限都去掉,可以用: chmod 644 ./my_date # 如果文件开头是 . 则表示该文件为隐藏文件,此时用 ls -l 是显示不出来的,要用 ls-la 才能显示出 .开头的文件 # 查看某个命令(如:ls)的详细用法: man ls
文件操作:
操作:创建,查看,写入,复制,删除,重命名
# 创建:touch touch helloworld # 创建名为 helloworld 的文件 vi helloworld # 编辑 helloworld 文件;vim中 i 表示 插入, Esc + :wq 表示 保存并退出;:q! 表示不保存 ls -l helloworld # 查看 helloworld 的文件属性 # 查看:cat cat helloworld # 查看 helloworld 的文件内容;cat 用于显示文本文件的内容,如果要查看二进制文件的内容,可通过: vi helloworld --> :%!xxd ,就会显示文件内容的二进制格式 # 复制:cp cp helloworld helloworld_bk # 复制文件:由 helloworld 复制到 helloworld_bk # 删除:rm rm helloworld_bk # linux 下的删除不像windows,能通过回收站找回;linux删除后很难找回 # 重命名:mv mv helloworld helloworld_rename # 把 helloworld 重命名为 helloworld_rename
文件内容:
文件内容 <===> 文件类型 (文件内容决定了文件类型;文件的类型只与文件的内容有关,与后缀名无关) # 查看文件类型: file file helloworld_rename # 查看 helloworld_rename 的文件类型 # 结果如下: # helloworld_rename: UTF-8 Unicode text # UTF-8 Unicode 格式的文本
目录操作:
目录:英文--> directory, windows下称为 文件夹;作用:容纳子目录和文件
linux系统中,目录也是一个特殊的文件,也有自己的属性 mkdir my_dir touch my_dir/a ls -l # 其中关于 my_dir 的显示为: # drwxrwxr-x. 2 user user 4096 10月 3 20:54 my_dir # 权限以 d开头表示目录;4096 表示目录自身的大小; # 补充: 返回前一次的路径: cd - 当前工作路径: pwd # 以 . 开头的目录也是隐藏目录,如: mv my_dir/ .my_dir # 重命名 # 此时不能用 "ls -l" 查看,而应该用 "ls -la"
目录权限:
以上面的 my_dir 目录为例: # drwxrwxr-x. 2 user user 4096 10月 3 20:54 my_dir # 以 d开头表示目录 rwxrwxr-x 也是分为三组:Owner,Group 和 Other; r 表示 可读,即可使用 ls 来查看;w 表示可写,即能在该目录下使用 touch 去创建文件 x, 与文件的x代表 “执行” 不同,目录的 x 表示 “可进入”,即能 cd 进去 # 对于目录的权限而言, x 是最基本的属性,如果没有 x 权限,其它所有的操作都无法成功 # 删除目录:rm -rf my_dir/ # -r表示采用了递归、循环的删除(目录下面有可能还包含子目录...)# -f表示强制删除 # 某一个目录下所有文件和文件夹的大小: du -sh 目录名
Winrar-Tar命令
压缩、打包:tar
打包:多个文件 合并 为一个文件
# 打包 # pwd: /home/user/work mkdir 1 cp /bin/date 1/date_01 cp /bin/date 1/date_02 cp /bin/date my_date # 把上面的子目录1和二进制程序my_date 打包成一个文件: tar cf my_tar.tar 1 my_date # tar:打包命令; c:create,f:file;tar包名.tar;所要打包的对象 # 查看tar包里面的内容: tar tvf my_tar.tar # t:列出 tar包中具体文件的内容以及目录的内容;v:列出冗余的详细信息;f:要操作的文件对象 # 压缩:tar cjf # 把上面的子目录1和二进制程序my_date 压缩: tar cjf my_compress.tar.bz2 1 my_date # j:表示用 bz2这种方法来压缩文件 # 注:打包并不会改变文件的大小,压缩可以使包变小 # 解包、解压:tar xf mkdir my_tar tar xf my_tar.tar -C my_tar # x:extract,解压; -C 表示解压到的目录 mkdir my_compress tar xf my_compress.tar.bz2 -C my_compress # 解压到 my_compress 目录下 # 查看两个目录下的内容是否一样: diff -r my_compress my_dir # -r 表示 递归循环子目录
搜索(文件查找):Find命令
基本用法:
# 查找 /usr 下的 time.c 文件: find /usr -name "time.c" # /usr:要查找的目录 ; -name:参数;"time.c":要查找的文件名 # 假如不知道文件的具体名字: 可利用 * 通配符 find /usr -name "*ime.c" # * 表示长度不限的通配符; ? 表示1 个通配符 mkdir 1 touch 1/1.c touch 1/1 find . -name "1" # 查询结果有两个: ./1 (目录) 和 ./1/1(文件) # 如果想查找文件 “1”,如下: find . -type f -name "1" # -type f:表示要查找的是常规的文件 # 如果想查找目录 “1”,如下: find . -type d -name "1" # -type d:表示要查找的是目录
高级应用:
find /usr/src -name "*.c" -exec wc -l {} ; # 上面的命令分为两部分:find /usr/src -name "*.c" 和 -exec wc -l {} ; # -exec wc -l {} ; 部分: -exec 后面连接的是一个 linux command ,该命令对第一部分find找到的结果进行处理,并且这个命令是以“;”结尾,但在linux中“;”是一个特殊的运算符,用以分隔两个不同的命令,所以直接打“;”系统会认为该分号是一个运算符,所以在分号前面加了一个“”用于转义(让“;”变成一个普通的符号,这样的“;”在系统中表示命令的结束); # wc -l 是一个命令,可以用来统计一个文件中的行数; # {} 代表 find 一次(每次)匹配的结果 # 把 /usr/src 下所有的 .c 文件 复制到 当前目录下的 src 文件中: find /usr/src -name "*.c" -exec cp {} src/ ; # {} 表示find每次匹配到的结果; ;代表命令的结束 # 统计 /usr/src 中所有 .c文件的个数: find /usr/src -name "*.c" >> count # >> 表示 追加方式的重定向,即 找到 /usr/src下的所有.c文件重定向到 count 文件中(如果不加 >> ,那么find 的查找结果是要输出到标准输出,即屏幕) wc -l count # 统计count文件中的行数,即可得到 .c文件的个数 # s可使用 “;” 把上面的两个命令结合到一起: find /usr/src -name "*.c" >> count ; wc -l count ; rm count # 最后要把 count rm 掉 # 上面的 count 文件只是承担了 find 和 wc 之间的桥梁作用,在linux 中其实不需要这样的一个中间文件,可使用 管道(|)让find的输出作为 wc 的输入 # 所以上面的命令可优化为: find /usr/src -name "*.c" | wc -l # 在linux中,可使用 | (管道)让一个命令的输出作为另一个命令的输入,并且在命令的组合中可使用多个管道,连接多个命令
文本编辑工具:Vim
基本应用:
Vim的三种状态:命令行状态、插入状态和末行状态,如: # vi helloworld 进入 命令行状态,此时不能编辑,输入 “i” 进入 插入状态就可以编辑了;编辑完后按“Esc” 可退出插入状态、进入命令行,此时输入“:”可进入末行状态,末行中可输入“wq”保存,也可输入“q!”不保存
高级应用:
# 1.显示行数:(末行状态下完成) vi helloworld.py # : 进入末行,输入 “set number” 后按 回车键, 就能显示行数;如果文件没有做修改,进入末行后输入“q” 直接退出 # 2. 跳转:(命令状态下完成) # 让光标跳转到某一行 # 跳转到第一行: 1 + G # 跳转到最后一行: GG # 跳转到第n行: n + G # 在一行中,跳转到行的结尾: $ # 在一行中,跳转到行的开头: ^ (Shift + 6) # 3. 删除:(命令状态下完成) # 删除一整行: dd # 删除选中内容: v d # 先输入 v 进入 “可视”,按 方向键 来选择区域,最后按“d”删除 # 删除文件中所有内容: 1 G d G # 先到文件的首行,再输入 “dG” 删除所有 # 撤消操作: u # 复制/粘贴:(命令状态下) # 复制一整行: yy # 复制选中: v y # 粘贴: p # 剪切:(命令下) v x p # 搜索:(命令下) /要搜索的内容 + Enter键 # 下一个: n # 缩进:(命令) 先把光标移到某一行,输入一个数字n,再输入 “==”,那么从这一行开始,下面的n行都会缩进 # 自动补全:(插入下) Ctrl P