1:把文件f1.txt复制为f2.txt :cat f1.txt > f2.txt
2:切换的用户john的主目录下:在root用户下切换:cd ~john
3:useradd:useradd的家目录:通过 sudo useradd jack在/etc/passwd中是存在家目录的
jack:x:1001:1001::/home/jack
但是在home目录下并没有新建一个文件夹这时候要想创建用户的家目录就必须指定-m参数
例如:sudo userdel -r jack
sudo useradd -m jack
那么在home目录下就会生成一个jack文件夹
常见用例:
case 1:创建一个带有家目录并且可以登录bash的用户
$sudo useradd -m -s /bin/bash test1
case2:指定创建用户家目录的路径
$sudo useradd -m -d /home/xxx test2
/home/xxx目录会被创建
case 3:创建一个没有家目录且不能登录的用户
$sudo useradd -s /sbin/nologin test3
case4:创建时把用户加入不同的用户组
$sudo useradd -m -G xxx,sudo test4
4:pgrep 查看当前进程
5:查看各个分区的inode的使用情况
df -i
6:在系统文档中找到关于print这个单词的所有说明
apropos print
7:显示passwd文件的结构:man 5 passwd
8:查找在文件中以“*”打头的行 grep '^\*' file
9:ps -a 显示所用的用户进程
10:显示二进制文件的命令 od file
11:显示linux系统中注册的用户数包含系统用户:wc --lines /etc/passwd
12:kill 9 :系统会发送一个SIGTERM的信号给对应的程序,当程序接收到signal后将会发生以下的事情
1:程序立刻停止
2:当程序释放相应的资源后在停止
3:程序可能仍然继续运行
大部分程序接收到SIGTERM信号后,会先释放自己的资源然后再停止
但是kill -9 pid是必杀令
13:对所用用户的变量设置,应当放在/etc/profile文件夹中去
14:使用原先的ls命令 \ls
15:如果cmd1成功执行则执行cmd2的命令 cmd1 && cmd2
16:定义网卡的IO地址 cat /proc/ioports
17:安装软件时make install需要用到root权限
18:只更新已经安装过的rpm安装包 rpm -F *.rpm
19:变量的键盘读取,数组与声明
a:键盘读取命令read
-p:后面接上提示文字
-t:命令等待的时间时间过期不设置该值 单位为 : s
eg:read -p "please input your name:" -t 30 name
b:声明变量的类型:declare or typeset
-a:将后面的变量设置为数组类型
-i:将后面的变量设置为整数数字(integer)类型
-x:与export作用一样,将变量设置为环境变量
-r:将变量设置为只读类型
eg:declare -i sum=10+3
echo $sum显示的是13,如果单纯的sum=10+3,默认是当做字符串处理,加上declare -i设置为整数类型
c:数组变量类型:array
设置:var[index]=content
eg: [root@ll ~]# var[1]="adfa"
[root@ll ~]# var[2]="assdsd"
[root@ll ~]# echo "${var[1]} , ${var[2]}" 会显示数组的内容
[root@ll ~]# read -p "please input your arrray3:" var[3]
20:限制用户的系统资源:
ulimited 不限制用户可以使用的资源,但本设置对可打开的最大文件数(max open files)
和可同时运行的最大进程数(max user processes)无效
-a 列出所有当前资源极限
-c 设置core文件的最大值.单位:blocks
-d 设置一个进程的数据段的最大值.单位:kbytes
-f Shell 创建文件的文件大小的最大值,单位:blocks
-h 指定设置某个给定资源的硬极限。如果用户拥有 root 用户权限,可以增大硬极限。任何用户均可减少硬极限
-l 可以锁住的物理内存的最大值
-m 可以使用的常驻内存的最大值,单位:kbytes
-n 每个进程可以同时打开的最大文件数
-p 设置管道的最大值,单位为block,1block=512bytes
-s 指定堆栈的最大值:单位:kbytes
-S 指定为给定的资源设置软极限。软极限可增大到硬极限的值。如果 -H 和 -S 标志均未指定,极限适用于以上二者
-t 指定每个进程所使用的秒数,单位:seconds
-u 可以运行的最大并发进程数
-v Shell可使用的最大的虚拟内存,单位:kbytes
21:变量内容的删除,替代与替换
例如:file=/dir1/dir2/dir3/my.file.txt
可以用${}分别替换得到不同的值
${file#*/}:删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt
${file##*/}:删掉最后一个 / 及其左边的字符串:my.file.txt
${file#*.}:删掉第一个 . 及其左边的字符串:file.txt
${file##*.}:删掉最后一个 . 及其左边的字符串:txt
${file%/*}:删掉最后一个 / 及其右边的字符串:/dir1/dir2/dir3
${file%%/*}:删掉第一个 / 及其右边的字符串:(空值)
${file%.*}:删掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file
${file%%.*}:删掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my
22:bash的环境配置文件:
我们的操作系统什么都没有进行,但是已进入bash就取得了一堆有用的变量是应为系统有一些环境变量的存在,让bash在启动的时候直接读取这些配置文件,以便于bash环境的建立
a: /etc/profile:系统整体的设置,最好不要修改这个文件
b: ~/.bash_profile or ~/.bash_login or ~/.profile:属于个人用户设置,你要改变自己的数据,就写入这里
那么/etc/profile是干嘛的(login shell才会读)
所有用户登录bash一定会读取的配置文件,如果你想要帮助所有用户设置整体环境变量,那就在这里设置修改不过没事还是别改这里的文件
~/.bash_profile:bash在读完了整体环境设置只会读取下面三个中的一个
1:~/.bash_profile 2:~/.bash_login 3:~/.profile
读取的顺序是按照上面的顺序,如果~/.bash.profile不存在才会读取~/.bash_login,而前两者都不存在才会读取~/.profile的意思
23:grep 命令:管道命令
一:查找特定字符串
grep -n 'the' test.txt
反向选择,没有the的段落
grep -vn 'the' test.txt
不论大小写的段落
grep -in 'the' test.txt
二:利用中括号[]来查找集合字符
grep -n 't[ae]st' test.txt
^符号在中括号里面代表非[^a-z]不是小写字母
^符号在中括号外面代表开头^[a-z]以小写字母开头
查找空白行 '^$'
.代表任意一个字符包括数字,字母和既不是数字也不是字母的特殊字符
*代表重复前面零个或者多次的意思
.*表示中间任意字符: grep -n 'g.*g' test.txt
三:限定连续RE字符范围{}
grep -n 'o\{2\}' test.txt 查找文档中o出现两次的行的信息
grep -n 'o\{2,5\}' test.txt 查找文档中o 出现2~5次行的信息
grep -n 'o\{2,\}' test.txt 查找文档中o出现2次以上的行的信息
24:sed 命令:可以将数据进行替换,删除,新增,选取特定行等的功能
一:删除功能:sed 'x,yd' d是表示删除的意思,x是起始行,y是终止行,意思是从第x行开始删除直到删除到y行结束
eg: nl test.sh | sed '2,5d' 意思是删除test.sh 中第二行到第五行的内容, nl test.sh 为 sed命令提供输入 sed '2,5d'将输出输出到屏幕上,当然这里可以使用正则表达式 例如 sed '2,$d'但是sed '^,3d'不行哦
二:新增功能:sed 'na asdfd' test.txt 向 test.txt文件中追加内容 asdfd n 代表是行号 或者是 nl test.txt | sed 'n,ma adsd' 表示想n行和m行追加内容adsd
三:以行为单位的替换和显示功能:
a 替换功能:nl test.txt | sed '2,5c No -sdfsad' 将test.txt的第二行和第五行的内容替换成No-sdfsad
b 显示功能: sed -n '5,7p' test.txt 显示test.txt文档中第五行到第七行的内容,或者是nl test.txt | sed -n '5,7p'
四:部分数据的查找和替换的功能:基本上和vim编辑器中的查找和替换类似
sed 's/要被替换的字符串/新的字符串/g'
eg: 1:ifconfig ens33 > net.txt 得到包含ens33相关的信息重定向到net.txt文件
2:nl net.txt | grep 'inet ' 在net.txt文件中查找inet关键字的行
3:nl net.txt | grep 'inet' | sed 's/^.*inet//g '将inet打头的内容替换成空格则前面的ip就不见了
4:接下来处理ip地址以后的内容:nl net.txt | grep 'inet | sed 's/^.*inet//g' | sed 's/netmask.*$//g'