本文轉載自【微信公眾號:java進階架構師,ID:java_jiagoushi】經微信公眾號授權轉載,如需轉載與原文作者聯繫
前言
Linux shell命令應該算是非常入門的東西,權當給大家做個記錄。但是實際上在使用的時候,會遇到各種各樣的問題,前幾天我在我們的項目上需要做一個功能,根據進程名字殺死這個進程,下面是過程
1、我們正常需要的操作是
$ps |grep xxx $kill -9 xx
2、kill命令是常用的,但是用killall命令會更快
$killall -9 xxx
3、令我困擾的是我用的那個沒有killall然後我做了下面的操作
$adb shell ps |grep speech |awk '{print $2}' > 1.txt $cat 1.txt |xargs -n1 adb shell kill -9
我用這個的原因是用一條指令重定向總是各種問題,正常情況下用這條就可以了
$adb shell ps |grep speech |awk '{print $2}'|xargs -n1 kill -9
正文
關機/重啟
關機(必須用root用戶)shutdown -h now ## 立刻關機shutdown -h +10 ## 10分鐘以後關機shutdown -h 12:00:00 ##12點整的時候關機halt # 等於立刻關機重啟shutdown -r nowreboot # 等於立刻重啟
echo
root@ubuntu:~# a="hello,world"root@ubuntu:~# echo aaroot@ubuntu:~# echo &a[1] 3091a: command not found[1]+ Done echoroot@ubuntu:~# echo $ahello,worldroot@ubuntu:~#
vim文本編輯器
最基本用法vi somefile.41 首先會進入「一般模式」,此模式只接受各種快捷鍵,不能編輯文件內容2 按i鍵,就會從一般模式進入編輯模式,此模式下,敲入的都是文件內容3 編輯完成之後,按Esc鍵退出編輯模式,回到一般模式;4 再按:,進入「底行命令模式」,輸入wq命令,回車即可常用快捷鍵一些有用的快捷鍵(在一般模式下使用):a 在光標後一位開始插入A 在該行的最後插入I 在該行的最前面插入gg 直接跳到文件的首行G 直接跳到文件的末行dd 刪除一行3dd 刪除3行yy 複製一行3yy 複製3行p 粘貼u undov 進入字符選擇模式,選擇完成後,按y複製,按p粘貼ctrl+v 進入塊選擇模式,選擇完成後,按y複製,按p粘貼shift+v 進入行選擇模式,選擇完成後,按y複製,按p粘貼查找並替換1 顯示行號:set nu2 隱藏行號:set nonu3 查找關鍵字:/you ## 效果:查找文件中出現的you,並定位到第一個找到的地方,按n可以定位到下一個匹配位置(按N定位到上一個)4 替換操作:s/sad/bbb 查找光標所在行的第一個sad,替換為bbb:%s/sad/bbb 查找文件中所有sad,替換為bbb
拷貝/刪除/移動/更換文件名字
cp somefile.1 /home/hadoop/rm /home/hadoop/somefile.1rm -f /home/hadoop/somefile.1mv /home/hadoop/somefile.1 ../mv a.txt b.txt //把a.txt更名為b.txt
打包壓縮
1、gzip壓縮gzip a.txt2、解壓gunzip a.txt.gzgzip -d a.txt.gz3、bzip2壓縮bzip2 a4、解壓bunzip2 a.bz2bzip2 -d a.bz25、打包:將指定文件或文件夾tar -cvf bak.tar ./aaa將/etc/password追加文件到bak.tar中tar -rvf bak.tar /etc/password6、解壓tar -xvf bak.tar7、打包並壓縮tar -zcvf a.tar.gz aaa/8、解包並解壓縮(重要的事情說三遍!!!)tar -zxvf a.tar.gz解壓到/usr/下tar -zxvf a.tar.gz -C /usr9、查看壓縮包內容tar -ztvf a.tar.gzzip/unzip10、打包並壓縮成bz2tar -jcvf a.tar.bz211、解壓bz2tar -jxvf a.tar.bz2
常用查找命令的使用
1、查找可執行的命令所在的路徑:which ls2、查找可執行的命令和幫助的位置:whereis ls3、從某個文件夾開始查找文件find / -name "hadooop*"find / -name "hadooop*" -ls4、查找並刪除find / -name "hadooop*" -ok rm {} \;find / -name "hadooop*" -exec rm {} \;5、查找用戶為hadoop的文件find /usr -user hadoop -ls6、查找用戶為hadoop的文件夾find /home -user hadoop -type d -ls7、查找權限為777的文件find / -perm -777 -type d -ls8、在指定目錄不分大小寫查找某個文件find ./sound/ -iname ft56Q.c 9、顯示命令歷史history
grep命令
最常用的-全字匹配grep -wrn weiqifa ./sound/查找 某個字符串但是不在指定文件夾查找grep -E "http" ./ -R --exclude-dir=./sound/ grep -E "http" . -R --exclude-dir={.git,res,bin}排除擴展名為 java 和 js 的文件grep -E "http" . -R --exclude=*.{java,js}1 基本使用查詢包含hadoop的行grep hadoop /etc/passwordgrep aaa ./*.txt 2 cut截取以:分割保留第七段root@ubuntu:~/kernel_rk3399_yan4_dev/kernel# grep dsl /etc/passwd | cut -d: -f7/bin/bashroot@ubuntu:~/kernel_rk3399_yan4_dev/kernel# grep dsl /etc/passwd dsl:x:1000:1000:dsl,,,:/home/dsl:/bin/bashroot@ubuntu:~/kernel_rk3399_yan4_dev/kernel# 3 查詢不包含hadoop的行grep -v hadoop /etc/passwd4 正則表達包含hadoopgrep 'hadoop' /etc/passwd5 正則表達(點代表任意一個字符)grep 'h.*p' /etc/passwd6 正則表達以hadoop開頭grep '^hadoop' /etc/passwd7 正則表達以hadoop結尾grep 'hadoop$' /etc/passwd規則:. : 任意一個字符a* : 任意多個a(零個或多個a)a? : 零個或一個aa+ : 一個或多個a.* : 任意多個任意字符\. : 轉義.o\{2\} : o重複兩次查找不是以#開頭的行grep -v '^#' a.txt | grep -v '^$' 以h或r開頭的grep '^[hr]' /etc/passwd不是以h和r開頭的grep '^[^hr]' /etc/passwd不是以h到r開頭的grep '^[^h-r]' /etc/passwd
linux文件權限的描述格式解讀
drwxr-xr-x (也可以用二進位表示 111 101 101 --> 755)d:標識節點類型(d:文件夾 -:文件 l:連結)r:可讀 w:可寫 x:可執行 第一組rwx: ## 表示這個文件的擁有者對它的權限:可讀可寫可執行第二組r-x: ## 表示這個文件的所屬組用戶對它的權限:可讀,不可寫,可執行第三組r-x: ## 表示這個文件的其他用戶(相對於上面兩類用戶)對它的權限:可讀,不可寫,可執行
修改文件權限
chmod g-rw haha.dat ## 表示將haha.dat對所屬組的rw權限取消chmod o-rw haha.dat ## 表示將haha.dat對其他人的rw權限取消chmod u+x haha.dat ## 表示將haha.dat對所屬用戶的權限增加xchmod a-x haha.dat ## 表示將haha.dat對所用戶取消x權限也可以用數字的方式來修改權限chmod 664 haha.dat 就會修改成 rw-rw-r--如果要將一個文件夾的所有內容權限統一修改,則可以-R參數chmod -R 770 aaa/
修改文件所有權
<只有root權限能執行>chown angela aaa ## 改變所屬用戶chown :angela aaa ## 改變所屬組chown angela:angela aaa/ ## 同時修改所屬用戶和所屬組
統計文件或文件夾的大小
root@ubuntu:~/kernel_rk3399_yan4_dev/kernel# du -sh sound/33M sound/root@ubuntu:~/kernel_rk3399_yan4_dev/kernel# df -h 查看磁碟的空間root@ubuntu:~/kernel_rk3399_yan4_dev/kernel# df -hFilesystem Size Used Avail Use% Mounted onudev 1.9G 0 1.9G 0% /devtmpfs 394M 6.4M 388M 2% /run/dev/sda1 294G 93G 186G 34% /tmpfs 2.0G 204K 2.0G 1% /dev/shmtmpfs 5.0M 4.0K 5.0M 1% /run/locktmpfs 2.0G 0 2.0G 0% /sys/fs/cgrouptmpfs 394M 80K 394M 1% /run/user/1000root@ubuntu:~/kernel_rk3399_yan4_dev/kernel#