精簡Linux檔案路徑

2021-06-21 21:20:10 字數 1308 閱讀 3094

精簡linux的檔案路徑:

..回退的功能

.留在當前目錄

//只保留乙個/

abc/..要返回.

報錯刪除最後乙個/

主要思路: string.split,注意開始是/或者../或者./等三種不同情況。用棧記錄路徑的起始位置,討論/後的不同情況即可:

class solution:

def linux_path_compress(self, path):

is_root = path.startswith('/')

folders = path.split('/')

f =

for folder in folders:

if (folder == '..'):

if (not f and is_root):

return false, ''

elif ((not f and not is_root) or (f and f[-1] == '..')):

elif (f):

f.pop()

elif (folder and folder != '.'):

mid = '/'.join(f) + '/'

prefix = '/' if is_root else './'

if (f and f[0] == '..'):

prefix = ''

return true, prefix + mid

s = solution()

a = "/.abc/***./abc/bacd/.././bcd/fsgs/../../../x/y/z/../../../../.././././xda"

b = "asdf/.abc/***./abc/bacd/.././bcd/fsgs/../../../x/y/z/../../../../../../.././../.././././"

c = "/xyz/./bcd/fsgs/../../../x/y/z/../../../.."

d = "../../../etc/xyz/../abc/.asdf/../../../../"

print(s.linux_path_compress(a)) #(true, '/xda/')

print(s.linux_path_compress(b)) #(true, '../../../')

print(s.linux_path_compress(c)) #(false, '')

print(s.linux_path_compress(d)) #(true, '../../../../')

Linux 檢視檔案 精簡

catcat n 檢視所有的行加上行號 cat b 只給有文字的行加上行號 cat t 不出現製表符 more more命令會顯示文字檔案的內容,但會在顯示每頁資料之後停下來.q退出 more命令顯示了乙個標籤,其表明你仍然在more程式中以及你現 在在這個文字檔案中的位置。這是more命令的提示符...

Linux精簡指南

編譯過程如下 make menuconfig 對核心進行配置,執行該命令的時候,要求所開的終端寬度要足夠顯示80個字元,以顯示整個配置的圖形介面,否則會出現錯誤。進入配置介面之後,在device driver block devices裡面選擇 ram disk support initial ra...

Linux檢視檔案路徑

linux下有兩個命令可以檢視命令或者檔案所在的位置 1.which which 用來檢視當前要執行的命令所在的路徑 舉個例子 root admin which python usr bin python 意思就是說 如果我直接輸入 python 那麼輸出的就是 python 命令的預設執行路徑 即...