Linux 中 su user, sudo su - user, su , su - 等的区别

su user 和 sudo su user的区别 su user 需要提供user的密码 sudo su user 需要提供当前用户的密码 例如: 当前用户是guest su root 需要输入root用户的密码 sudo su root 需要输入guest的密码 su - user 和 su user的区别 带- 会切换当前的shell环境(环境变量会切换到对应的user上, 相当于执行 user目录下的 .bash 等文件) 例如: su,su -: 前者只是切换了root身份,但Shell环境仍然是普通用户的Shell;而后者连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误。su切换成root用户以后,pwd一下,发现工作目录仍然是普通用户的工作目录;而用su -命令切换以后,工作目录变成root的工作目录了 su - username 和 sudo su - username su - username - Asks the system to start a new login session for the specified user. The system will require the password for the user “username” (even if its the same as the current user)....

April 1, 2019 · 3 min · BlackChen

Linux/Unix 哲学

小即是美 Linux 的哲学之一,软件开发应该力求简单,小的程序易于理解,易于组合使用。多个小程序的组合可以解决很多问题。这里的小,是指简单,模块化,精简化。在那个硬件比较昂贵的年代,力求程序精简,使用很少的系统资源 ,而现在,在硬件相对成熟,小即是美,有另外一种解释—–“小”代表“精炼”,代表“完美”,因为小的事物,容易被掌控。细节方面更容易做的更好。 做好一件事—1 Thing 程序是人生的体现,不可能有一个程序是完美的,是照顾到方方面面的,他只能做好有限的事情,做好一件事,一个完美的程序就是他的一生只做好一件事,人生也是如此。 允许他人使用你的代码来发挥杠杆效应 站在楼顶总是要比站在楼下的人离天空更近一些,站在巨人的肩膀上总是要比别人更容易成功一些。让别人使用你的代码,让自己的代码发挥更大的力量。借用别人的代码,不做无用功,不重复造轮子,只有轮子的汽车是跑不起来的! 寻求90%的解决方案 或许存在100%的解决方案,但是是消耗了你大量的精力,并且最终达到的效果并不美好(效率底下等等。。),在合适的情况下,只需要解决90%的问题,便是一个好的方案。并且舍弃的10%,有时候并不是像你想象中的那么重要。 使用shell脚本 shell非常强大,可以带来无与伦比的杠杆效应,让多个程序来帮助自己实现目标,解决问题。shell是每一个Linux工程师的好帮手。 使用文本 文本可以传达更多更详细的信息,文本更利于阅读和编辑,一个好的文本编辑器可以大大提升效率。并且文本具有很强的移植性。 适合的就是最好的 每个人有每个人自己的特点,有自己的想法,别人的想法和经历只能借鉴,而你并不能成为其他人,你就是你,所以在遇到问题的时候,选择适合自己的方法去处理问题,linux也好,windows也罢,人是活的,东西是死的,只有人使用工具,没有被工具束缚的人。

February 23, 2019 · 1 min · BlackChen

rm -rf 需永远警惕

rm -rf 需永远警惕 今日在测试环境修改代码,测试的时候,删除旧的日志文件(方便查看当前最新生成的日志),由于多个终端的切换,导致没有关注文件目录,直接在src目录下执行rm -rf *!!!,真是一个悲惨的教训,上周的代码没有备份,也没有提交版本库…….. 警惕 : 要时刻保持警惕,在执行一些无法逆转,容易产生不可预估的后果的命令时,一定要再三确认. 要随时保持备份,保持第二方案,做好最坏的打算. 解决方案: 在总结一番后,决定写一个类似回收站一样的脚本来防止类似事情的发生. 编写shell 脚本,使用mv命令代替rm命令。 添加以下代码到~/.bashrc中 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 alias rm='trash' alias rl='trash_ls' alias rr='trash_rm' alias rg='trash_log' alias realrm='/bin/rm' #-------回收站 TrashHome="${HOME}/....

February 27, 2017 · 3 min · BlackChen

Shell 通过 grep 获取json文件中的值

json文件内容: 1 2 $ cat config.json {"robotCode":"HX-00046","robotName":"hx-robot-00046","mallId":200,"mallName":"xxx","buildingId":0,"floorId":7,"mapName":"200_0_7"} 需要获取robotCode的值: 1 2 $ cat config.json | grep -oP '(?<="robotCode":")[^"]*' HX-00046 匹配robotCode":"开头的, 多个[^"](非引号)字符. grep: 1 2 3 4 5 -o --only-matching Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line. -P, --perl-regexp Interpret PATTERN as a Perl regular expression. This is highly experimental and grep -P may warn of unimplemented features.

1 min · BlackChen