【Linux基础】基础shell命令
2017-03-13 18:25
337 查看
1:apt
APT(Advanced Packaging Tool)是Ubuntu Linux中功能最强大的命令行软件包管理工具,用于获取、安装、编译、卸载和查询Deb软件包,以及检查软件包依赖关系 三个重要的文件: 1: 软件源配置文件 /etc/apt/sources.list : 列出最合适访问的镜像站点地址 2: 索引文件/var/lib/apt/lists/ :列出了每一个服务器上软件的名称 sudo apt-get update :刷新索引列表。 3: 下载的软件包存放地址: /var/cache/apt/archives/ 重点: --: APT并不是某个具体的命令,应该说是一组命令 --: apt-get:用于管理软件包,包括安装、卸载、升级等操作 apt-get subcommands [ -d | -f | -m | -q | --purge | --reinstall | - b | - s | - y | - u | - h | -v ] pkg --:安装命令: sudo apt-get install 软件名 sudo apt-get install sl: 下载软件sl --:更新软件包列表索引文件/var/lib/apt/lists/ sudo apt-get update --:将系统中所有软件包升级到最新的版本 sudo apt-get update sudo apt-get upgrade 安装软件的四个步骤: 使用“apt-get install”下载软件包大体分为四步: STEP1,扫描本地存放的软件包更新列表(/var/lib/apt/lists)(由apt-get update命令刷新更新列表),找到最新版本的软件包; STEP2,进行软件包依赖关系检查,找到支持该软件正常运行的所有软件包; STEP3,从软件源所指的镜像站点中,下载相关软件包; STEP4 ,解压软件包,并自动完成应用程序的安装和配置。 重点: 问题1: 加入下载软件xxx。但是下载不成功怎么办 1:检查是否可以上网,(必须要能上网) 2:先要确定服务器域名地址是否在软件源配置文件中(/etc/apt/sources.list),如果没有要添加。 3:刷新软件源索引文件(sudo apt-get update) --重新安装软件包 apt-get --reinstall install 软件名 --:卸载软件包 apt-get remove 软件名: 卸载软件并同时卸载它所依赖的软件。 --:apt-cache:用于查询软件包信息 apt-cache subcommands [ -p | -s | - q | - i | - c | -h ] pkg 查询软件包的详细信息 apt-cache show 软件名。 获取软件包安装状态 apt-cache policy 软件名 查询指定软件依赖关系 apt-cache depedns 软件名(xx): 列出与软件xx相关联的软件 查询指定软件被那些软件所依赖: apt-cache rdepends 软件(xx) : 列出依赖软件xx的软件。
2:shell的基本命令
2-1:命令提示符: linux@ubuntu:~/my/teach/linuxC/17022/linuxc2$ linux:用户名,(whoami) Ubuntu:主机名 (hostname) ~/my/teach/linuxC/17022/linuxc2:目录名显示当前的工作路径(pwd)(print work directory) --两个特殊的表示目录的符号 “/": 代表根目录, “~”: 代表家目录, --:家目录:用户登录到系统时的初始目录。 2-2:命令格式 $ Command [-Options] Argument1 Argument2 … 指令 选项 参数1 参数2… 选项: 以“-”开头,命令执行什么操作。 参数: 对谁操作, 注意: 选项和参数可以没有。 两个特殊的提示符: “$": 代表用户是普通用户 “#”:代表用户是superuser 三个注意点: 1: 一条命令的三要素之间用空格隔开; 2: 若将多个命令在一行书写,用分号(;)将各命令隔开; 3:如果一条命令不能在一行写完,在行尾使用反斜杠(\)标明该条命令未结束 2-3:命令行的编辑 ctrl-u: 取消光标前的指令, home:跳到指令开头 end:跳到指令结尾。 上下箭头: 列出以前的命令 命令行补全: tab自动补全
3:history:列出历史命令
history: 默认列出n条历史命令,n由环境变量HISTSIZE决定。 更改默认值: 修改HISTSIZE变量的值。 如何更改: 1:暂时更改(只在当前shell中有效) HISTSIZE=newnumber 2: 永久更改(修改~/.bashrc) cd :进入家目录 vi .bashrc:打开文件 HISTSIZE=10 :将默认值改为10 保存退出:wq(:x) 执行更改过的文件使其生效 source ./bashrc (或者重新打开一个窗口) 补充: echo: 向终端输出指定内容。 history number: 列出number条历史命令 -c:清除内存中保存的历史信息。 history -c : -w:将历史信息保存到硬盘上(~/.bash_history)
4:shell中的特殊字符
touch filename: 新建一个文件filename。 4-1:通配符: *: 匹配任意长度的字符串(o~n) 例如: linux@ubuntu:~/my/teach/linuxC/17022/linuxc2$ ls * file0 file10 file12 file2 file5 file7 file9 file1 file11 file13 file3 file6 file8 touch.sh ?: 匹配一个长度的字符(1) 例如: linux@ubuntu:~/my/teach/linuxC/17022/linuxc2$ ls file? file0 file1 file2 file3 file5 file6 file7 file8 file9 linux@ubuntu:~/my/teach/linuxC/17022/linuxc2$ ls file?? file10 file11 file12 file13 []:匹配其中指定的一个字符 [12345]:从1,2,3,4,5中匹配。 linux@ubuntu:~/my/teach/linuxC/17022/linuxc2$ ls file[13] file1 file3 [1-6]:从1,2,3,4,5,6,中匹配 linux@ubuntu:~/my/teach/linuxC/17022/linuxc2$ ls file[1-4] file1 file2 file3 [^123]:从除了123以外的所有字符中匹配(除了其中指定的字符,均可匹配) linux@ubuntu:~/my/teach/linuxC/17022/linuxc2$ ls file[1-2][0-9] file10 file11 file12 file13 file21 4-2:管道“|”: 可以将前一个命令的输出,作为后一个命令的输入。这样将多个命令连接起来实现一些功能。 ls: 列出当前目录下的文件 wc:统计指定文件的内容(行数,单词个数,字符个数) -l(小写L):统计出指定文件中的行数 -w(word):统计出指定文件中的单词数 -c():统计出指定文件中的字符数 如果想统计当前目录下有几个文件? ls | wc -w : shell将ls的结果保存到内存中的一个文件在(buffer)中,然后wc 对buffer文件统计 4-3:输入、输出重定向 默认的输入:键盘 默认的输出:屏幕终端窗口。 可以通过输入,输出重定向符改变默认的输入输出方向。 --:输出重定向符: > filename : 将正确的输出结果保存在filename文件中, 新建模式(如果filename文件不存在则创建,如果存在则清空原来的内容。) >> filename: 将正确的输出结果保存在filename文件中, 追加模式 ( 如果filename文件不存在则创建,如果存在则将新的内容添加到原来的内容之后。) 2> filename:将命令产生的错误信息保存在filename文件中, 新建模式(如果filename文件不存在则创建,如果存在则清空原来的内容。) 2>> filename:将命令产生的错误信息保存在filename文件中, 追加模式 如果filename文件不存在则创建,如果存在则将新的内容添加到原来的内容之后。) 将正确的输出结果和错误信息保存在文件中: &> &>> --:输入重定向 < filename: 从文件filename中获取内容。 4-4: cat: 在标准输出上显示文件 cat file1: 将file1的内容打印到终端 思考:如何将file1和fil2的内容追加到file3文件中? cat file[12]>> file3 如何将file1的内容追加到file2中? cat file1 >> file2 4-5:命令置换(``)(esc键下面):取出命令的执行结果。 ``==$() echo "user name is `whoami`" echo "hostname is $(hostname)"
5:linux基本命令
5-1: man:进入命令的说明/操作手册 man - an interface to the on-line reference manuals man commandname 5-2:passwd:修改密码 --:普通用户只能修改自己的密码 --:超级用户可以修改所有用户的密码 passwd username :修改username的密码。 5-3: su :切换用户 su: 切换到root用户 su - username: 完完全全切换到username用户。 su -m username: 切换到username后保留原来用户的环境信息, exit 退出(Ctrl+d) 例如: HOME: 此环境变量存放当前用户的家目录路径 5-4: echo: 用于在标准输出(终端)上显示一段文字,一般起到提示作用 --: echo string: 向终端打印string。 echo "heoo kkkk": 代表heoo kkkk是一个带空格字符串,heoo kkkk是同一参数 echo heoo kkkk: 代表两个字符串heoo kkkk。代表echo有两个参数heoo 和 kkkk。 --: echo 默认换行 -n:不换行 5-5: date:显示和设置系统日期和时间 -d, --date=STRING display time described by STRING, not `now' 根据string来显示时间。 linux@ubuntu:~/my/teach/linuxC/17022/linuxc2$ date -d "tomorrow" Fri Mar 10 14:09:13 CST 2017 linux@ubuntu:~/my/teach/linuxC/17022/linuxc2$ date -d "next year" Fri Mar 9 14:09:26 CST 2018 -u: 显示utc时区时间 +format: format: %Y: 年 %m: 月 %d: 天 linux@ubuntu:~/my/teach/linuxC/17022/linuxc2$ date +%Y:%m:%d 2017:03:09 linux@ubuntu:~/my/teach/linuxC/17022/linuxc2$ echo "today is `date +%Y-%m-%d`" today is 2017-03-09 %H:小时 %M:分钟 %S:秒 linux@ubuntu:~/my/teach/linuxC/17022/linuxc2$ date +"%Y-%m-%d %H:%M:%S" 2017-03-09 14:16:40 设置时间: -s, --set=STRING set time described by STRING date -s “1999/7/1 14:30:00” 修改时区:修改/etc/localtime cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 5-6: 清屏clear(ctrl+l) 5-7: df - report file system disk space usage:查看磁盘空间的使用情况 -T:显示文件格式 -h:大小以G、M,K单位显示(以人性化方式显示) 5-8:du:列出目录和文件所使用的磁盘块数
6:用户管理
adduser:添加用户 例如添加 delep1,delep2 sudo adduser delep1 添加用户的过程: Adding user `delep1' ... step1: Adding new group `delep1' (1003) ...:创建一个组(gid为1003)用于存放新创建的用户, step2: Adding new user `delep1' (1003) with group `delep1' ...:创建一个新的用户,用户id(1003) step3: Creating home directory `/home/delep1' ... : 在目录/home下创建用户的家目录/home/delep1. step4: Copying files from `/etc/skel' ... : 将/etc/skel目录下的文件copy到用户的家目录下(/home/delep1) step5: 输入密码: Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully step6:登记 用户的一些信息 Changing the user information for delep1 Enter the new value, or press ENTER for the default Full Name []: xiaowang Room Number []: 1001 Work Phone []: 110 Home Phone []: 1 Other []: 1 Is the information correct? [Y/n] y 几个重要的文件 1: /etc/passwd: 存放用户的属性信息,当用户登录的时候os去读取此文件。 linux:x:1000:1000:linux,,,:/home/linux:/bin/bash 每个属性之间用“:”隔开。 linux: 登陆名 x: 经过加密的口令 时间密码在/etc/shadow文件中 1000: UID 1000: 默认的GID linux,,,: 个人信息 /home/linux: 主目录 /bin/bash : 登陆shell 2: /etc/group : 包含了UNIX组的名称和每个组中成员列表 每一行代表一个组,包括4个字段: 组名 加密的口令 GID号 成员列表,彼此用逗号隔开 我们新创建的用户不能使用sudo ,如何改? vi /etc/group 在sudo一行添加用户名。 sudo:x:27:linux,autor1,delep1 重点命令: 1:添加用户命令 addusr usrname: --:修改用户属性:usermod 选项: usermod -g gid/groupname usrname: 将用户加入指定的组中, usermod -d /home/dd -m -l dd delep1: 将原来用户名为delep1的用户名字更改为dd,同时家目录也更改为/home/dd. --:删除用户:deluser 1:deluser username: 删除用户但是不删除用户的家目录。 deluser dd : 2: deluser --remove-home user1: 删除用户user1的同时删除用户的工作目录 如果说一个组里面只有一个用户,那么在删除这个用户的同时也会将这个组删除掉,前提是组名和用户名相同。 --添加组: addgroup addgroup newgroup --:往组中添加成员。 usermod -g gid usrname: --: delgroup:删除组 delgroup newgroup:当组中有用户时,不能删除组。
7:进程管理
进程的概念 程序的一次执行就是一个进程 : 进程包括pcb(进程控制块):包含进程的属性信息。 操作系统通过PID来区分进程。 重点: 1: ps:ps - report a snapshot of the current processes:显示进程信息。 ps axj: 来查看当前进程的详细信息 2: kill:向进程传递一个信号。 kill -l:查看信号列表, kill 信号编号 pid: 给进程号为pid的进程发送一个信号。 信号9:杀死一个进程, kill -9 pid: kill 进程号为pid的进程。 3: top:动态显示内存信息和进程信息。 8:文件系统: 8-1: linux下一切都是文件。 用于管理文件的方式或机制称为文件系统。 8-2: 文件系统的分类: 磁盘文件系统(本地文件系统): 本地主机中实际可以访问到的文件系统,有很多种包括:ext,fat等。 网络文件系统: 是可以远程访问的文件系统,存在于网络上的服务器中, (重点)虚拟文件系统: 存在于内存中,将内核信息映射到此文件中。 /proc:
8:其它
补充: /dev/null: 空文件,所有写入此文件的内容都会被丢弃,不占用磁盘空间。 --1: 2> /dev/null : 将错误信息丢弃。 --2: cp /dev/null 1.txt: 清空文件1.txt vi: u:撤销上一步操作 ctrl+r:反撤销。 作业:1:创建两个组delep and mang sudo addgroup delep sudo addgroup mang 2:创建3个用户d1,d2,d3并且将这三个用户添加到组delep中, (补充) id: 列出当前用户的uid和gid等信息 sudo adduser --gid 1001 d1:create a user d1 并且添加到组id为1001的组中。 sudo adduser --gid 1001 d2:create a user d2 并且添加到组id为1001的组中。 sudo adduser d3: 创建一个组d3和一个用户d3,并把用户d3放到组d3中, sudo usermod -g 1001 d3: 将用户d3放到gid为1001的组中。原来的组d3并没有被删除。 3:创建3个用户:m1,m2,m3并且将这三个用户添加到组mang中, (补充) id: 列出当前用户的uid和gid等信息 sudo adduser --gid 1002 m1:create a user m1 并且添加到组id为1002的组中。 sudo adduser --gid 1002 m2:create a user m2 并且添加到组id为1002的组中。 sudo adduser m3: 创建一个组m3和一个用户m3,并把用户m3放到组m3中, sudo usermod -g 1002 m3: 将用户m3放到gid为1002的组中。原来的组m3并没有被删除。
相关文章推荐
- Linux新手生存笔记[10]——shell脚本基础3-函数及常用命令
- Linux基础入门及系统管理01-shell三剑客之sed命令技巧讲解20
- Linux基础 -- shell命令
- Linux基础 -- shell命令
- Linux基础 -- shell命令
- 【Linux基础】Shell常用命令
- Linux基础 -- shell命令
- Linux基础 -- shell命令
- Linux基础 -- shell命令
- Linux基础 -- shell命令
- Linux学习之Shell--第二天:Shell基础命令
- Linux_Shell_基础命令
- Linux基础知识——shell命令类型及命令使用帮助
- Linux基础 -- shell命令
- Linux新手生存笔记[10]——shell脚本基础3-函数及常用命令
- Python下调用Linux的Shell命令 分类: ubuntu python基础学习 2014-01-15 17:12 15631人阅读 评论(1) 收藏
- Linux基础知识——常用shell命令介绍(二)
- Linux基础知识——常用shell命令介绍(三)
- Linux基础 -- shell命令
- Linux基础 -- shell命令